From f5e8527a8c62dd59e3883b25d9c3009fb7caf4ab Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 11 Sep 2015 18:40:22 +0100 Subject: 36483: handle incomplete multibyte characters in bracketed-paste-magi --- ChangeLog | 5 +++++ Functions/Zle/bracketed-paste-magic | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index c2258b402..cdcd51886 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-09-11 Peter Stephenson + + * 36483: Functions/Zle/bracketed-paste-magic: use + [[:INCOMPLETE:]] to get rest of multibyte character. + 2015-09-11 Peter Stephenson * unposted: NEWS, README: update for minor new features that diff --git a/Functions/Zle/bracketed-paste-magic b/Functions/Zle/bracketed-paste-magic index 49f4b6620..464c6b339 100644 --- a/Functions/Zle/bracketed-paste-magic +++ b/Functions/Zle/bracketed-paste-magic @@ -164,17 +164,25 @@ bracketed-paste-magic() { integer bpm_limit=$UNDO_LIMIT_NO bpm_undo=$UNDO_CHANGE_NO UNDO_LIMIT_NO=$UNDO_CHANGE_NO + local mbchar + integer ismb while [[ -n $PASTED ]] && zle .read-command; do - PASTED=${PASTED#$KEYS} - if [[ $KEYS = ${(~j:|:)${(b)bpm_inactive}} ]]; then - zle .self-insert-unmeta + mbchar=$KEYS + ismb=0 + while [[ $mbchar = [[:INCOMPLETE:]]* ]] && zle .read-command; do + mbchar+=$KEYS + ismb=1 + done + PASTED=${PASTED#$mbchar} + if [[ ismb -ne 0 || $mbchar = ${(~j:|:)${(b)bpm_inactive}} ]]; then + LBUFFER+=$mbchar else case $REPLY in (${~bpm_active}) function () { emulate -L $bpm_emulate; set -$bpm_opts zle $REPLY };; - (*) zle .self-insert-unmeta;; + (*) LBUFFER+=$mbchar; esac fi done -- cgit 1.4.1