Skip to content

Sorting with name.<EXT PREFIX>.ext is based on <EXT PREFIX> instead of .ext #2288

Closed
@SirWrexes

Description

@SirWrexes

Description

Hey there,
I do quite often like to "namespace" my files in many projects.
For instance, with my Hyprland config, I have various environment settings files for my different apps, and name them 00-env.<APP NAME>.conf.
I've noticed nvim-tree sorts those based on <APP NAME> and they end up in a different spot in my file list than expected.

Neovim version

NVIM v0.9.1
Build type: Release
LuaJIT 2.1.0-beta3

Operating system and version

Linux 6.3.8-arch1-1

nvim-tree version

f5d970d

Clean room replication

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
      -- OP's note: No plugin necessary
    },
    config = {
      -- OP's note: this is the only change to nvt-nvim.lua I made
      -- It seems however that the default sorting mode has the same behaviour.
      sort_by = 'extension',
      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

Make a bunch of files with same extension like, say .ext.
Have some of them have prefixes to their extension like, for example, .moo, .foo, .bar, .baz

This command will:

  1. Make a temporary directory
  2. CD into it
  3. Create a few empty files
  4. Start NeoVim with NvimTree open
cd $(mktemp -d) \
  && touch thing1.ext thing2.ext thing3.ext \
  && for prefix in moo foo bar baz; do touch thing1.$prefix.ext; done \
  && nvim +NvimTreeOpen

Expected behavior

Edited screenshot of my Hyprland config files for demonstration purposes
image

Actual behavior

Unedited screenshot
image

Metadata

Metadata

Assignees

No one assigned

    Labels

    PR pleasenvim-tree team does not have the bandwidth to implement; a PR will be gratefully appreciatedbugSomething isn't workingreproducedIssue confirmed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions