diff options
Diffstat (limited to 'vim/vim-7.2/7.2.190')
-rw-r--r-- | vim/vim-7.2/7.2.190 | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/vim/vim-7.2/7.2.190 b/vim/vim-7.2/7.2.190 new file mode 100644 index 0000000..2a0aee9 --- /dev/null +++ b/vim/vim-7.2/7.2.190 @@ -0,0 +1,182 @@ +To: vim-dev@vim.org +Subject: Patch 7.2.190 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.2.190 +Problem: The register executed by @@ isn't restored. +Solution: Mark the executable register in the viminfo file. +Files: src/ops.c + + +*** ../vim-7.2.189/src/ops.c 2009-05-13 12:46:36.000000000 +0200 +--- src/ops.c 2009-05-26 18:05:23.000000000 +0200 +*************** +*** 1143,1148 **** +--- 1143,1150 ---- + return OK; + } + ++ static int execreg_lastc = NUL; ++ + /* + * execute a yank register: copy it into the stuff buffer + * +*************** +*** 1155,1161 **** + int addcr; /* always add '\n' to end of line */ + int silent; /* set "silent" flag in typeahead buffer */ + { +- static int lastc = NUL; + long i; + char_u *p; + int retval = OK; +--- 1157,1162 ---- +*************** +*** 1163,1174 **** + + if (regname == '@') /* repeat previous one */ + { +! if (lastc == NUL) + { + EMSG(_("E748: No previously used register")); + return FAIL; + } +! regname = lastc; + } + /* check for valid regname */ + if (regname == '%' || regname == '#' || !valid_yank_reg(regname, FALSE)) +--- 1164,1175 ---- + + if (regname == '@') /* repeat previous one */ + { +! if (execreg_lastc == NUL) + { + EMSG(_("E748: No previously used register")); + return FAIL; + } +! regname = execreg_lastc; + } + /* check for valid regname */ + if (regname == '%' || regname == '#' || !valid_yank_reg(regname, FALSE)) +*************** +*** 1176,1182 **** + emsg_invreg(regname); + return FAIL; + } +! lastc = regname; + + #ifdef FEAT_CLIPBOARD + regname = may_get_selection(regname); +--- 1177,1183 ---- + emsg_invreg(regname); + return FAIL; + } +! execreg_lastc = regname; + + #ifdef FEAT_CLIPBOARD + regname = may_get_selection(regname); +*************** +*** 5337,5347 **** +--- 5338,5351 ---- + + /* We only get here (hopefully) if line[0] == '"' */ + str = virp->vir_line + 1; ++ ++ /* If the line starts with "" this is the y_previous register. */ + if (*str == '"') + { + set_prev = TRUE; + str++; + } ++ + if (!ASCII_ISALNUM(*str) && *str != '-') + { + if (viminfo_error("E577: ", _("Illegal register name"), virp->vir_line)) +*************** +*** 5351,5356 **** +--- 5355,5368 ---- + get_yank_register(*str++, FALSE); + if (!force && y_current->y_array != NULL) + do_it = FALSE; ++ ++ if (*str == '@') ++ { ++ /* "x@: register x used for @@ */ ++ if (force || execreg_lastc == NUL) ++ execreg_lastc = str[-1]; ++ } ++ + size = 0; + limit = 100; /* Optimized for registers containing <= 100 lines */ + if (do_it) +*************** +*** 5360,5366 **** + vim_free(y_current->y_array); + array = y_current->y_array = + (char_u **)alloc((unsigned)(limit * sizeof(char_u *))); +! str = skipwhite(str); + if (STRNCMP(str, "CHAR", 4) == 0) + y_current->y_type = MCHAR; + #ifdef FEAT_VISUAL +--- 5372,5378 ---- + vim_free(y_current->y_array); + array = y_current->y_array = + (char_u **)alloc((unsigned)(limit * sizeof(char_u *))); +! str = skipwhite(skiptowhite(str)); + if (STRNCMP(str, "CHAR", 4) == 0) + y_current->y_type = MCHAR; + #ifdef FEAT_VISUAL +*************** +*** 5443,5448 **** +--- 5455,5461 ---- + max_kbyte = get_viminfo_parameter('s'); + if (max_kbyte == 0) + return; ++ + for (i = 0; i < NUM_REGISTERS; i++) + { + if (y_regs[i].y_array == NULL) +*************** +*** 5497,5503 **** + if (y_previous == &y_regs[i]) + fprintf(fp, "\""); + c = get_register_name(i); +! fprintf(fp, "\"%c\t%s\t%d\n", c, type, + #ifdef FEAT_VISUAL + (int)y_regs[i].y_width + #else +--- 5510,5519 ---- + if (y_previous == &y_regs[i]) + fprintf(fp, "\""); + c = get_register_name(i); +! fprintf(fp, "\"%c", c); +! if (c == execreg_lastc) +! fprintf(fp, "@"); +! fprintf(fp, "\t%s\t%d\n", type, + #ifdef FEAT_VISUAL + (int)y_regs[i].y_width + #else +*** ../vim-7.2.189/src/version.c 2009-05-26 11:01:43.000000000 +0200 +--- src/version.c 2009-05-26 18:10:13.000000000 +0200 +*************** +*** 678,679 **** +--- 678,681 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 190, + /**/ + +-- +If you had to identify, in one word, the reason why the +human race has not achieved, and never will achieve, its +full potential, that word would be "meetings." + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |