From 65a1000316b8d073c420a5e28d45bc58abd4625c Mon Sep 17 00:00:00 2001 From: "hao.hu" Date: Tue, 28 Apr 2026 10:18:44 +0100 Subject: [PATCH] Reuse previous split window if available --- autoload/leaderf/python/leaderf/manager.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/autoload/leaderf/python/leaderf/manager.py b/autoload/leaderf/python/leaderf/manager.py index 54b19e34..eb7840a8 100644 --- a/autoload/leaderf/python/leaderf/manager.py +++ b/autoload/leaderf/python/leaderf/manager.py @@ -136,6 +136,7 @@ def __init__(self): self._preview_config = {} self.is_autocmd = False self.is_ctrl_c = False + self._split_winid_dict = {} self._circular_scroll = lfEval("get(g:, 'Lf_EnableCircularScroll', 0)") == '1' if lfEval("has('patch-8.1.1615') || has('nvim-0.5.0')") == '0': lfCmd("let g:Lf_PreviewInPopup = 0") @@ -2333,6 +2334,7 @@ def _cleanup(self): self._clearHighlightsPos() self._help_length = 0 self._show_help = False + self._split_winid_dict = {} @modifiableController def toggleHelp(self): @@ -2356,11 +2358,17 @@ def _accept(self, file, mode, *args, **kwargs): if self._getExplorer().getStlCategory() != "Help": if mode == '': - pass - elif mode == 'h': - lfCmd("split") - elif mode == 'v': - lfCmd("bel vsplit") + if winid_list := list(self._split_winid_dict.values()): + lfCmd("noautocmd call win_gotoid({})".format(winid_list[0])) + elif mode in ('h', 'v'): + if winid := self._split_winid_dict.get(mode, None): + lfCmd("noautocmd call win_gotoid({})".format(winid)) + else: + if mode == 'h': + lfCmd('split') + else: + lfCmd('leftabove vsplit') + self._split_winid_dict.update({mode: int(lfEval("win_getid()"))}) kwargs["mode"] = mode tabpage_count = len(vim.tabpages)