Loading ...
Sorry, an error occurred while loading the content.

Patch 7.2.190

Expand Messages
  • Bram Moolenaar
    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 ...
    Message 1 of 1 , May 26, 2009
    • 0 Attachment
      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@... -- 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 ///

      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_dev" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    Your message has been successfully submitted and would be delivered to recipients shortly.