36483: handle incomplete multibyte characters in bracketed-paste-magi

This commit is contained in:
Peter Stephenson 2015-09-11 18:40:22 +01:00
parent 7fca9bb05b
commit f5e8527a8c
2 changed files with 17 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2015-09-11 Peter Stephenson <p.w.stephenson@ntlworld.com>
* 36483: Functions/Zle/bracketed-paste-magic: use
[[:INCOMPLETE:]] to get rest of multibyte character.
2015-09-11 Peter Stephenson <p.stephenson@samsung.com>
* unposted: NEWS, README: update for minor new features that

View File

@ -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