When mapping the new_tab action allow specifying that the tab should open next to the current tab instead of at the end of the tabs list
Fixes #979
This commit is contained in:
parent
edfb4ef3f1
commit
5fb02c0439
@ -21,6 +21,9 @@ Changelog
|
|||||||
full-screen/maximized/minimized. This replaces the ``--start-in-fullscreen``
|
full-screen/maximized/minimized. This replaces the ``--start-in-fullscreen``
|
||||||
flag introduced in the previous release (:iss:`935`)
|
flag introduced in the previous release (:iss:`935`)
|
||||||
|
|
||||||
|
- When mapping the new_tab action allow specifying that the tab should open
|
||||||
|
next to the current tab instead of at the end of the tabs list (:iss:`979`)
|
||||||
|
|
||||||
- macOS: Add a new :opt:`macos_thicken_font` to make text rendering
|
- macOS: Add a new :opt:`macos_thicken_font` to make text rendering
|
||||||
on macs thicker, which makes it similar to the result of
|
on macs thicker, which makes it similar to the result of
|
||||||
sub-pixel antialiasing (:pull:`950`)
|
sub-pixel antialiasing (:pull:`950`)
|
||||||
|
|||||||
@ -850,7 +850,7 @@ class Boss:
|
|||||||
cmd.append(arg)
|
cmd.append(arg)
|
||||||
return SpecialWindow(cmd, stdin, cwd_from=cwd_from)
|
return SpecialWindow(cmd, stdin, cwd_from=cwd_from)
|
||||||
|
|
||||||
def _new_tab(self, args, cwd_from=None):
|
def _new_tab(self, args, cwd_from=None, as_neighbor=False):
|
||||||
special_window = None
|
special_window = None
|
||||||
if args:
|
if args:
|
||||||
if isinstance(args, SpecialWindowInstance):
|
if isinstance(args, SpecialWindowInstance):
|
||||||
@ -859,15 +859,22 @@ class Boss:
|
|||||||
special_window = self.args_to_special_window(args, cwd_from=cwd_from)
|
special_window = self.args_to_special_window(args, cwd_from=cwd_from)
|
||||||
tm = self.active_tab_manager
|
tm = self.active_tab_manager
|
||||||
if tm is not None:
|
if tm is not None:
|
||||||
return tm.new_tab(special_window=special_window, cwd_from=cwd_from)
|
return tm.new_tab(special_window=special_window, cwd_from=cwd_from, as_neighbor=as_neighbor)
|
||||||
|
|
||||||
|
def _create_tab(self, args, cwd_from=None):
|
||||||
|
as_neighbor = False
|
||||||
|
if args and args[0].startswith('!'):
|
||||||
|
as_neighbor = 'neighbor' in args[0][1:].split(',')
|
||||||
|
args = args[1:]
|
||||||
|
self._new_tab(args, as_neighbor=as_neighbor, cwd_from=cwd_from)
|
||||||
|
|
||||||
def new_tab(self, *args):
|
def new_tab(self, *args):
|
||||||
self._new_tab(args)
|
self._create_tab(args)
|
||||||
|
|
||||||
def new_tab_with_cwd(self, *args):
|
def new_tab_with_cwd(self, *args):
|
||||||
w = self.active_window
|
w = self.active_window
|
||||||
cwd_from = w.child.pid if w is not None else None
|
cwd_from = w.child.pid if w is not None else None
|
||||||
self._new_tab(args, cwd_from=cwd_from)
|
self._create_tab(args, cwd_from=cwd_from)
|
||||||
|
|
||||||
def _new_window(self, args, cwd_from=None):
|
def _new_window(self, args, cwd_from=None):
|
||||||
tab = self.active_tab
|
tab = self.active_tab
|
||||||
|
|||||||
@ -146,7 +146,12 @@ You can also create shortcuts to go to specific tabs, with 1 being the first tab
|
|||||||
map ctrl+alt+2 goto_tab 2
|
map ctrl+alt+2 goto_tab 2
|
||||||
|
|
||||||
Just as with :code:`new_window` above, you can also pass the name of arbitrary
|
Just as with :code:`new_window` above, you can also pass the name of arbitrary
|
||||||
commands to run when using new_tab and use :code:`new_tab_with_cwd`.
|
commands to run when using new_tab and use :code:`new_tab_with_cwd`. Finally,
|
||||||
|
if you want the new tab to open next to the current tab rather than at the
|
||||||
|
end of the tabs list, use::
|
||||||
|
|
||||||
|
map ctrl+t new_tab !neighbor [optional cmd to run]
|
||||||
|
|
||||||
''')],
|
''')],
|
||||||
'shortcuts.layout': [
|
'shortcuts.layout': [
|
||||||
_('Layout management'), '',
|
_('Layout management'), '',
|
||||||
|
|||||||
@ -464,10 +464,16 @@ class TabManager: # {{{
|
|||||||
self._set_active_tab(nidx)
|
self._set_active_tab(nidx)
|
||||||
self.mark_tab_bar_dirty()
|
self.mark_tab_bar_dirty()
|
||||||
|
|
||||||
def new_tab(self, special_window=None, cwd_from=None):
|
def new_tab(self, special_window=None, cwd_from=None, as_neighbor=False):
|
||||||
|
nidx = self.active_tab_idx + 1
|
||||||
idx = len(self.tabs)
|
idx = len(self.tabs)
|
||||||
self._add_tab(Tab(self, special_window=special_window, cwd_from=cwd_from))
|
self._add_tab(Tab(self, special_window=special_window, cwd_from=cwd_from))
|
||||||
self._set_active_tab(idx)
|
self._set_active_tab(idx)
|
||||||
|
if len(self.tabs) > 2 and as_neighbor and idx != nidx:
|
||||||
|
self.tabs[idx], self.tabs[nidx] = self.tabs[nidx], self.tabs[idx]
|
||||||
|
swap_tabs(self.os_window_id, idx, nidx)
|
||||||
|
self._set_active_tab(nidx)
|
||||||
|
idx = nidx
|
||||||
self.mark_tab_bar_dirty()
|
self.mark_tab_bar_dirty()
|
||||||
return self.tabs[idx]
|
return self.tabs[idx]
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user