Description
When opening a .nix file containing home.file.*.text bindings where the filename cannot be extracted (e.g., find_filename_in_parent_node returns nil), vim.filetype.match({ filename = nil }) is called, which crashes with:
Error executing vim.schedule lua callback:
.../languagetree.lua:208: vim/filetype.lua:0: At least one of "buf", "filename", or "contents" must be given
Reproduction
Neovim 0.11.6 with nvim-treesitter-context installed.
Open a .nix file with home-manager config like:
home.file = {
".config/parallel/will-cite" = {
text = "";
};
};
The error triggers because find_filename_in_parent_node can return nil, and that nil is passed directly to vim.filetype.match() without a guard:
|
local function hmts_inject_handler(match, _, bufnr, predicate, metadata) |
|
local path_node = match[predicate[2]] |
|
local filename = find_filename_in_parent_node(path_node, bufnr) |
|
local alias = vim.filetype.match({ filename = filename }) |
|
|
|
if alias == nil then |
|
return |
|
end |
local function hmts_inject_handler(match, _, bufnr, predicate, metadata)
local path_node = match[predicate[2]]
local filename = find_filename_in_parent_node(path_node, bufnr)
local alias = vim.filetype.match({ filename = filename }) -- filename can be nil here!
Fix
Add a nil check before calling vim.filetype.match:
if filename == nil then
return
end
Environment
- Neovim: 0.11.6
- hmts.nvim:
a32cd41
- OS: macOS (Darwin 25.4.0)
Description
When opening a
.nixfile containinghome.file.*.textbindings where the filename cannot be extracted (e.g.,find_filename_in_parent_nodereturnsnil),vim.filetype.match({ filename = nil })is called, which crashes with:Reproduction
Neovim 0.11.6 with
nvim-treesitter-contextinstalled.Open a
.nixfile with home-manager config like:The error triggers because
find_filename_in_parent_nodecan returnnil, and thatnilis passed directly tovim.filetype.match()without a guard:hmts.nvim/plugin/hmts.lua
Lines 154 to 161 in a32cd41
Fix
Add a nil check before calling
vim.filetype.match:Environment
a32cd41