summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorfdschmidt93 <39233597+fdschmidt93@users.noreply.github.com>2021-11-04 07:55:32 +0100
committerGitHub <noreply@github.com>2021-11-04 07:55:32 +0100
commit97842abb038798ee51dd1f6bceb2f928f04a4c31 (patch)
tree637ce77fa0d5a3a7c1b9a0b52f45890a00db763d /lua
parent2097f11305598bd88f799a76f5549da57f852a58 (diff)
fix: revert buffers previewer (#1400)
* Reverts #1120 many issues arise (mru, highlighting, settings inheritance, ...) when previewing actual buffers
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/actions/init.lua7
-rw-r--r--lua/telescope/builtin/internal.lua11
-rw-r--r--lua/telescope/previewers/buffer_previewer.lua124
-rw-r--r--lua/telescope/previewers/init.lua1
-rw-r--r--lua/telescope/previewers/term_previewer.lua3
5 files changed, 19 insertions, 127 deletions
diff --git a/lua/telescope/actions/init.lua b/lua/telescope/actions/init.lua
index 7357fa1..0e26ac8 100644
--- a/lua/telescope/actions/init.lua
+++ b/lua/telescope/actions/init.lua
@@ -831,13 +831,6 @@ end
actions.delete_buffer = function(prompt_bufnr)
local current_picker = action_state.get_current_picker(prompt_bufnr)
current_picker:delete_selection(function(selection)
- -- avoid preview win from closing by creating tmp buffer
- local preview_win = state.get_status(prompt_bufnr).preview_win
- if preview_win ~= nil and vim.api.nvim_win_is_valid(preview_win) then
- local buf = vim.api.nvim_create_buf(false, true)
- vim.api.nvim_buf_set_option(buf, "bufhidden", "wipe")
- vim.api.nvim_win_set_buf(preview_win, buf)
- end
vim.api.nvim_buf_delete(selection.bufnr, { force = true })
end)
end
diff --git a/lua/telescope/builtin/internal.lua b/lua/telescope/builtin/internal.lua
index f95e0e5..d043bb7 100644
--- a/lua/telescope/builtin/internal.lua
+++ b/lua/telescope/builtin/internal.lua
@@ -779,18 +779,9 @@ internal.buffers = function(opts)
results = buffers,
entry_maker = opts.entry_maker or make_entry.gen_from_buffer(opts),
},
- previewer = previewers.buffers.new(opts),
+ previewer = conf.grep_previewer(opts),
sorter = conf.generic_sorter(opts),
default_selection_index = default_selection_idx,
- attach_mappings = function(_, _)
- action_set.select:enhance {
- post = function()
- local selection = action_state.get_selected_entry()
- vim.api.nvim_win_set_cursor(0, { selection.lnum, selection.col or 0 })
- end,
- }
- return true
- end,
}):find()
end
diff --git a/lua/telescope/previewers/buffer_previewer.lua b/lua/telescope/previewers/buffer_previewer.lua
index e26fed1..7bb74ff 100644
--- a/lua/telescope/previewers/buffer_previewer.lua
+++ b/lua/telescope/previewers/buffer_previewer.lua
@@ -474,14 +474,21 @@ previewers.vimgrep = defaulter(function(opts)
pcall(vim.api.nvim_buf_clear_namespace, self.state.last_set_bufnr, ns_previewer, 0, -1)
end
- conf.buffer_previewer_maker(p, self.state.bufnr, {
- bufname = self.state.bufname,
- winid = self.state.winid,
- preview = opts.preview,
- callback = function(bufnr)
- jump_to_line(self, bufnr, entry.lnum)
- end,
- })
+ -- Workaround for unnamed buffer when using builtin.buffer
+ if entry.bufnr and (p == "[No Name]" or vim.api.nvim_buf_get_option(entry.bufnr, "buftype") ~= "") then
+ local lines = vim.api.nvim_buf_get_lines(entry.bufnr, 0, -1, false)
+ vim.api.nvim_buf_set_lines(self.state.bufnr, 0, -1, false, lines)
+ jump_to_line(self, self.state.bufnr, entry.lnum)
+ else
+ conf.buffer_previewer_maker(p, self.state.bufnr, {
+ bufname = self.state.bufname,
+ winid = self.state.winid,
+ preview = opts.preview,
+ callback = function(bufnr)
+ jump_to_line(self, bufnr, entry.lnum)
+ end,
+ })
+ end
end,
}
end, {})
@@ -1059,105 +1066,4 @@ previewers.display_content = defaulter(function(_)
}
end, {})
-previewers.buffers = defaulter(function(opts)
- opts = opts or {}
- local cwd = opts.cwd or vim.loop.cwd()
- local previewer_active -- decouple provider from preview_win
- return Previewer:new {
- title = function()
- return "Buffers"
- end,
- setup = function(_, status)
- previewer_active = true
- local win_id = status.picker.original_win_id
- -- required because of see `:h local-options` as
- -- buffers not yet attached to a current window take the options from the `minimal` popup ...
- local state = {
- ["previewed_buffers"] = {},
- ["winid"] = status.preview_win,
- ["win_options"] = {
- ["colorcolumn"] = vim.api.nvim_win_get_option(win_id, "colorcolumn"),
- ["cursorline"] = vim.api.nvim_win_get_option(win_id, "cursorline"),
- ["foldlevel"] = vim.api.nvim_win_get_option(win_id, "foldlevel"),
- ["list"] = vim.api.nvim_win_get_option(win_id, "list"),
- ["number"] = vim.api.nvim_win_get_option(win_id, "number"),
- ["relativenumber"] = vim.api.nvim_win_get_option(win_id, "relativenumber"),
- ["signcolumn"] = vim.api.nvim_win_get_option(win_id, "signcolumn"),
- ["spell"] = vim.api.nvim_win_get_option(win_id, "spell"),
- ["winhl"] = vim.api.nvim_win_get_option(win_id, "winhl"),
- ["wrap"] = vim.api.nvim_win_get_option(win_id, "wrap"),
- },
- }
- -- TODO clear explicitly once API should become available
- -- decoration provider is hierachical on_start -> win
- vim.api.nvim_set_decoration_provider(ns_previewer, {
- on_start = function()
- -- defacto disable provider if status.preview_win does not exist anymore
- return previewer_active
- end,
- on_win = function(_, winid, bufnr, _)
- if winid ~= status.preview_win then
- return false -- skip setting extmark for any window other than status.preview_win
- end
- local lnum, _ = unpack(vim.api.nvim_win_get_cursor(winid))
- local line = vim.api.nvim_buf_get_lines(bufnr, lnum - 1, lnum, false)[1]
- -- only set if winid and rows are matching
- pcall(vim.api.nvim_buf_set_extmark, bufnr, ns_previewer, lnum - 1, 0, {
- end_col = #line,
- virt_text = { { line, "TelescopePreviewLine" } },
- virt_text_pos = "overlay",
- hl_mode = "combine",
- ephemeral = true,
- priority = 101, -- 1 higher than treesitter
- })
- end,
- })
- return state
- end,
- teardown = function(self)
- if self.state then
- -- reapply proper buffer-window options..
- for opt, value in pairs(self.state.win_options) do
- vim.api.nvim_win_set_option(self.state.winid, opt, value)
- end
- -- TODO precautious clearing of extmark though likely no effect due to ephemeral
- -- clear extmarks for previewed buffers
- for buf, _ in pairs(self.state.previewed_buffers) do
- if vim.api.nvim_buf_is_valid(buf) then
- vim.api.nvim_buf_clear_namespace(buf, ns_previewer, 0, -1)
- end
- end
- end
- previewer_active = false
- -- setup previewer fully anew for `builtin.{resume, pickers}`
- self.state = nil
- end,
- dyn_title = function(_, entry)
- return Path:new(from_entry.path(entry, true)):normalize(cwd)
- end,
- preview_fn = function(self, entry, status)
- if vim.api.nvim_buf_is_valid(entry.bufnr) then
- vim.api.nvim_win_set_buf(status.preview_win, entry.bufnr)
- self.state.bufnr = entry.bufnr
- vim.api.nvim_win_set_option(status.preview_win, "winhl", "Normal:TelescopePreviewNormal")
- vim.api.nvim_win_set_option(status.preview_win, "signcolumn", "no")
- vim.api.nvim_win_set_option(status.preview_win, "foldlevel", 100)
- vim.api.nvim_win_set_option(status.preview_win, "wrap", false)
-
- if self.state.previewed_buffers[entry.bufnr] ~= true then
- if entry.lnum then
- local lnum, col = unpack(vim.api.nvim_win_get_cursor(status.preview_win))
- entry.lnum = lnum
- if not entry.col then
- entry.col = col + 1
- end
- end
- self.state.previewed_buffers[entry.bufnr] = true
- end
- end
- end,
- scroll_fn = scroll_fn,
- }
-end, {})
-
return previewers
diff --git a/lua/telescope/previewers/init.lua b/lua/telescope/previewers/init.lua
index 0051fff..9d27f91 100644
--- a/lua/telescope/previewers/init.lua
+++ b/lua/telescope/previewers/init.lua
@@ -305,7 +305,6 @@ previewers.help = buffer_previewer.help
previewers.man = buffer_previewer.man
previewers.autocommands = buffer_previewer.autocommands
previewers.highlights = buffer_previewer.highlights
-previewers.buffers = buffer_previewer.buffers
previewers.pickers = buffer_previewer.pickers
--- A deprecated way of displaying content more easily. Was written at a time,
diff --git a/lua/telescope/previewers/term_previewer.lua b/lua/telescope/previewers/term_previewer.lua
index 1c28ae3..7402796 100644
--- a/lua/telescope/previewers/term_previewer.lua
+++ b/lua/telescope/previewers/term_previewer.lua
@@ -274,6 +274,9 @@ previewers.vimgrep = defaulter(function(opts)
if p == nil or p == "" then
return
end
+ if entry.bufnr and (p == "[No Name]" or vim.api.nvim_buf_get_option(entry.bufnr, "buftype") ~= "") then
+ return
+ end
local lnum = entry.lnum or 0