fix(#2954): resolve occasional tree flashing on diagnostics, set tree buffer options in deterministic order (#2980)
* fix(#2954): set buffer options in deterministic order This ensures related autocmd's (e.g. on FileType) will be called in a similar environment. * fix(#2954): redraw only for diagnostics if source buffer is 'buflisted' is_buf_valid has been inlined since it is only used for diagnostics and its name is misleading.
This commit is contained in:
@@ -65,13 +65,15 @@ local tabinitial = {
|
||||
}
|
||||
|
||||
local BUFNR_PER_TAB = {}
|
||||
|
||||
---@type { name: string, value: any }[]
|
||||
local BUFFER_OPTIONS = {
|
||||
swapfile = false,
|
||||
buftype = "nofile",
|
||||
modifiable = false,
|
||||
filetype = "NvimTree",
|
||||
bufhidden = "wipe",
|
||||
buflisted = false,
|
||||
{ name = "bufhidden", value = "wipe" },
|
||||
{ name = "buflisted", value = false },
|
||||
{ name = "buftype", value = "nofile" },
|
||||
{ name = "filetype", value = "NvimTree" },
|
||||
{ name = "modifiable", value = false },
|
||||
{ name = "swapfile", value = false },
|
||||
}
|
||||
|
||||
---@param bufnr integer
|
||||
@@ -101,8 +103,9 @@ local function create_buffer(bufnr)
|
||||
BUFNR_PER_TAB[tab] = bufnr or vim.api.nvim_create_buf(false, false)
|
||||
vim.api.nvim_buf_set_name(M.get_bufnr(), "NvimTree_" .. tab)
|
||||
|
||||
for option, value in pairs(BUFFER_OPTIONS) do
|
||||
vim.bo[M.get_bufnr()][option] = value
|
||||
bufnr = M.get_bufnr()
|
||||
for _, option in ipairs(BUFFER_OPTIONS) do
|
||||
vim.api.nvim_set_option_value(option.name, option.value, { buf = bufnr })
|
||||
end
|
||||
|
||||
require("nvim-tree.keymap").on_attach(M.get_bufnr())
|
||||
@@ -497,12 +500,6 @@ function M.get_bufnr()
|
||||
return BUFNR_PER_TAB[vim.api.nvim_get_current_tabpage()]
|
||||
end
|
||||
|
||||
---@param bufnr number
|
||||
---@return boolean
|
||||
function M.is_buf_valid(bufnr)
|
||||
return bufnr and vim.api.nvim_buf_is_valid(bufnr) and vim.api.nvim_buf_is_loaded(bufnr)
|
||||
end
|
||||
|
||||
function M._prevent_buffer_override()
|
||||
local view_winnr = M.get_winnr()
|
||||
local view_bufnr = M.get_bufnr()
|
||||
|
||||
Reference in New Issue
Block a user