diff options
-rw-r--r-- | ranger/config/rifle.conf | 3 | ||||
-rw-r--r-- | ranger/core/actions.py | 5 | ||||
-rwxr-xr-x | ranger/ext/rifle.py | 3 |
3 files changed, 9 insertions, 2 deletions
diff --git a/ranger/config/rifle.conf b/ranger/config/rifle.conf index ad4ba148..daed8b90 100644 --- a/ranger/config/rifle.conf +++ b/ranger/config/rifle.conf @@ -11,6 +11,8 @@ # $1-$9 | The n-th selected file # $@ | All selected files # +# If you use the special command "ask", rifle will ask you what program to run. +# # Prefixing a condition with "!" will negate its result. # These conditions are currently supported: # match <regexp> | The regexp matches $1 @@ -177,5 +179,6 @@ label wallpaper, number 13, mime ^image, X = feh --bg-center "$1" label wallpaper, number 14, mime ^image, X = feh --bg-fill "$1" # Define the editor for non-text files + pager as last action + !mime ^text, !ext xml|csv|tex|py|pl|rb|sh|php = ask label editor, !mime ^text, !ext xml|csv|tex|py|pl|rb|sh|php = "$EDITOR" -- "$@" label pager, !mime ^text, !ext xml|csv|tex|py|pl|rb|sh|php = "$PAGER" -- "$@" diff --git a/ranger/core/actions.py b/ranger/core/actions.py index cab164be..95a536ef 100644 --- a/ranger/core/actions.py +++ b/ranger/core/actions.py @@ -17,7 +17,7 @@ from ranger.ext.relative_symlink import relative_symlink from ranger.ext.keybinding_parser import key_to_string, construct_keybinding from ranger.ext.shell_escape import shell_quote from ranger.ext.next_available_filename import next_available_filename -from ranger.ext.rifle import squash_flags +from ranger.ext.rifle import squash_flags, ASK_COMMAND from ranger.core.shared import FileManagerAware, EnvironmentAware, \ SettingsAware from ranger.core.tab import Tab @@ -342,7 +342,8 @@ class Actions(FileManagerAware, EnvironmentAware, SettingsAware): cf = self.thisfile selection = self.thistab.get_selection() if not self.thistab.enter_dir(cf) and selection: - if self.execute_file(selection, mode=mode) is False: + result = self.execute_file(selection, mode=mode) + if result in (False, ASK_COMMAND): self.open_console('open_with ') elif direction.vertical() and cwd.files: newpos = direction.move( diff --git a/ranger/ext/rifle.py b/ranger/ext/rifle.py index 16de09f3..92fbae11 100755 --- a/ranger/ext/rifle.py +++ b/ranger/ext/rifle.py @@ -22,6 +22,7 @@ import sys DEFAULT_PAGER = 'less' DEFAULT_EDITOR = 'nano' +ASK_COMMAND = 'ask' ENCODING = 'utf-8' try: @@ -292,6 +293,8 @@ class Rifle(object): for count, cmd, lbl, flgs in self.list_commands(files, mimetype): if label and label == lbl or not label and count == number: cmd = self.hook_command_preprocessing(cmd) + if cmd == ASK_COMMAND: + return ASK_COMMAND command = self._build_command(files, cmd, flags + flgs) break else: |