diff options
author | Paul Barker <paul@paulbarker.me.uk> | 2013-04-20 12:17:07 +0000 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2013-04-22 19:00:56 +0200 |
commit | 7d3febb7d352f6a438c629e244d28e36cc719adc (patch) | |
tree | e364c9253503ee5bdc2c51bee44c4db8f237c2f1 /meta-oe/recipes-support | |
parent | 14e1aaa74d851e3716fa6ada80ebb6f15e4f3db1 (diff) | |
download | meta-openembedded-7d3febb7d352f6a438c629e244d28e36cc719adc.tar.gz |
vim: update to 7.3.905
Replace version 7.2.446 with the latest version currently available, 7.3.905.
The old fetch method was inefficient as version 7.2 was downloaded and patches
applied to get to version 7.2.446. Attempting this method with git 7.3 did not
work as not all 905 patches applied cleanly. Instead we fetch version 7.3.905
directly from the upstream mercurial repository. This causes an implicit
dependency on mercurial-native for the build which is reasonable considering
that not many images include vim by default.
The previously used patch configure.in_remove_CC_quotes.patch is still required
as these changes haven't been made upstream; this patch still applies cleanly.
Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'meta-oe/recipes-support')
-rw-r--r-- | meta-oe/recipes-support/vim/files/401-446.diff | 5426 | ||||
-rw-r--r-- | meta-oe/recipes-support/vim/vim.inc | 10 | ||||
-rw-r--r-- | meta-oe/recipes-support/vim/vim_7.2.446.bb | 28 | ||||
-rw-r--r-- | meta-oe/recipes-support/vim/vim_7.3.905.bb | 7 |
4 files changed, 10 insertions, 5461 deletions
diff --git a/meta-oe/recipes-support/vim/files/401-446.diff b/meta-oe/recipes-support/vim/files/401-446.diff deleted file mode 100644 index fa163fc75..000000000 --- a/meta-oe/recipes-support/vim/files/401-446.diff +++ /dev/null | |||
@@ -1,5426 +0,0 @@ | |||
1 | To: vim-dev@vim.org | ||
2 | Subject: Patch 7.2.401 | ||
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.401 | ||
11 | Problem: ":e dir<Tab>" with 'wildmode' set to "list" doesn't highlight | ||
12 | directory names with a space. (Alexandre Provencio) | ||
13 | Solution: Remove the backslash before checking if the name is a directory. | ||
14 | (Dominique Pelle) | ||
15 | Files: src/ex_getln.c | ||
16 | |||
17 | |||
18 | *** ../vim-7.2.400/src/ex_getln.c 2010-03-02 17:23:10.000000000 +0100 | ||
19 | --- src/ex_getln.c 2010-03-17 19:00:54.000000000 +0100 | ||
20 | *************** | ||
21 | *** 3948,3955 **** | ||
22 | || xp->xp_context == EXPAND_SHELLCMD | ||
23 | || xp->xp_context == EXPAND_BUFFERS) | ||
24 | { | ||
25 | ! /* highlight directories */ | ||
26 | ! j = (mch_isdir(files_found[k])); | ||
27 | if (showtail) | ||
28 | p = L_SHOWFILE(k); | ||
29 | else | ||
30 | --- 3948,3959 ---- | ||
31 | || xp->xp_context == EXPAND_SHELLCMD | ||
32 | || xp->xp_context == EXPAND_BUFFERS) | ||
33 | { | ||
34 | ! char_u *halved_slash; | ||
35 | ! | ||
36 | ! /* highlight directories */ | ||
37 | ! halved_slash = backslash_halve_save(files_found[k]); | ||
38 | ! j = mch_isdir(halved_slash); | ||
39 | ! vim_free(halved_slash); | ||
40 | if (showtail) | ||
41 | p = L_SHOWFILE(k); | ||
42 | else | ||
43 | *** ../vim-7.2.400/src/version.c 2010-03-17 18:15:17.000000000 +0100 | ||
44 | --- src/version.c 2010-03-17 19:12:22.000000000 +0100 | ||
45 | *************** | ||
46 | *** 683,684 **** | ||
47 | --- 683,686 ---- | ||
48 | { /* Add new patch number below this line */ | ||
49 | + /**/ | ||
50 | + 401, | ||
51 | /**/ | ||
52 | |||
53 | -- | ||
54 | Two cows are standing together in a field. One asks the other: | ||
55 | "So what do you think about this Mad Cow Disease?" | ||
56 | The other replies: "That doesn't concern me. I'm a helicopter." | ||
57 | |||
58 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
59 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
60 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
61 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
62 | To: vim-dev@vim.org | ||
63 | Subject: Patch 7.2.402 | ||
64 | Fcc: outbox | ||
65 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
66 | Mime-Version: 1.0 | ||
67 | Content-Type: text/plain; charset=UTF-8 | ||
68 | Content-Transfer-Encoding: 8bit | ||
69 | ------------ | ||
70 | |||
71 | Patch 7.2.402 | ||
72 | Problem: This gives a #705 error: let X = function('haslocaldir') | ||
73 | let X = function('getcwd') | ||
74 | Solution: Don't give E705 when the name is found in the hashtab. (Sergey | ||
75 | Khorev) | ||
76 | Files: src/eval.c | ||
77 | |||
78 | |||
79 | *** ../vim-7.2.401/src/eval.c 2010-03-10 13:43:22.000000000 +0100 | ||
80 | --- src/eval.c 2010-03-17 19:35:01.000000000 +0100 | ||
81 | *************** | ||
82 | *** 19103,19108 **** | ||
83 | --- 19103,19116 ---- | ||
84 | hashtab_T *ht; | ||
85 | char_u *p; | ||
86 | |||
87 | + ht = find_var_ht(name, &varname); | ||
88 | + if (ht == NULL || *varname == NUL) | ||
89 | + { | ||
90 | + EMSG2(_(e_illvar), name); | ||
91 | + return; | ||
92 | + } | ||
93 | + v = find_var_in_ht(ht, varname, TRUE); | ||
94 | + | ||
95 | if (tv->v_type == VAR_FUNC) | ||
96 | { | ||
97 | if (!(vim_strchr((char_u *)"wbs", name[0]) != NULL && name[1] == ':') | ||
98 | *************** | ||
99 | *** 19112,19118 **** | ||
100 | EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name); | ||
101 | return; | ||
102 | } | ||
103 | ! if (function_exists(name)) | ||
104 | { | ||
105 | EMSG2(_("E705: Variable name conflicts with existing function: %s"), | ||
106 | name); | ||
107 | --- 19120,19129 ---- | ||
108 | EMSG2(_("E704: Funcref variable name must start with a capital: %s"), name); | ||
109 | return; | ||
110 | } | ||
111 | ! /* Don't allow hiding a function. When "v" is not NULL we migth be | ||
112 | ! * assigning another function to the same var, the type is checked | ||
113 | ! * below. */ | ||
114 | ! if (v == NULL && function_exists(name)) | ||
115 | { | ||
116 | EMSG2(_("E705: Variable name conflicts with existing function: %s"), | ||
117 | name); | ||
118 | *************** | ||
119 | *** 19120,19133 **** | ||
120 | } | ||
121 | } | ||
122 | |||
123 | - ht = find_var_ht(name, &varname); | ||
124 | - if (ht == NULL || *varname == NUL) | ||
125 | - { | ||
126 | - EMSG2(_(e_illvar), name); | ||
127 | - return; | ||
128 | - } | ||
129 | - | ||
130 | - v = find_var_in_ht(ht, varname, TRUE); | ||
131 | if (v != NULL) | ||
132 | { | ||
133 | /* existing variable, need to clear the value */ | ||
134 | --- 19131,19136 ---- | ||
135 | *** ../vim-7.2.401/src/version.c 2010-03-17 19:13:19.000000000 +0100 | ||
136 | --- src/version.c 2010-03-17 19:36:09.000000000 +0100 | ||
137 | *************** | ||
138 | *** 683,684 **** | ||
139 | --- 683,686 ---- | ||
140 | { /* Add new patch number below this line */ | ||
141 | + /**/ | ||
142 | + 402, | ||
143 | /**/ | ||
144 | |||
145 | -- | ||
146 | Michael: There is no such thing as a dump question. | ||
147 | Bernard: Sure there is. For example "what is a core dump?" | ||
148 | |||
149 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
150 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
151 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
152 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
153 | To: vim-dev@vim.org | ||
154 | Subject: Patch 7.2.403 | ||
155 | Fcc: outbox | ||
156 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
157 | Mime-Version: 1.0 | ||
158 | Content-Type: text/plain; charset=UTF-8 | ||
159 | Content-Transfer-Encoding: 8bit | ||
160 | ------------ | ||
161 | |||
162 | Patch 7.2.403 (after 7.2.400) | ||
163 | Problem: Compiler warning for pointer type. (Tony Mechelynck) | ||
164 | Solution: Move type cast to the right place. | ||
165 | Files: src/if_ruby.c | ||
166 | |||
167 | |||
168 | *** ../vim-7.2.402/src/if_ruby.c 2010-03-17 18:15:17.000000000 +0100 | ||
169 | --- src/if_ruby.c 2010-03-19 23:08:06.000000000 +0100 | ||
170 | *************** | ||
171 | *** 722,729 **** | ||
172 | |||
173 | if (tv->v_type == VAR_STRING) | ||
174 | { | ||
175 | ! result = rb_str_new2((char *)(tv->vval.v_string == NULL | ||
176 | ! ? "" : tv->vval.v_string)); | ||
177 | } | ||
178 | else if (tv->v_type == VAR_NUMBER) | ||
179 | { | ||
180 | --- 722,729 ---- | ||
181 | |||
182 | if (tv->v_type == VAR_STRING) | ||
183 | { | ||
184 | ! result = rb_str_new2(tv->vval.v_string == NULL | ||
185 | ! ? "" : (char *)(tv->vval.v_string)); | ||
186 | } | ||
187 | else if (tv->v_type == VAR_NUMBER) | ||
188 | { | ||
189 | *** ../vim-7.2.402/src/version.c 2010-03-17 19:53:44.000000000 +0100 | ||
190 | --- src/version.c 2010-03-19 23:07:13.000000000 +0100 | ||
191 | *************** | ||
192 | *** 683,684 **** | ||
193 | --- 683,686 ---- | ||
194 | { /* Add new patch number below this line */ | ||
195 | + /**/ | ||
196 | + 403, | ||
197 | /**/ | ||
198 | |||
199 | -- | ||
200 | If "R" is Reverse, how come "D" is FORWARD? | ||
201 | |||
202 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
203 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
204 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
205 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
206 | To: vim-dev@vim.org | ||
207 | Subject: Patch 7.2.404 | ||
208 | Fcc: outbox | ||
209 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
210 | Mime-Version: 1.0 | ||
211 | Content-Type: text/plain; charset=UTF-8 | ||
212 | Content-Transfer-Encoding: 8bit | ||
213 | ------------ | ||
214 | |||
215 | Patch 7.2.404 | ||
216 | Problem: Pointers for composing characters are not properly initialized. | ||
217 | Solution: Compute the size of the pointer, not what it points to. (Yukihiro | ||
218 | Nakadaira) | ||
219 | Files: src/screen.c | ||
220 | |||
221 | |||
222 | *** ../vim-7.2.403/src/screen.c 2010-02-03 15:47:59.000000000 +0100 | ||
223 | --- src/screen.c 2010-03-23 13:48:05.000000000 +0100 | ||
224 | *************** | ||
225 | *** 7536,7542 **** | ||
226 | new_ScreenLines = (schar_T *)lalloc((long_u)( | ||
227 | (Rows + 1) * Columns * sizeof(schar_T)), FALSE); | ||
228 | #ifdef FEAT_MBYTE | ||
229 | ! vim_memset(new_ScreenLinesC, 0, sizeof(u8char_T) * MAX_MCO); | ||
230 | if (enc_utf8) | ||
231 | { | ||
232 | new_ScreenLinesUC = (u8char_T *)lalloc((long_u)( | ||
233 | --- 7536,7542 ---- | ||
234 | new_ScreenLines = (schar_T *)lalloc((long_u)( | ||
235 | (Rows + 1) * Columns * sizeof(schar_T)), FALSE); | ||
236 | #ifdef FEAT_MBYTE | ||
237 | ! vim_memset(new_ScreenLinesC, 0, sizeof(u8char_T *) * MAX_MCO); | ||
238 | if (enc_utf8) | ||
239 | { | ||
240 | new_ScreenLinesUC = (u8char_T *)lalloc((long_u)( | ||
241 | *** ../vim-7.2.403/src/version.c 2010-03-19 23:08:22.000000000 +0100 | ||
242 | --- src/version.c 2010-03-23 13:54:47.000000000 +0100 | ||
243 | *************** | ||
244 | *** 683,684 **** | ||
245 | --- 683,686 ---- | ||
246 | { /* Add new patch number below this line */ | ||
247 | + /**/ | ||
248 | + 404, | ||
249 | /**/ | ||
250 | |||
251 | -- | ||
252 | LAUNCELOT: Isn't there a St. Aaaaarrrrrrggghhh's in Cornwall? | ||
253 | ARTHUR: No, that's Saint Ives. | ||
254 | "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD | ||
255 | |||
256 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
257 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
258 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
259 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
260 | To: vim-dev@vim.org | ||
261 | Subject: Patch 7.2.405 | ||
262 | Fcc: outbox | ||
263 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
264 | Mime-Version: 1.0 | ||
265 | Content-Type: text/plain; charset=UTF-8 | ||
266 | Content-Transfer-Encoding: 8bit | ||
267 | ------------ | ||
268 | |||
269 | Patch 7.2.405 | ||
270 | Problem: When built with small features the matching text is not | ||
271 | highlighted for ":s/pat/repl/c". | ||
272 | Solution: Remove the #ifdef for IncSearch. (James Vega) | ||
273 | Files: src/syntax.c | ||
274 | |||
275 | |||
276 | *** ../vim-7.2.404/src/syntax.c 2010-03-10 13:43:22.000000000 +0100 | ||
277 | --- src/syntax.c 2010-03-23 14:36:10.000000000 +0100 | ||
278 | *************** | ||
279 | *** 6205,6214 **** | ||
280 | { | ||
281 | CENT("ErrorMsg term=standout ctermbg=DarkRed ctermfg=White", | ||
282 | "ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White"), | ||
283 | - #ifdef FEAT_SEARCH_EXTRA | ||
284 | CENT("IncSearch term=reverse cterm=reverse", | ||
285 | "IncSearch term=reverse cterm=reverse gui=reverse"), | ||
286 | - #endif | ||
287 | CENT("ModeMsg term=bold cterm=bold", | ||
288 | "ModeMsg term=bold cterm=bold gui=bold"), | ||
289 | CENT("NonText term=bold ctermfg=Blue", | ||
290 | --- 6205,6212 ---- | ||
291 | *** ../vim-7.2.404/src/version.c 2010-03-23 13:56:53.000000000 +0100 | ||
292 | --- src/version.c 2010-03-23 14:37:08.000000000 +0100 | ||
293 | *************** | ||
294 | *** 683,684 **** | ||
295 | --- 683,686 ---- | ||
296 | { /* Add new patch number below this line */ | ||
297 | + /**/ | ||
298 | + 405, | ||
299 | /**/ | ||
300 | |||
301 | -- | ||
302 | Dreams are free, but there's a small charge for alterations. | ||
303 | |||
304 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
305 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
306 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
307 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
308 | To: vim-dev@vim.org | ||
309 | Subject: Patch 7.2.406 | ||
310 | Fcc: outbox | ||
311 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
312 | Mime-Version: 1.0 | ||
313 | Content-Type: text/plain; charset=UTF-8 | ||
314 | Content-Transfer-Encoding: 8bit | ||
315 | ------------ | ||
316 | |||
317 | Patch 7.2.406 | ||
318 | Problem: Patch 7.2.119 introduces uninit mem read. (Dominique Pelle) | ||
319 | Solution: Only used ScreeenLinesC when ScreeenLinesUC is not zero. (Yukihiro | ||
320 | Nakadaira) Also clear ScreeenLinesC when allocating. | ||
321 | Files: src/screen.c | ||
322 | |||
323 | |||
324 | *** ../vim-7.2.405/src/screen.c 2010-03-23 13:56:53.000000000 +0100 | ||
325 | --- src/screen.c 2010-03-23 15:26:44.000000000 +0100 | ||
326 | *************** | ||
327 | *** 25,34 **** | ||
328 | * one character which occupies two display cells. | ||
329 | * For UTF-8 a multi-byte character is converted to Unicode and stored in | ||
330 | * ScreenLinesUC[]. ScreenLines[] contains the first byte only. For an ASCII | ||
331 | ! * character without composing chars ScreenLinesUC[] will be 0. When the | ||
332 | ! * character occupies two display cells the next byte in ScreenLines[] is 0. | ||
333 | * ScreenLinesC[][] contain up to 'maxcombine' composing characters | ||
334 | ! * (drawn on top of the first character). They are 0 when not used. | ||
335 | * ScreenLines2[] is only used for euc-jp to store the second byte if the | ||
336 | * first byte is 0x8e (single-width character). | ||
337 | * | ||
338 | --- 25,35 ---- | ||
339 | * one character which occupies two display cells. | ||
340 | * For UTF-8 a multi-byte character is converted to Unicode and stored in | ||
341 | * ScreenLinesUC[]. ScreenLines[] contains the first byte only. For an ASCII | ||
342 | ! * character without composing chars ScreenLinesUC[] will be 0 and | ||
343 | ! * ScreenLinesC[][] is not used. When the character occupies two display | ||
344 | ! * cells the next byte in ScreenLines[] is 0. | ||
345 | * ScreenLinesC[][] contain up to 'maxcombine' composing characters | ||
346 | ! * (drawn on top of the first character). There is 0 after the last one used. | ||
347 | * ScreenLines2[] is only used for euc-jp to store the second byte if the | ||
348 | * first byte is 0x8e (single-width character). | ||
349 | * | ||
350 | *************** | ||
351 | *** 4893,4898 **** | ||
352 | --- 4894,4900 ---- | ||
353 | |||
354 | /* | ||
355 | * Return if the composing characters at "off_from" and "off_to" differ. | ||
356 | + * Only to be used when ScreenLinesUC[off_from] != 0. | ||
357 | */ | ||
358 | static int | ||
359 | comp_char_differs(off_from, off_to) | ||
360 | *************** | ||
361 | *** 6281,6286 **** | ||
362 | --- 6283,6289 ---- | ||
363 | /* | ||
364 | * Return TRUE if composing characters for screen posn "off" differs from | ||
365 | * composing characters in "u8cc". | ||
366 | + * Only to be used when ScreenLinesUC[off] != 0. | ||
367 | */ | ||
368 | static int | ||
369 | screen_comp_differs(off, u8cc) | ||
370 | *************** | ||
371 | *** 6461,6468 **** | ||
372 | && c == 0x8e | ||
373 | && ScreenLines2[off] != ptr[1]) | ||
374 | || (enc_utf8 | ||
375 | ! && (ScreenLinesUC[off] != (u8char_T)(c >= 0x80 ? u8c : 0) | ||
376 | ! || screen_comp_differs(off, u8cc))) | ||
377 | #endif | ||
378 | || ScreenAttrs[off] != attr | ||
379 | || exmode_active; | ||
380 | --- 6464,6473 ---- | ||
381 | && c == 0x8e | ||
382 | && ScreenLines2[off] != ptr[1]) | ||
383 | || (enc_utf8 | ||
384 | ! && (ScreenLinesUC[off] != | ||
385 | ! (u8char_T)(c < 0x80 && u8cc[0] == 0 ? 0 : u8c) | ||
386 | ! || (ScreenLinesUC[off] != 0 | ||
387 | ! && screen_comp_differs(off, u8cc)))) | ||
388 | #endif | ||
389 | || ScreenAttrs[off] != attr | ||
390 | || exmode_active; | ||
391 | *************** | ||
392 | *** 7542,7548 **** | ||
393 | new_ScreenLinesUC = (u8char_T *)lalloc((long_u)( | ||
394 | (Rows + 1) * Columns * sizeof(u8char_T)), FALSE); | ||
395 | for (i = 0; i < p_mco; ++i) | ||
396 | ! new_ScreenLinesC[i] = (u8char_T *)lalloc((long_u)( | ||
397 | (Rows + 1) * Columns * sizeof(u8char_T)), FALSE); | ||
398 | } | ||
399 | if (enc_dbcs == DBCS_JPNU) | ||
400 | --- 7547,7553 ---- | ||
401 | new_ScreenLinesUC = (u8char_T *)lalloc((long_u)( | ||
402 | (Rows + 1) * Columns * sizeof(u8char_T)), FALSE); | ||
403 | for (i = 0; i < p_mco; ++i) | ||
404 | ! new_ScreenLinesC[i] = (u8char_T *)lalloc_clear((long_u)( | ||
405 | (Rows + 1) * Columns * sizeof(u8char_T)), FALSE); | ||
406 | } | ||
407 | if (enc_dbcs == DBCS_JPNU) | ||
408 | *** ../vim-7.2.405/src/version.c 2010-03-23 14:39:07.000000000 +0100 | ||
409 | --- src/version.c 2010-03-23 15:34:11.000000000 +0100 | ||
410 | *************** | ||
411 | *** 683,684 **** | ||
412 | --- 683,686 ---- | ||
413 | { /* Add new patch number below this line */ | ||
414 | + /**/ | ||
415 | + 406, | ||
416 | /**/ | ||
417 | |||
418 | -- | ||
419 | VOICE OVER: As the horrendous Black Beast lunged forward, escape for Arthur | ||
420 | and his knights seemed hopeless, when, suddenly ... the animator | ||
421 | suffered a fatal heart attack. | ||
422 | ANIMATOR: Aaaaagh! | ||
423 | VOICE OVER: The cartoon peril was no more ... The Quest for Holy Grail could | ||
424 | continue. | ||
425 | "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD | ||
426 | |||
427 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
428 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
429 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
430 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
431 | To: vim-dev@vim.org | ||
432 | Subject: Patch 7.2.407 | ||
433 | Fcc: outbox | ||
434 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
435 | Mime-Version: 1.0 | ||
436 | Content-Type: text/plain; charset=UTF-8 | ||
437 | Content-Transfer-Encoding: 8bit | ||
438 | ------------ | ||
439 | |||
440 | Patch 7.2.407 | ||
441 | Problem: When using an expression in ":s" backslashes in the result are | ||
442 | dropped. (Sergey Goldgaber, Christian Brabandt) | ||
443 | Solution: Double backslashes. | ||
444 | Files: src/regexp.c | ||
445 | |||
446 | |||
447 | *** ../vim-7.2.406/src/regexp.c 2009-11-26 20:41:19.000000000 +0100 | ||
448 | --- src/regexp.c 2010-03-23 16:22:35.000000000 +0100 | ||
449 | *************** | ||
450 | *** 6963,6968 **** | ||
451 | --- 6963,6970 ---- | ||
452 | eval_result = eval_to_string(source + 2, NULL, TRUE); | ||
453 | if (eval_result != NULL) | ||
454 | { | ||
455 | + int had_backslash = FALSE; | ||
456 | + | ||
457 | for (s = eval_result; *s != NUL; mb_ptr_adv(s)) | ||
458 | { | ||
459 | /* Change NL to CR, so that it becomes a line break. | ||
460 | *************** | ||
461 | *** 6970,6976 **** | ||
462 | --- 6972,6991 ---- | ||
463 | if (*s == NL) | ||
464 | *s = CAR; | ||
465 | else if (*s == '\\' && s[1] != NUL) | ||
466 | + { | ||
467 | ++s; | ||
468 | + had_backslash = TRUE; | ||
469 | + } | ||
470 | + } | ||
471 | + if (had_backslash && backslash) | ||
472 | + { | ||
473 | + /* Backslashes will be consumed, need to double them. */ | ||
474 | + s = vim_strsave_escaped(eval_result, (char_u *)"\\"); | ||
475 | + if (s != NULL) | ||
476 | + { | ||
477 | + vim_free(eval_result); | ||
478 | + eval_result = s; | ||
479 | + } | ||
480 | } | ||
481 | |||
482 | dst += STRLEN(eval_result); | ||
483 | *** ../vim-7.2.406/src/version.c 2010-03-23 15:36:29.000000000 +0100 | ||
484 | --- src/version.c 2010-03-23 16:26:22.000000000 +0100 | ||
485 | *************** | ||
486 | *** 683,684 **** | ||
487 | --- 683,686 ---- | ||
488 | { /* Add new patch number below this line */ | ||
489 | + /**/ | ||
490 | + 407, | ||
491 | /**/ | ||
492 | |||
493 | -- | ||
494 | Sorry, no fortune today. | ||
495 | |||
496 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
497 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
498 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
499 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
500 | To: vim-dev@vim.org | ||
501 | Subject: Patch 7.2.408 | ||
502 | Fcc: outbox | ||
503 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
504 | Mime-Version: 1.0 | ||
505 | Content-Type: text/plain; charset=UTF-8 | ||
506 | Content-Transfer-Encoding: 8bit | ||
507 | ------------ | ||
508 | |||
509 | Patch 7.2.408 | ||
510 | Problem: With ":g/the/s/foo/bar/" the '[ and '] marks can be set to a line | ||
511 | that was not changed. | ||
512 | Solution: Only set '[ and '] marks when a substitution was done. | ||
513 | Files: src/ex_cmds.c | ||
514 | |||
515 | |||
516 | *** ../vim-7.2.407/src/ex_cmds.c 2009-07-09 20:06:30.000000000 +0200 | ||
517 | --- src/ex_cmds.c 2010-03-23 17:31:17.000000000 +0100 | ||
518 | *************** | ||
519 | *** 4238,4243 **** | ||
520 | --- 4238,4244 ---- | ||
521 | char_u *sub_firstline; /* allocated copy of first sub line */ | ||
522 | int endcolumn = FALSE; /* cursor in last column when done */ | ||
523 | pos_T old_cursor = curwin->w_cursor; | ||
524 | + int start_nsubs; | ||
525 | |||
526 | cmd = eap->arg; | ||
527 | if (!global_busy) | ||
528 | *************** | ||
529 | *** 4245,4250 **** | ||
530 | --- 4246,4252 ---- | ||
531 | sub_nsubs = 0; | ||
532 | sub_nlines = 0; | ||
533 | } | ||
534 | + start_nsubs = sub_nsubs; | ||
535 | |||
536 | if (eap->cmdidx == CMD_tilde) | ||
537 | which_pat = RE_LAST; /* use last used regexp */ | ||
538 | *************** | ||
539 | *** 5106,5112 **** | ||
540 | if (do_count) | ||
541 | curwin->w_cursor = old_cursor; | ||
542 | |||
543 | ! if (sub_nsubs) | ||
544 | { | ||
545 | /* Set the '[ and '] marks. */ | ||
546 | curbuf->b_op_start.lnum = eap->line1; | ||
547 | --- 5108,5114 ---- | ||
548 | if (do_count) | ||
549 | curwin->w_cursor = old_cursor; | ||
550 | |||
551 | ! if (sub_nsubs > start_nsubs) | ||
552 | { | ||
553 | /* Set the '[ and '] marks. */ | ||
554 | curbuf->b_op_start.lnum = eap->line1; | ||
555 | *** ../vim-7.2.407/src/version.c 2010-03-23 16:27:15.000000000 +0100 | ||
556 | --- src/version.c 2010-03-23 17:35:40.000000000 +0100 | ||
557 | *************** | ||
558 | *** 683,684 **** | ||
559 | --- 683,686 ---- | ||
560 | { /* Add new patch number below this line */ | ||
561 | + /**/ | ||
562 | + 408, | ||
563 | /**/ | ||
564 | |||
565 | -- | ||
566 | Permission is granted to read this message out aloud on Kings Cross Road, | ||
567 | London, under the condition that the orator is properly dressed. | ||
568 | |||
569 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
570 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
571 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
572 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
573 | To: vim-dev@vim.org | ||
574 | Subject: Patch 7.2.409 | ||
575 | Fcc: outbox | ||
576 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
577 | Mime-Version: 1.0 | ||
578 | Content-Type: text/plain; charset=UTF-8 | ||
579 | Content-Transfer-Encoding: 8bit | ||
580 | ------------ | ||
581 | |||
582 | Patch 7.2.409 | ||
583 | Problem: Summary of number of substitutes is incorrect for ":folddo". (Jean | ||
584 | Johner) | ||
585 | Solution: Reset sub_nsubs and sub_nlines in global_exe(). | ||
586 | Files: src/ex_cmds.c | ||
587 | |||
588 | |||
589 | *** ../vim-7.2.408/src/ex_cmds.c 2010-03-23 17:36:24.000000000 +0100 | ||
590 | --- src/ex_cmds.c 2010-03-23 17:42:49.000000000 +0100 | ||
591 | *************** | ||
592 | *** 5238,5245 **** | ||
593 | type = *eap->cmd; | ||
594 | cmd = eap->arg; | ||
595 | which_pat = RE_LAST; /* default: use last used regexp */ | ||
596 | - sub_nsubs = 0; | ||
597 | - sub_nlines = 0; | ||
598 | |||
599 | /* | ||
600 | * undocumented vi feature: | ||
601 | --- 5238,5243 ---- | ||
602 | *************** | ||
603 | *** 5343,5348 **** | ||
604 | --- 5341,5348 ---- | ||
605 | /* When the command writes a message, don't overwrite the command. */ | ||
606 | msg_didout = TRUE; | ||
607 | |||
608 | + sub_nsubs = 0; | ||
609 | + sub_nlines = 0; | ||
610 | global_need_beginline = FALSE; | ||
611 | global_busy = 1; | ||
612 | old_lcount = curbuf->b_ml.ml_line_count; | ||
613 | *** ../vim-7.2.408/src/version.c 2010-03-23 17:36:24.000000000 +0100 | ||
614 | --- src/version.c 2010-03-23 17:47:53.000000000 +0100 | ||
615 | *************** | ||
616 | *** 683,684 **** | ||
617 | --- 683,686 ---- | ||
618 | { /* Add new patch number below this line */ | ||
619 | + /**/ | ||
620 | + 409, | ||
621 | /**/ | ||
622 | |||
623 | -- | ||
624 | BRIDGEKEEPER: What is your favorite colour? | ||
625 | LAUNCELOT: Blue. | ||
626 | BRIDGEKEEPER: Right. Off you go. | ||
627 | "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD | ||
628 | |||
629 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
630 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
631 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
632 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
633 | To: vim-dev@vim.org | ||
634 | Subject: Patch 7.2.410 | ||
635 | Fcc: outbox | ||
636 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
637 | Mime-Version: 1.0 | ||
638 | Content-Type: text/plain; charset=UTF-8 | ||
639 | Content-Transfer-Encoding: 8bit | ||
640 | ------------ | ||
641 | |||
642 | Patch 7.2.410 | ||
643 | Problem: Highlighting directories for completion doesn't work properly. | ||
644 | Solution: Don't halve backslashes when not needed, expaned "~/". | ||
645 | (Dominique Pelle) | ||
646 | Files: src/ex_getln.c | ||
647 | |||
648 | |||
649 | *** ../vim-7.2.409/src/ex_getln.c 2010-03-17 19:13:19.000000000 +0100 | ||
650 | --- src/ex_getln.c 2010-03-23 18:00:56.000000000 +0100 | ||
651 | *************** | ||
652 | *** 3948,3959 **** | ||
653 | || xp->xp_context == EXPAND_SHELLCMD | ||
654 | || xp->xp_context == EXPAND_BUFFERS) | ||
655 | { | ||
656 | - char_u *halved_slash; | ||
657 | - | ||
658 | /* highlight directories */ | ||
659 | ! halved_slash = backslash_halve_save(files_found[k]); | ||
660 | ! j = mch_isdir(halved_slash); | ||
661 | ! vim_free(halved_slash); | ||
662 | if (showtail) | ||
663 | p = L_SHOWFILE(k); | ||
664 | else | ||
665 | --- 3948,3973 ---- | ||
666 | || xp->xp_context == EXPAND_SHELLCMD | ||
667 | || xp->xp_context == EXPAND_BUFFERS) | ||
668 | { | ||
669 | /* highlight directories */ | ||
670 | ! if (xp->xp_numfiles != -1) | ||
671 | ! { | ||
672 | ! char_u *halved_slash; | ||
673 | ! char_u *exp_path; | ||
674 | ! | ||
675 | ! /* Expansion was done before and special characters | ||
676 | ! * were escaped, need to halve backslashes. Also | ||
677 | ! * $HOME has been replaced with ~/. */ | ||
678 | ! exp_path = expand_env_save_opt(files_found[k], TRUE); | ||
679 | ! halved_slash = backslash_halve_save( | ||
680 | ! exp_path != NULL ? exp_path : files_found[k]); | ||
681 | ! j = mch_isdir(halved_slash != NULL ? halved_slash | ||
682 | ! : files_found[k]); | ||
683 | ! vim_free(exp_path); | ||
684 | ! vim_free(halved_slash); | ||
685 | ! } | ||
686 | ! else | ||
687 | ! /* Expansion was done here, file names are literal. */ | ||
688 | ! j = mch_isdir(files_found[k]); | ||
689 | if (showtail) | ||
690 | p = L_SHOWFILE(k); | ||
691 | else | ||
692 | *** ../vim-7.2.409/src/version.c 2010-03-23 17:49:19.000000000 +0100 | ||
693 | --- src/version.c 2010-03-23 18:04:25.000000000 +0100 | ||
694 | *************** | ||
695 | *** 683,684 **** | ||
696 | --- 683,686 ---- | ||
697 | { /* Add new patch number below this line */ | ||
698 | + /**/ | ||
699 | + 410, | ||
700 | /**/ | ||
701 | |||
702 | -- | ||
703 | BRIDGEKEEPER: What is your favorite colour? | ||
704 | GAWAIN: Blue ... No yelloooooww! | ||
705 | "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD | ||
706 | |||
707 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
708 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
709 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
710 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
711 | To: vim-dev@vim.org | ||
712 | Subject: Patch 7.2.411 | ||
713 | Fcc: outbox | ||
714 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
715 | Mime-Version: 1.0 | ||
716 | Content-Type: text/plain; charset=UTF-8 | ||
717 | Content-Transfer-Encoding: 8bit | ||
718 | ------------ | ||
719 | |||
720 | Patch 7.2.411 | ||
721 | Problem: When parsing 'cino' a comma isn't skipped properly. | ||
722 | Solution: Skip the comma. (Lech Lorens) | ||
723 | Files: src/misc1.c | ||
724 | |||
725 | |||
726 | *** ../vim-7.2.410/src/misc1.c 2010-03-02 12:37:01.000000000 +0100 | ||
727 | --- src/misc1.c 2010-03-23 18:18:15.000000000 +0100 | ||
728 | *************** | ||
729 | *** 6270,6275 **** | ||
730 | --- 6270,6277 ---- | ||
731 | case 'l': ind_keep_case_label = n; break; | ||
732 | case '#': ind_hash_comment = n; break; | ||
733 | } | ||
734 | + if (*options == ',') | ||
735 | + ++options; | ||
736 | } | ||
737 | |||
738 | /* remember where the cursor was when we started */ | ||
739 | *** ../vim-7.2.410/src/version.c 2010-03-23 18:06:47.000000000 +0100 | ||
740 | --- src/version.c 2010-03-23 18:22:13.000000000 +0100 | ||
741 | *************** | ||
742 | *** 683,684 **** | ||
743 | --- 683,686 ---- | ||
744 | { /* Add new patch number below this line */ | ||
745 | + /**/ | ||
746 | + 411, | ||
747 | /**/ | ||
748 | |||
749 | -- | ||
750 | BRIDGEKEEPER: What is your favorite editor? | ||
751 | GAWAIN: Emacs ... No, Viiiiiiiiiiimmmmmmm! | ||
752 | "Monty Python and the Holy editor wars" PYTHON (MONTY) SOFTWARE LTD | ||
753 | |||
754 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
755 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
756 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
757 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
758 | To: vim-dev@vim.org | ||
759 | Subject: Patch 7.2.412 | ||
760 | Fcc: outbox | ||
761 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
762 | Mime-Version: 1.0 | ||
763 | Content-Type: text/plain; charset=UTF-8 | ||
764 | Content-Transfer-Encoding: 8bit | ||
765 | ------------ | ||
766 | |||
767 | Patch 7.2.412 | ||
768 | Problem: [ or ] followed by mouse click doesn't work. | ||
769 | Solution: Reverse check for key being a mouse event. (Dominique Pelle) | ||
770 | Files: src/normal.c | ||
771 | |||
772 | |||
773 | *** ../vim-7.2.411/src/normal.c 2010-03-17 13:07:01.000000000 +0100 | ||
774 | --- src/normal.c 2010-05-07 15:46:54.000000000 +0200 | ||
775 | *************** | ||
776 | *** 3196,3202 **** | ||
777 | * There are a few special cases where we want certain combinations of | ||
778 | * characters to be considered as a single word. These are things like | ||
779 | * "->", "/ *", "*=", "+=", "&=", "<=", ">=", "!=" etc. Otherwise, each | ||
780 | ! * character is in it's own class. | ||
781 | */ | ||
782 | if (c != NUL && vim_strchr((char_u *)"-+*/%<>&|^!=", c) != NULL) | ||
783 | return 1; | ||
784 | --- 3196,3202 ---- | ||
785 | * There are a few special cases where we want certain combinations of | ||
786 | * characters to be considered as a single word. These are things like | ||
787 | * "->", "/ *", "*=", "+=", "&=", "<=", ">=", "!=" etc. Otherwise, each | ||
788 | ! * character is in its own class. | ||
789 | */ | ||
790 | if (c != NUL && vim_strchr((char_u *)"-+*/%<>&|^!=", c) != NULL) | ||
791 | return 1; | ||
792 | *************** | ||
793 | *** 4085,4091 **** | ||
794 | /* | ||
795 | * Command character that's ignored. | ||
796 | * Used for CTRL-Q and CTRL-S to avoid problems with terminals that use | ||
797 | ! * xon/xoff | ||
798 | */ | ||
799 | static void | ||
800 | nv_ignore(cap) | ||
801 | --- 4085,4091 ---- | ||
802 | /* | ||
803 | * Command character that's ignored. | ||
804 | * Used for CTRL-Q and CTRL-S to avoid problems with terminals that use | ||
805 | ! * xon/xoff. | ||
806 | */ | ||
807 | static void | ||
808 | nv_ignore(cap) | ||
809 | *************** | ||
810 | *** 6523,6529 **** | ||
811 | * [ or ] followed by a middle mouse click: put selected text with | ||
812 | * indent adjustment. Any other button just does as usual. | ||
813 | */ | ||
814 | ! else if (cap->nchar >= K_LEFTMOUSE && cap->nchar <= K_RIGHTRELEASE) | ||
815 | { | ||
816 | (void)do_mouse(cap->oap, cap->nchar, | ||
817 | (cap->cmdchar == ']') ? FORWARD : BACKWARD, | ||
818 | --- 6523,6529 ---- | ||
819 | * [ or ] followed by a middle mouse click: put selected text with | ||
820 | * indent adjustment. Any other button just does as usual. | ||
821 | */ | ||
822 | ! else if (cap->nchar >= K_RIGHTRELEASE && cap->nchar <= K_LEFTMOUSE) | ||
823 | { | ||
824 | (void)do_mouse(cap->oap, cap->nchar, | ||
825 | (cap->cmdchar == ']') ? FORWARD : BACKWARD, | ||
826 | *** ../vim-7.2.411/src/version.c 2010-03-23 18:22:40.000000000 +0100 | ||
827 | --- src/version.c 2010-05-07 15:51:35.000000000 +0200 | ||
828 | *************** | ||
829 | *** 683,684 **** | ||
830 | --- 683,686 ---- | ||
831 | { /* Add new patch number below this line */ | ||
832 | + /**/ | ||
833 | + 412, | ||
834 | /**/ | ||
835 | |||
836 | -- | ||
837 | I have a drinking problem -- I don't have a drink! | ||
838 | |||
839 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
840 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
841 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
842 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
843 | To: vim-dev@vim.org | ||
844 | Subject: Patch 7.2.413 | ||
845 | Fcc: outbox | ||
846 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
847 | Mime-Version: 1.0 | ||
848 | Content-Type: text/plain; charset=UTF-8 | ||
849 | Content-Transfer-Encoding: 8bit | ||
850 | ------------ | ||
851 | |||
852 | Patch 7.2.413 | ||
853 | Problem: Large file support is incorrect. | ||
854 | Solution: Add AC_SYS_LARGEFILE to configure. (James Vega) | ||
855 | Files: src/configure.in, src/config.h.in, src/auto/configure | ||
856 | |||
857 | |||
858 | *** ../vim-7.2.412/src/configure.in 2010-03-10 16:27:27.000000000 +0100 | ||
859 | --- src/configure.in 2010-04-01 15:06:04.000000000 +0200 | ||
860 | *************** | ||
861 | *** 2669,2674 **** | ||
862 | --- 2669,2678 ---- | ||
863 | usleep utime utimes) | ||
864 | AC_FUNC_FSEEKO | ||
865 | |||
866 | + dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when | ||
867 | + dnl appropriate, so that off_t is 64 bits when needed. | ||
868 | + AC_SYS_LARGEFILE | ||
869 | + | ||
870 | dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible | ||
871 | AC_MSG_CHECKING(for st_blksize) | ||
872 | AC_TRY_COMPILE( | ||
873 | *** ../vim-7.2.412/src/config.h.in 2010-02-24 14:46:58.000000000 +0100 | ||
874 | --- src/config.h.in 2010-04-01 15:10:49.000000000 +0200 | ||
875 | *************** | ||
876 | *** 196,201 **** | ||
877 | --- 196,206 ---- | ||
878 | #undef HAVE_UTIME | ||
879 | #undef HAVE_BIND_TEXTDOMAIN_CODESET | ||
880 | |||
881 | + /* Define, if needed, for accessing large files. */ | ||
882 | + #undef _LARGE_FILES | ||
883 | + #undef _FILE_OFFSET_BITS | ||
884 | + #undef _LARGEFILE_SOURCE | ||
885 | + | ||
886 | /* Define if you do not have utime(), but do have the utimes() function. */ | ||
887 | #undef HAVE_UTIMES | ||
888 | |||
889 | *** ../vim-7.2.412/src/auto/configure 2010-03-10 16:27:27.000000000 +0100 | ||
890 | --- src/auto/configure 2010-05-07 16:01:08.000000000 +0200 | ||
891 | *************** | ||
892 | *** 821,826 **** | ||
893 | --- 821,827 ---- | ||
894 | with_gnome | ||
895 | with_motif_lib | ||
896 | with_tlib | ||
897 | + enable_largefile | ||
898 | enable_acl | ||
899 | enable_gpm | ||
900 | enable_sysmouse | ||
901 | *************** | ||
902 | *** 1485,1490 **** | ||
903 | --- 1486,1492 ---- | ||
904 | --enable-nextaw-check If auto-select GUI, check for neXtaw default=yes | ||
905 | --enable-carbon-check If auto-select GUI, check for Carbon default=yes | ||
906 | --disable-gtktest Do not try to compile and run a test GTK program | ||
907 | + --disable-largefile omit support for large files | ||
908 | --disable-acl Don't check for ACL support. | ||
909 | --disable-gpm Don't use gpm (Linux mouse daemon). | ||
910 | --disable-sysmouse Don't use sysmouse (mouse in *BSD console). | ||
911 | *************** | ||
912 | *** 14345,14350 **** | ||
913 | --- 14347,14709 ---- | ||
914 | fi | ||
915 | |||
916 | |||
917 | + # Check whether --enable-largefile was given. | ||
918 | + if test "${enable_largefile+set}" = set; then | ||
919 | + enableval=$enable_largefile; | ||
920 | + fi | ||
921 | + | ||
922 | + if test "$enable_largefile" != no; then | ||
923 | + | ||
924 | + { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 | ||
925 | + $as_echo_n "checking for special C compiler options needed for large files... " >&6; } | ||
926 | + if test "${ac_cv_sys_largefile_CC+set}" = set; then | ||
927 | + $as_echo_n "(cached) " >&6 | ||
928 | + else | ||
929 | + ac_cv_sys_largefile_CC=no | ||
930 | + if test "$GCC" != yes; then | ||
931 | + ac_save_CC=$CC | ||
932 | + while :; do | ||
933 | + # IRIX 6.2 and later do not support large files by default, | ||
934 | + # so use the C compiler's -n32 option if that helps. | ||
935 | + cat >conftest.$ac_ext <<_ACEOF | ||
936 | + /* confdefs.h. */ | ||
937 | + _ACEOF | ||
938 | + cat confdefs.h >>conftest.$ac_ext | ||
939 | + cat >>conftest.$ac_ext <<_ACEOF | ||
940 | + /* end confdefs.h. */ | ||
941 | + #include <sys/types.h> | ||
942 | + /* Check that off_t can represent 2**63 - 1 correctly. | ||
943 | + We can't simply define LARGE_OFF_T to be 9223372036854775807, | ||
944 | + since some C++ compilers masquerading as C compilers | ||
945 | + incorrectly reject 9223372036854775807. */ | ||
946 | + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) | ||
947 | + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 | ||
948 | + && LARGE_OFF_T % 2147483647 == 1) | ||
949 | + ? 1 : -1]; | ||
950 | + int | ||
951 | + main () | ||
952 | + { | ||
953 | + | ||
954 | + ; | ||
955 | + return 0; | ||
956 | + } | ||
957 | + _ACEOF | ||
958 | + rm -f conftest.$ac_objext | ||
959 | + if { (ac_try="$ac_compile" | ||
960 | + case "(($ac_try" in | ||
961 | + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; | ||
962 | + *) ac_try_echo=$ac_try;; | ||
963 | + esac | ||
964 | + eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" | ||
965 | + $as_echo "$ac_try_echo") >&5 | ||
966 | + (eval "$ac_compile") 2>conftest.er1 | ||
967 | + ac_status=$? | ||
968 | + grep -v '^ *+' conftest.er1 >conftest.err | ||
969 | + rm -f conftest.er1 | ||
970 | + cat conftest.err >&5 | ||
971 | + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 | ||
972 | + (exit $ac_status); } && { | ||
973 | + test -z "$ac_c_werror_flag" || | ||
974 | + test ! -s conftest.err | ||
975 | + } && test -s conftest.$ac_objext; then | ||
976 | + break | ||
977 | + else | ||
978 | + $as_echo "$as_me: failed program was:" >&5 | ||
979 | + sed 's/^/| /' conftest.$ac_ext >&5 | ||
980 | + | ||
981 | + | ||
982 | + fi | ||
983 | + | ||
984 | + rm -f core conftest.err conftest.$ac_objext | ||
985 | + CC="$CC -n32" | ||
986 | + rm -f conftest.$ac_objext | ||
987 | + if { (ac_try="$ac_compile" | ||
988 | + case "(($ac_try" in | ||
989 | + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; | ||
990 | + *) ac_try_echo=$ac_try;; | ||
991 | + esac | ||
992 | + eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" | ||
993 | + $as_echo "$ac_try_echo") >&5 | ||
994 | + (eval "$ac_compile") 2>conftest.er1 | ||
995 | + ac_status=$? | ||
996 | + grep -v '^ *+' conftest.er1 >conftest.err | ||
997 | + rm -f conftest.er1 | ||
998 | + cat conftest.err >&5 | ||
999 | + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 | ||
1000 | + (exit $ac_status); } && { | ||
1001 | + test -z "$ac_c_werror_flag" || | ||
1002 | + test ! -s conftest.err | ||
1003 | + } && test -s conftest.$ac_objext; then | ||
1004 | + ac_cv_sys_largefile_CC=' -n32'; break | ||
1005 | + else | ||
1006 | + $as_echo "$as_me: failed program was:" >&5 | ||
1007 | + sed 's/^/| /' conftest.$ac_ext >&5 | ||
1008 | + | ||
1009 | + | ||
1010 | + fi | ||
1011 | + | ||
1012 | + rm -f core conftest.err conftest.$ac_objext | ||
1013 | + break | ||
1014 | + done | ||
1015 | + CC=$ac_save_CC | ||
1016 | + rm -f conftest.$ac_ext | ||
1017 | + fi | ||
1018 | + fi | ||
1019 | + { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 | ||
1020 | + $as_echo "$ac_cv_sys_largefile_CC" >&6; } | ||
1021 | + if test "$ac_cv_sys_largefile_CC" != no; then | ||
1022 | + CC=$CC$ac_cv_sys_largefile_CC | ||
1023 | + fi | ||
1024 | + | ||
1025 | + { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 | ||
1026 | + $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } | ||
1027 | + if test "${ac_cv_sys_file_offset_bits+set}" = set; then | ||
1028 | + $as_echo_n "(cached) " >&6 | ||
1029 | + else | ||
1030 | + while :; do | ||
1031 | + cat >conftest.$ac_ext <<_ACEOF | ||
1032 | + /* confdefs.h. */ | ||
1033 | + _ACEOF | ||
1034 | + cat confdefs.h >>conftest.$ac_ext | ||
1035 | + cat >>conftest.$ac_ext <<_ACEOF | ||
1036 | + /* end confdefs.h. */ | ||
1037 | + #include <sys/types.h> | ||
1038 | + /* Check that off_t can represent 2**63 - 1 correctly. | ||
1039 | + We can't simply define LARGE_OFF_T to be 9223372036854775807, | ||
1040 | + since some C++ compilers masquerading as C compilers | ||
1041 | + incorrectly reject 9223372036854775807. */ | ||
1042 | + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) | ||
1043 | + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 | ||
1044 | + && LARGE_OFF_T % 2147483647 == 1) | ||
1045 | + ? 1 : -1]; | ||
1046 | + int | ||
1047 | + main () | ||
1048 | + { | ||
1049 | + | ||
1050 | + ; | ||
1051 | + return 0; | ||
1052 | + } | ||
1053 | + _ACEOF | ||
1054 | + rm -f conftest.$ac_objext | ||
1055 | + if { (ac_try="$ac_compile" | ||
1056 | + case "(($ac_try" in | ||
1057 | + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; | ||
1058 | + *) ac_try_echo=$ac_try;; | ||
1059 | + esac | ||
1060 | + eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" | ||
1061 | + $as_echo "$ac_try_echo") >&5 | ||
1062 | + (eval "$ac_compile") 2>conftest.er1 | ||
1063 | + ac_status=$? | ||
1064 | + grep -v '^ *+' conftest.er1 >conftest.err | ||
1065 | + rm -f conftest.er1 | ||
1066 | + cat conftest.err >&5 | ||
1067 | + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 | ||
1068 | + (exit $ac_status); } && { | ||
1069 | + test -z "$ac_c_werror_flag" || | ||
1070 | + test ! -s conftest.err | ||
1071 | + } && test -s conftest.$ac_objext; then | ||
1072 | + ac_cv_sys_file_offset_bits=no; break | ||
1073 | + else | ||
1074 | + $as_echo "$as_me: failed program was:" >&5 | ||
1075 | + sed 's/^/| /' conftest.$ac_ext >&5 | ||
1076 | + | ||
1077 | + | ||
1078 | + fi | ||
1079 | + | ||
1080 | + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
1081 | + cat >conftest.$ac_ext <<_ACEOF | ||
1082 | + /* confdefs.h. */ | ||
1083 | + _ACEOF | ||
1084 | + cat confdefs.h >>conftest.$ac_ext | ||
1085 | + cat >>conftest.$ac_ext <<_ACEOF | ||
1086 | + /* end confdefs.h. */ | ||
1087 | + #define _FILE_OFFSET_BITS 64 | ||
1088 | + #include <sys/types.h> | ||
1089 | + /* Check that off_t can represent 2**63 - 1 correctly. | ||
1090 | + We can't simply define LARGE_OFF_T to be 9223372036854775807, | ||
1091 | + since some C++ compilers masquerading as C compilers | ||
1092 | + incorrectly reject 9223372036854775807. */ | ||
1093 | + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) | ||
1094 | + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 | ||
1095 | + && LARGE_OFF_T % 2147483647 == 1) | ||
1096 | + ? 1 : -1]; | ||
1097 | + int | ||
1098 | + main () | ||
1099 | + { | ||
1100 | + | ||
1101 | + ; | ||
1102 | + return 0; | ||
1103 | + } | ||
1104 | + _ACEOF | ||
1105 | + rm -f conftest.$ac_objext | ||
1106 | + if { (ac_try="$ac_compile" | ||
1107 | + case "(($ac_try" in | ||
1108 | + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; | ||
1109 | + *) ac_try_echo=$ac_try;; | ||
1110 | + esac | ||
1111 | + eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" | ||
1112 | + $as_echo "$ac_try_echo") >&5 | ||
1113 | + (eval "$ac_compile") 2>conftest.er1 | ||
1114 | + ac_status=$? | ||
1115 | + grep -v '^ *+' conftest.er1 >conftest.err | ||
1116 | + rm -f conftest.er1 | ||
1117 | + cat conftest.err >&5 | ||
1118 | + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 | ||
1119 | + (exit $ac_status); } && { | ||
1120 | + test -z "$ac_c_werror_flag" || | ||
1121 | + test ! -s conftest.err | ||
1122 | + } && test -s conftest.$ac_objext; then | ||
1123 | + ac_cv_sys_file_offset_bits=64; break | ||
1124 | + else | ||
1125 | + $as_echo "$as_me: failed program was:" >&5 | ||
1126 | + sed 's/^/| /' conftest.$ac_ext >&5 | ||
1127 | + | ||
1128 | + | ||
1129 | + fi | ||
1130 | + | ||
1131 | + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
1132 | + ac_cv_sys_file_offset_bits=unknown | ||
1133 | + break | ||
1134 | + done | ||
1135 | + fi | ||
1136 | + { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 | ||
1137 | + $as_echo "$ac_cv_sys_file_offset_bits" >&6; } | ||
1138 | + case $ac_cv_sys_file_offset_bits in #( | ||
1139 | + no | unknown) ;; | ||
1140 | + *) | ||
1141 | + cat >>confdefs.h <<_ACEOF | ||
1142 | + #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits | ||
1143 | + _ACEOF | ||
1144 | + ;; | ||
1145 | + esac | ||
1146 | + rm -rf conftest* | ||
1147 | + if test $ac_cv_sys_file_offset_bits = unknown; then | ||
1148 | + { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 | ||
1149 | + $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } | ||
1150 | + if test "${ac_cv_sys_large_files+set}" = set; then | ||
1151 | + $as_echo_n "(cached) " >&6 | ||
1152 | + else | ||
1153 | + while :; do | ||
1154 | + cat >conftest.$ac_ext <<_ACEOF | ||
1155 | + /* confdefs.h. */ | ||
1156 | + _ACEOF | ||
1157 | + cat confdefs.h >>conftest.$ac_ext | ||
1158 | + cat >>conftest.$ac_ext <<_ACEOF | ||
1159 | + /* end confdefs.h. */ | ||
1160 | + #include <sys/types.h> | ||
1161 | + /* Check that off_t can represent 2**63 - 1 correctly. | ||
1162 | + We can't simply define LARGE_OFF_T to be 9223372036854775807, | ||
1163 | + since some C++ compilers masquerading as C compilers | ||
1164 | + incorrectly reject 9223372036854775807. */ | ||
1165 | + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) | ||
1166 | + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 | ||
1167 | + && LARGE_OFF_T % 2147483647 == 1) | ||
1168 | + ? 1 : -1]; | ||
1169 | + int | ||
1170 | + main () | ||
1171 | + { | ||
1172 | + | ||
1173 | + ; | ||
1174 | + return 0; | ||
1175 | + } | ||
1176 | + _ACEOF | ||
1177 | + rm -f conftest.$ac_objext | ||
1178 | + if { (ac_try="$ac_compile" | ||
1179 | + case "(($ac_try" in | ||
1180 | + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; | ||
1181 | + *) ac_try_echo=$ac_try;; | ||
1182 | + esac | ||
1183 | + eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" | ||
1184 | + $as_echo "$ac_try_echo") >&5 | ||
1185 | + (eval "$ac_compile") 2>conftest.er1 | ||
1186 | + ac_status=$? | ||
1187 | + grep -v '^ *+' conftest.er1 >conftest.err | ||
1188 | + rm -f conftest.er1 | ||
1189 | + cat conftest.err >&5 | ||
1190 | + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 | ||
1191 | + (exit $ac_status); } && { | ||
1192 | + test -z "$ac_c_werror_flag" || | ||
1193 | + test ! -s conftest.err | ||
1194 | + } && test -s conftest.$ac_objext; then | ||
1195 | + ac_cv_sys_large_files=no; break | ||
1196 | + else | ||
1197 | + $as_echo "$as_me: failed program was:" >&5 | ||
1198 | + sed 's/^/| /' conftest.$ac_ext >&5 | ||
1199 | + | ||
1200 | + | ||
1201 | + fi | ||
1202 | + | ||
1203 | + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
1204 | + cat >conftest.$ac_ext <<_ACEOF | ||
1205 | + /* confdefs.h. */ | ||
1206 | + _ACEOF | ||
1207 | + cat confdefs.h >>conftest.$ac_ext | ||
1208 | + cat >>conftest.$ac_ext <<_ACEOF | ||
1209 | + /* end confdefs.h. */ | ||
1210 | + #define _LARGE_FILES 1 | ||
1211 | + #include <sys/types.h> | ||
1212 | + /* Check that off_t can represent 2**63 - 1 correctly. | ||
1213 | + We can't simply define LARGE_OFF_T to be 9223372036854775807, | ||
1214 | + since some C++ compilers masquerading as C compilers | ||
1215 | + incorrectly reject 9223372036854775807. */ | ||
1216 | + #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) | ||
1217 | + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 | ||
1218 | + && LARGE_OFF_T % 2147483647 == 1) | ||
1219 | + ? 1 : -1]; | ||
1220 | + int | ||
1221 | + main () | ||
1222 | + { | ||
1223 | + | ||
1224 | + ; | ||
1225 | + return 0; | ||
1226 | + } | ||
1227 | + _ACEOF | ||
1228 | + rm -f conftest.$ac_objext | ||
1229 | + if { (ac_try="$ac_compile" | ||
1230 | + case "(($ac_try" in | ||
1231 | + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; | ||
1232 | + *) ac_try_echo=$ac_try;; | ||
1233 | + esac | ||
1234 | + eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" | ||
1235 | + $as_echo "$ac_try_echo") >&5 | ||
1236 | + (eval "$ac_compile") 2>conftest.er1 | ||
1237 | + ac_status=$? | ||
1238 | + grep -v '^ *+' conftest.er1 >conftest.err | ||
1239 | + rm -f conftest.er1 | ||
1240 | + cat conftest.err >&5 | ||
1241 | + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 | ||
1242 | + (exit $ac_status); } && { | ||
1243 | + test -z "$ac_c_werror_flag" || | ||
1244 | + test ! -s conftest.err | ||
1245 | + } && test -s conftest.$ac_objext; then | ||
1246 | + ac_cv_sys_large_files=1; break | ||
1247 | + else | ||
1248 | + $as_echo "$as_me: failed program was:" >&5 | ||
1249 | + sed 's/^/| /' conftest.$ac_ext >&5 | ||
1250 | + | ||
1251 | + | ||
1252 | + fi | ||
1253 | + | ||
1254 | + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
1255 | + ac_cv_sys_large_files=unknown | ||
1256 | + break | ||
1257 | + done | ||
1258 | + fi | ||
1259 | + { $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 | ||
1260 | + $as_echo "$ac_cv_sys_large_files" >&6; } | ||
1261 | + case $ac_cv_sys_large_files in #( | ||
1262 | + no | unknown) ;; | ||
1263 | + *) | ||
1264 | + cat >>confdefs.h <<_ACEOF | ||
1265 | + #define _LARGE_FILES $ac_cv_sys_large_files | ||
1266 | + _ACEOF | ||
1267 | + ;; | ||
1268 | + esac | ||
1269 | + rm -rf conftest* | ||
1270 | + fi | ||
1271 | + fi | ||
1272 | + | ||
1273 | + | ||
1274 | { $as_echo "$as_me:$LINENO: checking for st_blksize" >&5 | ||
1275 | $as_echo_n "checking for st_blksize... " >&6; } | ||
1276 | cat >conftest.$ac_ext <<_ACEOF | ||
1277 | *** ../vim-7.2.412/src/version.c 2010-05-07 15:51:59.000000000 +0200 | ||
1278 | --- src/version.c 2010-05-07 16:04:29.000000000 +0200 | ||
1279 | *************** | ||
1280 | *** 683,684 **** | ||
1281 | --- 683,686 ---- | ||
1282 | { /* Add new patch number below this line */ | ||
1283 | + /**/ | ||
1284 | + 413, | ||
1285 | /**/ | ||
1286 | |||
1287 | -- | ||
1288 | How To Keep A Healthy Level Of Insanity: | ||
1289 | 2. Page yourself over the intercom. Don't disguise your voice. | ||
1290 | |||
1291 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1292 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1293 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1294 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1295 | To: vim-dev@vim.org | ||
1296 | Subject: Patch 7.2.414 | ||
1297 | Fcc: outbox | ||
1298 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1299 | Mime-Version: 1.0 | ||
1300 | Content-Type: text/plain; charset=UTF-8 | ||
1301 | Content-Transfer-Encoding: 8bit | ||
1302 | ------------ | ||
1303 | |||
1304 | Patch 7.2.414 | ||
1305 | Problem: CTRK-K <space> <space> does not produce 0xa0 as expected. (Tony | ||
1306 | Mechelynck) | ||
1307 | Solution: Remove the Unicode range 0xe000 - 0xefff from digraphs, these are | ||
1308 | not valid characters. | ||
1309 | Files: src/digraph.c | ||
1310 | |||
1311 | |||
1312 | *** ../vim-7.2.413/src/digraph.c 2009-05-13 14:12:14.000000000 +0200 | ||
1313 | --- src/digraph.c 2010-04-11 17:28:22.000000000 +0200 | ||
1314 | *************** | ||
1315 | *** 1933,1977 **** | ||
1316 | {'7', 'c', 0x3226}, | ||
1317 | {'8', 'c', 0x3227}, | ||
1318 | {'9', 'c', 0x3228}, | ||
1319 | ! {' ', ' ', 0xe000}, | ||
1320 | ! {'/', 'c', 0xe001}, | ||
1321 | ! {'U', 'A', 0xe002}, | ||
1322 | ! {'U', 'B', 0xe003}, | ||
1323 | ! {'"', '3', 0xe004}, | ||
1324 | ! {'"', '1', 0xe005}, | ||
1325 | ! {'"', '!', 0xe006}, | ||
1326 | ! {'"', '\'', 0xe007}, | ||
1327 | ! {'"', '>', 0xe008}, | ||
1328 | ! {'"', '?', 0xe009}, | ||
1329 | ! {'"', '-', 0xe00a}, | ||
1330 | ! {'"', '(', 0xe00b}, | ||
1331 | ! {'"', '.', 0xe00c}, | ||
1332 | ! {'"', ':', 0xe00d}, | ||
1333 | ! {'"', '0', 0xe00e}, | ||
1334 | ! {'"', '"', 0xe00f}, | ||
1335 | ! {'"', '<', 0xe010}, | ||
1336 | ! {'"', ',', 0xe011}, | ||
1337 | ! {'"', ';', 0xe012}, | ||
1338 | ! {'"', '_', 0xe013}, | ||
1339 | ! {'"', '=', 0xe014}, | ||
1340 | ! {'"', '/', 0xe015}, | ||
1341 | ! {'"', 'i', 0xe016}, | ||
1342 | ! {'"', 'd', 0xe017}, | ||
1343 | ! {'"', 'p', 0xe018}, | ||
1344 | ! {';', ';', 0xe019}, | ||
1345 | ! {',', ',', 0xe01a}, | ||
1346 | ! {'b', '3', 0xe01b}, | ||
1347 | ! {'C', 'i', 0xe01c}, | ||
1348 | ! {'f', '(', 0xe01d}, | ||
1349 | ! {'e', 'd', 0xe01e}, | ||
1350 | ! {'a', 'm', 0xe01f}, | ||
1351 | ! {'p', 'm', 0xe020}, | ||
1352 | ! {'F', 'l', 0xe023}, | ||
1353 | ! {'G', 'F', 0xe024}, | ||
1354 | ! {'>', 'V', 0xe025}, | ||
1355 | ! {'!', '*', 0xe026}, | ||
1356 | ! {'?', '*', 0xe027}, | ||
1357 | ! {'J', '<', 0xe028}, | ||
1358 | {'f', 'f', 0xfb00}, | ||
1359 | {'f', 'i', 0xfb01}, | ||
1360 | {'f', 'l', 0xfb02}, | ||
1361 | --- 1933,1940 ---- | ||
1362 | {'7', 'c', 0x3226}, | ||
1363 | {'8', 'c', 0x3227}, | ||
1364 | {'9', 'c', 0x3228}, | ||
1365 | ! /* code points 0xe000 - 0xefff excluded, they have no assigned | ||
1366 | ! * characters, only used in proposals. */ | ||
1367 | {'f', 'f', 0xfb00}, | ||
1368 | {'f', 'i', 0xfb01}, | ||
1369 | {'f', 'l', 0xfb02}, | ||
1370 | *** ../vim-7.2.413/src/version.c 2010-05-07 16:05:48.000000000 +0200 | ||
1371 | --- src/version.c 2010-05-07 16:17:26.000000000 +0200 | ||
1372 | *************** | ||
1373 | *** 683,684 **** | ||
1374 | --- 683,686 ---- | ||
1375 | { /* Add new patch number below this line */ | ||
1376 | + /**/ | ||
1377 | + 414, | ||
1378 | /**/ | ||
1379 | |||
1380 | -- | ||
1381 | How To Keep A Healthy Level Of Insanity: | ||
1382 | 4. Put your garbage can on your desk and label it "in". | ||
1383 | |||
1384 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1385 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1386 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1387 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1388 | To: vim-dev@vim.org | ||
1389 | Subject: Patch 7.2.415 | ||
1390 | Fcc: outbox | ||
1391 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1392 | Mime-Version: 1.0 | ||
1393 | Content-Type: text/plain; charset=UTF-8 | ||
1394 | Content-Transfer-Encoding: 8bit | ||
1395 | ------------ | ||
1396 | |||
1397 | Patch 7.2.415 | ||
1398 | Problem: Win32: Can't open a remote file when starting Vim. | ||
1399 | Solution: Don't invoke cygwin_conv_path() for URLs. (Tomoya Adachi) | ||
1400 | Files: src/main.c | ||
1401 | |||
1402 | |||
1403 | *** ../vim-7.2.414/src/main.c 2009-12-16 18:27:29.000000000 +0100 | ||
1404 | --- src/main.c 2010-04-12 20:57:44.000000000 +0200 | ||
1405 | *************** | ||
1406 | *** 1477,1483 **** | ||
1407 | ++initstr; | ||
1408 | } | ||
1409 | |||
1410 | ! /* Avoid using evim mode for "editor". */ | ||
1411 | if (TOLOWER_ASC(initstr[0]) == 'e' | ||
1412 | && (TOLOWER_ASC(initstr[1]) == 'v' | ||
1413 | || TOLOWER_ASC(initstr[1]) == 'g')) | ||
1414 | --- 1477,1483 ---- | ||
1415 | ++initstr; | ||
1416 | } | ||
1417 | |||
1418 | ! /* Use evim mode for "evim" and "egvim", not for "editor". */ | ||
1419 | if (TOLOWER_ASC(initstr[0]) == 'e' | ||
1420 | && (TOLOWER_ASC(initstr[1]) == 'v' | ||
1421 | || TOLOWER_ASC(initstr[1]) == 'g')) | ||
1422 | *************** | ||
1423 | *** 2262,2268 **** | ||
1424 | * Look for evidence of non-Cygwin paths before we bother. | ||
1425 | * This is only for when using the Unix files. | ||
1426 | */ | ||
1427 | ! if (strpbrk(p, "\\:") != NULL) | ||
1428 | { | ||
1429 | char posix_path[PATH_MAX]; | ||
1430 | |||
1431 | --- 2262,2268 ---- | ||
1432 | * Look for evidence of non-Cygwin paths before we bother. | ||
1433 | * This is only for when using the Unix files. | ||
1434 | */ | ||
1435 | ! if (strpbrk(p, "\\:") != NULL && !path_with_url(p)) | ||
1436 | { | ||
1437 | char posix_path[PATH_MAX]; | ||
1438 | |||
1439 | *** ../vim-7.2.414/src/version.c 2010-05-07 16:18:08.000000000 +0200 | ||
1440 | --- src/version.c 2010-05-07 16:34:22.000000000 +0200 | ||
1441 | *************** | ||
1442 | *** 683,684 **** | ||
1443 | --- 683,686 ---- | ||
1444 | { /* Add new patch number below this line */ | ||
1445 | + /**/ | ||
1446 | + 415, | ||
1447 | /**/ | ||
1448 | |||
1449 | -- | ||
1450 | How To Keep A Healthy Level Of Insanity: | ||
1451 | 6. In the memo field of all your checks, write "for sexual favors". | ||
1452 | |||
1453 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1454 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1455 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1456 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1457 | To: vim-dev@vim.org | ||
1458 | Subject: Patch 7.2.416 | ||
1459 | Fcc: outbox | ||
1460 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1461 | Mime-Version: 1.0 | ||
1462 | Content-Type: text/plain; charset=UTF-8 | ||
1463 | Content-Transfer-Encoding: 8bit | ||
1464 | ------------ | ||
1465 | |||
1466 | Patch 7.2.416 | ||
1467 | Problem: Logtalk.dict is not installed. | ||
1468 | Solution: Add it to the install target. (Markus Heidelberg) | ||
1469 | Files: src/Makefile | ||
1470 | |||
1471 | |||
1472 | *** ../vim-7.2.415/src/Makefile 2010-05-07 16:35:12.000000000 +0200 | ||
1473 | --- src/Makefile 2010-04-06 20:19:48.000000000 +0200 | ||
1474 | *************** | ||
1475 | *** 30,36 **** | ||
1476 | # want to disable using X11 libraries. This speeds up starting Vim, | ||
1477 | # but the window title will not be set and the X11 selection can not | ||
1478 | # used. | ||
1479 | ! # - Uncomment the line "CONF_OPT_XSMP = --without-xsmp" if you have the | ||
1480 | # X11 Session Management Protocol (XSMP) library (libSM) but do not | ||
1481 | # want to use it. | ||
1482 | # This can speedup Vim startup but Vim loses the ability to catch the | ||
1483 | --- 30,36 ---- | ||
1484 | # want to disable using X11 libraries. This speeds up starting Vim, | ||
1485 | # but the window title will not be set and the X11 selection can not | ||
1486 | # used. | ||
1487 | ! # - Uncomment the line "CONF_OPT_XSMP = --disable-xsmp" if you have the | ||
1488 | # X11 Session Management Protocol (XSMP) library (libSM) but do not | ||
1489 | # want to use it. | ||
1490 | # This can speedup Vim startup but Vim loses the ability to catch the | ||
1491 | *************** | ||
1492 | *** 1882,1888 **** | ||
1493 | cd $(PLUGSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_PLUG) | ||
1494 | cd $(DEST_PLUG); chmod $(HELPMOD) *.vim README.txt | ||
1495 | # install the ftplugin files | ||
1496 | ! cd $(FTPLUGSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_FTP) | ||
1497 | cd $(DEST_FTP); chmod $(HELPMOD) *.vim README.txt | ||
1498 | # install the compiler files | ||
1499 | cd $(COMPSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_COMP) | ||
1500 | --- 1882,1888 ---- | ||
1501 | cd $(PLUGSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_PLUG) | ||
1502 | cd $(DEST_PLUG); chmod $(HELPMOD) *.vim README.txt | ||
1503 | # install the ftplugin files | ||
1504 | ! cd $(FTPLUGSOURCE); $(INSTALL_DATA) *.vim README.txt logtalk.dict $(DEST_FTP) | ||
1505 | cd $(DEST_FTP); chmod $(HELPMOD) *.vim README.txt | ||
1506 | # install the compiler files | ||
1507 | cd $(COMPSOURCE); $(INSTALL_DATA) *.vim README.txt $(DEST_COMP) | ||
1508 | *** ../vim-7.2.415/src/version.c 2010-05-07 16:34:59.000000000 +0200 | ||
1509 | --- src/version.c 2010-05-07 16:53:17.000000000 +0200 | ||
1510 | *************** | ||
1511 | *** 683,684 **** | ||
1512 | --- 683,686 ---- | ||
1513 | { /* Add new patch number below this line */ | ||
1514 | + /**/ | ||
1515 | + 416, | ||
1516 | /**/ | ||
1517 | |||
1518 | -- | ||
1519 | How To Keep A Healthy Level Of Insanity: | ||
1520 | 8. Don't use any punctuation marks. | ||
1521 | |||
1522 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1523 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1524 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1525 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1526 | To: vim-dev@vim.org | ||
1527 | Subject: Patch 7.2.417 | ||
1528 | Fcc: outbox | ||
1529 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1530 | Mime-Version: 1.0 | ||
1531 | Content-Type: text/plain; charset=UTF-8 | ||
1532 | Content-Transfer-Encoding: 8bit | ||
1533 | ------------ | ||
1534 | |||
1535 | Patch 7.2.417 | ||
1536 | Problem: When 'shell' has an argument with a slash then 'shellpipe' is not | ||
1537 | set properly. (Britton Kerin) | ||
1538 | Solution: Assume there are no spaces in the path, arguments follow. | ||
1539 | Files: src/option.c | ||
1540 | |||
1541 | |||
1542 | *** ../vim-7.2.416/src/option.c 2010-02-24 14:34:10.000000000 +0100 | ||
1543 | --- src/option.c 2010-05-13 13:05:28.000000000 +0200 | ||
1544 | *************** | ||
1545 | *** 3696,3704 **** | ||
1546 | --- 3696,3727 ---- | ||
1547 | * Isolate the name of the shell: | ||
1548 | * - Skip beyond any path. E.g., "/usr/bin/csh -f" -> "csh -f". | ||
1549 | * - Remove any argument. E.g., "csh -f" -> "csh". | ||
1550 | + * But don't allow a space in the path, so that this works: | ||
1551 | + * "/usr/bin/csh --rcfile ~/.cshrc" | ||
1552 | + * But don't do that for Windows, it's common to have a space in the path. | ||
1553 | */ | ||
1554 | + #ifdef WIN3264 | ||
1555 | p = gettail(p_sh); | ||
1556 | p = vim_strnsave(p, (int)(skiptowhite(p) - p)); | ||
1557 | + #else | ||
1558 | + p = skiptowhite(p_sh); | ||
1559 | + if (*p == NUL) | ||
1560 | + { | ||
1561 | + /* No white space, use the tail. */ | ||
1562 | + p = vim_strsave(gettail(p_sh)); | ||
1563 | + } | ||
1564 | + else | ||
1565 | + { | ||
1566 | + char_u *p1, *p2; | ||
1567 | + | ||
1568 | + /* Find the last path separator before the space. */ | ||
1569 | + p1 = p_sh; | ||
1570 | + for (p2 = p_sh; p2 < p; mb_ptr_adv(p2)) | ||
1571 | + if (vim_ispathsep(*p2)) | ||
1572 | + p1 = p2 + 1; | ||
1573 | + p = vim_strnsave(p1, (int)(p - p1)); | ||
1574 | + } | ||
1575 | + #endif | ||
1576 | if (p != NULL) | ||
1577 | { | ||
1578 | /* | ||
1579 | *** ../vim-7.2.416/src/version.c 2010-05-07 16:54:32.000000000 +0200 | ||
1580 | --- src/version.c 2010-05-13 13:11:17.000000000 +0200 | ||
1581 | *************** | ||
1582 | *** 683,684 **** | ||
1583 | --- 683,686 ---- | ||
1584 | { /* Add new patch number below this line */ | ||
1585 | + /**/ | ||
1586 | + 417, | ||
1587 | /**/ | ||
1588 | |||
1589 | -- | ||
1590 | If you put 7 of the most talented OSS developers in a room for a week | ||
1591 | and asked them to fix a bug in a spreadsheet program, in 1 week | ||
1592 | you'd have 2 new mail readers and a text-based web browser. | ||
1593 | |||
1594 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1595 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1596 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1597 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1598 | To: vim-dev@vim.org | ||
1599 | Subject: Patch 7.2.418 | ||
1600 | Fcc: outbox | ||
1601 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1602 | Mime-Version: 1.0 | ||
1603 | Content-Type: text/plain; charset=UTF-8 | ||
1604 | Content-Transfer-Encoding: 8bit | ||
1605 | ------------ | ||
1606 | |||
1607 | Patch 7.2.418 | ||
1608 | Problem: Vim tries to set the background or foreground color in a terminal | ||
1609 | to -1. (Graywh) Happens with ":hi Normal ctermbg=NONE". | ||
1610 | Solution: When resetting the foreground or background color don't set the | ||
1611 | color, let the clear screen code do that. | ||
1612 | Files: src/syntax.c | ||
1613 | |||
1614 | |||
1615 | *** ../vim-7.2.417/src/syntax.c 2010-03-23 14:39:07.000000000 +0100 | ||
1616 | --- src/syntax.c 2010-05-13 15:34:27.000000000 +0200 | ||
1617 | *************** | ||
1618 | *** 7136,7142 **** | ||
1619 | } | ||
1620 | } | ||
1621 | } | ||
1622 | ! /* Add one to the argument, to avoid zero */ | ||
1623 | if (key[5] == 'F') | ||
1624 | { | ||
1625 | HL_TABLE()[idx].sg_cterm_fg = color + 1; | ||
1626 | --- 7136,7143 ---- | ||
1627 | } | ||
1628 | } | ||
1629 | } | ||
1630 | ! /* Add one to the argument, to avoid zero. Zero is used for | ||
1631 | ! * "NONE", then "color" is -1. */ | ||
1632 | if (key[5] == 'F') | ||
1633 | { | ||
1634 | HL_TABLE()[idx].sg_cterm_fg = color + 1; | ||
1635 | *************** | ||
1636 | *** 7150,7156 **** | ||
1637 | #endif | ||
1638 | { | ||
1639 | must_redraw = CLEAR; | ||
1640 | ! if (termcap_active) | ||
1641 | term_fg_color(color); | ||
1642 | } | ||
1643 | } | ||
1644 | --- 7151,7157 ---- | ||
1645 | #endif | ||
1646 | { | ||
1647 | must_redraw = CLEAR; | ||
1648 | ! if (termcap_active && color >= 0) | ||
1649 | term_fg_color(color); | ||
1650 | } | ||
1651 | } | ||
1652 | *************** | ||
1653 | *** 7167,7182 **** | ||
1654 | #endif | ||
1655 | { | ||
1656 | must_redraw = CLEAR; | ||
1657 | ! if (termcap_active) | ||
1658 | ! term_bg_color(color); | ||
1659 | ! if (t_colors < 16) | ||
1660 | ! i = (color == 0 || color == 4); | ||
1661 | ! else | ||
1662 | ! i = (color < 7 || color == 8); | ||
1663 | ! /* Set the 'background' option if the value is wrong. */ | ||
1664 | ! if (i != (*p_bg == 'd')) | ||
1665 | ! set_option_value((char_u *)"bg", 0L, | ||
1666 | ! i ? (char_u *)"dark" : (char_u *)"light", 0); | ||
1667 | } | ||
1668 | } | ||
1669 | } | ||
1670 | --- 7168,7188 ---- | ||
1671 | #endif | ||
1672 | { | ||
1673 | must_redraw = CLEAR; | ||
1674 | ! if (color >= 0) | ||
1675 | ! { | ||
1676 | ! if (termcap_active) | ||
1677 | ! term_bg_color(color); | ||
1678 | ! if (t_colors < 16) | ||
1679 | ! i = (color == 0 || color == 4); | ||
1680 | ! else | ||
1681 | ! i = (color < 7 || color == 8); | ||
1682 | ! /* Set the 'background' option if the value is | ||
1683 | ! * wrong. */ | ||
1684 | ! if (i != (*p_bg == 'd')) | ||
1685 | ! set_option_value((char_u *)"bg", 0L, | ||
1686 | ! i ? (char_u *)"dark" | ||
1687 | ! : (char_u *)"light", 0); | ||
1688 | ! } | ||
1689 | } | ||
1690 | } | ||
1691 | } | ||
1692 | *** ../vim-7.2.417/src/version.c 2010-05-13 13:12:01.000000000 +0200 | ||
1693 | --- src/version.c 2010-05-13 14:29:59.000000000 +0200 | ||
1694 | *************** | ||
1695 | *** 683,684 **** | ||
1696 | --- 683,686 ---- | ||
1697 | { /* Add new patch number below this line */ | ||
1698 | + /**/ | ||
1699 | + 418, | ||
1700 | /**/ | ||
1701 | |||
1702 | -- | ||
1703 | hundred-and-one symptoms of being an internet addict: | ||
1704 | 30. Even though you died last week, you've managed to retain OPS on your | ||
1705 | favorite IRC channel. | ||
1706 | |||
1707 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1708 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1709 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1710 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1711 | To: vim-dev@vim.org | ||
1712 | Subject: Patch 7.2.419 | ||
1713 | Fcc: outbox | ||
1714 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1715 | Mime-Version: 1.0 | ||
1716 | Content-Type: text/plain; charset=UTF-8 | ||
1717 | Content-Transfer-Encoding: 8bit | ||
1718 | ------------ | ||
1719 | |||
1720 | Patch 7.2.419 | ||
1721 | Problem: Memory leak in Motif when clicking on "Search Vim Help". | ||
1722 | Solution: Free string returned by XmTextGetString(). (Dominique Pelle) | ||
1723 | Files: src/gui_motif.c | ||
1724 | |||
1725 | |||
1726 | *** ../vim-7.2.418/src/gui_motif.c 2009-05-21 23:25:38.000000000 +0200 | ||
1727 | --- src/gui_motif.c 2010-05-13 16:08:14.000000000 +0200 | ||
1728 | *************** | ||
1729 | *** 2917,2922 **** | ||
1730 | --- 2917,2923 ---- | ||
1731 | *textfield = NUL; | ||
1732 | else | ||
1733 | vim_strncpy(textfield, p, IOSIZE - 1); | ||
1734 | + XtFree((char *)p); | ||
1735 | } | ||
1736 | |||
1737 | suppress_dialog_mnemonics(dialogform); | ||
1738 | *** ../vim-7.2.418/src/version.c 2010-05-13 15:40:23.000000000 +0200 | ||
1739 | --- src/version.c 2010-05-13 16:09:28.000000000 +0200 | ||
1740 | *************** | ||
1741 | *** 683,684 **** | ||
1742 | --- 683,686 ---- | ||
1743 | { /* Add new patch number below this line */ | ||
1744 | + /**/ | ||
1745 | + 419, | ||
1746 | /**/ | ||
1747 | |||
1748 | -- | ||
1749 | hundred-and-one symptoms of being an internet addict: | ||
1750 | 32. You don't know what sex three of your closest friends are, because they | ||
1751 | have neutral nicknames and you never bothered to ask. | ||
1752 | |||
1753 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1754 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1755 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1756 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1757 | To: vim-dev@vim.org | ||
1758 | Subject: Patch 7.2.420 | ||
1759 | Fcc: outbox | ||
1760 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1761 | Mime-Version: 1.0 | ||
1762 | Content-Type: text/plain; charset=UTF-8 | ||
1763 | Content-Transfer-Encoding: 8bit | ||
1764 | ------------ | ||
1765 | |||
1766 | Patch 7.2.420 | ||
1767 | Problem: ":argedit" does not accept "++enc=utf8" as documented. (Dominique | ||
1768 | Pelle) | ||
1769 | Solution: Add the ARGOPT flag to ":argedit". | ||
1770 | Files: src/ex_cmds.h | ||
1771 | |||
1772 | |||
1773 | *** ../vim-7.2.419/src/ex_cmds.h 2009-07-09 15:55:34.000000000 +0200 | ||
1774 | --- src/ex_cmds.h 2010-05-13 16:18:38.000000000 +0200 | ||
1775 | *************** | ||
1776 | *** 52,58 **** | ||
1777 | #define ARGOPT 0x40000L /* allow "++opt=val" argument */ | ||
1778 | #define SBOXOK 0x80000L /* allowed in the sandbox */ | ||
1779 | #define CMDWIN 0x100000L /* allowed in cmdline window */ | ||
1780 | ! #define MODIFY 0x200000L /* forbidden in non-'modifiable' buffer */ | ||
1781 | #define EXFLAGS 0x400000L /* allow flags after count in argument */ | ||
1782 | #define FILES (XFILE | EXTRA) /* multiple extra files allowed */ | ||
1783 | #define WORD1 (EXTRA | NOSPC) /* one extra word allowed */ | ||
1784 | --- 52,58 ---- | ||
1785 | #define ARGOPT 0x40000L /* allow "++opt=val" argument */ | ||
1786 | #define SBOXOK 0x80000L /* allowed in the sandbox */ | ||
1787 | #define CMDWIN 0x100000L /* allowed in cmdline window */ | ||
1788 | ! #define MODIFY 0x200000L /* forbidden in non-'modifiable' buffer */ | ||
1789 | #define EXFLAGS 0x400000L /* allow flags after count in argument */ | ||
1790 | #define FILES (XFILE | EXTRA) /* multiple extra files allowed */ | ||
1791 | #define WORD1 (EXTRA | NOSPC) /* one extra word allowed */ | ||
1792 | *************** | ||
1793 | *** 116,122 **** | ||
1794 | EX(CMD_argdo, "argdo", ex_listdo, | ||
1795 | BANG|NEEDARG|EXTRA|NOTRLCOM), | ||
1796 | EX(CMD_argedit, "argedit", ex_argedit, | ||
1797 | ! BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|TRLBAR), | ||
1798 | EX(CMD_argglobal, "argglobal", ex_args, | ||
1799 | BANG|FILES|EDITCMD|ARGOPT|TRLBAR), | ||
1800 | EX(CMD_arglocal, "arglocal", ex_args, | ||
1801 | --- 116,122 ---- | ||
1802 | EX(CMD_argdo, "argdo", ex_listdo, | ||
1803 | BANG|NEEDARG|EXTRA|NOTRLCOM), | ||
1804 | EX(CMD_argedit, "argedit", ex_argedit, | ||
1805 | ! BANG|NEEDARG|RANGE|NOTADR|FILE1|EDITCMD|ARGOPT|TRLBAR), | ||
1806 | EX(CMD_argglobal, "argglobal", ex_args, | ||
1807 | BANG|FILES|EDITCMD|ARGOPT|TRLBAR), | ||
1808 | EX(CMD_arglocal, "arglocal", ex_args, | ||
1809 | *** ../vim-7.2.419/src/version.c 2010-05-13 16:31:15.000000000 +0200 | ||
1810 | --- src/version.c 2010-05-13 16:43:30.000000000 +0200 | ||
1811 | *************** | ||
1812 | *** 683,684 **** | ||
1813 | --- 683,686 ---- | ||
1814 | { /* Add new patch number below this line */ | ||
1815 | + /**/ | ||
1816 | + 420, | ||
1817 | /**/ | ||
1818 | |||
1819 | -- | ||
1820 | hundred-and-one symptoms of being an internet addict: | ||
1821 | 33. You name your children Eudora, Mozilla and Dotcom. | ||
1822 | |||
1823 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1824 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1825 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1826 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1827 | To: vim-dev@vim.org | ||
1828 | Subject: Patch 7.2.421 | ||
1829 | Fcc: outbox | ||
1830 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1831 | Mime-Version: 1.0 | ||
1832 | Content-Type: text/plain; charset=UTF-8 | ||
1833 | Content-Transfer-Encoding: 8bit | ||
1834 | ------------ | ||
1835 | |||
1836 | Patch 7.2.421 | ||
1837 | Problem: Folds are sometimes not updated properly and there is no way to | ||
1838 | force an update. | ||
1839 | Solution: Make "zx" and "zX" recompute folds (suggested by Christian | ||
1840 | Brabandt) | ||
1841 | Files: src/normal.c | ||
1842 | |||
1843 | |||
1844 | *** ../vim-7.2.420/src/normal.c 2010-05-07 15:51:59.000000000 +0200 | ||
1845 | --- src/normal.c 2010-05-13 16:43:05.000000000 +0200 | ||
1846 | *************** | ||
1847 | *** 4936,4948 **** | ||
1848 | |||
1849 | /* "zx": re-apply 'foldlevel' and open folds at the cursor */ | ||
1850 | case 'x': curwin->w_p_fen = TRUE; | ||
1851 | ! newFoldLevel(); /* update right now */ | ||
1852 | foldOpenCursor(); | ||
1853 | break; | ||
1854 | |||
1855 | /* "zX": undo manual opens/closes, re-apply 'foldlevel' */ | ||
1856 | case 'X': curwin->w_p_fen = TRUE; | ||
1857 | ! old_fdl = -1; /* force an update */ | ||
1858 | break; | ||
1859 | |||
1860 | /* "zm": fold more */ | ||
1861 | --- 4936,4950 ---- | ||
1862 | |||
1863 | /* "zx": re-apply 'foldlevel' and open folds at the cursor */ | ||
1864 | case 'x': curwin->w_p_fen = TRUE; | ||
1865 | ! curwin->w_foldinvalid = TRUE; /* recompute folds */ | ||
1866 | ! newFoldLevel(); /* update right now */ | ||
1867 | foldOpenCursor(); | ||
1868 | break; | ||
1869 | |||
1870 | /* "zX": undo manual opens/closes, re-apply 'foldlevel' */ | ||
1871 | case 'X': curwin->w_p_fen = TRUE; | ||
1872 | ! curwin->w_foldinvalid = TRUE; /* recompute folds */ | ||
1873 | ! old_fdl = -1; /* force an update */ | ||
1874 | break; | ||
1875 | |||
1876 | /* "zm": fold more */ | ||
1877 | *** ../vim-7.2.420/src/version.c 2010-05-13 16:46:16.000000000 +0200 | ||
1878 | --- src/version.c 2010-05-13 17:33:34.000000000 +0200 | ||
1879 | *************** | ||
1880 | *** 683,684 **** | ||
1881 | --- 683,686 ---- | ||
1882 | { /* Add new patch number below this line */ | ||
1883 | + /**/ | ||
1884 | + 421, | ||
1885 | /**/ | ||
1886 | |||
1887 | -- | ||
1888 | My sister Cecilia opened a computer store in Hawaii. | ||
1889 | She sells C shells by the seashore. | ||
1890 | |||
1891 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1892 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1893 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1894 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1895 | To: vim-dev@vim.org | ||
1896 | Subject: Patch 7.2.422 | ||
1897 | Fcc: outbox | ||
1898 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1899 | Mime-Version: 1.0 | ||
1900 | Content-Type: text/plain; charset=UTF-8 | ||
1901 | Content-Transfer-Encoding: 8bit | ||
1902 | ------------ | ||
1903 | |||
1904 | Patch 7.2.422 | ||
1905 | Problem: May get E763 when using spell dictionaries. | ||
1906 | Solution: Avoid utf-8 case folded character to be truncated to 8 bits and | ||
1907 | differ from latin1. (Dominique Pelle) | ||
1908 | Files: src/spell.c | ||
1909 | |||
1910 | |||
1911 | *** ../vim-7.2.421/src/spell.c 2010-01-19 13:06:42.000000000 +0100 | ||
1912 | --- src/spell.c 2010-05-13 17:29:28.000000000 +0200 | ||
1913 | *************** | ||
1914 | *** 9780,9789 **** | ||
1915 | { | ||
1916 | for (i = 128; i < 256; ++i) | ||
1917 | { | ||
1918 | spelltab.st_isu[i] = utf_isupper(i); | ||
1919 | spelltab.st_isw[i] = spelltab.st_isu[i] || utf_islower(i); | ||
1920 | ! spelltab.st_fold[i] = utf_fold(i); | ||
1921 | ! spelltab.st_upper[i] = utf_toupper(i); | ||
1922 | } | ||
1923 | } | ||
1924 | else | ||
1925 | --- 9780,9795 ---- | ||
1926 | { | ||
1927 | for (i = 128; i < 256; ++i) | ||
1928 | { | ||
1929 | + int f = utf_fold(i); | ||
1930 | + int u = utf_toupper(i); | ||
1931 | + | ||
1932 | spelltab.st_isu[i] = utf_isupper(i); | ||
1933 | spelltab.st_isw[i] = spelltab.st_isu[i] || utf_islower(i); | ||
1934 | ! /* The folded/upper-cased value is different between latin1 and | ||
1935 | ! * utf8 for 0xb5, causing E763 for no good reason. Use the latin1 | ||
1936 | ! * value for utf-8 to avoid this. */ | ||
1937 | ! spelltab.st_fold[i] = (f < 256) ? f : i; | ||
1938 | ! spelltab.st_upper[i] = (u < 256) ? u : i; | ||
1939 | } | ||
1940 | } | ||
1941 | else | ||
1942 | *** ../vim-7.2.421/src/version.c 2010-05-13 17:35:52.000000000 +0200 | ||
1943 | --- src/version.c 2010-05-13 17:46:03.000000000 +0200 | ||
1944 | *************** | ||
1945 | *** 683,684 **** | ||
1946 | --- 683,686 ---- | ||
1947 | { /* Add new patch number below this line */ | ||
1948 | + /**/ | ||
1949 | + 422, | ||
1950 | /**/ | ||
1951 | |||
1952 | -- | ||
1953 | Q. What happens to programmers when they die? | ||
1954 | A: MS-Windows programmers are reinstalled. C++ programmers become undefined, | ||
1955 | anyone who refers to them will die as well. Java programmers reincarnate | ||
1956 | after being garbage collected. | ||
1957 | |||
1958 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
1959 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
1960 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
1961 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
1962 | To: vim-dev@vim.org | ||
1963 | Subject: Patch 7.2.423 | ||
1964 | Fcc: outbox | ||
1965 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
1966 | Mime-Version: 1.0 | ||
1967 | Content-Type: text/plain; charset=UTF-8 | ||
1968 | Content-Transfer-Encoding: 8bit | ||
1969 | ------------ | ||
1970 | |||
1971 | Patch 7.2.423 | ||
1972 | Problem: Crash when assigning s: to variable. (Yukihiro Nakadaira) | ||
1973 | Solution: Make ga_scripts contain pointer to scriptvar_T instead of | ||
1974 | scriptvar_T itself. (Dominique Pelle) | ||
1975 | Files: src/eval.c | ||
1976 | |||
1977 | |||
1978 | *** ../vim-7.2.422/src/eval.c 2010-03-17 19:53:44.000000000 +0100 | ||
1979 | --- src/eval.c 2010-05-14 12:02:16.000000000 +0200 | ||
1980 | *************** | ||
1981 | *** 145,153 **** | ||
1982 | dict_T sv_dict; | ||
1983 | } scriptvar_T; | ||
1984 | |||
1985 | ! static garray_T ga_scripts = {0, 0, sizeof(scriptvar_T), 4, NULL}; | ||
1986 | ! #define SCRIPT_SV(id) (((scriptvar_T *)ga_scripts.ga_data)[(id) - 1]) | ||
1987 | ! #define SCRIPT_VARS(id) (SCRIPT_SV(id).sv_dict.dv_hashtab) | ||
1988 | |||
1989 | static int echo_attr = 0; /* attributes used for ":echo" */ | ||
1990 | |||
1991 | --- 145,153 ---- | ||
1992 | dict_T sv_dict; | ||
1993 | } scriptvar_T; | ||
1994 | |||
1995 | ! static garray_T ga_scripts = {0, 0, sizeof(scriptvar_T *), 4, NULL}; | ||
1996 | ! #define SCRIPT_SV(id) (((scriptvar_T **)ga_scripts.ga_data)[(id) - 1]) | ||
1997 | ! #define SCRIPT_VARS(id) (SCRIPT_SV(id)->sv_dict.dv_hashtab) | ||
1998 | |||
1999 | static int echo_attr = 0; /* attributes used for ":echo" */ | ||
2000 | |||
2001 | *************** | ||
2002 | *** 866,875 **** | ||
2003 | hash_init(&vimvarht); /* garbage_collect() will access it */ | ||
2004 | hash_clear(&compat_hashtab); | ||
2005 | |||
2006 | - /* script-local variables */ | ||
2007 | - for (i = 1; i <= ga_scripts.ga_len; ++i) | ||
2008 | - vars_clear(&SCRIPT_VARS(i)); | ||
2009 | - ga_clear(&ga_scripts); | ||
2010 | free_scriptnames(); | ||
2011 | |||
2012 | /* global variables */ | ||
2013 | --- 866,871 ---- | ||
2014 | *************** | ||
2015 | *** 878,883 **** | ||
2016 | --- 874,887 ---- | ||
2017 | /* autoloaded script names */ | ||
2018 | ga_clear_strings(&ga_loaded); | ||
2019 | |||
2020 | + /* script-local variables */ | ||
2021 | + for (i = 1; i <= ga_scripts.ga_len; ++i) | ||
2022 | + { | ||
2023 | + vars_clear(&SCRIPT_VARS(i)); | ||
2024 | + vim_free(SCRIPT_SV(i)); | ||
2025 | + } | ||
2026 | + ga_clear(&ga_scripts); | ||
2027 | + | ||
2028 | /* unreferenced lists and dicts */ | ||
2029 | (void)garbage_collect(); | ||
2030 | |||
2031 | *************** | ||
2032 | *** 18803,18809 **** | ||
2033 | /* Must be something like "s:", otherwise "ht" would be NULL. */ | ||
2034 | switch (varname[-2]) | ||
2035 | { | ||
2036 | ! case 's': return &SCRIPT_SV(current_SID).sv_var; | ||
2037 | case 'g': return &globvars_var; | ||
2038 | case 'v': return &vimvars_var; | ||
2039 | case 'b': return &curbuf->b_bufvar; | ||
2040 | --- 18807,18813 ---- | ||
2041 | /* Must be something like "s:", otherwise "ht" would be NULL. */ | ||
2042 | switch (varname[-2]) | ||
2043 | { | ||
2044 | ! case 's': return &SCRIPT_SV(current_SID)->sv_var; | ||
2045 | case 'g': return &globvars_var; | ||
2046 | case 'v': return &vimvars_var; | ||
2047 | case 'b': return &curbuf->b_bufvar; | ||
2048 | *************** | ||
2049 | *** 18928,18940 **** | ||
2050 | ht = &SCRIPT_VARS(i); | ||
2051 | if (ht->ht_mask == HT_INIT_SIZE - 1) | ||
2052 | ht->ht_array = ht->ht_smallarray; | ||
2053 | ! sv = &SCRIPT_SV(i); | ||
2054 | sv->sv_var.di_tv.vval.v_dict = &sv->sv_dict; | ||
2055 | } | ||
2056 | |||
2057 | while (ga_scripts.ga_len < id) | ||
2058 | { | ||
2059 | ! sv = &SCRIPT_SV(ga_scripts.ga_len + 1); | ||
2060 | init_var_dict(&sv->sv_dict, &sv->sv_var); | ||
2061 | ++ga_scripts.ga_len; | ||
2062 | } | ||
2063 | --- 18932,18945 ---- | ||
2064 | ht = &SCRIPT_VARS(i); | ||
2065 | if (ht->ht_mask == HT_INIT_SIZE - 1) | ||
2066 | ht->ht_array = ht->ht_smallarray; | ||
2067 | ! sv = SCRIPT_SV(i); | ||
2068 | sv->sv_var.di_tv.vval.v_dict = &sv->sv_dict; | ||
2069 | } | ||
2070 | |||
2071 | while (ga_scripts.ga_len < id) | ||
2072 | { | ||
2073 | ! sv = SCRIPT_SV(ga_scripts.ga_len + 1) = | ||
2074 | ! (scriptvar_T *)alloc_clear(sizeof(scriptvar_T)); | ||
2075 | init_var_dict(&sv->sv_dict, &sv->sv_var); | ||
2076 | ++ga_scripts.ga_len; | ||
2077 | } | ||
2078 | *************** | ||
2079 | *** 21931,21937 **** | ||
2080 | if (find_viminfo_parameter('!') == NULL) | ||
2081 | return; | ||
2082 | |||
2083 | ! fprintf(fp, _("\n# global variables:\n")); | ||
2084 | |||
2085 | todo = (int)globvarht.ht_used; | ||
2086 | for (hi = globvarht.ht_array; todo > 0; ++hi) | ||
2087 | --- 21936,21942 ---- | ||
2088 | if (find_viminfo_parameter('!') == NULL) | ||
2089 | return; | ||
2090 | |||
2091 | ! fputs(_("\n# global variables:\n"), fp); | ||
2092 | |||
2093 | todo = (int)globvarht.ht_used; | ||
2094 | for (hi = globvarht.ht_array; todo > 0; ++hi) | ||
2095 | *** ../vim-7.2.422/src/version.c 2010-05-13 17:46:53.000000000 +0200 | ||
2096 | --- src/version.c 2010-05-14 12:13:19.000000000 +0200 | ||
2097 | *************** | ||
2098 | *** 683,684 **** | ||
2099 | --- 683,686 ---- | ||
2100 | { /* Add new patch number below this line */ | ||
2101 | + /**/ | ||
2102 | + 423, | ||
2103 | /**/ | ||
2104 | |||
2105 | -- | ||
2106 | He who laughs last, thinks slowest. | ||
2107 | |||
2108 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
2109 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
2110 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
2111 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
2112 | To: vim-dev@vim.org | ||
2113 | Subject: Patch 7.2.424 | ||
2114 | Fcc: outbox | ||
2115 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
2116 | Mime-Version: 1.0 | ||
2117 | Content-Type: text/plain; charset=UTF-8 | ||
2118 | Content-Transfer-Encoding: 8bit | ||
2119 | ------------ | ||
2120 | |||
2121 | Patch 7.2.424 | ||
2122 | Problem: ":colorscheme" without an argument doesn't do anything. | ||
2123 | Solution: Make it echo the current color scheme name. (partly by Christian | ||
2124 | Brabandt) | ||
2125 | Files: runtime/doc/syntax.txt, src/ex_cmds.h, src/ex_docmd.c | ||
2126 | |||
2127 | |||
2128 | *** ../vim-7.2.423/runtime/doc/syntax.txt 2008-08-09 19:36:52.000000000 +0200 | ||
2129 | --- runtime/doc/syntax.txt 2010-05-14 15:27:47.000000000 +0200 | ||
2130 | *************** | ||
2131 | *** 113,118 **** | ||
2132 | --- 113,121 ---- | ||
2133 | :syntax off $VIMRUNTIME/syntax/nosyntax.vim | ||
2134 | Also see |syntax-loading|. | ||
2135 | |||
2136 | + NOTE: If displaying long lines is slow and switching off syntax highlighting | ||
2137 | + makes it fast, consider setting the 'synmaxcol' option to a lower value. | ||
2138 | + | ||
2139 | ============================================================================== | ||
2140 | 2. Syntax files *:syn-files* | ||
2141 | |||
2142 | *************** | ||
2143 | *** 3829,3841 **** | ||
2144 | in their own color. | ||
2145 | |||
2146 | *:colo* *:colorscheme* *E185* | ||
2147 | :colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' | ||
2148 | for the file "colors/{name}.vim. The first one that | ||
2149 | is found is loaded. | ||
2150 | ! To see the name of the currently active color scheme | ||
2151 | ! (if there is one): > | ||
2152 | ! :echo g:colors_name | ||
2153 | ! < Doesn't work recursively, thus you can't use | ||
2154 | ":colorscheme" in a color scheme script. | ||
2155 | After the color scheme has been loaded the | ||
2156 | |ColorScheme| autocommand event is triggered. | ||
2157 | --- 3871,3890 ---- | ||
2158 | in their own color. | ||
2159 | |||
2160 | *:colo* *:colorscheme* *E185* | ||
2161 | + :colo[rscheme] Output the name of the currently active color scheme. | ||
2162 | + This is basically the same as > | ||
2163 | + :echo g:colors_name | ||
2164 | + < In case g:colors_name has not been defined :colo will | ||
2165 | + output "default". When compiled without the |+eval| | ||
2166 | + feature it will output "unknown". | ||
2167 | + | ||
2168 | :colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' | ||
2169 | for the file "colors/{name}.vim. The first one that | ||
2170 | is found is loaded. | ||
2171 | ! To see the name of the currently active color scheme: > | ||
2172 | ! :colo | ||
2173 | ! < The name is also stored in the g:colors_name variable. | ||
2174 | ! Doesn't work recursively, thus you can't use | ||
2175 | ":colorscheme" in a color scheme script. | ||
2176 | After the color scheme has been loaded the | ||
2177 | |ColorScheme| autocommand event is triggered. | ||
2178 | *************** | ||
2179 | *** 4032,4038 **** | ||
2180 | colors. | ||
2181 | When a colorscheme is being used, changing 'background' causes it to | ||
2182 | be reloaded, which may reset all colors (including Normal). First | ||
2183 | ! delete the "colors_name" variable when you don't want this. | ||
2184 | |||
2185 | When you have set "ctermfg" or "ctermbg" for the Normal group, Vim | ||
2186 | needs to reset the color when exiting. This is done with the "op" | ||
2187 | --- 4081,4087 ---- | ||
2188 | colors. | ||
2189 | When a colorscheme is being used, changing 'background' causes it to | ||
2190 | be reloaded, which may reset all colors (including Normal). First | ||
2191 | ! delete the "g:colors_name" variable when you don't want this. | ||
2192 | |||
2193 | When you have set "ctermfg" or "ctermbg" for the Normal group, Vim | ||
2194 | needs to reset the color when exiting. This is done with the "op" | ||
2195 | *** ../vim-7.2.423/src/ex_cmds.h 2010-05-13 16:46:16.000000000 +0200 | ||
2196 | --- src/ex_cmds.h 2010-05-14 13:08:45.000000000 +0200 | ||
2197 | *************** | ||
2198 | *** 256,262 **** | ||
2199 | EX(CMD_colder, "colder", qf_age, | ||
2200 | RANGE|NOTADR|COUNT|TRLBAR), | ||
2201 | EX(CMD_colorscheme, "colorscheme", ex_colorscheme, | ||
2202 | ! NEEDARG|WORD1|TRLBAR|CMDWIN), | ||
2203 | EX(CMD_command, "command", ex_command, | ||
2204 | EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN), | ||
2205 | EX(CMD_comclear, "comclear", ex_comclear, | ||
2206 | --- 256,262 ---- | ||
2207 | EX(CMD_colder, "colder", qf_age, | ||
2208 | RANGE|NOTADR|COUNT|TRLBAR), | ||
2209 | EX(CMD_colorscheme, "colorscheme", ex_colorscheme, | ||
2210 | ! WORD1|TRLBAR|CMDWIN), | ||
2211 | EX(CMD_command, "command", ex_command, | ||
2212 | EXTRA|BANG|NOTRLCOM|USECTRLV|CMDWIN), | ||
2213 | EX(CMD_comclear, "comclear", ex_comclear, | ||
2214 | *** ../vim-7.2.423/src/ex_docmd.c 2010-03-02 15:55:51.000000000 +0100 | ||
2215 | --- src/ex_docmd.c 2010-05-14 15:26:14.000000000 +0200 | ||
2216 | *************** | ||
2217 | *** 6226,6232 **** | ||
2218 | ex_colorscheme(eap) | ||
2219 | exarg_T *eap; | ||
2220 | { | ||
2221 | ! if (load_colors(eap->arg) == FAIL) | ||
2222 | EMSG2(_("E185: Cannot find color scheme %s"), eap->arg); | ||
2223 | } | ||
2224 | |||
2225 | --- 6226,6256 ---- | ||
2226 | ex_colorscheme(eap) | ||
2227 | exarg_T *eap; | ||
2228 | { | ||
2229 | ! if (*eap->arg == NUL) | ||
2230 | ! { | ||
2231 | ! #ifdef FEAT_EVAL | ||
2232 | ! char_u *expr = vim_strsave((char_u *)"g:colors_name"); | ||
2233 | ! char_u *p = NULL; | ||
2234 | ! | ||
2235 | ! if (expr != NULL) | ||
2236 | ! { | ||
2237 | ! ++emsg_off; | ||
2238 | ! p = eval_to_string(expr, NULL, FALSE); | ||
2239 | ! --emsg_off; | ||
2240 | ! vim_free(expr); | ||
2241 | ! } | ||
2242 | ! if (p != NULL) | ||
2243 | ! { | ||
2244 | ! MSG(p); | ||
2245 | ! vim_free(p); | ||
2246 | ! } | ||
2247 | ! else | ||
2248 | ! MSG("default"); | ||
2249 | ! #else | ||
2250 | ! MSG(_("unknown")); | ||
2251 | ! #endif | ||
2252 | ! } | ||
2253 | ! else if (load_colors(eap->arg) == FAIL) | ||
2254 | EMSG2(_("E185: Cannot find color scheme %s"), eap->arg); | ||
2255 | } | ||
2256 | |||
2257 | *** ../vim-7.2.423/src/version.c 2010-05-14 12:16:19.000000000 +0200 | ||
2258 | --- src/version.c 2010-05-14 15:23:20.000000000 +0200 | ||
2259 | *************** | ||
2260 | *** 683,684 **** | ||
2261 | --- 683,686 ---- | ||
2262 | { /* Add new patch number below this line */ | ||
2263 | + /**/ | ||
2264 | + 424, | ||
2265 | /**/ | ||
2266 | |||
2267 | -- | ||
2268 | Everyone has a photographic memory. Some don't have film. | ||
2269 | |||
2270 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
2271 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
2272 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
2273 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
2274 | To: vim-dev@vim.org | ||
2275 | Subject: Patch 7.2.425 | ||
2276 | Fcc: outbox | ||
2277 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
2278 | Mime-Version: 1.0 | ||
2279 | Content-Type: text/plain; charset=UTF-8 | ||
2280 | Content-Transfer-Encoding: 8bit | ||
2281 | ------------ | ||
2282 | |||
2283 | Patch 7.2.425 | ||
2284 | Problem: Some compilers complain about fourth EX() argument. | ||
2285 | Solution: Add cast to long_u. | ||
2286 | Files: src/ex_cmds.h | ||
2287 | |||
2288 | |||
2289 | *** ../vim-7.2.424/src/ex_cmds.h 2010-05-14 15:28:37.000000000 +0200 | ||
2290 | --- src/ex_cmds.h 2010-05-14 13:08:45.000000000 +0200 | ||
2291 | *************** | ||
2292 | *** 74,80 **** | ||
2293 | # undef EX /* just in case */ | ||
2294 | #endif | ||
2295 | #ifdef DO_DECLARE_EXCMD | ||
2296 | ! # define EX(a, b, c, d) {(char_u *)b, c, d} | ||
2297 | |||
2298 | typedef void (*ex_func_T) __ARGS((exarg_T *eap)); | ||
2299 | |||
2300 | --- 74,80 ---- | ||
2301 | # undef EX /* just in case */ | ||
2302 | #endif | ||
2303 | #ifdef DO_DECLARE_EXCMD | ||
2304 | ! # define EX(a, b, c, d) {(char_u *)b, c, (long_u)(d)} | ||
2305 | |||
2306 | typedef void (*ex_func_T) __ARGS((exarg_T *eap)); | ||
2307 | |||
2308 | *** ../vim-7.2.424/src/version.c 2010-05-14 15:28:37.000000000 +0200 | ||
2309 | --- src/version.c 2010-05-14 15:42:23.000000000 +0200 | ||
2310 | *************** | ||
2311 | *** 683,684 **** | ||
2312 | --- 683,686 ---- | ||
2313 | { /* Add new patch number below this line */ | ||
2314 | + /**/ | ||
2315 | + 425, | ||
2316 | /**/ | ||
2317 | |||
2318 | -- | ||
2319 | The users that I support would double-click on a landmine to find out | ||
2320 | what happens. -- A system administrator | ||
2321 | |||
2322 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
2323 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
2324 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
2325 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
2326 | To: vim-dev@vim.org | ||
2327 | Subject: Patch 7.2.426 | ||
2328 | Fcc: outbox | ||
2329 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
2330 | Mime-Version: 1.0 | ||
2331 | Content-Type: text/plain; charset=UTF-8 | ||
2332 | Content-Transfer-Encoding: 8bit | ||
2333 | ------------ | ||
2334 | |||
2335 | Patch 7.2.426 | ||
2336 | Problem: Commas in 'langmap' are not always handled correctly. | ||
2337 | Solution: Require commas to be backslash escaped. (James Vega) | ||
2338 | Files: src/option.c | ||
2339 | |||
2340 | |||
2341 | *** ../vim-7.2.425/src/option.c 2010-05-13 13:12:01.000000000 +0200 | ||
2342 | --- src/option.c 2010-05-14 16:04:21.000000000 +0200 | ||
2343 | *************** | ||
2344 | *** 10432,10437 **** | ||
2345 | --- 10432,10442 ---- | ||
2346 | p2 = NULL; /* aAbBcCdD form, p2 is NULL */ | ||
2347 | while (p[0]) | ||
2348 | { | ||
2349 | + if (p[0] == ',') | ||
2350 | + { | ||
2351 | + ++p; | ||
2352 | + break; | ||
2353 | + } | ||
2354 | if (p[0] == '\\' && p[1] != NUL) | ||
2355 | ++p; | ||
2356 | #ifdef FEAT_MBYTE | ||
2357 | *************** | ||
2358 | *** 10439,10464 **** | ||
2359 | #else | ||
2360 | from = p[0]; | ||
2361 | #endif | ||
2362 | if (p2 == NULL) | ||
2363 | { | ||
2364 | mb_ptr_adv(p); | ||
2365 | ! if (p[0] == '\\') | ||
2366 | ! ++p; | ||
2367 | #ifdef FEAT_MBYTE | ||
2368 | ! to = (*mb_ptr2char)(p); | ||
2369 | #else | ||
2370 | ! to = p[0]; | ||
2371 | #endif | ||
2372 | } | ||
2373 | else | ||
2374 | { | ||
2375 | ! if (p2[0] == '\\') | ||
2376 | ! ++p2; | ||
2377 | #ifdef FEAT_MBYTE | ||
2378 | ! to = (*mb_ptr2char)(p2); | ||
2379 | #else | ||
2380 | ! to = p2[0]; | ||
2381 | #endif | ||
2382 | } | ||
2383 | if (to == NUL) | ||
2384 | { | ||
2385 | --- 10444,10476 ---- | ||
2386 | #else | ||
2387 | from = p[0]; | ||
2388 | #endif | ||
2389 | + to = NUL; | ||
2390 | if (p2 == NULL) | ||
2391 | { | ||
2392 | mb_ptr_adv(p); | ||
2393 | ! if (p[0] != ',') | ||
2394 | ! { | ||
2395 | ! if (p[0] == '\\') | ||
2396 | ! ++p; | ||
2397 | #ifdef FEAT_MBYTE | ||
2398 | ! to = (*mb_ptr2char)(p); | ||
2399 | #else | ||
2400 | ! to = p[0]; | ||
2401 | #endif | ||
2402 | + } | ||
2403 | } | ||
2404 | else | ||
2405 | { | ||
2406 | ! if (p2[0] != ',') | ||
2407 | ! { | ||
2408 | ! if (p2[0] == '\\') | ||
2409 | ! ++p2; | ||
2410 | #ifdef FEAT_MBYTE | ||
2411 | ! to = (*mb_ptr2char)(p2); | ||
2412 | #else | ||
2413 | ! to = p2[0]; | ||
2414 | #endif | ||
2415 | + } | ||
2416 | } | ||
2417 | if (to == NUL) | ||
2418 | { | ||
2419 | *************** | ||
2420 | *** 10476,10490 **** | ||
2421 | |||
2422 | /* Advance to next pair */ | ||
2423 | mb_ptr_adv(p); | ||
2424 | ! if (p2 == NULL) | ||
2425 | ! { | ||
2426 | ! if (p[0] == ',') | ||
2427 | ! { | ||
2428 | ! ++p; | ||
2429 | ! break; | ||
2430 | ! } | ||
2431 | ! } | ||
2432 | ! else | ||
2433 | { | ||
2434 | mb_ptr_adv(p2); | ||
2435 | if (*p == ';') | ||
2436 | --- 10488,10494 ---- | ||
2437 | |||
2438 | /* Advance to next pair */ | ||
2439 | mb_ptr_adv(p); | ||
2440 | ! if (p2 != NULL) | ||
2441 | { | ||
2442 | mb_ptr_adv(p2); | ||
2443 | if (*p == ';') | ||
2444 | *** ../vim-7.2.425/src/version.c 2010-05-14 15:42:49.000000000 +0200 | ||
2445 | --- src/version.c 2010-05-14 17:32:11.000000000 +0200 | ||
2446 | *************** | ||
2447 | *** 683,684 **** | ||
2448 | --- 683,686 ---- | ||
2449 | { /* Add new patch number below this line */ | ||
2450 | + /**/ | ||
2451 | + 426, | ||
2452 | /**/ | ||
2453 | |||
2454 | -- | ||
2455 | On the other hand, you have different fingers. | ||
2456 | -- Steven Wright | ||
2457 | |||
2458 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
2459 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
2460 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
2461 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
2462 | To: vim-dev@vim.org | ||
2463 | Subject: Patch 7.2.427 | ||
2464 | Fcc: outbox | ||
2465 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
2466 | Mime-Version: 1.0 | ||
2467 | Content-Type: text/plain; charset=UTF-8 | ||
2468 | Content-Transfer-Encoding: 8bit | ||
2469 | ------------ | ||
2470 | |||
2471 | Patch 7.2.427 | ||
2472 | Problem: The swapfile is created using the destination of a symlink, but | ||
2473 | recovery doesn't follow symlinks. | ||
2474 | Solution: When recovering, resolve symlinks. (James Vega) | ||
2475 | Files: src/memline.c | ||
2476 | |||
2477 | |||
2478 | *** ../vim-7.2.426/src/memline.c 2010-03-10 14:46:21.000000000 +0100 | ||
2479 | --- src/memline.c 2010-05-14 17:28:29.000000000 +0200 | ||
2480 | *************** | ||
2481 | *** 245,250 **** | ||
2482 | --- 245,253 ---- | ||
2483 | #ifdef FEAT_BYTEOFF | ||
2484 | static void ml_updatechunk __ARGS((buf_T *buf, long line, long len, int updtype)); | ||
2485 | #endif | ||
2486 | + #ifdef HAVE_READLINK | ||
2487 | + static int resolve_symlink __ARGS((char_u *fname, char_u *buf)); | ||
2488 | + #endif | ||
2489 | |||
2490 | /* | ||
2491 | * Open a new memline for "buf". | ||
2492 | *************** | ||
2493 | *** 1401,1410 **** | ||
2494 | int i; | ||
2495 | char_u *dirp; | ||
2496 | char_u *dir_name; | ||
2497 | |||
2498 | if (list) | ||
2499 | { | ||
2500 | ! /* use msg() to start the scrolling properly */ | ||
2501 | msg((char_u *)_("Swap files found:")); | ||
2502 | msg_putchar('\n'); | ||
2503 | } | ||
2504 | --- 1404,1422 ---- | ||
2505 | int i; | ||
2506 | char_u *dirp; | ||
2507 | char_u *dir_name; | ||
2508 | + char_u *fname_res = *fname; | ||
2509 | + #ifdef HAVE_READLINK | ||
2510 | + char_u fname_buf[MAXPATHL]; | ||
2511 | + | ||
2512 | + /* Expand symlink in the file name, because the swap file is created with | ||
2513 | + * the actual file instead of with the symlink. */ | ||
2514 | + if (resolve_symlink(*fname, fname_buf) == OK) | ||
2515 | + fname_res = fname_buf; | ||
2516 | + #endif | ||
2517 | |||
2518 | if (list) | ||
2519 | { | ||
2520 | ! /* use msg() to start the scrolling properly */ | ||
2521 | msg((char_u *)_("Swap files found:")); | ||
2522 | msg_putchar('\n'); | ||
2523 | } | ||
2524 | *************** | ||
2525 | *** 1453,1459 **** | ||
2526 | #endif | ||
2527 | } | ||
2528 | else | ||
2529 | ! num_names = recov_file_names(names, *fname, TRUE); | ||
2530 | } | ||
2531 | else /* check directory dir_name */ | ||
2532 | { | ||
2533 | --- 1465,1471 ---- | ||
2534 | #endif | ||
2535 | } | ||
2536 | else | ||
2537 | ! num_names = recov_file_names(names, fname_res, TRUE); | ||
2538 | } | ||
2539 | else /* check directory dir_name */ | ||
2540 | { | ||
2541 | *************** | ||
2542 | *** 1490,1501 **** | ||
2543 | if (after_pathsep(dir_name, p) && p[-1] == p[-2]) | ||
2544 | { | ||
2545 | /* Ends with '//', Use Full path for swap name */ | ||
2546 | ! tail = make_percent_swname(dir_name, *fname); | ||
2547 | } | ||
2548 | else | ||
2549 | #endif | ||
2550 | { | ||
2551 | ! tail = gettail(*fname); | ||
2552 | tail = concat_fnames(dir_name, tail, TRUE); | ||
2553 | } | ||
2554 | if (tail == NULL) | ||
2555 | --- 1502,1513 ---- | ||
2556 | if (after_pathsep(dir_name, p) && p[-1] == p[-2]) | ||
2557 | { | ||
2558 | /* Ends with '//', Use Full path for swap name */ | ||
2559 | ! tail = make_percent_swname(dir_name, fname_res); | ||
2560 | } | ||
2561 | else | ||
2562 | #endif | ||
2563 | { | ||
2564 | ! tail = gettail(fname_res); | ||
2565 | tail = concat_fnames(dir_name, tail, TRUE); | ||
2566 | } | ||
2567 | if (tail == NULL) | ||
2568 | *************** | ||
2569 | *** 1535,1545 **** | ||
2570 | struct stat st; | ||
2571 | char_u *swapname; | ||
2572 | |||
2573 | #if defined(VMS) || defined(RISCOS) | ||
2574 | ! swapname = modname(*fname, (char_u *)"_swp", FALSE); | ||
2575 | #else | ||
2576 | ! swapname = modname(*fname, (char_u *)".swp", TRUE); | ||
2577 | #endif | ||
2578 | if (swapname != NULL) | ||
2579 | { | ||
2580 | if (mch_stat((char *)swapname, &st) != -1) /* It exists! */ | ||
2581 | --- 1547,1559 ---- | ||
2582 | struct stat st; | ||
2583 | char_u *swapname; | ||
2584 | |||
2585 | + swapname = modname(fname_res, | ||
2586 | #if defined(VMS) || defined(RISCOS) | ||
2587 | ! (char_u *)"_swp", FALSE | ||
2588 | #else | ||
2589 | ! (char_u *)".swp", TRUE | ||
2590 | #endif | ||
2591 | + ); | ||
2592 | if (swapname != NULL) | ||
2593 | { | ||
2594 | if (mch_stat((char *)swapname, &st) != -1) /* It exists! */ | ||
2595 | *************** | ||
2596 | *** 3508,3515 **** | ||
2597 | } | ||
2598 | |||
2599 | #ifdef HAVE_READLINK | ||
2600 | - static int resolve_symlink __ARGS((char_u *fname, char_u *buf)); | ||
2601 | - | ||
2602 | /* | ||
2603 | * Resolve a symlink in the last component of a file name. | ||
2604 | * Note that f_resolve() does it for every part of the path, we don't do that | ||
2605 | --- 3522,3527 ---- | ||
2606 | *************** | ||
2607 | *** 3601,3609 **** | ||
2608 | char_u *dir_name; | ||
2609 | { | ||
2610 | char_u *r, *s; | ||
2611 | #ifdef HAVE_READLINK | ||
2612 | char_u fname_buf[MAXPATHL]; | ||
2613 | - char_u *fname_res; | ||
2614 | #endif | ||
2615 | |||
2616 | #if defined(UNIX) || defined(WIN3264) /* Need _very_ long file names */ | ||
2617 | --- 3613,3621 ---- | ||
2618 | char_u *dir_name; | ||
2619 | { | ||
2620 | char_u *r, *s; | ||
2621 | + char_u *fname_res = fname; | ||
2622 | #ifdef HAVE_READLINK | ||
2623 | char_u fname_buf[MAXPATHL]; | ||
2624 | #endif | ||
2625 | |||
2626 | #if defined(UNIX) || defined(WIN3264) /* Need _very_ long file names */ | ||
2627 | *************** | ||
2628 | *** 3625,3632 **** | ||
2629 | * actual file instead of with the symlink. */ | ||
2630 | if (resolve_symlink(fname, fname_buf) == OK) | ||
2631 | fname_res = fname_buf; | ||
2632 | - else | ||
2633 | - fname_res = fname; | ||
2634 | #endif | ||
2635 | |||
2636 | r = buf_modname( | ||
2637 | --- 3637,3642 ---- | ||
2638 | *************** | ||
2639 | *** 3639,3649 **** | ||
2640 | /* Avoid problems if fname has special chars, eg <Wimp$Scrap> */ | ||
2641 | ffname, | ||
2642 | #else | ||
2643 | - # ifdef HAVE_READLINK | ||
2644 | fname_res, | ||
2645 | - # else | ||
2646 | - fname, | ||
2647 | - # endif | ||
2648 | #endif | ||
2649 | (char_u *) | ||
2650 | #if defined(VMS) || defined(RISCOS) | ||
2651 | --- 3649,3655 ---- | ||
2652 | *** ../vim-7.2.426/src/version.c 2010-05-14 17:32:53.000000000 +0200 | ||
2653 | --- src/version.c 2010-05-14 17:50:43.000000000 +0200 | ||
2654 | *************** | ||
2655 | *** 683,684 **** | ||
2656 | --- 683,686 ---- | ||
2657 | { /* Add new patch number below this line */ | ||
2658 | + /**/ | ||
2659 | + 427, | ||
2660 | /**/ | ||
2661 | |||
2662 | -- | ||
2663 | Change is inevitable, except from a vending machine. | ||
2664 | |||
2665 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
2666 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
2667 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
2668 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
2669 | To: vim-dev@vim.org | ||
2670 | Subject: Patch 7.2.428 | ||
2671 | Fcc: outbox | ||
2672 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
2673 | Mime-Version: 1.0 | ||
2674 | Content-Type: text/plain; charset=UTF-8 | ||
2675 | Content-Transfer-Encoding: 8bit | ||
2676 | ------------ | ||
2677 | |||
2678 | Patch 7.2.428 | ||
2679 | Problem: Using setqflist([]) to clear the error list doesn't work properly. | ||
2680 | Solution: Set qf_nonevalid to TRUE when appropriate. (Christian Brabandt) | ||
2681 | Files: src/quickfix.c | ||
2682 | |||
2683 | |||
2684 | *** ../vim-7.2.427/src/quickfix.c 2010-01-19 14:59:14.000000000 +0100 | ||
2685 | --- src/quickfix.c 2010-05-14 18:06:27.000000000 +0200 | ||
2686 | *************** | ||
2687 | *** 3654,3660 **** | ||
2688 | } | ||
2689 | } | ||
2690 | |||
2691 | ! qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; | ||
2692 | qi->qf_lists[qi->qf_curlist].qf_ptr = qi->qf_lists[qi->qf_curlist].qf_start; | ||
2693 | qi->qf_lists[qi->qf_curlist].qf_index = 1; | ||
2694 | |||
2695 | --- 3654,3664 ---- | ||
2696 | } | ||
2697 | } | ||
2698 | |||
2699 | ! if (qi->qf_lists[qi->qf_curlist].qf_index == 0) | ||
2700 | ! /* empty list or no valid entry */ | ||
2701 | ! qi->qf_lists[qi->qf_curlist].qf_nonevalid = TRUE; | ||
2702 | ! else | ||
2703 | ! qi->qf_lists[qi->qf_curlist].qf_nonevalid = FALSE; | ||
2704 | qi->qf_lists[qi->qf_curlist].qf_ptr = qi->qf_lists[qi->qf_curlist].qf_start; | ||
2705 | qi->qf_lists[qi->qf_curlist].qf_index = 1; | ||
2706 | |||
2707 | *** ../vim-7.2.427/src/version.c 2010-05-14 17:52:35.000000000 +0200 | ||
2708 | --- src/version.c 2010-05-14 18:09:32.000000000 +0200 | ||
2709 | *************** | ||
2710 | *** 683,684 **** | ||
2711 | --- 683,686 ---- | ||
2712 | { /* Add new patch number below this line */ | ||
2713 | + /**/ | ||
2714 | + 428, | ||
2715 | /**/ | ||
2716 | |||
2717 | -- | ||
2718 | Seen it all, done it all, can't remember most of it. | ||
2719 | |||
2720 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
2721 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
2722 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
2723 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
2724 | To: vim-dev@vim.org | ||
2725 | Subject: Patch 7.2.429 | ||
2726 | Fcc: outbox | ||
2727 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
2728 | Mime-Version: 1.0 | ||
2729 | Content-Type: text/plain; charset=UTF-8 | ||
2730 | Content-Transfer-Encoding: 8bit | ||
2731 | ------------ | ||
2732 | |||
2733 | Patch 7.2.429 | ||
2734 | Problem: A file that exists but access is denied may result in a "new file" | ||
2735 | message. E.g. when its directory is unreadable. | ||
2736 | Solution: Specifically check for ENOENT to decide a file doesn't exist. | ||
2737 | (partly by James Vega) | ||
2738 | Files: src/fileio.c | ||
2739 | |||
2740 | |||
2741 | *** ../vim-7.2.428/src/fileio.c 2010-03-02 12:47:58.000000000 +0100 | ||
2742 | --- src/fileio.c 2010-05-14 18:30:09.000000000 +0200 | ||
2743 | *************** | ||
2744 | *** 595,601 **** | ||
2745 | #endif | ||
2746 | if (newfile) | ||
2747 | { | ||
2748 | ! if (perm < 0) | ||
2749 | { | ||
2750 | /* | ||
2751 | * Set the 'new-file' flag, so that when the file has | ||
2752 | --- 595,605 ---- | ||
2753 | #endif | ||
2754 | if (newfile) | ||
2755 | { | ||
2756 | ! if (perm < 0 | ||
2757 | ! #ifdef ENOENT | ||
2758 | ! && errno == ENOENT | ||
2759 | ! #endif | ||
2760 | ! ) | ||
2761 | { | ||
2762 | /* | ||
2763 | * Set the 'new-file' flag, so that when the file has | ||
2764 | *************** | ||
2765 | *** 664,669 **** | ||
2766 | --- 668,676 ---- | ||
2767 | # ifdef EFBIG | ||
2768 | (errno == EFBIG) ? _("[File too big]") : | ||
2769 | # endif | ||
2770 | + # ifdef EOVERFLOW | ||
2771 | + (errno == EOVERFLOW) ? _("[File too big]") : | ||
2772 | + # endif | ||
2773 | _("[Permission Denied]")), 0); | ||
2774 | curbuf->b_p_ro = TRUE; /* must use "w!" now */ | ||
2775 | } | ||
2776 | *** ../vim-7.2.428/src/version.c 2010-05-14 18:10:23.000000000 +0200 | ||
2777 | --- src/version.c 2010-05-14 18:55:11.000000000 +0200 | ||
2778 | *************** | ||
2779 | *** 683,684 **** | ||
2780 | --- 683,686 ---- | ||
2781 | { /* Add new patch number below this line */ | ||
2782 | + /**/ | ||
2783 | + 429, | ||
2784 | /**/ | ||
2785 | |||
2786 | -- | ||
2787 | Those who live by the sword get shot by those who don't. | ||
2788 | |||
2789 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
2790 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
2791 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
2792 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
2793 | To: vim-dev@vim.org | ||
2794 | Subject: Patch 7.2.430 | ||
2795 | Fcc: outbox | ||
2796 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
2797 | Mime-Version: 1.0 | ||
2798 | Content-Type: text/plain; charset=UTF-8 | ||
2799 | Content-Transfer-Encoding: 8bit | ||
2800 | ------------ | ||
2801 | |||
2802 | Patch 7.2.430 | ||
2803 | Problem: The ++bad argument is handled wrong, resulting in an invalid | ||
2804 | memory access. | ||
2805 | Solution: Use the bad_char field only for the replacement character, add | ||
2806 | bad_char_idx to store the position. (Dominique Pelle) | ||
2807 | Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c | ||
2808 | |||
2809 | |||
2810 | *** ../vim-7.2.429/src/eval.c 2010-05-14 12:16:19.000000000 +0200 | ||
2811 | --- src/eval.c 2010-05-14 19:04:53.000000000 +0200 | ||
2812 | *************** | ||
2813 | *** 18309,18316 **** | ||
2814 | # ifdef FEAT_MBYTE | ||
2815 | if (eap->force_enc != 0) | ||
2816 | len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7; | ||
2817 | ! if (eap->bad_char != 0) | ||
2818 | ! len += (unsigned)STRLEN(eap->cmd + eap->bad_char) + 7; | ||
2819 | # endif | ||
2820 | |||
2821 | newval = alloc(len + 1); | ||
2822 | --- 18309,18316 ---- | ||
2823 | # ifdef FEAT_MBYTE | ||
2824 | if (eap->force_enc != 0) | ||
2825 | len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7; | ||
2826 | ! if (eap->bad_char_idx != 0) | ||
2827 | ! len += (unsigned)STRLEN(eap->cmd + eap->bad_char_idx) + 7; | ||
2828 | # endif | ||
2829 | |||
2830 | newval = alloc(len + 1); | ||
2831 | *************** | ||
2832 | *** 18334,18342 **** | ||
2833 | if (eap->force_enc != 0) | ||
2834 | sprintf((char *)newval + STRLEN(newval), " ++enc=%s", | ||
2835 | eap->cmd + eap->force_enc); | ||
2836 | ! if (eap->bad_char != 0) | ||
2837 | sprintf((char *)newval + STRLEN(newval), " ++bad=%s", | ||
2838 | ! eap->cmd + eap->bad_char); | ||
2839 | # endif | ||
2840 | vimvars[VV_CMDARG].vv_str = newval; | ||
2841 | return oldval; | ||
2842 | --- 18334,18342 ---- | ||
2843 | if (eap->force_enc != 0) | ||
2844 | sprintf((char *)newval + STRLEN(newval), " ++enc=%s", | ||
2845 | eap->cmd + eap->force_enc); | ||
2846 | ! if (eap->bad_char_idx != 0) | ||
2847 | sprintf((char *)newval + STRLEN(newval), " ++bad=%s", | ||
2848 | ! eap->cmd + eap->bad_char_idx); | ||
2849 | # endif | ||
2850 | vimvars[VV_CMDARG].vv_str = newval; | ||
2851 | return oldval; | ||
2852 | *** ../vim-7.2.429/src/ex_cmds.h 2010-05-14 15:42:49.000000000 +0200 | ||
2853 | --- src/ex_cmds.h 2010-05-14 20:23:20.000000000 +0200 | ||
2854 | *************** | ||
2855 | *** 1152,1158 **** | ||
2856 | int force_ff; /* ++ff= argument (index in cmd[]) */ | ||
2857 | #ifdef FEAT_MBYTE | ||
2858 | int force_enc; /* ++enc= argument (index in cmd[]) */ | ||
2859 | ! int bad_char; /* ++bad= argument (index in cmd[]) */ | ||
2860 | #endif | ||
2861 | #ifdef FEAT_USR_CMDS | ||
2862 | int useridx; /* user command index */ | ||
2863 | --- 1152,1159 ---- | ||
2864 | int force_ff; /* ++ff= argument (index in cmd[]) */ | ||
2865 | #ifdef FEAT_MBYTE | ||
2866 | int force_enc; /* ++enc= argument (index in cmd[]) */ | ||
2867 | ! int bad_char_idx; /* ++bad= argument (index in cmd[]) */ | ||
2868 | ! int bad_char; /* BAD_KEEP, BAD_DROP or replacement char */ | ||
2869 | #endif | ||
2870 | #ifdef FEAT_USR_CMDS | ||
2871 | int useridx; /* user command index */ | ||
2872 | *** ../vim-7.2.429/src/ex_docmd.c 2010-05-14 15:28:37.000000000 +0200 | ||
2873 | --- src/ex_docmd.c 2010-05-14 19:04:53.000000000 +0200 | ||
2874 | *************** | ||
2875 | *** 4739,4745 **** | ||
2876 | else if (STRNCMP(arg, "bad", 3) == 0) | ||
2877 | { | ||
2878 | arg += 3; | ||
2879 | ! pp = &eap->bad_char; | ||
2880 | } | ||
2881 | #endif | ||
2882 | |||
2883 | --- 4739,4745 ---- | ||
2884 | else if (STRNCMP(arg, "bad", 3) == 0) | ||
2885 | { | ||
2886 | arg += 3; | ||
2887 | ! pp = &eap->bad_char_idx; | ||
2888 | } | ||
2889 | #endif | ||
2890 | |||
2891 | *************** | ||
2892 | *** 4770,4776 **** | ||
2893 | { | ||
2894 | /* Check ++bad= argument. Must be a single-byte character, "keep" or | ||
2895 | * "drop". */ | ||
2896 | ! p = eap->cmd + eap->bad_char; | ||
2897 | if (STRICMP(p, "keep") == 0) | ||
2898 | eap->bad_char = BAD_KEEP; | ||
2899 | else if (STRICMP(p, "drop") == 0) | ||
2900 | --- 4770,4776 ---- | ||
2901 | { | ||
2902 | /* Check ++bad= argument. Must be a single-byte character, "keep" or | ||
2903 | * "drop". */ | ||
2904 | ! p = eap->cmd + eap->bad_char_idx; | ||
2905 | if (STRICMP(p, "keep") == 0) | ||
2906 | eap->bad_char = BAD_KEEP; | ||
2907 | else if (STRICMP(p, "drop") == 0) | ||
2908 | *** ../vim-7.2.429/src/version.c 2010-05-14 18:56:33.000000000 +0200 | ||
2909 | --- src/version.c 2010-05-14 20:39:38.000000000 +0200 | ||
2910 | *************** | ||
2911 | *** 683,684 **** | ||
2912 | --- 683,686 ---- | ||
2913 | { /* Add new patch number below this line */ | ||
2914 | + /**/ | ||
2915 | + 430, | ||
2916 | /**/ | ||
2917 | |||
2918 | -- | ||
2919 | You have the right to remain silent. Anything you say will be | ||
2920 | misquoted, then used against you. | ||
2921 | |||
2922 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
2923 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
2924 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
2925 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
2926 | To: vim-dev@vim.org | ||
2927 | Subject: Patch 7.2.431 | ||
2928 | Fcc: outbox | ||
2929 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
2930 | Mime-Version: 1.0 | ||
2931 | Content-Type: text/plain; charset=UTF-8 | ||
2932 | Content-Transfer-Encoding: 8bit | ||
2933 | ------------ | ||
2934 | |||
2935 | Patch 7.2.431 | ||
2936 | Problem: ":amenu" moves the cursor when in Insert mode. | ||
2937 | Solution: Use CTRL-\ CTRL-O instead of CTRL-O. (Christian Brabandt) | ||
2938 | Files: src/menu.c | ||
2939 | |||
2940 | |||
2941 | *** ../vim-7.2.430/src/menu.c 2009-05-17 13:30:58.000000000 +0200 | ||
2942 | --- src/menu.c 2010-05-14 21:18:00.000000000 +0200 | ||
2943 | *************** | ||
2944 | *** 490,495 **** | ||
2945 | --- 490,496 ---- | ||
2946 | char_u *next_name; | ||
2947 | int i; | ||
2948 | int c; | ||
2949 | + int d; | ||
2950 | #ifdef FEAT_GUI | ||
2951 | int idx; | ||
2952 | int new_idx; | ||
2953 | *************** | ||
2954 | *** 746,751 **** | ||
2955 | --- 747,753 ---- | ||
2956 | * Don't do this if adding a tearbar (addtearoff == FALSE). | ||
2957 | * Don't do this for "<Nop>". */ | ||
2958 | c = 0; | ||
2959 | + d = 0; | ||
2960 | if (amenu && call_data != NULL && *call_data != NUL | ||
2961 | #ifdef FEAT_GUI_W32 | ||
2962 | && addtearoff | ||
2963 | *************** | ||
2964 | *** 761,778 **** | ||
2965 | c = Ctrl_C; | ||
2966 | break; | ||
2967 | case MENU_INSERT_MODE: | ||
2968 | ! c = Ctrl_O; | ||
2969 | break; | ||
2970 | } | ||
2971 | } | ||
2972 | |||
2973 | ! if (c) | ||
2974 | { | ||
2975 | ! menu->strings[i] = alloc((unsigned)(STRLEN(call_data) + 4)); | ||
2976 | if (menu->strings[i] != NULL) | ||
2977 | { | ||
2978 | menu->strings[i][0] = c; | ||
2979 | ! STRCPY(menu->strings[i] + 1, call_data); | ||
2980 | if (c == Ctrl_C) | ||
2981 | { | ||
2982 | int len = (int)STRLEN(menu->strings[i]); | ||
2983 | --- 763,787 ---- | ||
2984 | c = Ctrl_C; | ||
2985 | break; | ||
2986 | case MENU_INSERT_MODE: | ||
2987 | ! c = Ctrl_BSL; | ||
2988 | ! d = Ctrl_O; | ||
2989 | break; | ||
2990 | } | ||
2991 | } | ||
2992 | |||
2993 | ! if (c != 0) | ||
2994 | { | ||
2995 | ! menu->strings[i] = alloc((unsigned)(STRLEN(call_data) + 5 )); | ||
2996 | if (menu->strings[i] != NULL) | ||
2997 | { | ||
2998 | menu->strings[i][0] = c; | ||
2999 | ! if (d == 0) | ||
3000 | ! STRCPY(menu->strings[i] + 1, call_data); | ||
3001 | ! else | ||
3002 | ! { | ||
3003 | ! menu->strings[i][1] = d; | ||
3004 | ! STRCPY(menu->strings[i] + 2, call_data); | ||
3005 | ! } | ||
3006 | if (c == Ctrl_C) | ||
3007 | { | ||
3008 | int len = (int)STRLEN(menu->strings[i]); | ||
3009 | *** ../vim-7.2.430/src/version.c 2010-05-14 20:41:00.000000000 +0200 | ||
3010 | --- src/version.c 2010-05-14 21:11:40.000000000 +0200 | ||
3011 | *************** | ||
3012 | *** 683,684 **** | ||
3013 | --- 683,686 ---- | ||
3014 | { /* Add new patch number below this line */ | ||
3015 | + /**/ | ||
3016 | + 431, | ||
3017 | /**/ | ||
3018 | |||
3019 | -- | ||
3020 | Despite the cost of living, have you noticed how it remains so popular? | ||
3021 | |||
3022 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
3023 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
3024 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
3025 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
3026 | To: vim-dev@vim.org | ||
3027 | Subject: Patch 7.2.432 | ||
3028 | Fcc: outbox | ||
3029 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
3030 | Mime-Version: 1.0 | ||
3031 | Content-Type: text/plain; charset=UTF-8 | ||
3032 | Content-Transfer-Encoding: 8bit | ||
3033 | ------------ | ||
3034 | |||
3035 | Patch 7.2.432 | ||
3036 | Problem: When menus are translated they can only be found by the translated | ||
3037 | name. That makes ":emenu" difficult to use. | ||
3038 | Solution: Store the untranslated name and use it for completion and :emenu. | ||
3039 | (Edward L. Fox / Liang Peng / Bezetek James) | ||
3040 | Files: src/menu.c, src/structs.h | ||
3041 | |||
3042 | |||
3043 | *** ../vim-7.2.431/src/menu.c 2010-05-14 21:19:16.000000000 +0200 | ||
3044 | --- src/menu.c 2010-05-14 21:52:58.000000000 +0200 | ||
3045 | *************** | ||
3046 | *** 58,63 **** | ||
3047 | --- 58,66 ---- | ||
3048 | static char_u *menutrans_lookup __ARGS((char_u *name, int len)); | ||
3049 | #endif | ||
3050 | |||
3051 | + static char_u *menu_translate_tab_and_shift __ARGS((char_u *arg_start)); | ||
3052 | + static void menu_unescape_name __ARGS((char_u *p)); | ||
3053 | + | ||
3054 | /* The character for each menu mode */ | ||
3055 | static char_u menu_mode_chars[] = {'n', 'v', 's', 'o', 'i', 'c', 't'}; | ||
3056 | |||
3057 | *************** | ||
3058 | *** 106,115 **** | ||
3059 | int pri_tab[MENUDEPTH + 1]; | ||
3060 | int enable = MAYBE; /* TRUE for "menu enable", FALSE for "menu | ||
3061 | * disable */ | ||
3062 | - #ifdef FEAT_MULTI_LANG | ||
3063 | - char_u *tofree = NULL; | ||
3064 | - char_u *new_cmd; | ||
3065 | - #endif | ||
3066 | #ifdef FEAT_TOOLBAR | ||
3067 | char_u *icon = NULL; | ||
3068 | #endif | ||
3069 | --- 109,114 ---- | ||
3070 | *************** | ||
3071 | *** 251,291 **** | ||
3072 | } | ||
3073 | #endif | ||
3074 | |||
3075 | - #ifdef FEAT_MULTI_LANG | ||
3076 | - /* | ||
3077 | - * Translate menu names as specified with ":menutrans" commands. | ||
3078 | - */ | ||
3079 | - menu_path = arg; | ||
3080 | - while (*menu_path) | ||
3081 | - { | ||
3082 | - /* find the end of one part and check if it should be translated */ | ||
3083 | - p = menu_skip_part(menu_path); | ||
3084 | - map_to = menutrans_lookup(menu_path, (int)(p - menu_path)); | ||
3085 | - if (map_to != NULL) | ||
3086 | - { | ||
3087 | - /* found a match: replace with the translated part */ | ||
3088 | - i = (int)STRLEN(map_to); | ||
3089 | - new_cmd = alloc((unsigned)STRLEN(arg) + i + 1); | ||
3090 | - if (new_cmd == NULL) | ||
3091 | - break; | ||
3092 | - mch_memmove(new_cmd, arg, menu_path - arg); | ||
3093 | - mch_memmove(new_cmd + (menu_path - arg), map_to, (size_t)i); | ||
3094 | - STRCPY(new_cmd + (menu_path - arg) + i, p); | ||
3095 | - p = new_cmd + (menu_path - arg) + i; | ||
3096 | - vim_free(tofree); | ||
3097 | - tofree = new_cmd; | ||
3098 | - arg = new_cmd; | ||
3099 | - } | ||
3100 | - if (*p != '.') | ||
3101 | - break; | ||
3102 | - menu_path = p + 1; | ||
3103 | - } | ||
3104 | - #endif | ||
3105 | - | ||
3106 | - /* | ||
3107 | - * Isolate the menu name. | ||
3108 | - * Skip the menu name, and translate <Tab> into a real TAB. | ||
3109 | - */ | ||
3110 | menu_path = arg; | ||
3111 | if (*menu_path == '.') | ||
3112 | { | ||
3113 | --- 250,255 ---- | ||
3114 | *************** | ||
3115 | *** 293,313 **** | ||
3116 | goto theend; | ||
3117 | } | ||
3118 | |||
3119 | ! while (*arg && !vim_iswhite(*arg)) | ||
3120 | ! { | ||
3121 | ! if ((*arg == '\\' || *arg == Ctrl_V) && arg[1] != NUL) | ||
3122 | ! arg++; | ||
3123 | ! else if (STRNICMP(arg, "<TAB>", 5) == 0) | ||
3124 | ! { | ||
3125 | ! *arg = TAB; | ||
3126 | ! STRMOVE(arg + 1, arg + 5); | ||
3127 | ! } | ||
3128 | ! arg++; | ||
3129 | ! } | ||
3130 | ! if (*arg != NUL) | ||
3131 | ! *arg++ = NUL; | ||
3132 | ! arg = skipwhite(arg); | ||
3133 | ! map_to = arg; | ||
3134 | |||
3135 | /* | ||
3136 | * If there is only a menu name, display menus with that name. | ||
3137 | --- 257,263 ---- | ||
3138 | goto theend; | ||
3139 | } | ||
3140 | |||
3141 | ! map_to = menu_translate_tab_and_shift(arg); | ||
3142 | |||
3143 | /* | ||
3144 | * If there is only a menu name, display menus with that name. | ||
3145 | *************** | ||
3146 | *** 453,463 **** | ||
3147 | #endif | ||
3148 | |||
3149 | theend: | ||
3150 | - #ifdef FEAT_MULTI_LANG | ||
3151 | - vim_free(tofree); | ||
3152 | - #else | ||
3153 | ; | ||
3154 | - #endif | ||
3155 | } | ||
3156 | |||
3157 | /* | ||
3158 | --- 403,409 ---- | ||
3159 | *************** | ||
3160 | *** 498,503 **** | ||
3161 | --- 444,453 ---- | ||
3162 | int pri_idx = 0; | ||
3163 | int old_modes = 0; | ||
3164 | int amenu; | ||
3165 | + #ifdef FEAT_MULTI_LANG | ||
3166 | + char_u *en_name; | ||
3167 | + char_u *map_to = NULL; | ||
3168 | + #endif | ||
3169 | |||
3170 | /* Make a copy so we can stuff around with it, since it could be const */ | ||
3171 | path_name = vim_strsave(menu_path); | ||
3172 | *************** | ||
3173 | *** 511,516 **** | ||
3174 | --- 461,476 ---- | ||
3175 | /* Get name of this element in the menu hierarchy, and the simplified | ||
3176 | * name (without mnemonic and accelerator text). */ | ||
3177 | next_name = menu_name_skip(name); | ||
3178 | + #ifdef FEAT_MULTI_LANG | ||
3179 | + map_to = menutrans_lookup(name,STRLEN(name)); | ||
3180 | + if (map_to != NULL) | ||
3181 | + { | ||
3182 | + en_name = name; | ||
3183 | + name = map_to; | ||
3184 | + } | ||
3185 | + else | ||
3186 | + en_name = NULL; | ||
3187 | + #endif | ||
3188 | dname = menu_text(name, NULL, NULL); | ||
3189 | if (dname == NULL) | ||
3190 | goto erret; | ||
3191 | *************** | ||
3192 | *** 594,599 **** | ||
3193 | --- 554,571 ---- | ||
3194 | menu->name = vim_strsave(name); | ||
3195 | /* separate mnemonic and accelerator text from actual menu name */ | ||
3196 | menu->dname = menu_text(name, &menu->mnemonic, &menu->actext); | ||
3197 | + #ifdef FEAT_MULTI_LANG | ||
3198 | + if (en_name != NULL) | ||
3199 | + { | ||
3200 | + menu->en_name = vim_strsave(en_name); | ||
3201 | + menu->en_dname = menu_text(en_name, NULL, NULL); | ||
3202 | + } | ||
3203 | + else | ||
3204 | + { | ||
3205 | + menu->en_name = NULL; | ||
3206 | + menu->en_dname = NULL; | ||
3207 | + } | ||
3208 | + #endif | ||
3209 | menu->priority = pri_tab[pri_idx]; | ||
3210 | menu->parent = parent; | ||
3211 | #ifdef FEAT_GUI_MOTIF | ||
3212 | *************** | ||
3213 | *** 1040,1045 **** | ||
3214 | --- 1012,1021 ---- | ||
3215 | *menup = menu->next; | ||
3216 | vim_free(menu->name); | ||
3217 | vim_free(menu->dname); | ||
3218 | + #ifdef FEAT_MULTI_LANG | ||
3219 | + vim_free(menu->en_name); | ||
3220 | + vim_free(menu->en_dname); | ||
3221 | + #endif | ||
3222 | vim_free(menu->actext); | ||
3223 | #ifdef FEAT_TOOLBAR | ||
3224 | vim_free(menu->iconfile); | ||
3225 | *************** | ||
3226 | *** 1357,1365 **** | ||
3227 | --- 1333,1347 ---- | ||
3228 | { | ||
3229 | static vimmenu_T *menu = NULL; | ||
3230 | char_u *str; | ||
3231 | + #ifdef FEAT_MULTI_LANG | ||
3232 | + static int should_advance = FALSE; | ||
3233 | + #endif | ||
3234 | |||
3235 | if (idx == 0) /* first call: start at first item */ | ||
3236 | + { | ||
3237 | menu = expand_menu; | ||
3238 | + should_advance = FALSE; | ||
3239 | + } | ||
3240 | |||
3241 | /* Skip PopUp[nvoci]. */ | ||
3242 | while (menu != NULL && (menu_is_hidden(menu->dname) | ||
3243 | *************** | ||
3244 | *** 1372,1383 **** | ||
3245 | return NULL; | ||
3246 | |||
3247 | if (menu->modes & expand_modes) | ||
3248 | ! str = menu->dname; | ||
3249 | else | ||
3250 | str = (char_u *)""; | ||
3251 | |||
3252 | ! /* Advance to next menu entry. */ | ||
3253 | ! menu = menu->next; | ||
3254 | |||
3255 | return str; | ||
3256 | } | ||
3257 | --- 1354,1383 ---- | ||
3258 | return NULL; | ||
3259 | |||
3260 | if (menu->modes & expand_modes) | ||
3261 | ! #ifdef FEAT_MULTI_LANG | ||
3262 | ! if (should_advance) | ||
3263 | ! str = menu->en_dname; | ||
3264 | ! else | ||
3265 | ! { | ||
3266 | ! #endif | ||
3267 | ! str = menu->dname; | ||
3268 | ! #ifdef FEAT_MULTI_LANG | ||
3269 | ! if (menu->en_dname == NULL) | ||
3270 | ! should_advance = TRUE; | ||
3271 | ! } | ||
3272 | ! #endif | ||
3273 | else | ||
3274 | str = (char_u *)""; | ||
3275 | |||
3276 | ! #ifdef FEAT_MULTI_LANG | ||
3277 | ! if (should_advance) | ||
3278 | ! #endif | ||
3279 | ! /* Advance to next menu entry. */ | ||
3280 | ! menu = menu->next; | ||
3281 | ! | ||
3282 | ! #ifdef FEAT_MULTI_LANG | ||
3283 | ! should_advance = !should_advance; | ||
3284 | ! #endif | ||
3285 | |||
3286 | return str; | ||
3287 | } | ||
3288 | *************** | ||
3289 | *** 1394,1402 **** | ||
3290 | --- 1394,1408 ---- | ||
3291 | static vimmenu_T *menu = NULL; | ||
3292 | static char_u tbuffer[256]; /*hack*/ | ||
3293 | char_u *str; | ||
3294 | + #ifdef FEAT_MULTI_LANG | ||
3295 | + static int should_advance = FALSE; | ||
3296 | + #endif | ||
3297 | |||
3298 | if (idx == 0) /* first call: start at first item */ | ||
3299 | + { | ||
3300 | menu = expand_menu; | ||
3301 | + should_advance = FALSE; | ||
3302 | + } | ||
3303 | |||
3304 | /* Skip Browse-style entries, popup menus and separators. */ | ||
3305 | while (menu != NULL | ||
3306 | *************** | ||
3307 | *** 1416,1435 **** | ||
3308 | { | ||
3309 | if (menu->children != NULL) | ||
3310 | { | ||
3311 | ! STRCPY(tbuffer, menu->dname); | ||
3312 | /* hack on menu separators: use a 'magic' char for the separator | ||
3313 | * so that '.' in names gets escaped properly */ | ||
3314 | STRCAT(tbuffer, "\001"); | ||
3315 | str = tbuffer; | ||
3316 | } | ||
3317 | else | ||
3318 | ! str = menu->dname; | ||
3319 | } | ||
3320 | else | ||
3321 | str = (char_u *)""; | ||
3322 | |||
3323 | ! /* Advance to next menu entry. */ | ||
3324 | ! menu = menu->next; | ||
3325 | |||
3326 | return str; | ||
3327 | } | ||
3328 | --- 1422,1472 ---- | ||
3329 | { | ||
3330 | if (menu->children != NULL) | ||
3331 | { | ||
3332 | ! #ifdef FEAT_MULTI_LANG | ||
3333 | ! if (should_advance) | ||
3334 | ! STRCPY(tbuffer, menu->en_dname); | ||
3335 | ! else | ||
3336 | ! { | ||
3337 | ! #endif | ||
3338 | ! STRCPY(tbuffer, menu->dname); | ||
3339 | ! #ifdef FEAT_MULTI_LANG | ||
3340 | ! if (menu->en_dname == NULL) | ||
3341 | ! should_advance = TRUE; | ||
3342 | ! } | ||
3343 | ! #endif | ||
3344 | /* hack on menu separators: use a 'magic' char for the separator | ||
3345 | * so that '.' in names gets escaped properly */ | ||
3346 | STRCAT(tbuffer, "\001"); | ||
3347 | str = tbuffer; | ||
3348 | } | ||
3349 | else | ||
3350 | ! #ifdef FEAT_MULTI_LANG | ||
3351 | ! { | ||
3352 | ! if (should_advance) | ||
3353 | ! str = menu->en_dname; | ||
3354 | ! else | ||
3355 | ! { | ||
3356 | ! #endif | ||
3357 | ! str = menu->dname; | ||
3358 | ! #ifdef FEAT_MULTI_LANG | ||
3359 | ! if (menu->en_dname == NULL) | ||
3360 | ! should_advance = TRUE; | ||
3361 | ! } | ||
3362 | ! } | ||
3363 | ! #endif | ||
3364 | } | ||
3365 | else | ||
3366 | str = (char_u *)""; | ||
3367 | |||
3368 | ! #ifdef FEAT_MULTI_LANG | ||
3369 | ! if (should_advance) | ||
3370 | ! #endif | ||
3371 | ! /* Advance to next menu entry. */ | ||
3372 | ! menu = menu->next; | ||
3373 | ! | ||
3374 | ! #ifdef FEAT_MULTI_LANG | ||
3375 | ! should_advance = !should_advance; | ||
3376 | ! #endif | ||
3377 | |||
3378 | return str; | ||
3379 | } | ||
3380 | *************** | ||
3381 | *** 1469,1475 **** | ||
3382 | char_u *name; | ||
3383 | vimmenu_T *menu; | ||
3384 | { | ||
3385 | ! return (menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname)); | ||
3386 | } | ||
3387 | |||
3388 | static int | ||
3389 | --- 1506,1516 ---- | ||
3390 | char_u *name; | ||
3391 | vimmenu_T *menu; | ||
3392 | { | ||
3393 | ! if (menu->en_name != NULL | ||
3394 | ! && (menu_namecmp(name,menu->en_name) | ||
3395 | ! || menu_namecmp(name,menu->en_dname))) | ||
3396 | ! return TRUE; | ||
3397 | ! return menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname); | ||
3398 | } | ||
3399 | |||
3400 | static int | ||
3401 | *************** | ||
3402 | *** 2402,2407 **** | ||
3403 | --- 2443,2452 ---- | ||
3404 | to = vim_strnsave(to, (int)(arg - to)); | ||
3405 | if (from_noamp != NULL && to != NULL) | ||
3406 | { | ||
3407 | + menu_translate_tab_and_shift(from); | ||
3408 | + menu_translate_tab_and_shift(to); | ||
3409 | + menu_unescape_name(from); | ||
3410 | + menu_unescape_name(to); | ||
3411 | tp[menutrans_ga.ga_len].from = from; | ||
3412 | tp[menutrans_ga.ga_len].from_noamp = from_noamp; | ||
3413 | tp[menutrans_ga.ga_len].to = to; | ||
3414 | *************** | ||
3415 | *** 2476,2479 **** | ||
3416 | --- 2521,2566 ---- | ||
3417 | } | ||
3418 | #endif /* FEAT_MULTI_LANG */ | ||
3419 | |||
3420 | + /* | ||
3421 | + * Unescape the name in the translate dictionary table. | ||
3422 | + */ | ||
3423 | + static void | ||
3424 | + menu_unescape_name(name) | ||
3425 | + char_u *name; | ||
3426 | + { | ||
3427 | + char_u *p; | ||
3428 | + | ||
3429 | + for (p = name; *p && *p != '.'; mb_ptr_adv(p)) | ||
3430 | + if (*p == '\\') | ||
3431 | + STRMOVE(p, p + 1); | ||
3432 | + } | ||
3433 | + | ||
3434 | + /* | ||
3435 | + * Isolate the menu name. | ||
3436 | + * Skip the menu name, and translate <Tab> into a real TAB. | ||
3437 | + */ | ||
3438 | + static char_u * | ||
3439 | + menu_translate_tab_and_shift(arg_start) | ||
3440 | + char_u *arg_start; | ||
3441 | + { | ||
3442 | + char_u *arg = arg_start; | ||
3443 | + | ||
3444 | + while (*arg && !vim_iswhite(*arg)) | ||
3445 | + { | ||
3446 | + if ((*arg == '\\' || *arg == Ctrl_V) && arg[1] != NUL) | ||
3447 | + arg++; | ||
3448 | + else if (STRNICMP(arg, "<TAB>", 5) == 0) | ||
3449 | + { | ||
3450 | + *arg = TAB; | ||
3451 | + STRMOVE(arg + 1, arg + 5); | ||
3452 | + } | ||
3453 | + arg++; | ||
3454 | + } | ||
3455 | + if (*arg != NUL) | ||
3456 | + *arg++ = NUL; | ||
3457 | + arg = skipwhite(arg); | ||
3458 | + | ||
3459 | + return arg; | ||
3460 | + } | ||
3461 | + | ||
3462 | #endif /* FEAT_MENU */ | ||
3463 | *** ../vim-7.2.431/src/structs.h 2009-09-18 17:24:54.000000000 +0200 | ||
3464 | --- src/structs.h 2010-05-14 22:21:50.000000000 +0200 | ||
3465 | *************** | ||
3466 | *** 232,238 **** | ||
3467 | { | ||
3468 | wininfo_T *wi_next; /* next entry or NULL for last entry */ | ||
3469 | wininfo_T *wi_prev; /* previous entry or NULL for first entry */ | ||
3470 | ! win_T *wi_win; /* pointer to window that did set wi_lnum */ | ||
3471 | pos_T wi_fpos; /* last cursor position in the file */ | ||
3472 | int wi_optset; /* TRUE when wi_opt has useful values */ | ||
3473 | winopt_T wi_opt; /* local window options */ | ||
3474 | --- 232,238 ---- | ||
3475 | { | ||
3476 | wininfo_T *wi_next; /* next entry or NULL for last entry */ | ||
3477 | wininfo_T *wi_prev; /* previous entry or NULL for first entry */ | ||
3478 | ! win_T *wi_win; /* pointer to window that did set wi_fpos */ | ||
3479 | pos_T wi_fpos; /* last cursor position in the file */ | ||
3480 | int wi_optset; /* TRUE when wi_opt has useful values */ | ||
3481 | winopt_T wi_opt; /* local window options */ | ||
3482 | *************** | ||
3483 | *** 2207,2214 **** | ||
3484 | { | ||
3485 | int modes; /* Which modes is this menu visible for? */ | ||
3486 | int enabled; /* for which modes the menu is enabled */ | ||
3487 | ! char_u *name; /* Name of menu */ | ||
3488 | ! char_u *dname; /* Displayed Name (without '&') */ | ||
3489 | int mnemonic; /* mnemonic key (after '&') */ | ||
3490 | char_u *actext; /* accelerator text (after TAB) */ | ||
3491 | int priority; /* Menu order priority */ | ||
3492 | --- 2207,2220 ---- | ||
3493 | { | ||
3494 | int modes; /* Which modes is this menu visible for? */ | ||
3495 | int enabled; /* for which modes the menu is enabled */ | ||
3496 | ! char_u *name; /* Name of menu, possibly translated */ | ||
3497 | ! char_u *dname; /* Displayed Name ("name" without '&') */ | ||
3498 | ! #ifdef FEAT_MULTI_LANG | ||
3499 | ! char_u *en_name; /* "name" untranslated, NULL when "name" | ||
3500 | ! * was not translated */ | ||
3501 | ! char_u *en_dname; /* "dname" untranslated, NULL when "dname" | ||
3502 | ! * was not translated */ | ||
3503 | ! #endif | ||
3504 | int mnemonic; /* mnemonic key (after '&') */ | ||
3505 | char_u *actext; /* accelerator text (after TAB) */ | ||
3506 | int priority; /* Menu order priority */ | ||
3507 | *** ../vim-7.2.431/src/version.c 2010-05-14 21:19:16.000000000 +0200 | ||
3508 | --- src/version.c 2010-05-14 22:19:39.000000000 +0200 | ||
3509 | *************** | ||
3510 | *** 683,684 **** | ||
3511 | --- 683,686 ---- | ||
3512 | { /* Add new patch number below this line */ | ||
3513 | + /**/ | ||
3514 | + 432, | ||
3515 | /**/ | ||
3516 | |||
3517 | -- | ||
3518 | It is hard to understand how a cemetery raised its burial | ||
3519 | cost and blamed it on the cost of living. | ||
3520 | |||
3521 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
3522 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
3523 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
3524 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
3525 | To: vim-dev@vim.org | ||
3526 | Subject: Patch 7.2.433 | ||
3527 | Fcc: outbox | ||
3528 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
3529 | Mime-Version: 1.0 | ||
3530 | Content-Type: text/plain; charset=UTF-8 | ||
3531 | Content-Transfer-Encoding: 8bit | ||
3532 | ------------ | ||
3533 | |||
3534 | Patch 7.2.433 | ||
3535 | Problem: Can't use cscope with QuickFixCmdPre and QuickFixCmdPost. | ||
3536 | Solution: Add cscope support for these autocmd events. (Bryan Venteicher) | ||
3537 | Files: runtime/doc/autocmd.txt, src/if_cscope.c | ||
3538 | |||
3539 | |||
3540 | *** ../vim-7.2.432/runtime/doc/autocmd.txt 2009-06-24 17:51:01.000000000 +0200 | ||
3541 | --- runtime/doc/autocmd.txt 2010-05-14 22:48:43.000000000 +0200 | ||
3542 | *************** | ||
3543 | *** 678,687 **** | ||
3544 | QuickFixCmdPre Before a quickfix command is run (|:make|, | ||
3545 | |:lmake|, |:grep|, |:lgrep|, |:grepadd|, | ||
3546 | |:lgrepadd|, |:vimgrep|, |:lvimgrep|, | ||
3547 | ! |:vimgrepadd|, |:lvimgrepadd|). The pattern is | ||
3548 | ! matched against the command being run. When | ||
3549 | ! |:grep| is used but 'grepprg' is set to | ||
3550 | ! "internal" it still matches "grep". | ||
3551 | This command cannot be used to set the | ||
3552 | 'makeprg' and 'grepprg' variables. | ||
3553 | If this command causes an error, the quickfix | ||
3554 | --- 678,687 ---- | ||
3555 | QuickFixCmdPre Before a quickfix command is run (|:make|, | ||
3556 | |:lmake|, |:grep|, |:lgrep|, |:grepadd|, | ||
3557 | |:lgrepadd|, |:vimgrep|, |:lvimgrep|, | ||
3558 | ! |:vimgrepadd|, |:lvimgrepadd|, |:cscope|). | ||
3559 | ! The pattern is matched against the command | ||
3560 | ! being run. When |:grep| is used but 'grepprg' | ||
3561 | ! is set to "internal" it still matches "grep". | ||
3562 | This command cannot be used to set the | ||
3563 | 'makeprg' and 'grepprg' variables. | ||
3564 | If this command causes an error, the quickfix | ||
3565 | *** ../vim-7.2.432/src/if_cscope.c 2010-02-24 14:46:58.000000000 +0100 | ||
3566 | --- src/if_cscope.c 2010-05-14 23:10:39.000000000 +0200 | ||
3567 | *************** | ||
3568 | *** 1113,1118 **** | ||
3569 | --- 1113,1182 ---- | ||
3570 | #ifdef FEAT_QUICKFIX | ||
3571 | char cmdletter; | ||
3572 | char *qfpos; | ||
3573 | + | ||
3574 | + /* get cmd letter */ | ||
3575 | + switch (opt[0]) | ||
3576 | + { | ||
3577 | + case '0' : | ||
3578 | + cmdletter = 's'; | ||
3579 | + break; | ||
3580 | + case '1' : | ||
3581 | + cmdletter = 'g'; | ||
3582 | + break; | ||
3583 | + case '2' : | ||
3584 | + cmdletter = 'd'; | ||
3585 | + break; | ||
3586 | + case '3' : | ||
3587 | + cmdletter = 'c'; | ||
3588 | + break; | ||
3589 | + case '4' : | ||
3590 | + cmdletter = 't'; | ||
3591 | + break; | ||
3592 | + case '6' : | ||
3593 | + cmdletter = 'e'; | ||
3594 | + break; | ||
3595 | + case '7' : | ||
3596 | + cmdletter = 'f'; | ||
3597 | + break; | ||
3598 | + case '8' : | ||
3599 | + cmdletter = 'i'; | ||
3600 | + break; | ||
3601 | + default : | ||
3602 | + cmdletter = opt[0]; | ||
3603 | + } | ||
3604 | + | ||
3605 | + qfpos = (char *)vim_strchr(p_csqf, cmdletter); | ||
3606 | + if (qfpos != NULL) | ||
3607 | + { | ||
3608 | + qfpos++; | ||
3609 | + /* next symbol must be + or - */ | ||
3610 | + if (strchr(CSQF_FLAGS, *qfpos) == NULL) | ||
3611 | + { | ||
3612 | + char *nf = _("E469: invalid cscopequickfix flag %c for %c"); | ||
3613 | + char *buf = (char *)alloc((unsigned)strlen(nf)); | ||
3614 | + | ||
3615 | + /* strlen will be enough because we use chars */ | ||
3616 | + if (buf != NULL) | ||
3617 | + { | ||
3618 | + sprintf(buf, nf, *qfpos, *(qfpos-1)); | ||
3619 | + (void)EMSG(buf); | ||
3620 | + vim_free(buf); | ||
3621 | + } | ||
3622 | + return FALSE; | ||
3623 | + } | ||
3624 | + | ||
3625 | + # ifdef FEAT_AUTOCMD | ||
3626 | + if (*qfpos != '0') | ||
3627 | + { | ||
3628 | + apply_autocmds(EVENT_QUICKFIXCMDPRE, (char_u *)"cscope", | ||
3629 | + curbuf->b_fname, TRUE, curbuf); | ||
3630 | + # ifdef FEAT_EVAL | ||
3631 | + if (did_throw || force_abort) | ||
3632 | + return FALSE; | ||
3633 | + # endif | ||
3634 | + } | ||
3635 | + # endif | ||
3636 | + } | ||
3637 | #endif | ||
3638 | |||
3639 | /* create the actual command to send to cscope */ | ||
3640 | *************** | ||
3641 | *** 1174,1231 **** | ||
3642 | } | ||
3643 | |||
3644 | #ifdef FEAT_QUICKFIX | ||
3645 | - /* get cmd letter */ | ||
3646 | - switch (opt[0]) | ||
3647 | - { | ||
3648 | - case '0' : | ||
3649 | - cmdletter = 's'; | ||
3650 | - break; | ||
3651 | - case '1' : | ||
3652 | - cmdletter = 'g'; | ||
3653 | - break; | ||
3654 | - case '2' : | ||
3655 | - cmdletter = 'd'; | ||
3656 | - break; | ||
3657 | - case '3' : | ||
3658 | - cmdletter = 'c'; | ||
3659 | - break; | ||
3660 | - case '4' : | ||
3661 | - cmdletter = 't'; | ||
3662 | - break; | ||
3663 | - case '6' : | ||
3664 | - cmdletter = 'e'; | ||
3665 | - break; | ||
3666 | - case '7' : | ||
3667 | - cmdletter = 'f'; | ||
3668 | - break; | ||
3669 | - case '8' : | ||
3670 | - cmdletter = 'i'; | ||
3671 | - break; | ||
3672 | - default : | ||
3673 | - cmdletter = opt[0]; | ||
3674 | - } | ||
3675 | - | ||
3676 | - qfpos = (char *)vim_strchr(p_csqf, cmdletter); | ||
3677 | - if (qfpos != NULL) | ||
3678 | - { | ||
3679 | - qfpos++; | ||
3680 | - /* next symbol must be + or - */ | ||
3681 | - if (strchr(CSQF_FLAGS, *qfpos) == NULL) | ||
3682 | - { | ||
3683 | - char *nf = _("E469: invalid cscopequickfix flag %c for %c"); | ||
3684 | - char *buf = (char *)alloc((unsigned)strlen(nf)); | ||
3685 | - | ||
3686 | - /* strlen will be enough because we use chars */ | ||
3687 | - if (buf != NULL) | ||
3688 | - { | ||
3689 | - sprintf(buf, nf, *qfpos, *(qfpos-1)); | ||
3690 | - (void)EMSG(buf); | ||
3691 | - vim_free(buf); | ||
3692 | - } | ||
3693 | - vim_free(nummatches); | ||
3694 | - return FALSE; | ||
3695 | - } | ||
3696 | - } | ||
3697 | if (qfpos != NULL && *qfpos != '0' && totmatches > 0) | ||
3698 | { | ||
3699 | /* fill error list */ | ||
3700 | --- 1238,1243 ---- | ||
3701 | *************** | ||
3702 | *** 1258,1263 **** | ||
3703 | --- 1270,1280 ---- | ||
3704 | postponed_split = 0; | ||
3705 | } | ||
3706 | # endif | ||
3707 | + | ||
3708 | + # ifdef FEAT_AUTOCMD | ||
3709 | + apply_autocmds(EVENT_QUICKFIXCMDPOST, (char_u *)"cscope", | ||
3710 | + curbuf->b_fname, TRUE, curbuf); | ||
3711 | + # endif | ||
3712 | if (use_ll) | ||
3713 | /* | ||
3714 | * In the location list window, use the displayed location | ||
3715 | *** ../vim-7.2.432/src/version.c 2010-05-14 22:24:31.000000000 +0200 | ||
3716 | --- src/version.c 2010-05-14 23:13:27.000000000 +0200 | ||
3717 | *************** | ||
3718 | *** 683,684 **** | ||
3719 | --- 683,686 ---- | ||
3720 | { /* Add new patch number below this line */ | ||
3721 | + /**/ | ||
3722 | + 433, | ||
3723 | /**/ | ||
3724 | |||
3725 | -- | ||
3726 | The 50-50-90 rule: Anytime you have a 50-50 chance of getting | ||
3727 | something right, there's a 90% probability you'll get it wrong. | ||
3728 | |||
3729 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
3730 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
3731 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
3732 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
3733 | To: vim-dev@vim.org | ||
3734 | Subject: Patch 7.2.434 | ||
3735 | Fcc: outbox | ||
3736 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
3737 | Mime-Version: 1.0 | ||
3738 | Content-Type: text/plain; charset=UTF-8 | ||
3739 | Content-Transfer-Encoding: 8bit | ||
3740 | ------------ | ||
3741 | |||
3742 | Patch 7.2.434 (after 7.2.432) | ||
3743 | Problem: Compilation fails without the multi-lang feature. | ||
3744 | Solution: Add #ifdefs. (Johm Marriott) | ||
3745 | Files: src/menu.c | ||
3746 | |||
3747 | |||
3748 | *** ../vim-7.2.433/src/menu.c 2010-05-14 22:24:31.000000000 +0200 | ||
3749 | --- src/menu.c 2010-05-16 12:28:21.000000000 +0200 | ||
3750 | *************** | ||
3751 | *** 1340,1346 **** | ||
3752 | --- 1340,1348 ---- | ||
3753 | if (idx == 0) /* first call: start at first item */ | ||
3754 | { | ||
3755 | menu = expand_menu; | ||
3756 | + #ifdef FEAT_MULTI_LANG | ||
3757 | should_advance = FALSE; | ||
3758 | + #endif | ||
3759 | } | ||
3760 | |||
3761 | /* Skip PopUp[nvoci]. */ | ||
3762 | *************** | ||
3763 | *** 1401,1407 **** | ||
3764 | --- 1403,1411 ---- | ||
3765 | if (idx == 0) /* first call: start at first item */ | ||
3766 | { | ||
3767 | menu = expand_menu; | ||
3768 | + #ifdef FEAT_MULTI_LANG | ||
3769 | should_advance = FALSE; | ||
3770 | + #endif | ||
3771 | } | ||
3772 | |||
3773 | /* Skip Browse-style entries, popup menus and separators. */ | ||
3774 | *************** | ||
3775 | *** 1506,1515 **** | ||
3776 | --- 1510,1521 ---- | ||
3777 | char_u *name; | ||
3778 | vimmenu_T *menu; | ||
3779 | { | ||
3780 | + #ifdef FEAT_MULTI_LANG | ||
3781 | if (menu->en_name != NULL | ||
3782 | && (menu_namecmp(name,menu->en_name) | ||
3783 | || menu_namecmp(name,menu->en_dname))) | ||
3784 | return TRUE; | ||
3785 | + #endif | ||
3786 | return menu_namecmp(name, menu->name) || menu_namecmp(name, menu->dname); | ||
3787 | } | ||
3788 | |||
3789 | *** ../vim-7.2.433/src/version.c 2010-05-14 23:14:37.000000000 +0200 | ||
3790 | --- src/version.c 2010-05-16 12:29:40.000000000 +0200 | ||
3791 | *************** | ||
3792 | *** 683,684 **** | ||
3793 | --- 683,686 ---- | ||
3794 | { /* Add new patch number below this line */ | ||
3795 | + /**/ | ||
3796 | + 434, | ||
3797 | /**/ | ||
3798 | |||
3799 | -- | ||
3800 | hundred-and-one symptoms of being an internet addict: | ||
3801 | 43. You tell the kids they can't use the computer because "Daddy's got work to | ||
3802 | do" and you don't even have a job. | ||
3803 | |||
3804 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
3805 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
3806 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
3807 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
3808 | To: vim-dev@vim.org | ||
3809 | Subject: Patch 7.2.435 | ||
3810 | Fcc: outbox | ||
3811 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
3812 | Mime-Version: 1.0 | ||
3813 | Content-Type: text/plain; charset=UTF-8 | ||
3814 | Content-Transfer-Encoding: 8bit | ||
3815 | ------------ | ||
3816 | |||
3817 | Patch 7.2.435 (after 7.2.430) | ||
3818 | Problem: Crash when using bad_char_idx uninitialized. (Patrick Texier) | ||
3819 | Solution: Don't use bad_char_idx, reproduce the ++bad argument from bad_char. | ||
3820 | Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c | ||
3821 | |||
3822 | |||
3823 | *** ../vim-7.2.434/src/eval.c 2010-05-14 20:41:00.000000000 +0200 | ||
3824 | --- src/eval.c 2010-05-16 13:19:04.000000000 +0200 | ||
3825 | *************** | ||
3826 | *** 18309,18316 **** | ||
3827 | # ifdef FEAT_MBYTE | ||
3828 | if (eap->force_enc != 0) | ||
3829 | len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7; | ||
3830 | ! if (eap->bad_char_idx != 0) | ||
3831 | ! len += (unsigned)STRLEN(eap->cmd + eap->bad_char_idx) + 7; | ||
3832 | # endif | ||
3833 | |||
3834 | newval = alloc(len + 1); | ||
3835 | --- 18309,18316 ---- | ||
3836 | # ifdef FEAT_MBYTE | ||
3837 | if (eap->force_enc != 0) | ||
3838 | len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7; | ||
3839 | ! if (eap->bad_char != 0) | ||
3840 | ! len += 7 + 4; /* " ++bad=" + "keep" or "drop" */ | ||
3841 | # endif | ||
3842 | |||
3843 | newval = alloc(len + 1); | ||
3844 | *************** | ||
3845 | *** 18334,18342 **** | ||
3846 | if (eap->force_enc != 0) | ||
3847 | sprintf((char *)newval + STRLEN(newval), " ++enc=%s", | ||
3848 | eap->cmd + eap->force_enc); | ||
3849 | ! if (eap->bad_char_idx != 0) | ||
3850 | ! sprintf((char *)newval + STRLEN(newval), " ++bad=%s", | ||
3851 | ! eap->cmd + eap->bad_char_idx); | ||
3852 | # endif | ||
3853 | vimvars[VV_CMDARG].vv_str = newval; | ||
3854 | return oldval; | ||
3855 | --- 18334,18345 ---- | ||
3856 | if (eap->force_enc != 0) | ||
3857 | sprintf((char *)newval + STRLEN(newval), " ++enc=%s", | ||
3858 | eap->cmd + eap->force_enc); | ||
3859 | ! if (eap->bad_char == BAD_KEEP) | ||
3860 | ! STRCPY(newval + STRLEN(newval), " ++bad=keep"); | ||
3861 | ! else if (eap->bad_char == BAD_DROP) | ||
3862 | ! STRCPY(newval + STRLEN(newval), " ++bad=drop"); | ||
3863 | ! else if (eap->bad_char != 0) | ||
3864 | ! sprintf((char *)newval + STRLEN(newval), " ++bad=%c", eap->bad_char); | ||
3865 | # endif | ||
3866 | vimvars[VV_CMDARG].vv_str = newval; | ||
3867 | return oldval; | ||
3868 | *** ../vim-7.2.434/src/ex_cmds.h 2010-05-14 20:41:00.000000000 +0200 | ||
3869 | --- src/ex_cmds.h 2010-05-16 13:03:53.000000000 +0200 | ||
3870 | *************** | ||
3871 | *** 1152,1159 **** | ||
3872 | int force_ff; /* ++ff= argument (index in cmd[]) */ | ||
3873 | #ifdef FEAT_MBYTE | ||
3874 | int force_enc; /* ++enc= argument (index in cmd[]) */ | ||
3875 | ! int bad_char_idx; /* ++bad= argument (index in cmd[]) */ | ||
3876 | ! int bad_char; /* BAD_KEEP, BAD_DROP or replacement char */ | ||
3877 | #endif | ||
3878 | #ifdef FEAT_USR_CMDS | ||
3879 | int useridx; /* user command index */ | ||
3880 | --- 1152,1158 ---- | ||
3881 | int force_ff; /* ++ff= argument (index in cmd[]) */ | ||
3882 | #ifdef FEAT_MBYTE | ||
3883 | int force_enc; /* ++enc= argument (index in cmd[]) */ | ||
3884 | ! int bad_char; /* BAD_KEEP, BAD_DROP or replacement byte */ | ||
3885 | #endif | ||
3886 | #ifdef FEAT_USR_CMDS | ||
3887 | int useridx; /* user command index */ | ||
3888 | *** ../vim-7.2.434/src/ex_docmd.c 2010-05-14 20:41:00.000000000 +0200 | ||
3889 | --- src/ex_docmd.c 2010-05-16 13:13:30.000000000 +0200 | ||
3890 | *************** | ||
3891 | *** 4688,4693 **** | ||
3892 | --- 4688,4694 ---- | ||
3893 | char_u *arg = eap->arg + 2; | ||
3894 | int *pp = NULL; | ||
3895 | #ifdef FEAT_MBYTE | ||
3896 | + int bad_char_idx; | ||
3897 | char_u *p; | ||
3898 | #endif | ||
3899 | |||
3900 | *************** | ||
3901 | *** 4739,4745 **** | ||
3902 | else if (STRNCMP(arg, "bad", 3) == 0) | ||
3903 | { | ||
3904 | arg += 3; | ||
3905 | ! pp = &eap->bad_char_idx; | ||
3906 | } | ||
3907 | #endif | ||
3908 | |||
3909 | --- 4740,4746 ---- | ||
3910 | else if (STRNCMP(arg, "bad", 3) == 0) | ||
3911 | { | ||
3912 | arg += 3; | ||
3913 | ! pp = &bad_char_idx; | ||
3914 | } | ||
3915 | #endif | ||
3916 | |||
3917 | *************** | ||
3918 | *** 4770,4776 **** | ||
3919 | { | ||
3920 | /* Check ++bad= argument. Must be a single-byte character, "keep" or | ||
3921 | * "drop". */ | ||
3922 | ! p = eap->cmd + eap->bad_char_idx; | ||
3923 | if (STRICMP(p, "keep") == 0) | ||
3924 | eap->bad_char = BAD_KEEP; | ||
3925 | else if (STRICMP(p, "drop") == 0) | ||
3926 | --- 4771,4777 ---- | ||
3927 | { | ||
3928 | /* Check ++bad= argument. Must be a single-byte character, "keep" or | ||
3929 | * "drop". */ | ||
3930 | ! p = eap->cmd + bad_char_idx; | ||
3931 | if (STRICMP(p, "keep") == 0) | ||
3932 | eap->bad_char = BAD_KEEP; | ||
3933 | else if (STRICMP(p, "drop") == 0) | ||
3934 | *** ../vim-7.2.434/src/version.c 2010-05-16 12:32:37.000000000 +0200 | ||
3935 | --- src/version.c 2010-05-16 13:24:39.000000000 +0200 | ||
3936 | *************** | ||
3937 | *** 683,684 **** | ||
3938 | --- 683,686 ---- | ||
3939 | { /* Add new patch number below this line */ | ||
3940 | + /**/ | ||
3941 | + 435, | ||
3942 | /**/ | ||
3943 | |||
3944 | -- | ||
3945 | hundred-and-one symptoms of being an internet addict: | ||
3946 | 45. You buy a Captain Kirk chair with a built-in keyboard and mouse. | ||
3947 | |||
3948 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
3949 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
3950 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
3951 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
3952 | To: vim-dev@vim.org | ||
3953 | Subject: Patch 7.2.436 | ||
3954 | Fcc: outbox | ||
3955 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
3956 | Mime-Version: 1.0 | ||
3957 | Content-Type: text/plain; charset=UTF-8 | ||
3958 | Content-Transfer-Encoding: 8bit | ||
3959 | ------------ | ||
3960 | |||
3961 | Patch 7.2.436 | ||
3962 | Problem: Reproducible crash in syntax HL. (George Reilly, Dominique Pelle) | ||
3963 | Solution: Make sst_stacksize an int instead of short. (Dominique Pelle) | ||
3964 | Files: src/structs.h | ||
3965 | |||
3966 | |||
3967 | *** ../vim-7.2.435/src/structs.h 2010-05-14 22:24:31.000000000 +0200 | ||
3968 | --- src/structs.h 2010-05-16 13:48:26.000000000 +0200 | ||
3969 | *************** | ||
3970 | *** 327,333 **** | ||
3971 | typedef struct m_info minfo_T; | ||
3972 | |||
3973 | /* | ||
3974 | ! * stucture used to link chunks in one of the free chunk lists. | ||
3975 | */ | ||
3976 | struct m_info | ||
3977 | { | ||
3978 | --- 327,333 ---- | ||
3979 | typedef struct m_info minfo_T; | ||
3980 | |||
3981 | /* | ||
3982 | ! * structure used to link chunks in one of the free chunk lists. | ||
3983 | */ | ||
3984 | struct m_info | ||
3985 | { | ||
3986 | *************** | ||
3987 | *** 795,803 **** | ||
3988 | garray_T sst_ga; /* growarray for long state stack */ | ||
3989 | } sst_union; | ||
3990 | int sst_next_flags; /* flags for sst_next_list */ | ||
3991 | short *sst_next_list; /* "nextgroup" list in this state | ||
3992 | * (this is a copy, don't free it! */ | ||
3993 | - short sst_stacksize; /* number of states on the stack */ | ||
3994 | disptick_T sst_tick; /* tick when last displayed */ | ||
3995 | linenr_T sst_change_lnum;/* when non-zero, change in this line | ||
3996 | * may have made the state invalid */ | ||
3997 | --- 795,803 ---- | ||
3998 | garray_T sst_ga; /* growarray for long state stack */ | ||
3999 | } sst_union; | ||
4000 | int sst_next_flags; /* flags for sst_next_list */ | ||
4001 | + int sst_stacksize; /* number of states on the stack */ | ||
4002 | short *sst_next_list; /* "nextgroup" list in this state | ||
4003 | * (this is a copy, don't free it! */ | ||
4004 | disptick_T sst_tick; /* tick when last displayed */ | ||
4005 | linenr_T sst_change_lnum;/* when non-zero, change in this line | ||
4006 | * may have made the state invalid */ | ||
4007 | *************** | ||
4008 | *** 2138,2144 **** | ||
4009 | #define SHAPE_IDX_CI 5 /* Command line Insert mode */ | ||
4010 | #define SHAPE_IDX_CR 6 /* Command line Replace mode */ | ||
4011 | #define SHAPE_IDX_O 7 /* Operator-pending mode */ | ||
4012 | ! #define SHAPE_IDX_VE 8 /* Visual mode with 'seleciton' exclusive */ | ||
4013 | #define SHAPE_IDX_CLINE 9 /* On command line */ | ||
4014 | #define SHAPE_IDX_STATUS 10 /* A status line */ | ||
4015 | #define SHAPE_IDX_SDRAG 11 /* dragging a status line */ | ||
4016 | --- 2138,2144 ---- | ||
4017 | #define SHAPE_IDX_CI 5 /* Command line Insert mode */ | ||
4018 | #define SHAPE_IDX_CR 6 /* Command line Replace mode */ | ||
4019 | #define SHAPE_IDX_O 7 /* Operator-pending mode */ | ||
4020 | ! #define SHAPE_IDX_VE 8 /* Visual mode with 'selection' exclusive */ | ||
4021 | #define SHAPE_IDX_CLINE 9 /* On command line */ | ||
4022 | #define SHAPE_IDX_STATUS 10 /* A status line */ | ||
4023 | #define SHAPE_IDX_SDRAG 11 /* dragging a status line */ | ||
4024 | *************** | ||
4025 | *** 2267,2273 **** | ||
4026 | /* short index; */ /* the item index within the father menu */ | ||
4027 | short menu_id; /* the menu id to which this item belong */ | ||
4028 | short submenu_id; /* the menu id of the children (could be | ||
4029 | ! get throught some tricks) */ | ||
4030 | MenuHandle menu_handle; | ||
4031 | MenuHandle submenu_handle; | ||
4032 | #endif | ||
4033 | --- 2267,2273 ---- | ||
4034 | /* short index; */ /* the item index within the father menu */ | ||
4035 | short menu_id; /* the menu id to which this item belong */ | ||
4036 | short submenu_id; /* the menu id of the children (could be | ||
4037 | ! get through some tricks) */ | ||
4038 | MenuHandle menu_handle; | ||
4039 | MenuHandle submenu_handle; | ||
4040 | #endif | ||
4041 | *** ../vim-7.2.435/src/version.c 2010-05-16 13:26:19.000000000 +0200 | ||
4042 | --- src/version.c 2010-05-16 13:54:30.000000000 +0200 | ||
4043 | *************** | ||
4044 | *** 683,684 **** | ||
4045 | --- 683,686 ---- | ||
4046 | { /* Add new patch number below this line */ | ||
4047 | + /**/ | ||
4048 | + 436, | ||
4049 | /**/ | ||
4050 | |||
4051 | -- | ||
4052 | hundred-and-one symptoms of being an internet addict: | ||
4053 | 47. You are so familiar with the WWW that you find the search engines useless. | ||
4054 | |||
4055 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
4056 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
4057 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
4058 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
4059 | To: vim-dev@vim.org | ||
4060 | Subject: Patch 7.2.437 | ||
4061 | Fcc: outbox | ||
4062 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
4063 | Mime-Version: 1.0 | ||
4064 | Content-Type: text/plain; charset=UTF-8 | ||
4065 | Content-Transfer-Encoding: 8bit | ||
4066 | ------------ | ||
4067 | |||
4068 | Patch 7.2.437 (after 7.2.407) | ||
4069 | Problem: When "\\\n" appears in the expression result the \n doesn't result | ||
4070 | in a line break. (Andy Wokula) | ||
4071 | Solution: Also replace a \n after a backslash into \r. | ||
4072 | Files: src/regexp.c | ||
4073 | |||
4074 | |||
4075 | *** ../vim-7.2.436/src/regexp.c 2010-03-23 16:27:15.000000000 +0100 | ||
4076 | --- src/regexp.c 2010-05-21 13:06:00.000000000 +0200 | ||
4077 | *************** | ||
4078 | *** 6974,6979 **** | ||
4079 | --- 6974,6986 ---- | ||
4080 | else if (*s == '\\' && s[1] != NUL) | ||
4081 | { | ||
4082 | ++s; | ||
4083 | + /* Change NL to CR here too, so that this works: | ||
4084 | + * :s/abc\\\ndef/\="aaa\\\nbbb"/ on text: | ||
4085 | + * abc\ | ||
4086 | + * def | ||
4087 | + */ | ||
4088 | + if (*s == NL) | ||
4089 | + *s = CAR; | ||
4090 | had_backslash = TRUE; | ||
4091 | } | ||
4092 | } | ||
4093 | *** ../vim-7.2.436/src/version.c 2010-05-16 13:56:01.000000000 +0200 | ||
4094 | --- src/version.c 2010-05-21 13:07:50.000000000 +0200 | ||
4095 | *************** | ||
4096 | *** 683,684 **** | ||
4097 | --- 683,686 ---- | ||
4098 | { /* Add new patch number below this line */ | ||
4099 | + /**/ | ||
4100 | + 437, | ||
4101 | /**/ | ||
4102 | |||
4103 | -- | ||
4104 | hundred-and-one symptoms of being an internet addict: | ||
4105 | 89. In addition to your e-mail address being on your business | ||
4106 | cards you even have your own domain. | ||
4107 | |||
4108 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
4109 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
4110 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
4111 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
4112 | To: vim-dev@vim.org | ||
4113 | Subject: Patch 7.2.438 | ||
4114 | Fcc: outbox | ||
4115 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
4116 | Mime-Version: 1.0 | ||
4117 | Content-Type: text/plain; charset=UTF-8 | ||
4118 | Content-Transfer-Encoding: 8bit | ||
4119 | ------------ | ||
4120 | |||
4121 | Patch 7.2.438 (after 7.2.427) | ||
4122 | Problem: "vim -r" crashes. | ||
4123 | Solution: Don't use NULL pointer argument. | ||
4124 | Files: src/memline.c | ||
4125 | |||
4126 | |||
4127 | *** ../vim-7.2.437/src/memline.c 2010-05-14 17:52:35.000000000 +0200 | ||
4128 | --- src/memline.c 2010-05-25 21:36:01.000000000 +0200 | ||
4129 | *************** | ||
4130 | *** 1404,1418 **** | ||
4131 | int i; | ||
4132 | char_u *dirp; | ||
4133 | char_u *dir_name; | ||
4134 | ! char_u *fname_res = *fname; | ||
4135 | #ifdef HAVE_READLINK | ||
4136 | char_u fname_buf[MAXPATHL]; | ||
4137 | |||
4138 | /* Expand symlink in the file name, because the swap file is created with | ||
4139 | * the actual file instead of with the symlink. */ | ||
4140 | if (resolve_symlink(*fname, fname_buf) == OK) | ||
4141 | fname_res = fname_buf; | ||
4142 | #endif | ||
4143 | |||
4144 | if (list) | ||
4145 | { | ||
4146 | --- 1404,1425 ---- | ||
4147 | int i; | ||
4148 | char_u *dirp; | ||
4149 | char_u *dir_name; | ||
4150 | ! char_u *fname_res = NULL; | ||
4151 | #ifdef HAVE_READLINK | ||
4152 | char_u fname_buf[MAXPATHL]; | ||
4153 | + #endif | ||
4154 | |||
4155 | + if (fname != NULL) | ||
4156 | + { | ||
4157 | + #ifdef HAVE_READLINK | ||
4158 | /* Expand symlink in the file name, because the swap file is created with | ||
4159 | * the actual file instead of with the symlink. */ | ||
4160 | if (resolve_symlink(*fname, fname_buf) == OK) | ||
4161 | fname_res = fname_buf; | ||
4162 | + else | ||
4163 | #endif | ||
4164 | + fname_res = *fname; | ||
4165 | + } | ||
4166 | |||
4167 | if (list) | ||
4168 | { | ||
4169 | *** ../vim-7.2.437/src/version.c 2010-05-21 13:08:51.000000000 +0200 | ||
4170 | --- src/version.c 2010-05-25 21:30:12.000000000 +0200 | ||
4171 | *************** | ||
4172 | *** 683,684 **** | ||
4173 | --- 683,686 ---- | ||
4174 | { /* Add new patch number below this line */ | ||
4175 | + /**/ | ||
4176 | + 438, | ||
4177 | /**/ | ||
4178 | |||
4179 | -- | ||
4180 | A fool learns from his mistakes, a wise man from someone else's. | ||
4181 | |||
4182 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
4183 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
4184 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
4185 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
4186 | To: vim-dev@vim.org | ||
4187 | Subject: Patch 7.2.439 | ||
4188 | Fcc: outbox | ||
4189 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
4190 | Mime-Version: 1.0 | ||
4191 | Content-Type: text/plain; charset=UTF-8 | ||
4192 | Content-Transfer-Encoding: 8bit | ||
4193 | ------------ | ||
4194 | |||
4195 | Patch 7.2.439 | ||
4196 | Problem: Invalid memory access when doing thesaurus completion and | ||
4197 | 'infercase' is set. | ||
4198 | Solution: Use the minimal length of completed word and replacement. | ||
4199 | (Dominique Pelle) | ||
4200 | Files: src/edit.c | ||
4201 | |||
4202 | |||
4203 | *** ../vim-7.2.438/src/edit.c 2010-03-10 14:15:28.000000000 +0100 | ||
4204 | --- src/edit.c 2010-05-28 21:20:29.000000000 +0200 | ||
4205 | *************** | ||
4206 | *** 2164,2169 **** | ||
4207 | --- 2164,2170 ---- | ||
4208 | int i, c; | ||
4209 | int actual_len; /* Take multi-byte characters */ | ||
4210 | int actual_compl_length; /* into account. */ | ||
4211 | + int min_len; | ||
4212 | int *wca; /* Wide character array. */ | ||
4213 | int has_lower = FALSE; | ||
4214 | int was_letter = FALSE; | ||
4215 | *************** | ||
4216 | *** 2204,2209 **** | ||
4217 | --- 2205,2215 ---- | ||
4218 | #endif | ||
4219 | actual_compl_length = compl_length; | ||
4220 | |||
4221 | + /* "actual_len" may be smaller than "actual_compl_length" when using | ||
4222 | + * thesaurus, only use the minimum when comparing. */ | ||
4223 | + min_len = actual_len < actual_compl_length | ||
4224 | + ? actual_len : actual_compl_length; | ||
4225 | + | ||
4226 | /* Allocate wide character array for the completion and fill it. */ | ||
4227 | wca = (int *)alloc((unsigned)(actual_len * sizeof(int))); | ||
4228 | if (wca != NULL) | ||
4229 | *************** | ||
4230 | *** 2219,2225 **** | ||
4231 | |||
4232 | /* Rule 1: Were any chars converted to lower? */ | ||
4233 | p = compl_orig_text; | ||
4234 | ! for (i = 0; i < actual_compl_length; ++i) | ||
4235 | { | ||
4236 | #ifdef FEAT_MBYTE | ||
4237 | if (has_mbyte) | ||
4238 | --- 2225,2231 ---- | ||
4239 | |||
4240 | /* Rule 1: Were any chars converted to lower? */ | ||
4241 | p = compl_orig_text; | ||
4242 | ! for (i = 0; i < min_len; ++i) | ||
4243 | { | ||
4244 | #ifdef FEAT_MBYTE | ||
4245 | if (has_mbyte) | ||
4246 | *************** | ||
4247 | *** 2247,2253 **** | ||
4248 | if (!has_lower) | ||
4249 | { | ||
4250 | p = compl_orig_text; | ||
4251 | ! for (i = 0; i < actual_compl_length; ++i) | ||
4252 | { | ||
4253 | #ifdef FEAT_MBYTE | ||
4254 | if (has_mbyte) | ||
4255 | --- 2253,2259 ---- | ||
4256 | if (!has_lower) | ||
4257 | { | ||
4258 | p = compl_orig_text; | ||
4259 | ! for (i = 0; i < min_len; ++i) | ||
4260 | { | ||
4261 | #ifdef FEAT_MBYTE | ||
4262 | if (has_mbyte) | ||
4263 | *************** | ||
4264 | *** 2268,2274 **** | ||
4265 | |||
4266 | /* Copy the original case of the part we typed. */ | ||
4267 | p = compl_orig_text; | ||
4268 | ! for (i = 0; i < actual_compl_length; ++i) | ||
4269 | { | ||
4270 | #ifdef FEAT_MBYTE | ||
4271 | if (has_mbyte) | ||
4272 | --- 2274,2280 ---- | ||
4273 | |||
4274 | /* Copy the original case of the part we typed. */ | ||
4275 | p = compl_orig_text; | ||
4276 | ! for (i = 0; i < min_len; ++i) | ||
4277 | { | ||
4278 | #ifdef FEAT_MBYTE | ||
4279 | if (has_mbyte) | ||
4280 | *** ../vim-7.2.438/src/version.c 2010-05-25 21:37:12.000000000 +0200 | ||
4281 | --- src/version.c 2010-05-28 21:30:53.000000000 +0200 | ||
4282 | *************** | ||
4283 | *** 683,684 **** | ||
4284 | --- 683,686 ---- | ||
4285 | { /* Add new patch number below this line */ | ||
4286 | + /**/ | ||
4287 | + 439, | ||
4288 | /**/ | ||
4289 | |||
4290 | -- | ||
4291 | Corduroy pillows: They're making headlines! | ||
4292 | |||
4293 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
4294 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
4295 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
4296 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
4297 | To: vim-dev@vim.org | ||
4298 | Subject: Patch 7.2.440 | ||
4299 | Fcc: outbox | ||
4300 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
4301 | Mime-Version: 1.0 | ||
4302 | Content-Type: text/plain; charset=UTF-8 | ||
4303 | Content-Transfer-Encoding: 8bit | ||
4304 | ------------ | ||
4305 | |||
4306 | Patch 7.2.440 | ||
4307 | Problem: Calling a function through a funcref, where the function deletes | ||
4308 | the funcref, leads to an invalid memory access. | ||
4309 | Solution: Make a copy of the function name. (Lech Lorens) | ||
4310 | Files: src/eval.c, src/testdir/test34.in, src/testdir/test34.ok | ||
4311 | |||
4312 | |||
4313 | *** ../vim-7.2.439/src/eval.c 2010-05-16 13:26:19.000000000 +0200 | ||
4314 | --- src/eval.c 2010-05-28 22:01:07.000000000 +0200 | ||
4315 | *************** | ||
4316 | *** 464,470 **** | ||
4317 | static int find_internal_func __ARGS((char_u *name)); | ||
4318 | static char_u *deref_func_name __ARGS((char_u *name, int *lenp)); | ||
4319 | static int get_func_tv __ARGS((char_u *name, int len, typval_T *rettv, char_u **arg, linenr_T firstline, linenr_T lastline, int *doesrange, int evaluate, dict_T *selfdict)); | ||
4320 | ! static int call_func __ARGS((char_u *name, int len, typval_T *rettv, int argcount, typval_T *argvars, linenr_T firstline, linenr_T lastline, int *doesrange, int evaluate, dict_T *selfdict)); | ||
4321 | static void emsg_funcname __ARGS((char *ermsg, char_u *name)); | ||
4322 | static int non_zero_arg __ARGS((typval_T *argvars)); | ||
4323 | |||
4324 | --- 464,470 ---- | ||
4325 | static int find_internal_func __ARGS((char_u *name)); | ||
4326 | static char_u *deref_func_name __ARGS((char_u *name, int *lenp)); | ||
4327 | static int get_func_tv __ARGS((char_u *name, int len, typval_T *rettv, char_u **arg, linenr_T firstline, linenr_T lastline, int *doesrange, int evaluate, dict_T *selfdict)); | ||
4328 | ! static int call_func __ARGS((char_u *func_name, int len, typval_T *rettv, int argcount, typval_T *argvars, linenr_T firstline, linenr_T lastline, int *doesrange, int evaluate, dict_T *selfdict)); | ||
4329 | static void emsg_funcname __ARGS((char *ermsg, char_u *name)); | ||
4330 | static int non_zero_arg __ARGS((typval_T *argvars)); | ||
4331 | |||
4332 | *************** | ||
4333 | *** 7997,8005 **** | ||
4334 | * Also returns OK when an error was encountered while executing the function. | ||
4335 | */ | ||
4336 | static int | ||
4337 | ! call_func(name, len, rettv, argcount, argvars, firstline, lastline, | ||
4338 | doesrange, evaluate, selfdict) | ||
4339 | ! char_u *name; /* name of the function */ | ||
4340 | int len; /* length of "name" */ | ||
4341 | typval_T *rettv; /* return value goes here */ | ||
4342 | int argcount; /* number of "argvars" */ | ||
4343 | --- 7997,8005 ---- | ||
4344 | * Also returns OK when an error was encountered while executing the function. | ||
4345 | */ | ||
4346 | static int | ||
4347 | ! call_func(func_name, len, rettv, argcount, argvars, firstline, lastline, | ||
4348 | doesrange, evaluate, selfdict) | ||
4349 | ! char_u *func_name; /* name of the function */ | ||
4350 | int len; /* length of "name" */ | ||
4351 | typval_T *rettv; /* return value goes here */ | ||
4352 | int argcount; /* number of "argvars" */ | ||
4353 | *************** | ||
4354 | *** 8023,8040 **** | ||
4355 | int i; | ||
4356 | int llen; | ||
4357 | ufunc_T *fp; | ||
4358 | - int cc; | ||
4359 | #define FLEN_FIXED 40 | ||
4360 | char_u fname_buf[FLEN_FIXED + 1]; | ||
4361 | char_u *fname; | ||
4362 | |||
4363 | /* | ||
4364 | * In a script change <SID>name() and s:name() to K_SNR 123_name(). | ||
4365 | * Change <SNR>123_name() to K_SNR 123_name(). | ||
4366 | * Use fname_buf[] when it fits, otherwise allocate memory (slow). | ||
4367 | */ | ||
4368 | - cc = name[len]; | ||
4369 | - name[len] = NUL; | ||
4370 | llen = eval_fname_script(name); | ||
4371 | if (llen > 0) | ||
4372 | { | ||
4373 | --- 8023,8044 ---- | ||
4374 | int i; | ||
4375 | int llen; | ||
4376 | ufunc_T *fp; | ||
4377 | #define FLEN_FIXED 40 | ||
4378 | char_u fname_buf[FLEN_FIXED + 1]; | ||
4379 | char_u *fname; | ||
4380 | + char_u *name; | ||
4381 | + | ||
4382 | + /* Make a copy of the name, if it comes from a funcref variable it could | ||
4383 | + * be changed or deleted in the called function. */ | ||
4384 | + name = vim_strnsave(func_name, len); | ||
4385 | + if (name == NULL) | ||
4386 | + return ret; | ||
4387 | |||
4388 | /* | ||
4389 | * In a script change <SID>name() and s:name() to K_SNR 123_name(). | ||
4390 | * Change <SNR>123_name() to K_SNR 123_name(). | ||
4391 | * Use fname_buf[] when it fits, otherwise allocate memory (slow). | ||
4392 | */ | ||
4393 | llen = eval_fname_script(name); | ||
4394 | if (llen > 0) | ||
4395 | { | ||
4396 | *************** | ||
4397 | *** 8205,8213 **** | ||
4398 | } | ||
4399 | } | ||
4400 | |||
4401 | - name[len] = cc; | ||
4402 | if (fname != name && fname != fname_buf) | ||
4403 | vim_free(fname); | ||
4404 | |||
4405 | return ret; | ||
4406 | } | ||
4407 | --- 8209,8217 ---- | ||
4408 | } | ||
4409 | } | ||
4410 | |||
4411 | if (fname != name && fname != fname_buf) | ||
4412 | vim_free(fname); | ||
4413 | + vim_free(name); | ||
4414 | |||
4415 | return ret; | ||
4416 | } | ||
4417 | *** ../vim-7.2.439/src/testdir/test34.in 2007-09-25 17:59:15.000000000 +0200 | ||
4418 | --- src/testdir/test34.in 2010-05-28 21:54:36.000000000 +0200 | ||
4419 | *************** | ||
4420 | *** 35,40 **** | ||
4421 | --- 35,45 ---- | ||
4422 | : let g:counter = 0 | ||
4423 | : return '' | ||
4424 | :endfunc | ||
4425 | + :func FuncWithRef(a) | ||
4426 | + : unlet g:FuncRef | ||
4427 | + : return a:a | ||
4428 | + :endfunc | ||
4429 | + :let g:FuncRef=function("FuncWithRef") | ||
4430 | :let counter = 0 | ||
4431 | :inoremap <expr> ( ListItem() | ||
4432 | :inoremap <expr> [ ListReset() | ||
4433 | *************** | ||
4434 | *** 47,52 **** | ||
4435 | --- 52,58 ---- | ||
4436 | =retval | ||
4437 | =Compute(45, 5, "retval") | ||
4438 | =retval | ||
4439 | + =g:FuncRef(333) | ||
4440 | |||
4441 | XX+-XX | ||
4442 | ---*--- | ||
4443 | *** ../vim-7.2.439/src/testdir/test34.ok 2006-04-30 20:49:40.000000000 +0200 | ||
4444 | --- src/testdir/test34.ok 2010-05-28 21:56:03.000000000 +0200 | ||
4445 | *************** | ||
4446 | *** 1,4 **** | ||
4447 | ! xxx4asdf fail nop ok 9 | ||
4448 | XX111XX | ||
4449 | ---222--- | ||
4450 | 1. one | ||
4451 | --- 1,4 ---- | ||
4452 | ! xxx4asdf fail nop ok 9 333 | ||
4453 | XX111XX | ||
4454 | ---222--- | ||
4455 | 1. one | ||
4456 | *** ../vim-7.2.439/src/version.c 2010-05-28 21:31:51.000000000 +0200 | ||
4457 | --- src/version.c 2010-05-28 22:03:30.000000000 +0200 | ||
4458 | *************** | ||
4459 | *** 683,684 **** | ||
4460 | --- 683,686 ---- | ||
4461 | { /* Add new patch number below this line */ | ||
4462 | + /**/ | ||
4463 | + 440, | ||
4464 | /**/ | ||
4465 | |||
4466 | -- | ||
4467 | Nobody will ever need more than 640 kB RAM. | ||
4468 | -- Bill Gates, 1983 | ||
4469 | Windows 98 requires 16 MB RAM. | ||
4470 | -- Bill Gates, 1999 | ||
4471 | Logical conclusion: Nobody will ever need Windows 98. | ||
4472 | |||
4473 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
4474 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
4475 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
4476 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
4477 | To: vim-dev@vim.org | ||
4478 | Subject: Patch 7.2.441 | ||
4479 | Fcc: outbox | ||
4480 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
4481 | Mime-Version: 1.0 | ||
4482 | Content-Type: text/plain; charset=UTF-8 | ||
4483 | Content-Transfer-Encoding: 8bit | ||
4484 | ------------ | ||
4485 | |||
4486 | Patch 7.2.441 | ||
4487 | Problem: When using ":earlier" undo information may be wrong. | ||
4488 | Solution: When changing alternate branches also adjust b_u_oldhead. | ||
4489 | Files: src/undo.c | ||
4490 | |||
4491 | |||
4492 | *** ../vim-7.2.440/src/undo.c 2008-02-13 15:21:29.000000000 +0100 | ||
4493 | --- src/undo.c 2010-05-30 16:52:47.000000000 +0200 | ||
4494 | *************** | ||
4495 | *** 242,248 **** | ||
4496 | } | ||
4497 | |||
4498 | /* | ||
4499 | ! * save the line "lnum" (used by ":s" and "~" command) | ||
4500 | * The line is replaced, so the new bottom line is lnum + 1. | ||
4501 | */ | ||
4502 | int | ||
4503 | --- 242,248 ---- | ||
4504 | } | ||
4505 | |||
4506 | /* | ||
4507 | ! * Save the line "lnum" (used by ":s" and "~" command). | ||
4508 | * The line is replaced, so the new bottom line is lnum + 1. | ||
4509 | */ | ||
4510 | int | ||
4511 | *************** | ||
4512 | *** 256,262 **** | ||
4513 | } | ||
4514 | |||
4515 | /* | ||
4516 | ! * a new line is inserted before line "lnum" (used by :s command) | ||
4517 | * The line is inserted, so the new bottom line is lnum + 1. | ||
4518 | */ | ||
4519 | int | ||
4520 | --- 256,262 ---- | ||
4521 | } | ||
4522 | |||
4523 | /* | ||
4524 | ! * A new line is inserted before line "lnum" (used by :s command). | ||
4525 | * The line is inserted, so the new bottom line is lnum + 1. | ||
4526 | */ | ||
4527 | int | ||
4528 | *************** | ||
4529 | *** 270,276 **** | ||
4530 | } | ||
4531 | |||
4532 | /* | ||
4533 | ! * save the lines "lnum" - "lnum" + nlines (used by delete command) | ||
4534 | * The lines are deleted, so the new bottom line is lnum, unless the buffer | ||
4535 | * becomes empty. | ||
4536 | */ | ||
4537 | --- 270,276 ---- | ||
4538 | } | ||
4539 | |||
4540 | /* | ||
4541 | ! * Save the lines "lnum" - "lnum" + nlines (used by delete command). | ||
4542 | * The lines are deleted, so the new bottom line is lnum, unless the buffer | ||
4543 | * becomes empty. | ||
4544 | */ | ||
4545 | *************** | ||
4546 | *** 996,1001 **** | ||
4547 | --- 996,1003 ---- | ||
4548 | last->uh_alt_next = uhp; | ||
4549 | uhp->uh_alt_prev = last; | ||
4550 | |||
4551 | + if (curbuf->b_u_oldhead == uhp) | ||
4552 | + curbuf->b_u_oldhead = last; | ||
4553 | uhp = last; | ||
4554 | if (uhp->uh_next != NULL) | ||
4555 | uhp->uh_next->uh_prev = uhp; | ||
4556 | *************** | ||
4557 | *** 1406,1415 **** | ||
4558 | /* | ||
4559 | * ":undolist": List the leafs of the undo tree | ||
4560 | */ | ||
4561 | - /*ARGSUSED*/ | ||
4562 | void | ||
4563 | ex_undolist(eap) | ||
4564 | ! exarg_T *eap; | ||
4565 | { | ||
4566 | garray_T ga; | ||
4567 | u_header_T *uhp; | ||
4568 | --- 1408,1416 ---- | ||
4569 | /* | ||
4570 | * ":undolist": List the leafs of the undo tree | ||
4571 | */ | ||
4572 | void | ||
4573 | ex_undolist(eap) | ||
4574 | ! exarg_T *eap UNUSED; | ||
4575 | { | ||
4576 | garray_T ga; | ||
4577 | u_header_T *uhp; | ||
4578 | *************** | ||
4579 | *** 1529,1538 **** | ||
4580 | /* | ||
4581 | * ":undojoin": continue adding to the last entry list | ||
4582 | */ | ||
4583 | - /*ARGSUSED*/ | ||
4584 | void | ||
4585 | ex_undojoin(eap) | ||
4586 | ! exarg_T *eap; | ||
4587 | { | ||
4588 | if (curbuf->b_u_newhead == NULL) | ||
4589 | return; /* nothing changed before */ | ||
4590 | --- 1530,1538 ---- | ||
4591 | /* | ||
4592 | * ":undojoin": continue adding to the last entry list | ||
4593 | */ | ||
4594 | void | ||
4595 | ex_undojoin(eap) | ||
4596 | ! exarg_T *eap UNUSED; | ||
4597 | { | ||
4598 | if (curbuf->b_u_newhead == NULL) | ||
4599 | return; /* nothing changed before */ | ||
4600 | *** ../vim-7.2.440/src/version.c 2010-05-28 22:06:41.000000000 +0200 | ||
4601 | --- src/version.c 2010-05-30 16:53:56.000000000 +0200 | ||
4602 | *************** | ||
4603 | *** 683,684 **** | ||
4604 | --- 683,686 ---- | ||
4605 | { /* Add new patch number below this line */ | ||
4606 | + /**/ | ||
4607 | + 441, | ||
4608 | /**/ | ||
4609 | |||
4610 | -- | ||
4611 | hundred-and-one symptoms of being an internet addict: | ||
4612 | 127. You bring your laptop and cellular phone to church. | ||
4613 | |||
4614 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
4615 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
4616 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
4617 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
4618 | To: vim-dev@vim.org | ||
4619 | Subject: Patch 7.2.442 | ||
4620 | Fcc: outbox | ||
4621 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
4622 | Mime-Version: 1.0 | ||
4623 | Content-Type: text/plain; charset=UTF-8 | ||
4624 | Content-Transfer-Encoding: 8bit | ||
4625 | ------------ | ||
4626 | |||
4627 | Patch 7.2.442 (after 7.2.201) | ||
4628 | Problem: Copy/paste with OpenOffice doesn't work. | ||
4629 | Solution: Do not offer the HTML target when it is not supported. (James | ||
4630 | Vega) | ||
4631 | Files: src/gui_gtk_x11.c, src/option.c, src/proto/gui_gtk_x11.pro | ||
4632 | |||
4633 | |||
4634 | *** ../vim-7.2.441/src/gui_gtk_x11.c 2010-02-11 18:19:32.000000000 +0100 | ||
4635 | --- src/gui_gtk_x11.c 2010-06-05 12:42:23.000000000 +0200 | ||
4636 | *************** | ||
4637 | *** 1433,1438 **** | ||
4638 | --- 1433,1442 ---- | ||
4639 | } | ||
4640 | #endif /* !HAVE_GTK2 */ | ||
4641 | |||
4642 | + /* Chop off any traiing NUL bytes. OpenOffice sends these. */ | ||
4643 | + while (len > 0 && text[len - 1] == NUL) | ||
4644 | + --len; | ||
4645 | + | ||
4646 | clip_yank_selection(motion_type, text, (long)len, cbd); | ||
4647 | received_selection = RS_OK; | ||
4648 | vim_free(tmpbuf); | ||
4649 | *************** | ||
4650 | *** 3463,3468 **** | ||
4651 | --- 3467,3532 ---- | ||
4652 | #endif /* FEAT_GUI_TABLINE */ | ||
4653 | |||
4654 | /* | ||
4655 | + * Add selection targets for PRIMARY and CLIPBOARD selections. | ||
4656 | + */ | ||
4657 | + void | ||
4658 | + gui_gtk_set_selection_targets(void) | ||
4659 | + { | ||
4660 | + int i, j = 0; | ||
4661 | + int n_targets = N_SELECTION_TARGETS; | ||
4662 | + GtkTargetEntry targets[N_SELECTION_TARGETS]; | ||
4663 | + | ||
4664 | + for (i = 0; i < (int)N_SELECTION_TARGETS; ++i) | ||
4665 | + { | ||
4666 | + #ifdef FEAT_MBYTE | ||
4667 | + /* OpenOffice tries to use TARGET_HTML and fails when it doesn't | ||
4668 | + * return something, instead of trying another target. Therefore only | ||
4669 | + * offer TARGET_HTML when it works. */ | ||
4670 | + if (!clip_html && selection_targets[i].info == TARGET_HTML) | ||
4671 | + n_targets--; | ||
4672 | + else | ||
4673 | + #endif | ||
4674 | + targets[j++] = selection_targets[i]; | ||
4675 | + } | ||
4676 | + | ||
4677 | + gtk_selection_clear_targets(gui.drawarea, (GdkAtom)GDK_SELECTION_PRIMARY); | ||
4678 | + gtk_selection_clear_targets(gui.drawarea, (GdkAtom)clip_plus.gtk_sel_atom); | ||
4679 | + gtk_selection_add_targets(gui.drawarea, | ||
4680 | + (GdkAtom)GDK_SELECTION_PRIMARY, | ||
4681 | + targets, n_targets); | ||
4682 | + gtk_selection_add_targets(gui.drawarea, | ||
4683 | + (GdkAtom)clip_plus.gtk_sel_atom, | ||
4684 | + targets, n_targets); | ||
4685 | + } | ||
4686 | + | ||
4687 | + /* | ||
4688 | + * Set up for receiving DND items. | ||
4689 | + */ | ||
4690 | + void | ||
4691 | + gui_gtk_set_dnd_targets(void) | ||
4692 | + { | ||
4693 | + int i, j = 0; | ||
4694 | + int n_targets = N_DND_TARGETS; | ||
4695 | + GtkTargetEntry targets[N_DND_TARGETS]; | ||
4696 | + | ||
4697 | + for (i = 0; i < (int)N_DND_TARGETS; ++i) | ||
4698 | + { | ||
4699 | + #ifdef FEAT_MBYTE | ||
4700 | + if (!clip_html && selection_targets[i].info == TARGET_HTML) | ||
4701 | + n_targets--; | ||
4702 | + else | ||
4703 | + #endif | ||
4704 | + targets[j++] = dnd_targets[i]; | ||
4705 | + } | ||
4706 | + | ||
4707 | + gtk_drag_dest_unset(gui.drawarea); | ||
4708 | + gtk_drag_dest_set(gui.drawarea, | ||
4709 | + GTK_DEST_DEFAULT_ALL, | ||
4710 | + targets, n_targets, | ||
4711 | + GDK_ACTION_COPY); | ||
4712 | + } | ||
4713 | + | ||
4714 | + /* | ||
4715 | * Initialize the GUI. Create all the windows, set up all the callbacks etc. | ||
4716 | * Returns OK for success, FAIL when the GUI can't be started. | ||
4717 | */ | ||
4718 | *************** | ||
4719 | *** 3925,3939 **** | ||
4720 | gtk_signal_connect(GTK_OBJECT(gui.drawarea), "selection_received", | ||
4721 | GTK_SIGNAL_FUNC(selection_received_cb), NULL); | ||
4722 | |||
4723 | ! /* | ||
4724 | ! * Add selection targets for PRIMARY and CLIPBOARD selections. | ||
4725 | ! */ | ||
4726 | ! gtk_selection_add_targets(gui.drawarea, | ||
4727 | ! (GdkAtom)GDK_SELECTION_PRIMARY, | ||
4728 | ! selection_targets, N_SELECTION_TARGETS); | ||
4729 | ! gtk_selection_add_targets(gui.drawarea, | ||
4730 | ! (GdkAtom)clip_plus.gtk_sel_atom, | ||
4731 | ! selection_targets, N_SELECTION_TARGETS); | ||
4732 | |||
4733 | gtk_signal_connect(GTK_OBJECT(gui.drawarea), "selection_get", | ||
4734 | GTK_SIGNAL_FUNC(selection_get_cb), NULL); | ||
4735 | --- 3989,3995 ---- | ||
4736 | gtk_signal_connect(GTK_OBJECT(gui.drawarea), "selection_received", | ||
4737 | GTK_SIGNAL_FUNC(selection_received_cb), NULL); | ||
4738 | |||
4739 | ! gui_gtk_set_selection_targets(); | ||
4740 | |||
4741 | gtk_signal_connect(GTK_OBJECT(gui.drawarea), "selection_get", | ||
4742 | GTK_SIGNAL_FUNC(selection_get_cb), NULL); | ||
4743 | *************** | ||
4744 | *** 4057,4063 **** | ||
4745 | return TRUE; | ||
4746 | } | ||
4747 | |||
4748 | - | ||
4749 | /* | ||
4750 | * Open the GUI window which was created by a call to gui_mch_init(). | ||
4751 | */ | ||
4752 | --- 4113,4118 ---- | ||
4753 | *************** | ||
4754 | *** 4225,4237 **** | ||
4755 | GTK_SIGNAL_FUNC(form_configure_event), NULL); | ||
4756 | |||
4757 | #ifdef FEAT_DND | ||
4758 | ! /* | ||
4759 | ! * Set up for receiving DND items. | ||
4760 | ! */ | ||
4761 | ! gtk_drag_dest_set(gui.drawarea, | ||
4762 | ! GTK_DEST_DEFAULT_ALL, | ||
4763 | ! dnd_targets, N_DND_TARGETS, | ||
4764 | ! GDK_ACTION_COPY); | ||
4765 | |||
4766 | gtk_signal_connect(GTK_OBJECT(gui.drawarea), "drag_data_received", | ||
4767 | GTK_SIGNAL_FUNC(drag_data_received_cb), NULL); | ||
4768 | --- 4280,4287 ---- | ||
4769 | GTK_SIGNAL_FUNC(form_configure_event), NULL); | ||
4770 | |||
4771 | #ifdef FEAT_DND | ||
4772 | ! /* Set up for receiving DND items. */ | ||
4773 | ! gui_gtk_set_dnd_targets(); | ||
4774 | |||
4775 | gtk_signal_connect(GTK_OBJECT(gui.drawarea), "drag_data_received", | ||
4776 | GTK_SIGNAL_FUNC(drag_data_received_cb), NULL); | ||
4777 | *************** | ||
4778 | *** 4428,4434 **** | ||
4779 | /* this will cause the proper resizement to happen too */ | ||
4780 | update_window_manager_hints(0, 0); | ||
4781 | |||
4782 | ! #else /* HAVE_GTK2 */ | ||
4783 | /* this will cause the proper resizement to happen too */ | ||
4784 | if (gtk_socket_id == 0) | ||
4785 | update_window_manager_hints(0, 0); | ||
4786 | --- 4478,4484 ---- | ||
4787 | /* this will cause the proper resizement to happen too */ | ||
4788 | update_window_manager_hints(0, 0); | ||
4789 | |||
4790 | ! #else | ||
4791 | /* this will cause the proper resizement to happen too */ | ||
4792 | if (gtk_socket_id == 0) | ||
4793 | update_window_manager_hints(0, 0); | ||
4794 | *************** | ||
4795 | *** 4444,4457 **** | ||
4796 | else | ||
4797 | update_window_manager_hints(width, height); | ||
4798 | |||
4799 | ! #if 0 | ||
4800 | if (!resize_idle_installed) | ||
4801 | { | ||
4802 | g_idle_add_full(GDK_PRIORITY_EVENTS + 10, | ||
4803 | &force_shell_resize_idle, NULL, NULL); | ||
4804 | resize_idle_installed = TRUE; | ||
4805 | } | ||
4806 | ! #endif | ||
4807 | /* | ||
4808 | * Wait until all events are processed to prevent a crash because the | ||
4809 | * real size of the drawing area doesn't reflect Vim's internal ideas. | ||
4810 | --- 4494,4507 ---- | ||
4811 | else | ||
4812 | update_window_manager_hints(width, height); | ||
4813 | |||
4814 | ! # if 0 | ||
4815 | if (!resize_idle_installed) | ||
4816 | { | ||
4817 | g_idle_add_full(GDK_PRIORITY_EVENTS + 10, | ||
4818 | &force_shell_resize_idle, NULL, NULL); | ||
4819 | resize_idle_installed = TRUE; | ||
4820 | } | ||
4821 | ! # endif | ||
4822 | /* | ||
4823 | * Wait until all events are processed to prevent a crash because the | ||
4824 | * real size of the drawing area doesn't reflect Vim's internal ideas. | ||
4825 | *** ../vim-7.2.441/src/option.c 2010-05-14 17:32:53.000000000 +0200 | ||
4826 | --- src/option.c 2010-06-05 12:19:38.000000000 +0200 | ||
4827 | *************** | ||
4828 | *** 7112,7117 **** | ||
4829 | --- 7112,7124 ---- | ||
4830 | clip_html = new_html; | ||
4831 | vim_free(clip_exclude_prog); | ||
4832 | clip_exclude_prog = new_exclude_prog; | ||
4833 | + #ifdef FEAT_GUI_GTK | ||
4834 | + if (gui.in_use) | ||
4835 | + { | ||
4836 | + gui_gtk_set_selection_targets(); | ||
4837 | + gui_gtk_set_dnd_targets(); | ||
4838 | + } | ||
4839 | + #endif | ||
4840 | } | ||
4841 | else | ||
4842 | vim_free(new_exclude_prog); | ||
4843 | *** ../vim-7.2.441/src/proto/gui_gtk_x11.pro 2009-09-23 18:14:13.000000000 +0200 | ||
4844 | --- src/proto/gui_gtk_x11.pro 2010-06-05 12:31:22.000000000 +0200 | ||
4845 | *************** | ||
4846 | *** 9,14 **** | ||
4847 | --- 9,16 ---- | ||
4848 | int gui_mch_showing_tabline __ARGS((void)); | ||
4849 | void gui_mch_update_tabline __ARGS((void)); | ||
4850 | void gui_mch_set_curtab __ARGS((int nr)); | ||
4851 | + void gui_gtk_set_selection_targets __ARGS((void)); | ||
4852 | + void gui_gtk_set_dnd_targets __ARGS((void)); | ||
4853 | int gui_mch_init __ARGS((void)); | ||
4854 | void gui_mch_forked __ARGS((void)); | ||
4855 | void gui_mch_new_colors __ARGS((void)); | ||
4856 | *** ../vim-7.2.441/src/version.c 2010-05-30 16:55:17.000000000 +0200 | ||
4857 | --- src/version.c 2010-06-05 12:48:01.000000000 +0200 | ||
4858 | *************** | ||
4859 | *** 683,684 **** | ||
4860 | --- 683,686 ---- | ||
4861 | { /* Add new patch number below this line */ | ||
4862 | + /**/ | ||
4863 | + 442, | ||
4864 | /**/ | ||
4865 | |||
4866 | -- | ||
4867 | hundred-and-one symptoms of being an internet addict: | ||
4868 | 158. You get a tuner card so you can watch TV while surfing. | ||
4869 | |||
4870 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
4871 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
4872 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
4873 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
4874 | To: vim-dev@vim.org | ||
4875 | Subject: Patch 7.2.443 | ||
4876 | Fcc: outbox | ||
4877 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
4878 | Mime-Version: 1.0 | ||
4879 | Content-Type: text/plain; charset=UTF-8 | ||
4880 | Content-Transfer-Encoding: 8bit | ||
4881 | ------------ | ||
4882 | |||
4883 | Patch 7.2.443 | ||
4884 | Problem: Using taglist() on a tag file with duplicate fields generates an | ||
4885 | internal error. (Peter Odding) | ||
4886 | Solution: Check for duplicate field names. | ||
4887 | Files: src/eval.c, src/proto/eval.pro, src/tag.c | ||
4888 | |||
4889 | |||
4890 | *** ../vim-7.2.442/src/eval.c 2010-05-28 22:06:41.000000000 +0200 | ||
4891 | --- src/eval.c 2010-06-12 19:59:09.000000000 +0200 | ||
4892 | *************** | ||
4893 | *** 451,457 **** | ||
4894 | static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item)); | ||
4895 | static dict_T *dict_copy __ARGS((dict_T *orig, int deep, int copyID)); | ||
4896 | static long dict_len __ARGS((dict_T *d)); | ||
4897 | - static dictitem_T *dict_find __ARGS((dict_T *d, char_u *key, int len)); | ||
4898 | static char_u *dict2string __ARGS((typval_T *tv, int copyID)); | ||
4899 | static int get_dict_tv __ARGS((char_u **arg, typval_T *rettv, int evaluate)); | ||
4900 | static char_u *echo_string __ARGS((typval_T *tv, char_u **tofree, char_u *numbuf, int copyID)); | ||
4901 | --- 451,456 ---- | ||
4902 | *************** | ||
4903 | *** 7012,7018 **** | ||
4904 | * If "len" is negative use strlen(key). | ||
4905 | * Returns NULL when not found. | ||
4906 | */ | ||
4907 | ! static dictitem_T * | ||
4908 | dict_find(d, key, len) | ||
4909 | dict_T *d; | ||
4910 | char_u *key; | ||
4911 | --- 7011,7017 ---- | ||
4912 | * If "len" is negative use strlen(key). | ||
4913 | * Returns NULL when not found. | ||
4914 | */ | ||
4915 | ! dictitem_T * | ||
4916 | dict_find(d, key, len) | ||
4917 | dict_T *d; | ||
4918 | char_u *key; | ||
4919 | *** ../vim-7.2.442/src/proto/eval.pro 2010-01-19 15:51:29.000000000 +0100 | ||
4920 | --- src/proto/eval.pro 2010-06-12 19:59:13.000000000 +0200 | ||
4921 | *************** | ||
4922 | *** 56,61 **** | ||
4923 | --- 56,62 ---- | ||
4924 | void dictitem_free __ARGS((dictitem_T *item)); | ||
4925 | int dict_add __ARGS((dict_T *d, dictitem_T *item)); | ||
4926 | int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str)); | ||
4927 | + dictitem_T *dict_find __ARGS((dict_T *d, char_u *key, int len)); | ||
4928 | char_u *get_dict_string __ARGS((dict_T *d, char_u *key, int save)); | ||
4929 | long get_dict_number __ARGS((dict_T *d, char_u *key)); | ||
4930 | char_u *get_function_name __ARGS((expand_T *xp, int idx)); | ||
4931 | *** ../vim-7.2.442/src/tag.c 2010-02-24 14:46:58.000000000 +0100 | ||
4932 | --- src/tag.c 2010-06-12 20:01:45.000000000 +0200 | ||
4933 | *************** | ||
4934 | *** 3771,3777 **** | ||
4935 | static int add_tag_field __ARGS((dict_T *dict, char *field_name, char_u *start, char_u *end)); | ||
4936 | |||
4937 | /* | ||
4938 | ! * Add a tag field to the dictionary "dict" | ||
4939 | */ | ||
4940 | static int | ||
4941 | add_tag_field(dict, field_name, start, end) | ||
4942 | --- 3771,3778 ---- | ||
4943 | static int add_tag_field __ARGS((dict_T *dict, char *field_name, char_u *start, char_u *end)); | ||
4944 | |||
4945 | /* | ||
4946 | ! * Add a tag field to the dictionary "dict". | ||
4947 | ! * Return OK or FAIL. | ||
4948 | */ | ||
4949 | static int | ||
4950 | add_tag_field(dict, field_name, start, end) | ||
4951 | *************** | ||
4952 | *** 3783,3788 **** | ||
4953 | --- 3784,3800 ---- | ||
4954 | char_u buf[MAXPATHL]; | ||
4955 | int len = 0; | ||
4956 | |||
4957 | + /* check that the field name doesn't exist yet */ | ||
4958 | + if (dict_find(dict, (char_u *)field_name, -1) != NULL) | ||
4959 | + { | ||
4960 | + if (p_verbose > 0) | ||
4961 | + { | ||
4962 | + verbose_enter(); | ||
4963 | + smsg((char_u *)_("Duplicate field name: %s"), field_name); | ||
4964 | + verbose_leave(); | ||
4965 | + } | ||
4966 | + return FAIL; | ||
4967 | + } | ||
4968 | if (start != NULL) | ||
4969 | { | ||
4970 | if (end == NULL) | ||
4971 | *** ../vim-7.2.442/src/version.c 2010-06-05 12:49:40.000000000 +0200 | ||
4972 | --- src/version.c 2010-06-12 20:05:27.000000000 +0200 | ||
4973 | *************** | ||
4974 | *** 683,684 **** | ||
4975 | --- 683,686 ---- | ||
4976 | { /* Add new patch number below this line */ | ||
4977 | + /**/ | ||
4978 | + 443, | ||
4979 | /**/ | ||
4980 | |||
4981 | -- | ||
4982 | hundred-and-one symptoms of being an internet addict: | ||
4983 | 191. You rate eating establishments not by the quality of the food, | ||
4984 | but by the availability of electrical outlets for your PowerBook. | ||
4985 | |||
4986 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
4987 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
4988 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
4989 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
4990 | To: vim-dev@vim.org | ||
4991 | Subject: Patch 7.2.444 | ||
4992 | Fcc: outbox | ||
4993 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
4994 | Mime-Version: 1.0 | ||
4995 | Content-Type: text/plain; charset=UTF-8 | ||
4996 | Content-Transfer-Encoding: 8bit | ||
4997 | ------------ | ||
4998 | |||
4999 | Patch 7.2.444 (after 7.2.442) | ||
5000 | Problem: Can't build with GTK 1, gtk_selection_clear_targets() is not | ||
5001 | available. (Patrick Texier) | ||
5002 | Solution: Don't change the targets for GTK 1, set them once. | ||
5003 | Files: src/gui_gtk_x11.c, src/option.c | ||
5004 | |||
5005 | |||
5006 | *** ../vim-7.2.443/src/gui_gtk_x11.c 2010-06-05 12:49:40.000000000 +0200 | ||
5007 | --- src/gui_gtk_x11.c 2010-06-13 02:26:24.000000000 +0200 | ||
5008 | *************** | ||
5009 | *** 3478,3484 **** | ||
5010 | |||
5011 | for (i = 0; i < (int)N_SELECTION_TARGETS; ++i) | ||
5012 | { | ||
5013 | ! #ifdef FEAT_MBYTE | ||
5014 | /* OpenOffice tries to use TARGET_HTML and fails when it doesn't | ||
5015 | * return something, instead of trying another target. Therefore only | ||
5016 | * offer TARGET_HTML when it works. */ | ||
5017 | --- 3478,3484 ---- | ||
5018 | |||
5019 | for (i = 0; i < (int)N_SELECTION_TARGETS; ++i) | ||
5020 | { | ||
5021 | ! #if defined(FEAT_MBYTE) && defined(HAVE_GTK2) | ||
5022 | /* OpenOffice tries to use TARGET_HTML and fails when it doesn't | ||
5023 | * return something, instead of trying another target. Therefore only | ||
5024 | * offer TARGET_HTML when it works. */ | ||
5025 | *************** | ||
5026 | *** 3489,3496 **** | ||
5027 | --- 3489,3498 ---- | ||
5028 | targets[j++] = selection_targets[i]; | ||
5029 | } | ||
5030 | |||
5031 | + #ifdef HAVE_GTK2 /* GTK 1 doesn't have this function */ | ||
5032 | gtk_selection_clear_targets(gui.drawarea, (GdkAtom)GDK_SELECTION_PRIMARY); | ||
5033 | gtk_selection_clear_targets(gui.drawarea, (GdkAtom)clip_plus.gtk_sel_atom); | ||
5034 | + #endif | ||
5035 | gtk_selection_add_targets(gui.drawarea, | ||
5036 | (GdkAtom)GDK_SELECTION_PRIMARY, | ||
5037 | targets, n_targets); | ||
5038 | *** ../vim-7.2.443/src/option.c 2010-06-05 12:49:40.000000000 +0200 | ||
5039 | --- src/option.c 2010-06-13 02:27:36.000000000 +0200 | ||
5040 | *************** | ||
5041 | *** 7112,7118 **** | ||
5042 | clip_html = new_html; | ||
5043 | vim_free(clip_exclude_prog); | ||
5044 | clip_exclude_prog = new_exclude_prog; | ||
5045 | ! #ifdef FEAT_GUI_GTK | ||
5046 | if (gui.in_use) | ||
5047 | { | ||
5048 | gui_gtk_set_selection_targets(); | ||
5049 | --- 7112,7118 ---- | ||
5050 | clip_html = new_html; | ||
5051 | vim_free(clip_exclude_prog); | ||
5052 | clip_exclude_prog = new_exclude_prog; | ||
5053 | ! #ifdef HAVE_GTK2 /* for GTK 1 we can't change the list of targets */ | ||
5054 | if (gui.in_use) | ||
5055 | { | ||
5056 | gui_gtk_set_selection_targets(); | ||
5057 | *** ../vim-7.2.443/src/version.c 2010-06-12 20:11:53.000000000 +0200 | ||
5058 | --- src/version.c 2010-06-13 02:29:18.000000000 +0200 | ||
5059 | *************** | ||
5060 | *** 683,684 **** | ||
5061 | --- 683,686 ---- | ||
5062 | { /* Add new patch number below this line */ | ||
5063 | + /**/ | ||
5064 | + 444, | ||
5065 | /**/ | ||
5066 | |||
5067 | -- | ||
5068 | hundred-and-one symptoms of being an internet addict: | ||
5069 | 195. Your cat has its own home page. | ||
5070 | |||
5071 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
5072 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
5073 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
5074 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
5075 | To: vim-dev@vim.org | ||
5076 | Subject: Patch 7.2.445 | ||
5077 | Fcc: outbox | ||
5078 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
5079 | Mime-Version: 1.0 | ||
5080 | Content-Type: text/plain; charset=UTF-8 | ||
5081 | Content-Transfer-Encoding: 8bit | ||
5082 | ------------ | ||
5083 | |||
5084 | Patch 7.2.445 | ||
5085 | Problem: Crash when using undo/redo and a FileChangedRO autocmd event that | ||
5086 | reloads the buffer. (Dominique Pelle) | ||
5087 | Solution: Do not allow autocommands while performing and undo or redo. | ||
5088 | Files: src/misc1.c, src/undo.c | ||
5089 | |||
5090 | |||
5091 | *** ../vim-7.2.444/src/misc1.c 2010-03-23 18:22:40.000000000 +0100 | ||
5092 | --- src/misc1.c 2010-07-07 18:18:52.000000000 +0200 | ||
5093 | *************** | ||
5094 | *** 2467,2476 **** | ||
5095 | } | ||
5096 | |||
5097 | /* | ||
5098 | ! * changed() is called when something in the current buffer is changed. | ||
5099 | * | ||
5100 | * Most often called through changed_bytes() and changed_lines(), which also | ||
5101 | * mark the area of the display to be redrawn. | ||
5102 | */ | ||
5103 | void | ||
5104 | changed() | ||
5105 | --- 2467,2478 ---- | ||
5106 | } | ||
5107 | |||
5108 | /* | ||
5109 | ! * Call this function when something in the current buffer is changed. | ||
5110 | * | ||
5111 | * Most often called through changed_bytes() and changed_lines(), which also | ||
5112 | * mark the area of the display to be redrawn. | ||
5113 | + * | ||
5114 | + * Careful: may trigger autocommands that reload the buffer. | ||
5115 | */ | ||
5116 | void | ||
5117 | changed() | ||
5118 | *************** | ||
5119 | *** 2536,2541 **** | ||
5120 | --- 2538,2544 ---- | ||
5121 | * - marks the windows on this buffer to be redisplayed | ||
5122 | * - marks the buffer changed by calling changed() | ||
5123 | * - invalidates cached values | ||
5124 | + * Careful: may trigger autocommands that reload the buffer. | ||
5125 | */ | ||
5126 | void | ||
5127 | changed_bytes(lnum, col) | ||
5128 | *************** | ||
5129 | *** 2649,2654 **** | ||
5130 | --- 2652,2658 ---- | ||
5131 | * below the changed lines (BEFORE the change). | ||
5132 | * When only inserting lines, "lnum" and "lnume" are equal. | ||
5133 | * Takes care of calling changed() and updating b_mod_*. | ||
5134 | + * Careful: may trigger autocommands that reload the buffer. | ||
5135 | */ | ||
5136 | void | ||
5137 | changed_lines(lnum, col, lnume, xtra) | ||
5138 | *************** | ||
5139 | *** 2716,2721 **** | ||
5140 | --- 2720,2730 ---- | ||
5141 | } | ||
5142 | } | ||
5143 | |||
5144 | + /* | ||
5145 | + * Common code for when a change is was made. | ||
5146 | + * See changed_lines() for the arguments. | ||
5147 | + * Careful: may trigger autocommands that reload the buffer. | ||
5148 | + */ | ||
5149 | static void | ||
5150 | changed_common(lnum, col, lnume, xtra) | ||
5151 | linenr_T lnum; | ||
5152 | *************** | ||
5153 | *** 2966,2971 **** | ||
5154 | --- 2975,2981 ---- | ||
5155 | * Don't use emsg(), because it flushes the macro buffer. | ||
5156 | * If we have undone all changes b_changed will be FALSE, but "b_did_warn" | ||
5157 | * will be TRUE. | ||
5158 | + * Careful: may trigger autocommands that reload the buffer. | ||
5159 | */ | ||
5160 | void | ||
5161 | change_warning(col) | ||
5162 | *** ../vim-7.2.444/src/undo.c 2010-05-30 16:55:17.000000000 +0200 | ||
5163 | --- src/undo.c 2010-07-07 18:14:44.000000000 +0200 | ||
5164 | *************** | ||
5165 | *** 185,191 **** | ||
5166 | } | ||
5167 | } | ||
5168 | |||
5169 | ! void | ||
5170 | u_check(int newhead_may_be_NULL) | ||
5171 | { | ||
5172 | seen_b_u_newhead = 0; | ||
5173 | --- 185,191 ---- | ||
5174 | } | ||
5175 | } | ||
5176 | |||
5177 | ! static void | ||
5178 | u_check(int newhead_may_be_NULL) | ||
5179 | { | ||
5180 | seen_b_u_newhead = 0; | ||
5181 | *************** | ||
5182 | *** 320,325 **** | ||
5183 | --- 320,328 ---- | ||
5184 | return TRUE; | ||
5185 | } | ||
5186 | |||
5187 | + /* | ||
5188 | + * Common code for various ways to save text before a change. | ||
5189 | + */ | ||
5190 | static int | ||
5191 | u_savecommon(top, bot, newbot) | ||
5192 | linenr_T top, bot; | ||
5193 | *************** | ||
5194 | *** 374,380 **** | ||
5195 | size = bot - top - 1; | ||
5196 | |||
5197 | /* | ||
5198 | ! * if curbuf->b_u_synced == TRUE make a new header | ||
5199 | */ | ||
5200 | if (curbuf->b_u_synced) | ||
5201 | { | ||
5202 | --- 377,383 ---- | ||
5203 | size = bot - top - 1; | ||
5204 | |||
5205 | /* | ||
5206 | ! * If curbuf->b_u_synced == TRUE make a new header. | ||
5207 | */ | ||
5208 | if (curbuf->b_u_synced) | ||
5209 | { | ||
5210 | *************** | ||
5211 | *** 709,714 **** | ||
5212 | --- 712,723 ---- | ||
5213 | u_oldcount = -1; | ||
5214 | while (count--) | ||
5215 | { | ||
5216 | + /* Do the change warning now, so that it triggers FileChangedRO when | ||
5217 | + * needed. This may cause the file to be reloaded, that must happen | ||
5218 | + * before we do anything, because it may change curbuf->b_u_curhead | ||
5219 | + * and more. */ | ||
5220 | + change_warning(0); | ||
5221 | + | ||
5222 | if (undo_undoes) | ||
5223 | { | ||
5224 | if (curbuf->b_u_curhead == NULL) /* first undo */ | ||
5225 | *************** | ||
5226 | *** 952,959 **** | ||
5227 | /* | ||
5228 | * First go up the tree as much as needed. | ||
5229 | */ | ||
5230 | ! for (;;) | ||
5231 | { | ||
5232 | uhp = curbuf->b_u_curhead; | ||
5233 | if (uhp == NULL) | ||
5234 | uhp = curbuf->b_u_newhead; | ||
5235 | --- 961,971 ---- | ||
5236 | /* | ||
5237 | * First go up the tree as much as needed. | ||
5238 | */ | ||
5239 | ! while (!got_int) | ||
5240 | { | ||
5241 | + /* Do the change warning now, for the same reason as above. */ | ||
5242 | + change_warning(0); | ||
5243 | + | ||
5244 | uhp = curbuf->b_u_curhead; | ||
5245 | if (uhp == NULL) | ||
5246 | uhp = curbuf->b_u_newhead; | ||
5247 | *************** | ||
5248 | *** 970,978 **** | ||
5249 | /* | ||
5250 | * And now go down the tree (redo), branching off where needed. | ||
5251 | */ | ||
5252 | ! uhp = curbuf->b_u_curhead; | ||
5253 | ! while (uhp != NULL) | ||
5254 | { | ||
5255 | /* Go back to the first branch with a mark. */ | ||
5256 | while (uhp->uh_alt_prev != NULL | ||
5257 | && uhp->uh_alt_prev->uh_walk == mark) | ||
5258 | --- 982,996 ---- | ||
5259 | /* | ||
5260 | * And now go down the tree (redo), branching off where needed. | ||
5261 | */ | ||
5262 | ! while (!got_int) | ||
5263 | { | ||
5264 | + /* Do the change warning now, for the same reason as above. */ | ||
5265 | + change_warning(0); | ||
5266 | + | ||
5267 | + uhp = curbuf->b_u_curhead; | ||
5268 | + if (uhp == NULL) | ||
5269 | + break; | ||
5270 | + | ||
5271 | /* Go back to the first branch with a mark. */ | ||
5272 | while (uhp->uh_alt_prev != NULL | ||
5273 | && uhp->uh_alt_prev->uh_walk == mark) | ||
5274 | *************** | ||
5275 | *** 1070,1075 **** | ||
5276 | --- 1088,1099 ---- | ||
5277 | int empty_buffer; /* buffer became empty */ | ||
5278 | u_header_T *curhead = curbuf->b_u_curhead; | ||
5279 | |||
5280 | + #ifdef FEAT_AUTOCMD | ||
5281 | + /* Don't want autocommands using the undo structures here, they are | ||
5282 | + * invalid till the end. */ | ||
5283 | + block_autocmds(); | ||
5284 | + #endif | ||
5285 | + | ||
5286 | #ifdef U_DEBUG | ||
5287 | u_check(FALSE); | ||
5288 | #endif | ||
5289 | *************** | ||
5290 | *** 1099,1104 **** | ||
5291 | --- 1123,1131 ---- | ||
5292 | if (top > curbuf->b_ml.ml_line_count || top >= bot | ||
5293 | || bot > curbuf->b_ml.ml_line_count + 1) | ||
5294 | { | ||
5295 | + #ifdef FEAT_AUTOCMD | ||
5296 | + unblock_autocmds(); | ||
5297 | + #endif | ||
5298 | EMSG(_("E438: u_undo: line numbers wrong")); | ||
5299 | changed(); /* don't want UNCHANGED now */ | ||
5300 | return; | ||
5301 | *************** | ||
5302 | *** 1304,1309 **** | ||
5303 | --- 1331,1340 ---- | ||
5304 | /* The timestamp can be the same for multiple changes, just use the one of | ||
5305 | * the undone/redone change. */ | ||
5306 | curbuf->b_u_seq_time = curhead->uh_time; | ||
5307 | + | ||
5308 | + #ifdef FEAT_AUTOCMD | ||
5309 | + unblock_autocmds(); | ||
5310 | + #endif | ||
5311 | #ifdef U_DEBUG | ||
5312 | u_check(FALSE); | ||
5313 | #endif | ||
5314 | *** ../vim-7.2.444/src/version.c 2010-06-13 02:35:41.000000000 +0200 | ||
5315 | --- src/version.c 2010-07-07 18:18:27.000000000 +0200 | ||
5316 | *************** | ||
5317 | *** 683,684 **** | ||
5318 | --- 683,686 ---- | ||
5319 | { /* Add new patch number below this line */ | ||
5320 | + /**/ | ||
5321 | + 445, | ||
5322 | /**/ | ||
5323 | |||
5324 | -- | ||
5325 | A KNIGHT rides into shot and hacks him to the ground. He rides off. | ||
5326 | We stay for a moment on the glade. A MIDDLE-AGED LADY in a C. & A. | ||
5327 | twin-set emerges from the trees and looks in horror at the body of her | ||
5328 | HUSBAND. | ||
5329 | MRS HISTORIAN: FRANK! | ||
5330 | "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD | ||
5331 | |||
5332 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
5333 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
5334 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
5335 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
5336 | To: vim-dev@vim.org | ||
5337 | Subject: Patch 7.2.446 | ||
5338 | Fcc: outbox | ||
5339 | From: Bram Moolenaar <Bram@moolenaar.net> | ||
5340 | Mime-Version: 1.0 | ||
5341 | Content-Type: text/plain; charset=UTF-8 | ||
5342 | Content-Transfer-Encoding: 8bit | ||
5343 | ------------ | ||
5344 | |||
5345 | Patch 7.2.446 | ||
5346 | Problem: Crash in GUI when closing the last window in a tabpage. (ryo7000) | ||
5347 | Solution: Remove the tabpage from the list before freeing the window. | ||
5348 | Files: src/window.c | ||
5349 | |||
5350 | |||
5351 | *** ../vim-7.2.445/src/window.c 2010-03-17 16:54:51.000000000 +0100 | ||
5352 | --- src/window.c 2010-07-11 13:18:31.000000000 +0200 | ||
5353 | *************** | ||
5354 | *** 2304,2309 **** | ||
5355 | --- 2304,2310 ---- | ||
5356 | win_T *wp; | ||
5357 | int dir; | ||
5358 | tabpage_T *ptp = NULL; | ||
5359 | + int free_tp = FALSE; | ||
5360 | |||
5361 | /* Close the link to the buffer. */ | ||
5362 | close_buffer(win, win->w_buffer, free_buf ? DOBUF_UNLOAD : 0); | ||
5363 | *************** | ||
5364 | *** 2321,2331 **** | ||
5365 | if (wp == NULL) | ||
5366 | return; | ||
5367 | |||
5368 | - /* Free the memory used for the window. */ | ||
5369 | - wp = win_free_mem(win, &dir, tp); | ||
5370 | - | ||
5371 | /* When closing the last window in a tab page remove the tab page. */ | ||
5372 | ! if (wp == NULL) | ||
5373 | { | ||
5374 | if (tp == first_tabpage) | ||
5375 | first_tabpage = tp->tp_next; | ||
5376 | --- 2322,2329 ---- | ||
5377 | if (wp == NULL) | ||
5378 | return; | ||
5379 | |||
5380 | /* When closing the last window in a tab page remove the tab page. */ | ||
5381 | ! if (tp == NULL ? firstwin == lastwin : tp->tp_firstwin == tp->tp_lastwin) | ||
5382 | { | ||
5383 | if (tp == first_tabpage) | ||
5384 | first_tabpage = tp->tp_next; | ||
5385 | *************** | ||
5386 | *** 2341,2348 **** | ||
5387 | } | ||
5388 | ptp->tp_next = tp->tp_next; | ||
5389 | } | ||
5390 | ! free_tabpage(tp); | ||
5391 | } | ||
5392 | } | ||
5393 | |||
5394 | /* | ||
5395 | --- 2339,2352 ---- | ||
5396 | } | ||
5397 | ptp->tp_next = tp->tp_next; | ||
5398 | } | ||
5399 | ! free_tp = TRUE; | ||
5400 | } | ||
5401 | + | ||
5402 | + /* Free the memory used for the window. */ | ||
5403 | + win_free_mem(win, &dir, tp); | ||
5404 | + | ||
5405 | + if (free_tp) | ||
5406 | + free_tabpage(tp); | ||
5407 | } | ||
5408 | |||
5409 | /* | ||
5410 | *** ../vim-7.2.445/src/version.c 2010-07-07 18:20:21.000000000 +0200 | ||
5411 | --- src/version.c 2010-07-12 21:36:05.000000000 +0200 | ||
5412 | *************** | ||
5413 | *** 683,684 **** | ||
5414 | --- 683,686 ---- | ||
5415 | { /* Add new patch number below this line */ | ||
5416 | + /**/ | ||
5417 | + 446, | ||
5418 | /**/ | ||
5419 | |||
5420 | -- | ||
5421 | Not too long ago, compress was something you did to garbage... | ||
5422 | |||
5423 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | ||
5424 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | ||
5425 | \\\ download, build and distribute -- http://www.A-A-P.org /// | ||
5426 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// | ||
diff --git a/meta-oe/recipes-support/vim/vim.inc b/meta-oe/recipes-support/vim/vim.inc index bb3e56aae..12e8c1e0f 100644 --- a/meta-oe/recipes-support/vim/vim.inc +++ b/meta-oe/recipes-support/vim/vim.inc | |||
@@ -4,20 +4,16 @@ DEPENDS = "ncurses" | |||
4 | # vimdiff doesn't like busybox diff | 4 | # vimdiff doesn't like busybox diff |
5 | RSUGGESTS_${PN} = "diffutils" | 5 | RSUGGESTS_${PN} = "diffutils" |
6 | LICENSE = "vim" | 6 | LICENSE = "vim" |
7 | LIC_FILES_CHKSUM = "file://../runtime/doc/uganda.txt;md5=cd49910a3dde6fe0a7e24ebe8cbf7066" | 7 | LIC_FILES_CHKSUM = "file://../runtime/doc/uganda.txt;md5=4c91d841bb7b75f68b5bb8ad7118f5b8" |
8 | 8 | ||
9 | PV_MAJOR = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}" | 9 | PV_MAJOR = "${@d.getVar('PV',1).split('.')[0]}.${@d.getVar('PV',1).split('.')[1]}" |
10 | VIMDIR = "${PN}${@d.getVar('PV',1).split('.')[0]}${@d.getVar('PV',1).split('.')[1]}" | 10 | VIMDIR = "${PN}${@d.getVar('PV',1).split('.')[0]}${@d.getVar('PV',1).split('.')[1]}" |
11 | 11 | ||
12 | INC_PR = "r13" | 12 | INC_PR = "r13" |
13 | 13 | ||
14 | SRC_URI = " \ | 14 | SRC_URI = "hg://vim.googlecode.com/hg/;protocol=https;module=vim" |
15 | ftp://ftp.${PN}.org/pub/${PN}/unix/${PN}-${PV_MAJOR}.tar.bz2;name=${VIMDIR} \ | ||
16 | ftp://ftp.${PN}.org/pub/${PN}/extra/${PN}-${PV_MAJOR}-extra.tar.gz;name=${VIMDIR}-extra \ | ||
17 | ftp://ftp.${PN}.org/pub/${PN}/extra/${PN}-${PV_MAJOR}-lang.tar.gz;name=${VIMDIR}-lang \ | ||
18 | " | ||
19 | 15 | ||
20 | S = "${WORKDIR}/${VIMDIR}/src" | 16 | S = "${WORKDIR}/${PN}/src" |
21 | 17 | ||
22 | inherit autotools update-alternatives | 18 | inherit autotools update-alternatives |
23 | 19 | ||
diff --git a/meta-oe/recipes-support/vim/vim_7.2.446.bb b/meta-oe/recipes-support/vim/vim_7.2.446.bb deleted file mode 100644 index ef9f3c9f8..000000000 --- a/meta-oe/recipes-support/vim/vim_7.2.446.bb +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | require ${PN}.inc | ||
2 | |||
3 | PR = "${INC_PR}.0" | ||
4 | |||
5 | # 001-446; 401-446 are not yet available online | ||
6 | SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.001-100.gz;name=p001-100;apply=yes;patchdir=..;pnum=0" | ||
7 | SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.101-200.gz;name=p101-200;apply=yes;patchdir=..;pnum=0" | ||
8 | SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.201-300.gz;name=p201-300;apply=yes;patchdir=..;pnum=0" | ||
9 | SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.301-400.gz;name=p301-400;apply=yes;patchdir=..;pnum=0" | ||
10 | SRC_URI += "file://401-446.diff;patchdir=..;pnum=0" | ||
11 | |||
12 | SRC_URI[vim72.md5sum] = "f0901284b338e448bfd79ccca0041254" | ||
13 | SRC_URI[vim72.sha256sum] = "914db0f2205ebd6f02878295ec2506036ea7500399db112c61a01491cd9a1d86" | ||
14 | SRC_URI[vim72-lang.md5sum] = "d8884786979e0e520c112faf2e176f05" | ||
15 | SRC_URI[vim72-lang.sha256sum] = "11607f539a4518b550bf1606b7d3a6f36c1ffdf566c058e7d94bced78034cd5b" | ||
16 | SRC_URI[vim72-extra.md5sum] = "35e04482f07c57221c9a751aaa3b8dac" | ||
17 | SRC_URI[vim72-extra.sha256sum] = "20894ac79672160bfc4f1d2f9f9775b34d944762d655307a91ca96d358faa04d" | ||
18 | |||
19 | SRC_URI[p001-100.md5sum] = "ba91b19374cee90f71b8f4ab1d92dc0f" | ||
20 | SRC_URI[p001-100.sha256sum] = "519f4fea460e4f7a737ea8006c0dc1684982f8372d1581fb963a5d58f8007f67" | ||
21 | SRC_URI[p101-200.md5sum] = "b485233d360041d043c56cd99057dbff" | ||
22 | SRC_URI[p101-200.sha256sum] = "0a6e25e454706377f8a6babe4da99c6eab7e71a63d28ad9b24aa5c170522bac3" | ||
23 | SRC_URI[p201-300.md5sum] = "069fb537772a8e4a74119d8a6a7e61f3" | ||
24 | SRC_URI[p201-300.sha256sum] = "a11bad3a4e167501c62f0212d3b8935a73a1ae378c5d6ed73a477a71f57baffa" | ||
25 | SRC_URI[p301-400.md5sum] = "137b5821ff4a2266796d14d867be5f9f" | ||
26 | SRC_URI[p301-400.sha256sum] = "41f022ec829786a008685c0b00acf8be09525755a94a06236a4b879b1f84b5f4" | ||
27 | |||
28 | SRC_URI += "file://configure.in_remove_CC_quotes.patch;patchdir=.." | ||
diff --git a/meta-oe/recipes-support/vim/vim_7.3.905.bb b/meta-oe/recipes-support/vim/vim_7.3.905.bb new file mode 100644 index 000000000..f5b145368 --- /dev/null +++ b/meta-oe/recipes-support/vim/vim_7.3.905.bb | |||
@@ -0,0 +1,7 @@ | |||
1 | require ${PN}.inc | ||
2 | |||
3 | PR = "${INC_PR}.0" | ||
4 | |||
5 | SRCREV = "v7-3-905" | ||
6 | |||
7 | SRC_URI += "file://configure.in_remove_CC_quotes.patch;patchdir=.." | ||