]> git.pld-linux.org Git - packages/vim.git/blob - 7.2.190
- new
[packages/vim.git] / 7.2.190
1 To: vim-dev@vim.org
2 Subject: Patch 7.2.190
3 Fcc: outbox
4 From: Bram Moolenaar <Bram@moolenaar.net>
5 Mime-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8 ------------
9
10 Patch 7.2.190
11 Problem:    The register executed by @@ isn't restored.
12 Solution:   Mark the executable register in the viminfo file.
13 Files:      src/ops.c
14
15
16 *** ../vim-7.2.189/src/ops.c    2009-05-13 12:46:36.000000000 +0200
17 --- src/ops.c   2009-05-26 18:05:23.000000000 +0200
18 ***************
19 *** 1143,1148 ****
20 --- 1143,1150 ----
21       return OK;
22   }
23   
24 + static int execreg_lastc = NUL;
25
26   /*
27    * execute a yank register: copy it into the stuff buffer
28    *
29 ***************
30 *** 1155,1161 ****
31       int           addcr;              /* always add '\n' to end of line */
32       int           silent;             /* set "silent" flag in typeahead buffer */
33   {
34 -     static int        lastc = NUL;
35       long      i;
36       char_u    *p;
37       int               retval = OK;
38 --- 1157,1162 ----
39 ***************
40 *** 1163,1174 ****
41   
42       if (regname == '@')                       /* repeat previous one */
43       {
44 !       if (lastc == NUL)
45         {
46             EMSG(_("E748: No previously used register"));
47             return FAIL;
48         }
49 !       regname = lastc;
50       }
51                                         /* check for valid regname */
52       if (regname == '%' || regname == '#' || !valid_yank_reg(regname, FALSE))
53 --- 1164,1175 ----
54   
55       if (regname == '@')                       /* repeat previous one */
56       {
57 !       if (execreg_lastc == NUL)
58         {
59             EMSG(_("E748: No previously used register"));
60             return FAIL;
61         }
62 !       regname = execreg_lastc;
63       }
64                                         /* check for valid regname */
65       if (regname == '%' || regname == '#' || !valid_yank_reg(regname, FALSE))
66 ***************
67 *** 1176,1182 ****
68         emsg_invreg(regname);
69         return FAIL;
70       }
71 !     lastc = regname;
72   
73   #ifdef FEAT_CLIPBOARD
74       regname = may_get_selection(regname);
75 --- 1177,1183 ----
76         emsg_invreg(regname);
77         return FAIL;
78       }
79 !     execreg_lastc = regname;
80   
81   #ifdef FEAT_CLIPBOARD
82       regname = may_get_selection(regname);
83 ***************
84 *** 5337,5347 ****
85 --- 5338,5351 ----
86   
87       /* We only get here (hopefully) if line[0] == '"' */
88       str = virp->vir_line + 1;
89
90 +     /* If the line starts with "" this is the y_previous register. */
91       if (*str == '"')
92       {
93         set_prev = TRUE;
94         str++;
95       }
96
97       if (!ASCII_ISALNUM(*str) && *str != '-')
98       {
99         if (viminfo_error("E577: ", _("Illegal register name"), virp->vir_line))
100 ***************
101 *** 5351,5356 ****
102 --- 5355,5368 ----
103       get_yank_register(*str++, FALSE);
104       if (!force && y_current->y_array != NULL)
105         do_it = FALSE;
106
107 +     if (*str == '@')
108 +     {
109 +       /* "x@: register x used for @@ */
110 +       if (force || execreg_lastc == NUL)
111 +           execreg_lastc = str[-1];
112 +     }
113
114       size = 0;
115       limit = 100;      /* Optimized for registers containing <= 100 lines */
116       if (do_it)
117 ***************
118 *** 5360,5366 ****
119         vim_free(y_current->y_array);
120         array = y_current->y_array =
121                        (char_u **)alloc((unsigned)(limit * sizeof(char_u *)));
122 !       str = skipwhite(str);
123         if (STRNCMP(str, "CHAR", 4) == 0)
124             y_current->y_type = MCHAR;
125   #ifdef FEAT_VISUAL
126 --- 5372,5378 ----
127         vim_free(y_current->y_array);
128         array = y_current->y_array =
129                        (char_u **)alloc((unsigned)(limit * sizeof(char_u *)));
130 !       str = skipwhite(skiptowhite(str));
131         if (STRNCMP(str, "CHAR", 4) == 0)
132             y_current->y_type = MCHAR;
133   #ifdef FEAT_VISUAL
134 ***************
135 *** 5443,5448 ****
136 --- 5455,5461 ----
137       max_kbyte = get_viminfo_parameter('s');
138       if (max_kbyte == 0)
139         return;
140
141       for (i = 0; i < NUM_REGISTERS; i++)
142       {
143         if (y_regs[i].y_array == NULL)
144 ***************
145 *** 5497,5503 ****
146         if (y_previous == &y_regs[i])
147             fprintf(fp, "\"");
148         c = get_register_name(i);
149 !       fprintf(fp, "\"%c\t%s\t%d\n", c, type,
150   #ifdef FEAT_VISUAL
151                     (int)y_regs[i].y_width
152   #else
153 --- 5510,5519 ----
154         if (y_previous == &y_regs[i])
155             fprintf(fp, "\"");
156         c = get_register_name(i);
157 !       fprintf(fp, "\"%c", c);
158 !       if (c == execreg_lastc)
159 !           fprintf(fp, "@");
160 !       fprintf(fp, "\t%s\t%d\n", type,
161   #ifdef FEAT_VISUAL
162                     (int)y_regs[i].y_width
163   #else
164 *** ../vim-7.2.189/src/version.c        2009-05-26 11:01:43.000000000 +0200
165 --- src/version.c       2009-05-26 18:10:13.000000000 +0200
166 ***************
167 *** 678,679 ****
168 --- 678,681 ----
169   {   /* Add new patch number below this line */
170 + /**/
171 +     190,
172   /**/
173
174 -- 
175 If you had to identify, in one word, the reason why the
176 human race has not achieved, and never will achieve, its
177 full potential, that word would be "meetings."
178
179  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
180 ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
181 \\\        download, build and distribute -- http://www.A-A-P.org        ///
182  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
This page took 0.039091 seconds and 3 git commands to generate.