nvim-tree / nvim-tree.lua

A file explorer tree for neovim written in lua
Other
7.26k stars 611 forks source link

Inconsistent behavior: Python files from some folders are highlighted as `NvimTreeExecFile` #2682

Closed SPiCaRiA closed 8 months ago

SPiCaRiA commented 9 months ago

Description

All python files in my project are highlighted as NvimTreeExecFile, but for the new test folder I created below, they are not. I'm sure that the curly underlines are from NvimTreeExecFile after modifying the highlight colors.

Screenshot from the minimum config profile Screenshot 2024-02-20 at 10 51 50 PM

Screenshot from my NvChad profile Screenshot 2024-02-20 at 10 31 31 PM

Neovim version

NVIM v0.9.5
Build type: Release
LuaJIT 2.1.1703358377

Operating system and version

macOS 13.5

Windows variant

No response

nvim-tree version

030defd

Clean room replication

I made no change to the default config.

vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1

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",
      "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

-- UNCOMMENT this block for diagnostics issues, substituting pattern and cmd as appropriate.
-- Requires diagnostics.enable = true in setup.
--[[
vim.api.nvim_create_autocmd("FileType", {
  pattern = "lua",
  callback = function()
    vim.lsp.start { cmd = { "lua-language-server" } }
  end,
})
]]

Steps to reproduce

  1. nvim -nu /tmp/nvt-min.lua
  2. :NvimTreeToggle

Expected behavior

Either all Python scripts are treated as NvimTreeExecFile or not (preferred). Also, all the AppleScript and Haskell files from my other folders (not shown in the screenshot tho).

Actual behavior

No response

alex-courtis commented 9 months ago

At least we have consistency between the colour schemes.

Are those files actually executable, according to ls? ls -lah /path/to/.style.yapf ls -lah /path/to/parent/of/.style.yapf ls -lah /path/to/test_test.py

Let's do the same with nvim's executable test: :lua print(vim.loop.fs_access("the absolute path", "X"))

SPiCaRiA commented 8 months ago

At least we have consistency between the colour schemes.

Are those files actually executable, according to ls? ls -lah /path/to/.style.yapf ls -lah /path/to/parent/of/.style.yapf ls -lah /path/to/test_test.py

Let's do the same with nvim's executable test: :lua print(vim.loop.fs_access("the absolute path", "X"))

Oh I see how the executable check work. Yes your guess is correct, all the "mis-underlined" files have x permissions. Seems that I accidentally messed things up. 🤣

Btw now I'm wondering if the executable check should exclude some file extensions (e.g. sh py etc.) besides permission check :x?

gegoune commented 8 months ago

Why would it? Executable is executable regardless of its content. You might be wanting to find binary executables instead, is that what you mean?

SPiCaRiA commented 8 months ago

Why would it? Executable is executable regardless its content. You might be wanting to find binary executables instead, is that what you mean?

Yes exactly, I was thinking about binaries. I see the intention, guess I'll just take of decorations of this group for my own purpose :)

alex-courtis commented 8 months ago

find /path/to/project_root -iname '*.py' -type f -exec chmod a-x {} \;

alex-courtis commented 8 months ago

We could perhaps one day add an option with a function(node) that returns a highlight group override. Perhaps a bit like #2673