aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Knight <admin@snappeh.com>2024-09-23 23:42:16 +0100
committerGitHub <noreply@github.com>2024-09-24 06:42:16 +0800
commit032e024f8ab9048286859be6b83349c5f1ece868 (patch)
tree8628565eb96ce811c5e5b05bf6f93d03e03c9492
parent34a40d3a50f71a4b5e06c36ed9f9110983984dbf (diff)
downloadrneovim-032e024f8ab9048286859be6b83349c5f1ece868.tar.gz
rneovim-032e024f8ab9048286859be6b83349c5f1ece868.tar.bz2
rneovim-032e024f8ab9048286859be6b83349c5f1ece868.zip
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
-rw-r--r--runtime/lua/vim/filetype.lua6
1 files changed, 4 insertions, 2 deletions
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
index 88609799bf..5cb554b83e 100644
--- 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,