diff options
author | nfnty <git@nfnty.se> | 2017-02-09 00:15:26 +0100 |
---|---|---|
committer | nfnty <git@nfnty.se> | 2017-02-09 00:16:53 +0100 |
commit | a3ccb616e6fc8c88cf7ffcd079dab76655bcc002 (patch) | |
tree | be96caa70553f6137bb3831a6105cfa6d93dd49c | |
parent | c377b4814a5560a6fc34c5e5a5df2fe39d289cad (diff) | |
download | ranger-a3ccb616e6fc8c88cf7ffcd079dab76655bcc002.tar.gz |
commands: Add `quitall!`, Change behavior of `quit!`
Fixes #802
-rw-r--r-- | doc/ranger.1 | 16 | ||||
-rw-r--r-- | doc/ranger.pod | 15 | ||||
-rw-r--r-- | doc/rifle.1 | 2 | ||||
-rwxr-xr-x | ranger/config/commands.py | 37 | ||||
-rw-r--r-- | ranger/config/rc.conf | 14 |
5 files changed, 56 insertions, 28 deletions
diff --git a/doc/ranger.1 b/doc/ranger.1 index 1cb2d8ed..1d709719 100644 --- a/doc/ranger.1 +++ b/doc/ranger.1 @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "RANGER 1" -.TH RANGER 1 "ranger-1.8.1" "2017-02-08" "ranger manual" +.TH RANGER 1 "ranger-1.8.1" "2017-02-09" "ranger manual" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -938,6 +938,7 @@ ranger. For your convenience, this is a list of the \*(L"public\*(R" commands i \& quit \& quit! \& quitall +\& quitall! \& relink newpath \& rename_append [\-FLAGS...] \& rename newname @@ -1171,17 +1172,18 @@ a row. Removes key mappings of the pager. Works like the \f(CW\*(C`unmap\*(C'\fR command. .IP "quit" 2 .IX Item "quit" -If only one tab is currently open and no tasks are running, quit ranger. If -multiple tabs are open, only close this tab. The current directory will be -bookmarked as ' so you can re-enter it by typing `` or '' the next time you +Closes the current tab, if there's only one tab. Otherwise quits if there are no tasks in progress. +The current directory will be bookmarked as ' so you can re-enter it by typing `` or '' the next time you start ranger. .IP "quit!" 2 .IX Item "quit!" -Force quit ranger, even if tasks are running. The current directory will still -be bookmarked similarly to \f(CW\*(C`quit\*(C'\fR. +Like \f(CW\*(C`quit\*(C'\fR, except will force quit even if tasks are in progress. .IP "quitall" 2 .IX Item "quitall" -Like \f(CW\*(C`quit\*(C'\fR, will close ranger even if multiple tabs are open. +Like \f(CW\*(C`quit\*(C'\fR, except will quit even if multiple tabs are open. +.IP "quitall!" 2 +.IX Item "quitall!" +Like \f(CW\*(C`quitall\*(C'\fR, except will force quit even if tasks are in progress. .IP "relink \fInewpath\fR" 2 .IX Item "relink newpath" Change the link destination of the current symlink file to <newpath>. First diff --git a/doc/ranger.pod b/doc/ranger.pod index 8a783094..8b02ee63 100644 --- a/doc/ranger.pod +++ b/doc/ranger.pod @@ -959,6 +959,7 @@ ranger. For your convenience, this is a list of the "public" commands including quit quit! quitall + quitall! relink newpath rename_append [-FLAGS...] rename newname @@ -1225,19 +1226,21 @@ Removes key mappings of the pager. Works like the C<unmap> command. =item quit -If only one tab is currently open and no tasks are running, quit ranger. If -multiple tabs are open, only close this tab. The current directory will be -bookmarked as ' so you can re-enter it by typing `` or '' the next time you +Closes the current tab, if there's only one tab. Otherwise quits if there are no tasks in progress. +The current directory will be bookmarked as ' so you can re-enter it by typing `` or '' the next time you start ranger. =item quit! -Force quit ranger, even if tasks are running. The current directory will still -be bookmarked similarly to C<quit>. +Like C<quit>, except will force quit even if tasks are in progress. =item quitall -Like C<quit>, will close ranger even if multiple tabs are open. +Like C<quit>, except will quit even if multiple tabs are open. + +=item quitall! + +Like C<quitall>, except will force quit even if tasks are in progress. =item relink I<newpath> diff --git a/doc/rifle.1 b/doc/rifle.1 index b61423e7..3c97c771 100644 --- a/doc/rifle.1 +++ b/doc/rifle.1 @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "RIFLE 1" -.TH RIFLE 1 "rifle-1.8.1" "2017-02-08" "rifle manual" +.TH RIFLE 1 "rifle-1.8.1" "2017-02-09" "rifle manual" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff --git a/ranger/config/commands.py b/ranger/config/commands.py index 012cbbde..8f71b241 100755 --- a/ranger/config/commands.py +++ b/ranger/config/commands.py @@ -477,9 +477,9 @@ class default_linemode(Command): class quit(Command): # pylint: disable=redefined-builtin """:quit - Closes the current tab. If there is only one tab, quit the program. + Closes the current tab, if there's only one tab. + Otherwise quits if there are no tasks in progress. """ - def _exit_no_work(self): if self.fm.loader.has_work(): self.fm.notify('Not quitting: Tasks in progress: Use `quit!` to force quit') @@ -493,22 +493,43 @@ class quit(Command): # pylint: disable=redefined-builtin self._exit_no_work() -class quitall(quit): +class quit_bang(Command): + """:quit! + + Closes the current tab, if there's only one tab. + Otherwise force quits immediately. + """ + name = 'quit!' + allow_abbrev = False + + def execute(self): + if len(self.fm.tabs) >= 2: + self.fm.tab_close() + else: + self.fm.exit() + + +class quitall(Command): """:quitall - Quits the program immediately. + Quits if there are no tasks in progress. """ + def _exit_no_work(self): + if self.fm.loader.has_work(): + self.fm.notify('Not quitting: Tasks in progress: Use `quitall!` to force quit') + else: + self.fm.exit() def execute(self): self._exit_no_work() -class quit_bang(Command): - """:quit! +class quitall_bang(Command): + """:quitall! - Quits the program immediately. + Force quits immediately. """ - name = 'quit!' + name = 'quitall!' allow_abbrev = False def execute(self): diff --git a/ranger/config/rc.conf b/ranger/config/rc.conf index 0f60c195..5b301b3c 100644 --- a/ranger/config/rc.conf +++ b/ranger/config/rc.conf @@ -231,12 +231,14 @@ set wrap_scroll false # == Command Aliases in the Console # =================================================================== -alias e edit -alias q quit -alias q! quit! -alias qa quitall -alias qall quitall -alias setl setlocal +alias e edit +alias q quit +alias q! quit! +alias qa quitall +alias qa! quitall! +alias qall quitall +alias qall! quitall! +alias setl setlocal alias filter scout -prt alias find scout -aeit |