diff options
author | Oliver Kiddle <opk@zsh.org> | 2022-11-17 20:05:12 +0100 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2022-11-17 20:05:12 +0100 |
commit | c4d557bb0a9cf6a7241f760ad466e2d91359ceb2 (patch) | |
tree | 9441513ef4b6f3fabdeb1a9a31ed1a971c3b63d1 /Src/Zle/zle_vi.c | |
parent | b1533066ca7d50c88b37ce72093c12cf19807818 (diff) | |
download | zsh-c4d557bb0a9cf6a7241f760ad466e2d91359ceb2.tar.gz zsh-c4d557bb0a9cf6a7241f760ad466e2d91359ceb2.tar.xz 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.c | 9 |
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'))) |