diff --git a/lua/fzf-lua/previewer/builtin.lua b/lua/fzf-lua/previewer/builtin.lua index 3df178c..d380880 100644 --- a/lua/fzf-lua/previewer/builtin.lua +++ b/lua/fzf-lua/previewer/builtin.lua @@ -73,7 +73,7 @@ function Previewer.base:set_preview_buf(newbuf) api.nvim_win_set_buf(self.win.preview_winid, newbuf) self.preview_bufnr = newbuf -- set preview window options - if not self.preview_isterm then + if not self.do_not_set_winopts then self:set_winopts(self.win.preview_winid) end end @@ -96,7 +96,7 @@ function Previewer.base:clear_preview_buf() -- so techinically this should never be executed unless we're the -- user wrote an fzf-lua extension and set the preview buffer to -- a random buffer without the 'bufhidden' property - if not self.preview_isuri + if not self.do_not_unload and self.preview_bufnr and vim.api.nvim_buf_is_valid(self.preview_bufnr) then api.nvim_buf_call(self.preview_bufnr, function() @@ -142,7 +142,7 @@ function Previewer.base:display_entry(entry_str) self:populate_preview_buf(entry_str_) -- set preview window options - if not self.preview_isterm then + if not self.do_not_set_winopts then self:set_winopts(self.win.preview_winid) end @@ -267,8 +267,8 @@ function Previewer.buffer_or_file:populate_preview_buf(entry_str) if vim.tbl_isempty(entry) then return end -- mark terminal buffers so we don't call 'set_winopts' -- mark uri entries so we do not delete the preview buffer - self.preview_isuri = (entry.uri ~= nil) - self.preview_isterm = entry.terminal + self.do_not_unload = (entry.uri ~= nil) + self.do_not_set_winopts = entry.terminal if not self:should_load_buffer(entry) then -- same file/buffer as previous entry -- no need to reload content @@ -462,6 +462,9 @@ function Previewer.help_tags:new(o, opts, fzf_win) self.split = o.split self.help_cmd = o.help_cmd or "help" self.filetype = "help" + -- do not unload preview buffer + -- it's our dedicated ':help' buffer + self.do_not_unload = true self:init_help_win() return self end @@ -553,7 +556,19 @@ end -- inherit from help_tags for the specialized -- 'gen_winopts()' without ':set number' -Previewer.man_pages = Previewer.help_tags:extend() +Previewer.man_pages = Previewer.base:extend() + +function Previewer.man_pages:should_clear_preview(_) + return false +end + +function Previewer.man_pages:gen_winopts() + local winopts = { + wrap = self.win.preview_wrap, + number = false + } + return vim.tbl_extend("keep", winopts, self.winopts) +end function Previewer.man_pages:new(o, opts, fzf_win) Previewer.man_pages.super.new(self, o, opts, fzf_win) diff --git a/lua/fzf-lua/win.lua b/lua/fzf-lua/win.lua index d3800e0..18b6e77 100644 --- a/lua/fzf-lua/win.lua +++ b/lua/fzf-lua/win.lua @@ -979,7 +979,11 @@ function FzfWin.toggle_preview_wrap() end function FzfWin.toggle_preview_cw(direction) - if not _self or _self.winopts.split then return end + if not _self + or _self.winopts.split + or not _self:validate_preview() then + return + end local self = _self local pos = { 'up', 'right', 'down', 'left' } local idx