summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_vi.c
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2022-11-17 20:05:12 +0100
committerOliver Kiddle <opk@zsh.org>2022-11-17 20:05:12 +0100
commitc4d557bb0a9cf6a7241f760ad466e2d91359ceb2 (patch)
tree9441513ef4b6f3fabdeb1a9a31ed1a971c3b63d1 /Src/Zle/zle_vi.c
parentb1533066ca7d50c88b37ce72093c12cf19807818 (diff)
downloadzsh-c4d557bb0a9cf6a7241f760ad466e2d91359ceb2.tar.gz
zsh-c4d557bb0a9cf6a7241f760ad466e2d91359ceb2.zip
50934: use OSC 52 escape sequence when copying to "* or "+ vi buffers
Diffstat (limited to 'Src/Zle/zle_vi.c')
-rw-r--r--Src/Zle/zle_vi.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/Src/Zle/zle_vi.c b/Src/Zle/zle_vi.c
index 0f198d0e8..24d9de6ea 100644
--- a/Src/Zle/zle_vi.c
+++ b/Src/Zle/zle_vi.c
@@ -1014,6 +1014,9 @@ int
visetbuffer(char **args)
{
ZLE_INT_T ch;
+ ZLE_CHAR_T *match = ZWS("_*+");
+ int registermod[] = { MOD_NULL, MOD_PRI, MOD_CLIP };
+ ZLE_CHAR_T *found;
if (*args) {
ch = **args;
@@ -1022,12 +1025,12 @@ visetbuffer(char **args)
} else {
ch = getfullchar(0);
}
- if (ch == ZWC('_')) {
- zmod.flags |= MOD_NULL;
+ if ((found = ZS_strchr(match, ch))) {
+ zmod.flags |= registermod[found - match];
prefixflag = 1;
return 0;
} else
- zmod.flags &= ~MOD_NULL;
+ zmod.flags &= ~(MOD_NULL | MOD_OSSEL);
if ((ch < ZWC('0') || ch > ZWC('9')) &&
(ch < ZWC('a') || ch > ZWC('z')) &&
(ch < ZWC('A') || ch > ZWC('Z')))