Skip to content

nvim-tree buffer options applied to entire window #3009

Closed
@arjan-bal

Description

@arjan-bal

Description

I have set settings like relativenumber, number and colorcolumn in my vimrc which is sourced in my init.lua. After updating nvim-tree, I found that these settings were getting overridden by the plugin. I was able to trace the behaviour change to #2968 which introduced the following lines

for k, v in pairs(M.View.winopts) do
vim.api.nvim_win_set_option(0, k, v) ---@diagnostic disable-line: deprecated
end

Before this change, the lines were

for k, v in pairs(M.View.winopts) do
vim.opt_local[k] = v
end

The reason for the behaviour change seems to be that vim.opt_local was applying the settings only to the current buffer while vim.api.nvim_win_set_option is applying the settings to the entire window.

From my understanding, the benefit of using vim.api.nvim_win_set_option is to support earlier versions of nvim. I'm not familiar with lua or the nvim API, so I don't know the exact fix if the code can't be reverted to use vim.opt_local.

Neovim version

NVIM v0.9.5
Build type: Release
LuaJIT 2.1.1700206165

Operating system and version

Debian

Windows variant

No response

nvim-tree version

v1.7

Clean room replication

vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.opt.colorcolumn = "80"

vim.cmd([[set runtimepath=$VIMRUNTIME]])
vim.cmd([[set packpath=/tmp/nvt-min/site]])
local package_root = "/tmp/nvt-min/site/pack"
local install_path = package_root .. "/packer/start/packer.nvim"
local function load_plugins()
    require("packer").startup({
        {
            "wbthomason/packer.nvim",
            { "nvim-tree/nvim-tree.lua", tags = "v1.6.1" },
            "nvim-tree/nvim-web-devicons",
            -- ADD PLUGINS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
        },
        config = {
            package_root = package_root,
            compile_path = install_path .. "/plugin/packer_compiled.lua",
            display = { non_interactive = true },
        },
    })
end
if vim.fn.isdirectory(install_path) == 0 then
    print("Installing nvim-tree and dependencies.")
    vim.fn.system({ "git", "clone", "--depth=1", "https://github.com/wbthomason/packer.nvim", install_path })
end
load_plugins()
require("packer").sync()
vim.cmd([[autocmd User PackerComplete ++once echo "Ready!" | lua setup()]])
vim.opt.termguicolors = true
vim.opt.cursorline = true

-- MODIFY NVIM-TREE SETTINGS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
_G.setup = function()
    require("nvim-tree").setup()
end

Steps to reproduce

  1. touch ./abc.txt
  2. nvim -nu /tmp/nvt-min.lua .
  3. :NvimTreeToggle
  4. open abc.txt

Expected behavior

the colorcolumn at col 80 should show up. It does so up till nvim-tree v1.6.1

Actual behavior

You will see that the colorcolumn is not visible.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions