2023-08-31 22:07:56 +08:00
|
|
|
local M = {}
|
|
|
|
|
2024-06-13 08:44:55 +08:00
|
|
|
-- this function require neovim v0.8.0+
|
2023-08-31 22:07:56 +08:00
|
|
|
function M.setlocalopt(buf, win, opts)
|
2024-06-13 08:44:55 +08:00
|
|
|
local getinfo
|
|
|
|
if vim.api.nvim_get_option_info2 then
|
|
|
|
getinfo = function(o)
|
|
|
|
return vim.api.nvim_get_option_info2(o, {})
|
|
|
|
end
|
|
|
|
else
|
|
|
|
getinfo = function(o)
|
|
|
|
return vim.api.nvim_get_option_info(o)
|
|
|
|
end
|
|
|
|
end
|
2023-08-31 22:07:56 +08:00
|
|
|
for o, value in pairs(opts) do
|
2024-06-13 08:44:55 +08:00
|
|
|
local info = getinfo(o)
|
2023-08-31 22:07:56 +08:00
|
|
|
if info.scope == 'win' then
|
|
|
|
vim.api.nvim_set_option_value(o, value, {
|
|
|
|
win = win,
|
|
|
|
})
|
|
|
|
elseif info.scope == 'buf' then
|
|
|
|
vim.api.nvim_set_option_value(o, value, {
|
|
|
|
buf = buf,
|
|
|
|
})
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
return M
|