diff options
author | hut <hut@lepus.uberspace.de> | 2016-04-04 00:00:56 +0200 |
---|---|---|
committer | hut <hut@lepus.uberspace.de> | 2016-04-04 00:00:56 +0200 |
commit | 62c45b6f36cdad7b49f019f8bf982c818f372871 (patch) | |
tree | 665614fc727891da7e8a592e59e6fe62e57e2e96 | |
parent | 3ae25fa5b14c224c699e572c31cd8c95dc3d9040 (diff) | |
download | ranger-62c45b6f36cdad7b49f019f8bf982c818f372871.tar.gz |
make `set foo!` cycle through non-boolean options too
-rw-r--r-- | ranger/container/settings.py | 9 | ||||
-rw-r--r-- | ranger/core/actions.py | 13 |
2 files changed, 21 insertions, 1 deletions
diff --git a/ranger/container/settings.py b/ranger/container/settings.py index 36db03ad..2a673588 100644 --- a/ranger/container/settings.py +++ b/ranger/container/settings.py @@ -66,6 +66,15 @@ ALLOWED_SETTINGS = { 'clear_filters_on_dir_change': bool } +ALLOWED_VALUES = { + 'confirm_on_delete': ['always', 'multiple', 'never'], + 'preview_images_method': ['w3m', 'iterm2'], + 'vcs_backend_bzr': ['enabled', 'local', 'disabled'], + 'vcs_backend_git': ['enabled', 'local', 'disabled'], + 'vcs_backend_hg': ['enabled', 'local', 'disabled'], + 'vcs_backend_svn': ['enabled', 'local', 'disabled'], +} + DEFAULT_VALUES = { bool: False, type(None): None, diff --git a/ranger/core/actions.py b/ranger/core/actions.py index 825a1cc0..3b1fc47a 100644 --- a/ranger/core/actions.py +++ b/ranger/core/actions.py @@ -26,7 +26,7 @@ from ranger.core.tab import Tab from ranger.container.directory import Directory from ranger.container.file import File from ranger.core.loader import CommandLoader, CopyLoader -from ranger.container.settings import ALLOWED_SETTINGS +from ranger.container.settings import ALLOWED_SETTINGS, ALLOWED_VALUES from ranger.core.linemode import DEFAULT_LINEMODE MACRO_FAIL = "<\x01\x01MACRO_HAS_NO_VALUE\x01\01>" @@ -595,6 +595,17 @@ class Actions(FileManagerAware, SettingsAware): """ if isinstance(self.settings[string], bool): self.settings[string] ^= True + elif string in ALLOWED_VALUES: + current = self.settings[string] + allowed = ALLOWED_VALUES[string] + if len(allowed) > 0: + if current not in allowed and current == "": + current = allowed[0] + if current in allowed: + self.settings[string] = \ + allowed[(allowed.index(current) + 1) % len(allowed)] + else: + self.settings[string] = allowed[0] def set_option(self, optname, value): """:set_option <optname> |