summaryrefslogtreecommitdiff
path: root/plugin
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2024-05-06 12:07:51 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2024-05-06 13:46:06 +0900
commit5669f48343cac868eb7432950db61c9aa2383ab6 (patch)
tree2e6f2e9de27cc75a4802591e87b4ecc54116dcc9 /plugin
parent24ff66d4a9d6889988e4d7e373f33f4098870b9e (diff)
downloadfzf-5669f48343cac868eb7432950db61c9aa2383ab6.tar.gz
Do not enable delayed expansion mode when running cmd.exe
And simplify the argument escaping code. Fix #3764. This may breaks some existing use cases, but the mode causes too much trouble when escaping arguments and it makes some things not possible. # Now you can pass special characters to rg process without any escaping problems: &|<>()@^%! fzf --ansi --disabled --bind "change:reload:rg --column --line-number --no-heading --color=always --smart-case -- {q}" # No sudden expansion of the arguments on '!' fzf --disabled --preview "echo {q} {n} {}" --query "&|<>()@^%!" --prompt "&|<>()@^%!"
Diffstat (limited to 'plugin')
-rw-r--r--plugin/fzf.vim13
1 files changed, 2 insertions, 11 deletions
diff --git a/plugin/fzf.vim b/plugin/fzf.vim
index 4a1ca0e5..b73f2aaa 100644
--- a/plugin/fzf.vim
+++ b/plugin/fzf.vim
@@ -59,12 +59,9 @@ if s:is_win
return iconv(a:str, &encoding, 'cp'.s:codepage)
endfunction
function! s:wrap_cmds(cmds)
- return map([
- \ '@echo off',
- \ 'setlocal enabledelayedexpansion']
+ return map(['@echo off']
\ + (has('gui_running') ? ['set TERM= > nul'] : [])
- \ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds])
- \ + ['endlocal'],
+ \ + (type(a:cmds) == type([]) ? a:cmds : [a:cmds]),
\ '<SID>enc_to_cp(v:val."\r")')
endfunction
else
@@ -83,8 +80,6 @@ else
endfunction
endif
-let s:cmd_control_chars = ['&', '|', '<', '>', '(', ')', '@', '^', '!']
-
function! s:shellesc_cmd(arg)
let e = '"'
let slashes = 0
@@ -94,10 +89,6 @@ function! s:shellesc_cmd(arg)
elseif c ==# '"'
let e .= repeat('\', slashes + 1)
let slashes = 0
- elseif c ==# '%'
- let e .= '%'
- elseif index(s:cmd_control_chars, c) >= 0
- let e .= '^'
else
let slashes = 0
endif