From a39c3adecee0998e61b340c84581dd7744de2cc4 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Thu, 23 Oct 2014 17:00:31 +0200 Subject: 33512: add support for "0 vi buffer and yank to it --- Src/Zle/zle_utils.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'Src/Zle/zle_utils.c') diff --git a/Src/Zle/zle_utils.c b/Src/Zle/zle_utils.c index 1089e274f..1479365df 100644 --- a/Src/Zle/zle_utils.c +++ b/Src/Zle/zle_utils.c @@ -43,10 +43,10 @@ struct cutbuffer *kring; int kringsize, kringnum; /* Vi named cut buffers. 0-25 are the named buffers "a to "z, and * - * 26-34 are the numbered buffer stack "1 to "9. */ + * 26-35 are the numbered buffer stack "0 to "9. */ /**/ -struct cutbuffer vibuf[35]; +struct cutbuffer vibuf[36]; /* the line before last mod (for undo purposes) */ @@ -942,16 +942,23 @@ cuttext(ZLE_STRING_T line, int ct, int flags) b->len = len + ct; } return; + } else if (flags & CUT_YANK) { + /* Save in "0 */ + free(vibuf[26].buf); + vibuf[26].buf = (ZLE_STRING_T)zalloc(ct * ZLE_CHAR_SIZE); + ZS_memcpy(vibuf[26].buf, line, ct); + vibuf[26].len = ct; + vibuf[26].flags = vilinerange ? CUTBUFFER_LINE : 0; } else { /* Save in "1, shifting "1-"8 along to "2-"9 */ int n; free(vibuf[34].buf); - for(n=34; n>26; n--) + for(n=35; n>27; n--) vibuf[n] = vibuf[n-1]; - vibuf[26].buf = (ZLE_STRING_T)zalloc(ct * ZLE_CHAR_SIZE); - ZS_memcpy(vibuf[26].buf, line, ct); - vibuf[26].len = ct; - vibuf[26].flags = vilinerange ? CUTBUFFER_LINE : 0; + vibuf[27].buf = (ZLE_STRING_T)zalloc(ct * ZLE_CHAR_SIZE); + ZS_memcpy(vibuf[27].buf, line, ct); + vibuf[27].len = ct; + vibuf[27].flags = vilinerange ? CUTBUFFER_LINE : 0; } if (!cutbuf.buf) { cutbuf.buf = (ZLE_STRING_T)zalloc(ZLE_CHAR_SIZE); -- cgit 1.4.1