summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorcaojoshua <33404808+caojoshua@users.noreply.github.com>2021-07-10 23:26:57 -0700
committerGitHub <noreply@github.com>2021-07-11 08:26:57 +0200
commit49b86b4610199d879f539d9193fbee45792ba712 (patch)
tree59c8bd75984b2322b7d121b674714141b4de6ead /lua
parentdc0dca27dc344896077cd6a70cd341f3760fcc40 (diff)
fix: for closed buffer in tagstack picker (#972)
Diffstat (limited to 'lua')
-rw-r--r--lua/telescope/builtin/internal.lua43
1 files changed, 21 insertions, 22 deletions
diff --git a/lua/telescope/builtin/internal.lua b/lua/telescope/builtin/internal.lua
index 150bfe6..ef34ca9 100644
--- a/lua/telescope/builtin/internal.lua
+++ b/lua/telescope/builtin/internal.lua
@@ -906,31 +906,30 @@ end
internal.tagstack = function(opts)
opts = opts or {}
- local tagstack = vim.fn.gettagstack()
- if vim.tbl_isempty(tagstack.items) then
- print("No tagstack available")
- return
- end
+ local tagstack = vim.fn.gettagstack().items
+
+ local tags = {}
+ for i = #tagstack, 1, -1 do
+ local tag = tagstack[i]
+ tag.bufnr = tag.from[1]
+ if vim.api.nvim_buf_is_valid(tag.bufnr) then
+ tags[#tags + 1] = tag
+ tag.filename = vim.fn.bufname(tag.bufnr)
+ tag.lnum = tag.from[2]
+ tag.col = tag.from[3]
- for _, value in pairs(tagstack.items) do
- value.valid = true
- value.bufnr = value.from[1]
- value.lnum = value.from[2]
- value.col = value.from[3]
- value.filename = vim.fn.bufname(value.from[1])
-
- value.text = vim.api.nvim_buf_get_lines(
- value.bufnr,
- value.lnum - 1,
- value.lnum,
- false
- )[1]
+ tag.text = vim.api.nvim_buf_get_lines(
+ tag.bufnr,
+ tag.lnum - 1,
+ tag.lnum,
+ false
+ )[1] or ''
+ end
end
- -- reverse the list
- local tags = {}
- for i = #tagstack.items, 1, -1 do
- tags[#tags+1] = tagstack.items[i]
+ if vim.tbl_isempty(tags) then
+ print("No tagstack available")
+ return
end
pickers.new(opts, {