aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-09-06 23:49:58 +0200
committerChristian Clason <c.clason@uni-graz.at>2023-09-07 09:06:35 +0200
commit5d1c1da3c90adece96f491e7f12fd76c03a881c9 (patch)
tree70e8b814aa7c571a73e21245f848e0dcde0270e5
parentd27214331815324ea5762b5aa22996b9019085c6 (diff)
downloadrneovim-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.vim5
-rw-r--r--runtime/autoload/zip.vim7
-rw-r--r--runtime/ftplugin/perl.vim5
-rw-r--r--runtime/ftplugin/ruby.vim5
-rw-r--r--runtime/ftplugin/zig.vim5
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