diff options
author | Tristan Knight <admin@snappeh.com> | 2024-09-23 23:42:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 06:42:16 +0800 |
commit | 032e024f8ab9048286859be6b83349c5f1ece868 (patch) | |
tree | 8628565eb96ce811c5e5b05bf6f93d03e03c9492 | |
parent | 34a40d3a50f71a4b5e06c36ed9f9110983984dbf (diff) | |
download | rneovim-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.lua | 6 |
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, |