diff runtime/scripts.vim @ 20756:33a14786a0e4 v8.2.0930

patch 8.2.0930: script filetype detection trips over env -S argument Commit: https://github.com/vim/vim/commit/b5e18f29fac9253b0ccf1fde5e74bff72fa1ba60 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 7 21:58:54 2020 +0200 patch 8.2.0930: script filetype detection trips over env -S argument Problem: Script filetype detection trips over env -S argument. Solution: Remove "-S" and "--ignore-environment". (closes https://github.com/vim/vim/issues/5013) Add tests.
author Bram Moolenaar <Bram@vim.org>
date Sun, 07 Jun 2020 22:00:04 +0200
parents 847a300aa244
children 0db0640e16e0
line wrap: on
line diff
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types in scripts
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2020 Mar 06
+" Last change:	2020 Jun 07
 
 " This file is called by an autocommand for every file that has just been
 " loaded into a buffer.  It checks if the type of file can be recognized by
@@ -35,10 +35,12 @@ let s:line1 = getline(1)
 if s:line1 =~# "^#!"
   " A script that starts with "#!".
 
-  " Check for a line like "#!/usr/bin/env VAR=val bash".  Turn it into
+  " Check for a line like "#!/usr/bin/env {options} bash".  Turn it into
   " "#!/usr/bin/bash" to make matching easier.
+  " Recognize only a few {options} that are commonly used.
   if s:line1 =~# '^#!\s*\S*\<env\s'
     let s:line1 = substitute(s:line1, '\S\+=\S\+', '', 'g')
+    let s:line1 = substitute(s:line1, '\(-[iS]\|--ignore-environment\|--split-string\)', '', '')
     let s:line1 = substitute(s:line1, '\<env\s\+', '', '')
   endif