mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
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: #17199 Signed-off-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
bcd5995b40
commit
f102f4c2e8
7
runtime/autoload/dist/script.vim
vendored
7
runtime/autoload/dist/script.vim
vendored
@ -4,7 +4,7 @@ vim9script
|
||||
# Invoked from "scripts.vim" in 'runtimepath'
|
||||
#
|
||||
# Maintainer: The Vim Project <https://github.com/vim/vim>
|
||||
# Last Change: 2025 Jan 20
|
||||
# Last Change: 2025 Apr 24
|
||||
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
|
||||
export def DetectFiletype()
|
||||
@ -26,8 +26,9 @@ def DetectFromHashBang(firstline: string)
|
||||
# "#!/usr/bin/bash" to make matching easier.
|
||||
# Recognize only a few {options} that are commonly used.
|
||||
if line1 =~ '^#!\s*\S*\<env\s'
|
||||
line1 = substitute(line1, '\S\+=\S\+', '', 'g')
|
||||
line1 = substitute(line1, '\(-[iS]\|--ignore-environment\|--split-string\)', '', '')
|
||||
line1 = substitute(line1, '\s\zs--split-string[ \t=]', '', '')
|
||||
line1 = substitute(line1, '\s\zs[A-Za-z0-9_]\+=\S*\ze\s', '', 'g')
|
||||
line1 = substitute(line1, '\s\zs\%(-[iS]\+\|--ignore-environment\)\ze\s', '', 'g')
|
||||
line1 = substitute(line1, '\<env\s\+', '', '')
|
||||
endif
|
||||
|
||||
|
@ -1073,10 +1073,10 @@ def s:GetScriptEnvChecks(): dict<list<list<string>>>
|
||||
return {
|
||||
perl: [['#!/usr/bin/env VAR=val perl']],
|
||||
scala: [['#!/usr/bin/env VAR=val VVAR=vval scala']],
|
||||
awk: [['#!/usr/bin/env VAR=val -i awk']],
|
||||
awk: [['#!/usr/bin/env --split-string=VAR= awk -vFS="," -f']],
|
||||
execline: [['#!/usr/bin/env execlineb']],
|
||||
scheme: [['#!/usr/bin/env VAR=val --ignore-environment scheme']],
|
||||
python: [['#!/usr/bin/env VAR=val -S python -w -T']],
|
||||
python: [['#!/usr/bin/env -S -i VAR=val python -B -u']],
|
||||
wml: [['#!/usr/bin/env VAR=val --split-string wml']],
|
||||
nix: [['#!/usr/bin/env nix-shell']],
|
||||
}
|
||||
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1342,
|
||||
/**/
|
||||
1341,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user