Mercurial > vim
diff src/ops.c @ 6557:c1ed973fb58f v7.4.605
updated for version 7.4.605
Problem: The # register is not writable, it cannot be restored after
jumping around.
Solution: Make the # register writable. (Marcin Szamotulski)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 27 Jan 2015 18:44:16 +0100 |
parents | f9d02ce2f745 |
children | a287b0e9e87b |
line wrap: on
line diff
--- a/src/ops.c +++ b/src/ops.c @@ -856,11 +856,12 @@ valid_yank_reg(regname, writing) if ( (regname > 0 && ASCII_ISALNUM(regname)) || (!writing && vim_strchr((char_u *) #ifdef FEAT_EVAL - "/.%#:=" + "/.%:=" #else - "/.%#:" + "/.%:" #endif , regname) != NULL) + || regname == '#' || regname == '"' || regname == '-' || regname == '_' @@ -6514,6 +6515,27 @@ write_reg_contents_ex(name, str, maxlen, return; } + if (name == '#') + { + buf_T *buf; + + if (VIM_ISDIGIT(*str)) + { + int num = atoi((char *)str); + + buf = buflist_findnr(num); + if (buf == NULL) + EMSGN(_(e_nobufnr), (long)num); + } + else + buf = buflist_findnr(buflist_findpat(str, str + STRLEN(str), + TRUE, FALSE, FALSE)); + if (buf == NULL) + return; + curwin->w_alt_fnum = buf->b_fnum; + return; + } + #ifdef FEAT_EVAL if (name == '=') {