diff options
| author | caojoshua <33404808+caojoshua@users.noreply.github.com> | 2021-07-10 23:26:57 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-11 08:26:57 +0200 |
| commit | 49b86b4610199d879f539d9193fbee45792ba712 (patch) | |
| tree | 59c8bd75984b2322b7d121b674714141b4de6ead /lua | |
| parent | dc0dca27dc344896077cd6a70cd341f3760fcc40 (diff) | |
fix: for closed buffer in tagstack picker (#972)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/telescope/builtin/internal.lua | 43 |
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, { |
