summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/telescope/pickers.lua7
-rw-r--r--lua/telescope/previewers/previewer.lua19
2 files changed, 21 insertions, 5 deletions
diff --git a/lua/telescope/pickers.lua b/lua/telescope/pickers.lua
index 9397c57..1a45cd4 100644
--- a/lua/telescope/pickers.lua
+++ b/lua/telescope/pickers.lua
@@ -965,6 +965,9 @@ function Picker:set_selection(row)
state.set_global_key("selected_entry", entry)
if not entry then
+ -- also refresh previewer when there is no entry selected, so the preview window is cleared
+ self._selection_entry = entry
+ self:refresh_previewer()
return
end
@@ -1068,10 +1071,6 @@ end
--- Refresh the previewer based on the current `status` of the picker
function Picker:refresh_previewer()
local status = state.get_status(self.prompt_bufnr)
- if not self._selection_entry then
- -- if selection_entry is nil there is nothing to be previewed
- return
- end
if self.previewer and status.preview_win and a.nvim_win_is_valid(status.preview_win) then
self:_increment "previewed"
diff --git a/lua/telescope/previewers/previewer.lua b/lua/telescope/previewers/previewer.lua
index 834df2c..f986dac 100644
--- a/lua/telescope/previewers/previewer.lua
+++ b/lua/telescope/previewers/previewer.lua
@@ -1,3 +1,5 @@
+local utils = require "telescope.utils"
+
local Previewer = {}
Previewer.__index = Previewer
@@ -25,11 +27,19 @@ function Previewer:new(opts)
_send_input = opts.send_input,
_scroll_fn = opts.scroll_fn,
preview_fn = opts.preview_fn,
+ _empty_bufnr = nil,
}, Previewer)
end
function Previewer:preview(entry, status)
if not entry then
+ if not self._empty_bufnr then
+ self._empty_bufnr = vim.api.nvim_create_buf(false, true)
+ end
+
+ if vim.api.nvim_buf_is_valid(self._empty_bufnr) then
+ vim.api.nvim_win_set_buf(status.preview_win, self._empty_bufnr)
+ end
return
end
@@ -47,7 +57,11 @@ end
function Previewer:title(entry, dynamic)
if dynamic == true and self._dyn_title_fn ~= nil then
if entry == nil then
- return nil
+ if self._title_fn ~= nil then
+ return self:_title_fn()
+ else
+ return ""
+ end
end
return self:_dyn_title_fn(entry)
end
@@ -57,6 +71,9 @@ function Previewer:title(entry, dynamic)
end
function Previewer:teardown()
+ if self._empty_bufnr then
+ utils.buf_delete(self._empty_bufnr)
+ end
if self._teardown_func then
self:_teardown_func()
end