mirror of
https://github.com/stevearc/aerial.nvim
synced 2024-09-16 14:34:08 +02:00
fix: stop using vim.wo to set window options
vim.wo also affects the global status of the option. We only want to set the window-local option.
This commit is contained in:
parent
097fb436b2
commit
87f9133990
4 changed files with 28 additions and 18 deletions
|
@ -140,12 +140,12 @@ M.restore_foldmethod = function()
|
|||
local ok, prev_foldmethod = pcall(vim.api.nvim_win_get_var, 0, prev_fdm)
|
||||
if ok and prev_foldmethod then
|
||||
vim.api.nvim_win_del_var(0, prev_fdm)
|
||||
vim.wo.foldmethod = prev_foldmethod
|
||||
vim.api.nvim_set_option_value("foldmethod", prev_foldmethod, { scope = "local", win = 0 })
|
||||
end
|
||||
local ok2, prev_foldexpr = pcall(vim.api.nvim_win_get_var, 0, prev_fde)
|
||||
if ok2 and prev_foldexpr then
|
||||
vim.api.nvim_win_del_var(0, prev_fde)
|
||||
vim.wo.foldexpr = prev_foldexpr
|
||||
vim.api.nvim_set_option_value("foldexpr", prev_foldexpr, { scope = "local", win = 0 })
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -172,13 +172,17 @@ M.maybe_set_foldmethod = function(bufnr)
|
|||
then
|
||||
vim.api.nvim_win_set_var(winid, prev_fdm, fdm)
|
||||
vim.api.nvim_win_set_var(winid, prev_fde, fde)
|
||||
vim.wo[winid].foldmethod = "expr"
|
||||
vim.wo[winid].foldexpr = "v:lua.aerial_foldexpr()"
|
||||
vim.api.nvim_set_option_value("foldmethod", "expr", { scope = "local", win = winid })
|
||||
vim.api.nvim_set_option_value(
|
||||
"foldexpr",
|
||||
"v:lua.aerial_foldexpr()",
|
||||
{ scope = "local", win = winid }
|
||||
)
|
||||
if config.link_folds_to_tree then
|
||||
local fdl = vim.wo[winid].foldlevel
|
||||
require("aerial").tree_set_collapse_level(bufnr, fdl)
|
||||
elseif config.link_tree_to_folds then
|
||||
vim.wo[winid].foldlevel = 99
|
||||
vim.api.nvim_set_option_value("foldlevel", 99, { scope = "local", win = winid })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -287,11 +287,11 @@ function AerialNav:relayout()
|
|||
col = main_col + main_width + border_width,
|
||||
})
|
||||
for k, v in pairs(config.nav.win_opts) do
|
||||
vim.wo[self.main.winid][k] = v
|
||||
vim.api.nvim_set_option_value(k, v, { scope = "local", win = self.main.winid })
|
||||
-- Hack: we generally don't want the left/right to have cursorline enabled
|
||||
if k ~= "cursorline" then
|
||||
vim.wo[self.left.winid][k] = v
|
||||
vim.wo[self.right.winid][k] = v
|
||||
vim.api.nvim_set_option_value(k, v, { scope = "local", win = self.left.winid })
|
||||
vim.api.nvim_set_option_value(k, v, { scope = "local", win = self.right.winid })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -158,7 +158,7 @@ M.set_collapse_level = function(bufnr, level)
|
|||
end
|
||||
|
||||
for _, winid in ipairs(wins) do
|
||||
vim.wo[winid].foldlevel = level
|
||||
vim.api.nvim_set_option_value("foldlevel", level, { scope = "local", win = winid })
|
||||
end
|
||||
end
|
||||
_post_tree_mutate(bufnr)
|
||||
|
|
|
@ -80,20 +80,26 @@ local function create_aerial_buffer(bufnr)
|
|||
return aer_bufnr
|
||||
end
|
||||
|
||||
local default_win_opts = {
|
||||
list = false,
|
||||
winfixwidth = true,
|
||||
number = false,
|
||||
signcolumn = "no",
|
||||
foldcolumn = "0",
|
||||
relativenumber = false,
|
||||
wrap = false,
|
||||
spell = false,
|
||||
}
|
||||
|
||||
---@param src_winid integer
|
||||
---@param aer_winid integer
|
||||
local function setup_aerial_win(src_winid, aer_winid, aer_bufnr)
|
||||
vim.api.nvim_win_set_buf(aer_winid, aer_bufnr)
|
||||
vim.wo[aer_winid].list = false
|
||||
vim.wo[aer_winid].winfixwidth = true
|
||||
vim.wo[aer_winid].number = false
|
||||
vim.wo[aer_winid].signcolumn = "no"
|
||||
vim.wo[aer_winid].foldcolumn = "0"
|
||||
vim.wo[aer_winid].relativenumber = false
|
||||
vim.wo[aer_winid].wrap = false
|
||||
vim.wo[aer_winid].spell = false
|
||||
for k, v in pairs(default_win_opts) do
|
||||
vim.api.nvim_set_option_value(k, v, { scope = "local", win = aer_winid })
|
||||
end
|
||||
for k, v in pairs(config.layout.win_opts) do
|
||||
vim.wo[aer_winid][k] = v
|
||||
vim.api.nvim_set_option_value(k, v, { scope = "local", win = aer_winid })
|
||||
end
|
||||
vim.api.nvim_win_set_var(aer_winid, "is_aerial_win", true)
|
||||
|
||||
|
|
Loading…
Reference in a new issue