Skip to content

nvim-tree buffer options applied to entire window #3009

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
arjan-bal opened this issue Nov 23, 2024 · 5 comments · Fixed by #3010
Closed

nvim-tree buffer options applied to entire window #3009

arjan-bal opened this issue Nov 23, 2024 · 5 comments · Fixed by #3010
Labels
awaiting feedback bug Something isn't working regression Existing functionality broken reproduced Issue confirmed

Comments

@arjan-bal
Copy link

arjan-bal commented Nov 23, 2024

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.

@arjan-bal arjan-bal added the bug Something isn't working label Nov 23, 2024
@alex-courtis
Copy link
Member

0.10 working as expected

Changing to:

local function set_window_options_and_buffer()
  pcall(vim.api.nvim_command, "buffer " .. M.get_bufnr())

  if vim.fn.has("nvim-0.10") ~= 1 then

Replicates the issue.

@alex-courtis
Copy link
Member

Many thanks for raising this @arjan-bal

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.

You're right - revert is just fine for the older code path.

See comments in PR: https://github.com/nvim-tree/nvim-tree.lua/pull/3010/files#diff-daa2785203fb370deedccd5b5c910812d0069024b341af2bb770f14e4f712fc9

@alex-courtis
Copy link
Member

@arjan-bal I'd be most grateful if you thoroughly tested a fix branch

cd /path/to/nvim-tree.lua
git pull
git checkout 3009-nvim-0-9-view-winopts-applied-globally

When you're finished testing:

git checkout master

@arjan-bal
Copy link
Author

@alex-courtis #3010 fixes the issue, thanks!

@alex-courtis
Copy link
Member

Many thanks @arjan-bal !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting feedback bug Something isn't working regression Existing functionality broken reproduced Issue confirmed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants