diff options
author | Christian Clason <c.clason@uni-graz.at> | 2023-09-06 23:49:58 +0200 |
---|---|---|
committer | Christian Clason <c.clason@uni-graz.at> | 2023-09-07 09:06:35 +0200 |
commit | 5d1c1da3c90adece96f491e7f12fd76c03a881c9 (patch) | |
tree | 70e8b814aa7c571a73e21245f848e0dcde0270e5 | |
parent | d27214331815324ea5762b5aa22996b9019085c6 (diff) | |
download | rneovim-5d1c1da3c90adece96f491e7f12fd76c03a881c9.tar.gz rneovim-5d1c1da3c90adece96f491e7f12fd76c03a881c9.tar.bz2 rneovim-5d1c1da3c90adece96f491e7f12fd76c03a881c9.zip |
vim-patch:67c951df4c95
runtime(ftplugin): allow to exec if curdir is in PATH
In case the current directory is present as valid $PATH entry, it is OK
to call the program from it, even if vim curdir is in that same
directory.
(Without that patch, for instance, you will not be able to open .zip
files while your current directory is /bin)
closes: vim/vim#13027
https://github.com/vim/vim/commit/67c951df4c95981c716eeedb1b102d9668549e65
Co-authored-by: Anton Sharonov <anton.sharonov@gmail.com>
-rw-r--r-- | runtime/autoload/gzip.vim | 5 | ||||
-rw-r--r-- | runtime/autoload/zip.vim | 7 | ||||
-rw-r--r-- | runtime/ftplugin/perl.vim | 5 | ||||
-rw-r--r-- | runtime/ftplugin/ruby.vim | 5 | ||||
-rw-r--r-- | runtime/ftplugin/zig.vim | 5 |
5 files changed, 22 insertions, 5 deletions
diff --git a/runtime/autoload/gzip.vim b/runtime/autoload/gzip.vim index ac9e37bf85..6d0bb13401 100644 --- a/runtime/autoload/gzip.vim +++ b/runtime/autoload/gzip.vim @@ -11,7 +11,10 @@ fun s:check(cmd) let name = substitute(a:cmd, '\(\S*\).*', '\1', '') if !exists("s:have_" . name) " safety check, don't execute anything from the current directory - let f = fnamemodify(exepath(name), ":p:h") !=# getcwd() + let s:tmp_cwd = getcwd() + let f = (fnamemodify(exepath(name), ":p:h") !=# s:tmp_cwd + \ || (index(split($PATH,has("win32")? ';' : ':'), s:tmp_cwd) != -1 && s:tmp_cwd != '.')) + unlet s:tmp_cwd if !f echoerr "Warning: NOT executing " .. name .. " from current directory!" endif diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim index 0331a542ac..8b39c91c3a 100644 --- a/runtime/autoload/zip.vim +++ b/runtime/autoload/zip.vim @@ -57,10 +57,15 @@ if !exists("g:zip_extractcmd") let g:zip_extractcmd= g:zip_unzipcmd endif -if fnamemodify(exepath(g:zip_unzipcmd), ":p:h") ==# getcwd() +let s:tmp_cwd = getcwd() +if (fnamemodify(exepath(g:zip_unzipcmd), ":p:h") ==# getcwd() + \ && (index(split($PATH,has("win32")? ';' : ':'), s:tmp_cwd) == -1 || s:tmp_cwd == '.')) + unlet s:tmp_cwd echoerr "Warning: NOT executing " .. g:zip_unzipcmd .. " from current directory!" finish endif +unlet s:tmp_cwd + " ---------------- " Functions: {{{1 " ---------------- diff --git a/runtime/ftplugin/perl.vim b/runtime/ftplugin/perl.vim index edc7b960f1..4361097f32 100644 --- a/runtime/ftplugin/perl.vim +++ b/runtime/ftplugin/perl.vim @@ -55,7 +55,9 @@ endif " Set this once, globally. if !exists("perlpath") " safety check: don't execute perl from current directory - if executable("perl") && fnamemodify(exepath("perl"), ":p:h") != getcwd() + let s:tmp_cwd = getcwd() + if executable("perl") && (fnamemodify(exepath("perl"), ":p:h") != s:tmp_cwd + \ || (index(split($PATH,has("win32")? ';' : ':'), s:tmp_cwd) != -1 && s:tmp_cwd != '.')) try if &shellxquote != '"' let perlpath = system('perl -e "print join(q/,/,@INC)"') @@ -71,6 +73,7 @@ if !exists("perlpath") " current directory and the directory of the current file. let perlpath = ".,," endif + unlet s:tmp_cwd endif " Append perlpath to the existing path value, if it is set. Since we don't diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim index daffe1e0dc..a424801cd1 100644 --- a/runtime/ftplugin/ruby.vim +++ b/runtime/ftplugin/ruby.vim @@ -77,11 +77,14 @@ function! s:query_path(root) abort let cwd = fnameescape(getcwd()) try exe cd fnameescape(a:root) - if fnamemodify(exepath('ruby'), ':p:h') ==# cwd + let s:tmp_cwd = getcwd() + if (fnamemodify(exepath('ruby'), ':p:h') ==# cwd + \ && (index(split($PATH,has("win32")? ';' : ':'), s:tmp_cwd) == -1 || s:tmp_cwd == '.')) let path = [] else let path = split(system(path_check),',') endif + unlet s:tmp_cwd exe cd cwd return path finally diff --git a/runtime/ftplugin/zig.vim b/runtime/ftplugin/zig.vim index cd18bfe2bd..45ea582615 100644 --- a/runtime/ftplugin/zig.vim +++ b/runtime/ftplugin/zig.vim @@ -40,14 +40,17 @@ endif let &l:define='\v(<fn>|<const>|<var>|^\s*\#\s*define)' " Safety check: don't execute zip from current directory +let s:tmp_cwd = getcwd() if !exists('g:zig_std_dir') && exists('*json_decode') && - \ executable('zig') && fnamemodify(exepath("zig"), ":p:h") != getcwd() + \ executable('zig') && (fnamemodify(exepath("zig"), ":p:h") != s:tmp_cwd + \ || (index(split($PATH,has("win32")? ';' : ':'), s:tmp_cwd) != -1 && s:tmp_cwd != '.')) silent let s:env = system('zig env') if v:shell_error == 0 let g:zig_std_dir = json_decode(s:env)['std_dir'] endif unlet! s:env endif +unlet s:tmp_cwd if exists('g:zig_std_dir') let &l:path = &l:path . ',' . g:zig_std_dir |