summary refs log blame commit diff stats
path: root/INSTALL
blob: 4635478b9fcd921c297c47937446893812facb32 (plain) (tree)




























                                                                           
                                       
You can run ranger without installing by simply starting the executable
file ranger.py in the top directory of this package.


To install ranger, follow this instructions:

0. Make sure you have a recent version of python, including the
   curses module, which is the case if this shell command prints no errors:
   python -c 'import curses'


1. Copy the file "ranger.py" into any of the directories in the PATH
   environment variable, for example to "/usr/bin/ranger"


2. Copy the directory "ranger" into one of the python module search
   paths, for example to "/usr/lib/python2.6/site-packages/ranger".

   Ensure that the path is listed by the command:
   python -c 'import sys; print("\n".join(sys.path))'


3. Optionally, you can activate an extra feature: When you exit ranger,
   the directory of the current shell can be changed to the last visited
   directory in ranger.  To do so, add this alias to your shell rc file:

   alias rng="source ranger ranger"

   (Unfortunately this feature is shell dependent.  It has been
   successfully tested with BASH only.)
756a1d4f770b15c2fb3cb46'>^
39307a6 ^


c552231 ^
acfe7d7 ^

2e5ae19 ^
acfe7d7 ^









113de35 ^



2e5ae19 ^
381c1fc ^
113de35 ^

8bb115d ^
113de35 ^
217e85a ^


113de35 ^
753adb9 ^
113de35 ^
753adb9 ^
32f970e ^
15b72df ^
39307a6 ^
113de35 ^
acfe7d7 ^

2e5ae19 ^

76a9181 ^
2e5ae19 ^
8ea86ce ^
2e5ae19 ^



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
           


                
                 
              
 
                                    
 


                                             

 

                  
             


                        
                                


                                     
                                                                  
                                              

 
                                                              


                                                            
                                                      

                          
         









                                            



                               
         
                                             

                          
         
                                


                          
                                                              
                      
                                             
         
                    
                                    
                                                      
                                                         

                                          

                                          
                                                                                       
                                  
                                                         



                  
package msg

import (
	"errors"
	"strings"
	"time"

	"git.sr.ht/~sircmpwn/getopt"

	"git.sr.ht/~rjarry/aerc/commands"
	"git.sr.ht/~rjarry/aerc/widgets"
	"git.sr.ht/~rjarry/aerc/worker/types"
)

type Move struct{}

func init() {
	register(Move{})
}

func (Move) Aliases() []string {
	return []string{"mv", "move"}
}

func (Move) Complete(aerc *widgets.Aerc, args []string) []string {
	return commands.GetFolders(aerc, args)
}

func (Move) Execute(aerc *widgets.Aerc, args []string) error {
	if len(args) == 1 {
		return errors.New("Usage: mv [-p] <folder>")
	}
	opts, optind, err := getopt.Getopts(args, "p")
	if err != nil {
		return err
	}
	var (
		createParents bool
	)
	for _, opt := range opts {
		switch opt.Option {
		case 'p':
			createParents = true
		}
	}

	h := newHelper(aerc)
	store, err := h.store()
	if err != nil {
		return err
	}
	uids, err := h.markedOrSelectedUids()
	if err != nil {
		return err
	}
	acct, err := h.account()
	if err != nil {
		return err
	}
	_, isMsgView := h.msgProvider.(*widgets.MessageViewer)
	if isMsgView {
		aerc.RemoveTab(h.msgProvider)
	}
	store.Next()
	acct.Messages().Invalidate()
	joinedArgs := strings.Join(args[optind:], " ")
	store.Move(uids, joinedArgs, createParents, func(
		msg types.WorkerMessage) {

		switch msg := msg.(type) {
		case *types.Done:
			aerc.PushStatus("Message moved to "+joinedArgs, 10*time.Second)
		case *types.Error:
			aerc.PushError(msg.Error.Error())
		}
	})
	return nil
}