diff --git a/docs/changelog.rst b/docs/changelog.rst index a96cdb6ae..7f21f2219 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -50,6 +50,8 @@ To update |kitty|, :doc:`follow the instructions `. - Fix mapping ``remote_control send-text`` not working (:iss:`3147`) +- Add a ``right`` option for :opt:`tab_switch_strategy` (:pull:`3155`) + 0.19.2 [2020-11-13] ------------------- diff --git a/kitty/config_data.py b/kitty/config_data.py index e42dc4200..0d6e84710 100644 --- a/kitty/config_data.py +++ b/kitty/config_data.py @@ -880,11 +880,12 @@ def tab_bar_min_tabs(x: str) -> int: The minimum number of tabs that must exist before the tab bar is shown ''')) -o('tab_switch_strategy', 'previous', option_type=choices('previous', 'left', 'last'), long_text=_(''' +o('tab_switch_strategy', 'previous', option_type=choices('previous', 'left', 'right', 'last'), long_text=_(''' The algorithm to use when switching to a tab when the current tab is closed. The default of :code:`previous` will switch to the last used tab. A value of :code:`left` will switch to the tab to the left of the closed tab. A value -of :code:`last` will switch to the right-most tab. +of :code:`right` will switch to the tab to the right of the closed tab. +A value of :code:`last` will switch to the right-most tab. ''')) diff --git a/kitty/tabs.py b/kitty/tabs.py index a05d6af33..305899a68 100644 --- a/kitty/tabs.py +++ b/kitty/tabs.py @@ -721,6 +721,8 @@ def remove(self, tab: Tab) -> None: break elif self.opts.tab_switch_strategy == 'left': next_active_tab = max(0, self.active_tab_idx - 1) + elif self.opts.tab_switch_strategy == 'right': + next_active_tab = min(self.active_tab_idx, len(self.tabs) - 1) if next_active_tab < 0: next_active_tab = max(0, min(self.active_tab_idx, len(self.tabs) - 1))