From 62c45b6f36cdad7b49f019f8bf982c818f372871 Mon Sep 17 00:00:00 2001 From: hut Date: Mon, 4 Apr 2016 00:00:56 +0200 Subject: make `set foo!` cycle through non-boolean options too --- ranger/container/settings.py | 9 +++++++++ ranger/core/actions.py | 13 ++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) 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 -- cgit 1.4.1-2-gfad0