fix: for closed buffer in tagstack picker (#972)

This commit is contained in:
caojoshua
2021-07-10 23:26:57 -07:00
committed by GitHub
parent dc0dca27dc
commit 49b86b4610

View File

@@ -906,33 +906,32 @@ end
internal.tagstack = function(opts) internal.tagstack = function(opts)
opts = opts or {} opts = opts or {}
local tagstack = vim.fn.gettagstack() local tagstack = vim.fn.gettagstack().items
if vim.tbl_isempty(tagstack.items) then
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]
tag.text = vim.api.nvim_buf_get_lines(
tag.bufnr,
tag.lnum - 1,
tag.lnum,
false
)[1] or ''
end
end
if vim.tbl_isempty(tags) then
print("No tagstack available") print("No tagstack available")
return return
end end
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]
end
-- reverse the list
local tags = {}
for i = #tagstack.items, 1, -1 do
tags[#tags+1] = tagstack.items[i]
end
pickers.new(opts, { pickers.new(opts, {
prompt_title = 'TagStack', prompt_title = 'TagStack',
finder = finders.new_table { finder = finders.new_table {