mirror of
https://github.com/neovim/neovim.git
synced 2026-08-27 17:41:48 +00:00
vim-patch:9.1.1342: Shebang filetype detection can be improved
Problem: Shebang filetype detection can be improved
Solution: Improve detection logic (Eisuke Kawashima)
Vim does not correctly detect filetype from
- `#!/usr/bin/env --split-string=awk -f`
- `#!/usr/bin/env -S -i awk -f`
- `#!/usr/bin/env -S VAR= awk -f`
So update the current detection logic to detect those cases.
closes: vim/vim#17199
f102f4c2e8
Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
This commit is contained in:
@@ -1959,11 +1959,10 @@ local function match_from_hashbang(contents, path, dispatch_extension)
|
||||
-- "#!/usr/bin/bash" to make matching easier.
|
||||
-- Recognize only a few {options} that are commonly used.
|
||||
if matchregex(first_line, [[^#!\s*\S*\<env\s]]) then
|
||||
first_line = first_line:gsub('%S+=%S+', '')
|
||||
first_line = first_line
|
||||
:gsub('%-%-ignore%-environment', '', 1)
|
||||
:gsub('%-%-split%-string', '', 1)
|
||||
:gsub('%-[iS]', '', 1)
|
||||
first_line = fn.substitute(first_line, [[\s\zs--split-string\(\s\|=\)]], '', '')
|
||||
first_line = fn.substitute(first_line, [[\s\zs[A-Za-z0-9_]\+=\S*\ze\s]], '', 'g')
|
||||
first_line =
|
||||
fn.substitute(first_line, [[\s\zs\%(-[iS]\+\|--ignore-environment\)\ze\s]], '', 'g')
|
||||
first_line = fn.substitute(first_line, [[\<env\s\+]], '', '')
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user