aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2024-08-04 18:59:34 +0200
committerChristian Clason <c.clason@uni-graz.at>2024-08-04 18:59:38 +0200
commitbe9eaac7e8ee9961ffe1e5d5d25dfc3b7a83ba57 (patch)
tree2bd1aba95ec1bfdc019aff339d96472e3e65a418
parent58406ab9f0adba6f26402d47479ca061864b2584 (diff)
downloadrneovim-be9eaac7e8ee9961ffe1e5d5d25dfc3b7a83ba57.tar.gz
rneovim-be9eaac7e8ee9961ffe1e5d5d25dfc3b7a83ba57.tar.bz2
rneovim-be9eaac7e8ee9961ffe1e5d5d25dfc3b7a83ba57.zip
vim-patch:c5bdd66: runtime(zip): escape '[' on Unix as well
Problem: After 6f1cbfc9ab483a09877e153ad130164875c40b1d fnameescape() is no longer called on the name of the file to be extracted. However, while spaces indeed don't need to be escaped, unzip treats '[' as a wildcard character, so it need to be escaped. Solution: Escape '[' on both MS-Windows and Unix. From the docs it seems '*' and '?' also need escaping, but they seem to actually work without escaping. fixes: neovim/neovim#29977 closes: vim/vim#15427 https://github.com/vim/vim/commit/c5bdd66558b14f04424a22d9714a9b7d0c277dac Co-authored-by: zeertzjq <zeertzjq@outlook.com>
-rw-r--r--runtime/autoload/zip.vim5
1 files changed, 3 insertions, 2 deletions
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index f77d729f03..e8973e3c80 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -9,6 +9,7 @@
" 2024 Jul 23 by Vim Project: fix 'x' command
" 2024 Jul 24 by Vim Project: use delete() function
" 2024 Jul 20 by Vim Project: fix opening remote zipfile
+" 2024 Aug 04 by Vim Project: escape '[' in name of file to be extracted
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
@@ -218,8 +219,8 @@ fun! zip#Read(fname,mode)
else
let zipfile = substitute(a:fname,'^.\{-}zipfile://\(.\{-}\)::[^\\].*$','\1','')
let fname = substitute(a:fname,'^.\{-}zipfile://.\{-}::\([^\\].*\)$','\1','')
- let fname = substitute(fname, '[', '[[]', 'g')
endif
+ let fname = substitute(fname, '[', '[[]', 'g')
" sanity check
if !executable(substitute(g:zip_unzipcmd,'\s\+.*$','',''))
redraw!
@@ -230,7 +231,7 @@ fun! zip#Read(fname,mode)
endif
" the following code does much the same thing as
- " exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1)
+ " exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fname,1)
" but allows zipfile://... entries in quickfix lists
let temp = tempname()
let fn = expand('%:p')