commit 032e024f8ab9048286859be6b83349c5f1ece868
parent 34a40d3a50f71a4b5e06c36ed9f9110983984dbf
Author: Tristan Knight <admin@snappeh.com>
Date: Mon, 23 Sep 2024 23:42:16 +0100
fix(filetype): handle .in files with no filename (#30487)
Problem:
fnamemodify with the :r flag will not strip extensions if the filename
starts with a ".". This means that files named ".in" could cause an
infinite loop.
Solution:
Add early return if the filename was not changed
Diffstat:
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
@@ -148,6 +148,9 @@ end
local function detect_noext(path, bufnr)
local root = fn.fnamemodify(path, ':r')
+ if root == path then
+ return
+ end
return M.match({ buf = bufnr, filename = root })
end
@@ -1383,8 +1386,7 @@ local extension = {
['dpkg-new'] = detect_noext,
['in'] = function(path, bufnr)
if vim.fs.basename(path) ~= 'configure.in' then
- local root = fn.fnamemodify(path, ':r')
- return M.match({ buf = bufnr, filename = root })
+ return detect_noext(path, bufnr)
end
end,
new = detect_noext,