Dear developers, with "setopt GLOB_SUBST" the widget edit-command-line just prints an error and exits on my systems. Adding "noglob" to the function fixes it. Tested environment: Debian stretch with zsh 5.3.1 (x86_64-debian-linux-gnu) Terminals: * Konsole 16.12.0 (TERM=xterm-256color) * XTerm(327) (TERM=xterm) With both terminals the value of zle_bracketed_paste was ( $'\e[?2004h' $'\e[?2004l' ) Steps to reproduce: # env -i TERM=$TERM zsh -f # setopt glob_subst # autoload -U edit-command-line # edit-command-line (anon):6: bad pattern: ^[[?2004l Proposed fix is attached. Feel free to ask me for additional information. Regards Karsten
diff --git a/Functions/Zle/edit-command-line b/Functions/Zle/edit-command-line
index e17893e93..33b091aab 100644
--- a/Functions/Zle/edit-command-line
+++ b/Functions/Zle/edit-command-line
@@ -12,7 +12,7 @@
# Compute the cursor's position in bytes, not characters.
setopt localoptions nomultibyte noksharrays
- (( $+zle_bracketed_paste )) && print -r -n - $zle_bracketed_paste[2]
+ (( $+zle_bracketed_paste )) && noglob print -r -n - $zle_bracketed_paste[2]
# Open the editor, placing the cursor at the right place if we know how.
local editor=( "${(@Q)${(z)${VISUAL:-${EDITOR:-vi}}}}" )
@@ -26,7 +26,7 @@
(*) "${(@)editor}" $1;;
esac
- (( $+zle_bracketed_paste )) && print -r -n - $zle_bracketed_paste[1]
+ (( $+zle_bracketed_paste )) && noglob print -r -n - $zle_bracketed_paste[1]
# Replace the buffer with the editor output.
print -Rz - "$(<$1)"
Attachment:
signature.asc
Description: This is a digitally signed message part.