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 "&|<>()@^%!"
This commit is contained in:
Junegunn Choi
2024-05-06 12:07:51 +09:00
parent 24ff66d4a9
commit 5669f48343
3 changed files with 4 additions and 15 deletions

View File

@@ -821,7 +821,7 @@ e.g. \fBfzf --multi | fzf --sync\fR
.B "--with-shell=STR"
Shell command and flags to start child processes with. On *nix Systems, the
default value is \fB$SHELL -c\fR if \fB$SHELL\fR is set, otherwise \fBsh -c\fR.
On Windows, the default value is \fBcmd /v:on/s/c\fR when \fB$SHELL\fR is not
On Windows, the default value is \fBcmd /s/c\fR when \fB$SHELL\fR is not
set.
.RS