From e5022698970dda7ecf151f75ff1fa6b36c0a47cc Mon Sep 17 00:00:00 2001 From: linrongbin16 Date: Mon, 6 May 2024 16:10:06 +0800 Subject: [PATCH] feat(previewer): respect 'number' options (#690) --- lua/fzfx/detail/popup/buffer_popup_window.lua | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/lua/fzfx/detail/popup/buffer_popup_window.lua b/lua/fzfx/detail/popup/buffer_popup_window.lua index a2bf4b23a..d97990073 100644 --- a/lua/fzfx/detail/popup/buffer_popup_window.lua +++ b/lua/fzfx/detail/popup/buffer_popup_window.lua @@ -257,6 +257,7 @@ end --- @field previewer_is_hidden boolean local BufferPopupWindow = {} +--- @param bufnr integer local function _set_default_buf_options(bufnr) api.set_buf_option(bufnr, "bufhidden", "wipe") api.set_buf_option(bufnr, "buflisted", false) @@ -265,8 +266,10 @@ end --- @param winnr integer --- @param wrap boolean -local function _set_default_previewer_win_options(winnr, wrap) - api.set_win_option(winnr, "number", true) +--- @param current_winnr integer +local function _set_default_previewer_win_options(winnr, wrap, current_winnr) + local number_opt = api.get_win_option(current_winnr, "number") + api.set_win_option(winnr, "number", number_opt) api.set_win_option(winnr, "spell", false) api.set_win_option(winnr, "winhighlight", "Pmenu:,Normal:Normal") -- apis.set_win_option(winnr, "scrolloff", 0) @@ -275,7 +278,9 @@ local function _set_default_previewer_win_options(winnr, wrap) api.set_win_option(winnr, "wrap", wrap) end -local function _set_default_provider_win_options(winnr) +--- @param winnr integer +--- @param current_winnr integer +local function _set_default_provider_win_options(winnr, current_winnr) api.set_win_option(winnr, "number", false) api.set_win_option(winnr, "spell", false) api.set_win_option(winnr, "winhighlight", "Pmenu:,Normal:Normal") @@ -333,12 +338,12 @@ function BufferPopupWindow:new(win_opts, buffer_previewer_opts) previewer_winnr = vim.api.nvim_open_win(previewer_bufnr, true, previewer_win_confs) log.ensure(previewer_winnr > 0, "failed to create previewer win") local wrap = buffer_previewer_opts.fzf_preview_window_opts.wrap - _set_default_previewer_win_options(previewer_winnr, wrap) + _set_default_previewer_win_options(previewer_winnr, wrap, current_winnr) end local provider_winnr = vim.api.nvim_open_win(provider_bufnr, true, provider_win_confs) log.ensure(provider_winnr > 0, "failed to create provider win") - _set_default_provider_win_options(provider_winnr) + _set_default_provider_win_options(provider_winnr, current_winnr) -- set cursor at provider window vim.api.nvim_set_current_win(provider_winnr) @@ -432,7 +437,7 @@ function BufferPopupWindow:resize() self.provider_winnr, vim.tbl_deep_extend("force", old_win_confs, new_win_confs) ) - _set_default_provider_win_options(self.provider_winnr) + _set_default_provider_win_options(self.provider_winnr, self._saved_current_winnr) else local old_provider_win_confs = vim.api.nvim_win_get_config(self.provider_winnr) local win_confs = M.make_opts( @@ -449,7 +454,7 @@ function BufferPopupWindow:resize() self.provider_winnr, vim.tbl_deep_extend("force", old_provider_win_confs, win_confs.provider or {}) ) - _set_default_provider_win_options(self.provider_winnr) + _set_default_provider_win_options(self.provider_winnr, self._saved_current_winnr) if self:previewer_is_valid() then local old_previewer_win_confs = vim.api.nvim_win_get_config(self.previewer_winnr) @@ -464,7 +469,7 @@ function BufferPopupWindow:resize() ) local wrap = self._saved_buffer_previewer_opts.fzf_preview_window_opts.wrap - _set_default_previewer_win_options(self.previewer_winnr, wrap) + _set_default_previewer_win_options(self.previewer_winnr, wrap, self._saved_current_winnr) end end @@ -662,7 +667,8 @@ function BufferPopupWindow:preview_file_contents(file_content, content_view, on_ title_pos = "center", } vim.api.nvim_win_set_config(self.previewer_winnr, title_opts) - api.set_win_option(self.previewer_winnr, "number", true) + local wrap = self._saved_buffer_previewer_opts.fzf_preview_window_opts.wrap + _set_default_previewer_win_options(self.previewer_winnr, wrap, self._saved_current_winnr) end if str.not_empty(file_content.previewer_label_result) then @@ -926,7 +932,7 @@ function BufferPopupWindow:show_preview() _set_default_buf_options(self.previewer_bufnr) self.previewer_winnr = vim.api.nvim_open_win(self.previewer_bufnr, true, win_confs.previewer) local wrap = self._saved_buffer_previewer_opts.fzf_preview_window_opts.wrap - _set_default_previewer_win_options(self.previewer_winnr, wrap) + _set_default_previewer_win_options(self.previewer_winnr, wrap, self._saved_current_winnr) vim.api.nvim_set_current_win(self.provider_winnr) self:resize()