diff options
author | Michael Lippautz <michael.lippautz@gmail.com> | 2011-04-18 20:13:59 +0200 |
---|---|---|
committer | Michael Lippautz <michael.lippautz@gmail.com> | 2011-04-18 20:59:07 +0200 |
commit | 55fccdc2be50ccbce3137abd658f5d1f95af6d60 (patch) | |
tree | f42ed08f5991cfafd191964bbb70fef23789fb46 /meta-oe/recipes-support/vim | |
parent | 02e3e6814c3c74050c9cdca48523a2496772bc4a (diff) | |
download | meta-openembedded-55fccdc2be50ccbce3137abd658f5d1f95af6d60.tar.gz |
vim: Add vim/tiny-vim/gvim 7.2 (patchset 446)
Changes from org.oe.dev:
* Include latest (stable) patchset
* Change from RCONFLICTS to RREPLACES where possible (gvim->vim->tiny-vim)
Signed-off-by: Michael Lippautz <michael.lippautz@gmail.com>
Diffstat (limited to 'meta-oe/recipes-support/vim')
-rw-r--r-- | meta-oe/recipes-support/vim/files/401-446.diff | 5426 | ||||
-rw-r--r-- | meta-oe/recipes-support/vim/files/configure.in_remove_CC_quotes.patch | 17 | ||||
-rw-r--r-- | meta-oe/recipes-support/vim/files/vimrc | 96 | ||||
-rw-r--r-- | meta-oe/recipes-support/vim/gvim_7.2.446.bb | 10 | ||||
-rw-r--r-- | meta-oe/recipes-support/vim/vim-tiny_7.2.446.bb | 5 | ||||
-rw-r--r-- | meta-oe/recipes-support/vim/vim.inc | 77 | ||||
-rw-r--r-- | meta-oe/recipes-support/vim/vim_7.2.446.bb | 41 |
7 files changed, 5672 insertions, 0 deletions
diff --git a/meta-oe/recipes-support/vim/files/401-446.diff b/meta-oe/recipes-support/vim/files/401-446.diff new file mode 100644 index 000000000..fa163fc75 --- /dev/null +++ b/meta-oe/recipes-support/vim/files/401-446.diff | |||
@@ -0,0 +1,5426 @@ | |||
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/files/configure.in_remove_CC_quotes.patch b/meta-oe/recipes-support/vim/files/configure.in_remove_CC_quotes.patch new file mode 100644 index 000000000..c8cfe8ee0 --- /dev/null +++ b/meta-oe/recipes-support/vim/files/configure.in_remove_CC_quotes.patch | |||
@@ -0,0 +1,17 @@ | |||
1 | upstream: http://groups.google.com/group/vim_dev/browse_thread/thread/5685c3b859e3c793# | ||
2 | status: reported upstream | ||
3 | --- vim72-orig/src/configure.in 2010-09-29 19:13:33.000000000 +0200 | ||
4 | +++ vim72/src/configure.in 2010-09-29 19:17:07.000000000 +0200 | ||
5 | @@ -35,10 +35,10 @@ | ||
6 | fi | ||
7 | if test "$GCC" = yes; then | ||
8 | dnl method that should work for nearly all versions | ||
9 | - gccversion=`"$CC" -dumpversion` | ||
10 | + gccversion=`$CC -dumpversion` | ||
11 | if test "x$gccversion" = "x"; then | ||
12 | dnl old method; fall-back for when -dumpversion doesn't work | ||
13 | - gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'` | ||
14 | + gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'` | ||
15 | fi | ||
16 | dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki | ||
17 | if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then | ||
diff --git a/meta-oe/recipes-support/vim/files/vimrc b/meta-oe/recipes-support/vim/files/vimrc new file mode 100644 index 000000000..df65555af --- /dev/null +++ b/meta-oe/recipes-support/vim/files/vimrc | |||
@@ -0,0 +1,96 @@ | |||
1 | " An example for a vimrc file. | ||
2 | " | ||
3 | " Maintainer: Bram Moolenaar <Bram@vim.org> | ||
4 | " Last change: 2008 Jul 02 | ||
5 | " | ||
6 | " To use it, copy it to | ||
7 | " for Unix and OS/2: ~/.vimrc | ||
8 | " for Amiga: s:.vimrc | ||
9 | " for MS-DOS and Win32: $VIM\_vimrc | ||
10 | " for OpenVMS: sys$login:.vimrc | ||
11 | |||
12 | " When started as "evim", evim.vim will already have done these settings. | ||
13 | if v:progname =~? "evim" | ||
14 | finish | ||
15 | endif | ||
16 | |||
17 | " Use Vim settings, rather then Vi settings (much better!). | ||
18 | " This must be first, because it changes other options as a side effect. | ||
19 | set nocompatible | ||
20 | |||
21 | " allow backspacing over everything in insert mode | ||
22 | set backspace=indent,eol,start | ||
23 | |||
24 | if has("vms") | ||
25 | set nobackup " do not keep a backup file, use versions instead | ||
26 | else | ||
27 | set backup " keep a backup file | ||
28 | endif | ||
29 | set history=50 " keep 50 lines of command line history | ||
30 | set ruler " show the cursor position all the time | ||
31 | set showcmd " display incomplete commands | ||
32 | set incsearch " do incremental searching | ||
33 | |||
34 | " For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries | ||
35 | " let &guioptions = substitute(&guioptions, "t", "", "g") | ||
36 | |||
37 | " Don't use Ex mode, use Q for formatting | ||
38 | map Q gq | ||
39 | |||
40 | " CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, | ||
41 | " so that you can undo CTRL-U after inserting a line break. | ||
42 | inoremap <C-U> <C-G>u<C-U> | ||
43 | |||
44 | " In many terminal emulators the mouse works just fine, thus enable it. | ||
45 | if has('mouse') | ||
46 | set mouse=a | ||
47 | endif | ||
48 | |||
49 | " Switch syntax highlighting on, when the terminal has colors | ||
50 | " Also switch on highlighting the last used search pattern. | ||
51 | "if &t_Co > 2 || has("gui_running") | ||
52 | " syntax on | ||
53 | " set hlsearch | ||
54 | "endif | ||
55 | |||
56 | " Only do this part when compiled with support for autocommands. | ||
57 | if has("autocmd") | ||
58 | |||
59 | " Enable file type detection. | ||
60 | " Use the default filetype settings, so that mail gets 'tw' set to 72, | ||
61 | " 'cindent' is on in C files, etc. | ||
62 | " Also load indent files, to automatically do language-dependent indenting. | ||
63 | filetype plugin indent on | ||
64 | |||
65 | " Put these in an autocmd group, so that we can delete them easily. | ||
66 | augroup vimrcEx | ||
67 | au! | ||
68 | |||
69 | " For all text files set 'textwidth' to 78 characters. | ||
70 | autocmd FileType text setlocal textwidth=78 | ||
71 | |||
72 | " When editing a file, always jump to the last known cursor position. | ||
73 | " Don't do it when the position is invalid or when inside an event handler | ||
74 | " (happens when dropping a file on gvim). | ||
75 | " Also don't do it when the mark is in the first line, that is the default | ||
76 | " position when opening a file. | ||
77 | autocmd BufReadPost * | ||
78 | \ if line("'\"") > 1 && line("'\"") <= line("$") | | ||
79 | \ exe "normal! g`\"" | | ||
80 | \ endif | ||
81 | |||
82 | augroup END | ||
83 | |||
84 | else | ||
85 | |||
86 | set autoindent " always set autoindenting on | ||
87 | |||
88 | endif " has("autocmd") | ||
89 | |||
90 | " Convenient command to see the difference between the current buffer and the | ||
91 | " file it was loaded from, thus the changes you made. | ||
92 | " Only define it when not defined already. | ||
93 | if !exists(":DiffOrig") | ||
94 | command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | ||
95 | \ | wincmd p | diffthis | ||
96 | endif | ||
diff --git a/meta-oe/recipes-support/vim/gvim_7.2.446.bb b/meta-oe/recipes-support/vim/gvim_7.2.446.bb new file mode 100644 index 000000000..94215b474 --- /dev/null +++ b/meta-oe/recipes-support/vim/gvim_7.2.446.bb | |||
@@ -0,0 +1,10 @@ | |||
1 | VIMGUI = "gtk2" | ||
2 | VIMX = "--with-x" | ||
3 | |||
4 | require vim_${PV}.bb | ||
5 | |||
6 | DEPENDS += "gtk+ xt" | ||
7 | |||
8 | EXTRA_OECONF += "--enable-gtk2-test" | ||
9 | |||
10 | RREPLACES_${PN} = "vim vim-tiny" | ||
diff --git a/meta-oe/recipes-support/vim/vim-tiny_7.2.446.bb b/meta-oe/recipes-support/vim/vim-tiny_7.2.446.bb new file mode 100644 index 000000000..25a9205eb --- /dev/null +++ b/meta-oe/recipes-support/vim/vim-tiny_7.2.446.bb | |||
@@ -0,0 +1,5 @@ | |||
1 | VIMFEATURES = "tiny" | ||
2 | |||
3 | require vim_${PV}.bb | ||
4 | |||
5 | RCONFLICTS_${PN} = "gvim vim" | ||
diff --git a/meta-oe/recipes-support/vim/vim.inc b/meta-oe/recipes-support/vim/vim.inc new file mode 100644 index 000000000..43924f347 --- /dev/null +++ b/meta-oe/recipes-support/vim/vim.inc | |||
@@ -0,0 +1,77 @@ | |||
1 | DESCRIPTION = "Vi IMproved - enhanced vi editor" | ||
2 | SECTION = "console/utils" | ||
3 | DEPENDS = "ncurses" | ||
4 | # vimdiff doesn't like busybox diff | ||
5 | RSUGGESTS_${PN} = "diffutils" | ||
6 | LICENSE = "vim" | ||
7 | LIC_FILES_CHKSUM = "file://README.txt;md5=72c4840d07b65659b60b3fa405c7da36" | ||
8 | |||
9 | PV_MAJOR = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}" | ||
10 | VIMDIR = "${@bb.data.getVar('PV',d,1).split('.')[0]}${@bb.data.getVar('PV',d,1).split('.')[1]}" | ||
11 | |||
12 | INC_PR = "r10" | ||
13 | |||
14 | SRC_URI = " \ | ||
15 | ftp://ftp.vim.org/pub/vim/unix/vim-${PV_MAJOR}.tar.bz2;name=vim${PV_MAJOR}tarbz2 \ | ||
16 | ftp://ftp.vim.org/pub/vim/extra/vim-${PV_MAJOR}-extra.tar.gz;name=vim${PV_MAJOR}extratargz \ | ||
17 | ftp://ftp.vim.org/pub/vim/extra/vim-${PV_MAJOR}-lang.tar.gz;name=vim${PV_MAJOR}langtargz \ | ||
18 | " | ||
19 | |||
20 | S = "${WORKDIR}/vim${VIMDIR}/src" | ||
21 | |||
22 | inherit autotools update-alternatives | ||
23 | |||
24 | # vim configure.in contains functions which got 'dropped' by autotools.bbclass | ||
25 | do_configure () { | ||
26 | rm -f auto/* | ||
27 | touch auto/config.mk | ||
28 | aclocal | ||
29 | autoconf | ||
30 | oe_runconf | ||
31 | touch auto/configure | ||
32 | touch auto/config.mk auto/config.h | ||
33 | } | ||
34 | |||
35 | |||
36 | |||
37 | VIMFEATURES ?= "big" | ||
38 | VIMX ?= "--without-x" | ||
39 | VIMGUI ?= "no" | ||
40 | |||
41 | EXTRA_OECONF = " \ | ||
42 | --enable-gui=${VIMGUI} \ | ||
43 | --with-features=${VIMFEATURES} \ | ||
44 | ${VIMX} \ | ||
45 | --disable-gpm \ | ||
46 | --disable-gtktest \ | ||
47 | --disable-xim \ | ||
48 | --disable-netbeans \ | ||
49 | --with-tlib=ncurses \ | ||
50 | ac_cv_small_wchar_t=no \ | ||
51 | vim_cv_getcwd_broken=no \ | ||
52 | vim_cv_memmove_handles_overlap=yes \ | ||
53 | vim_cv_stat_ignores_slash=no \ | ||
54 | vim_cv_terminfo=yes \ | ||
55 | vim_cv_tgent=non-zero \ | ||
56 | vim_cv_toupper_broken=no \ | ||
57 | vim_cv_tty_group=world \ | ||
58 | " | ||
59 | |||
60 | PACKAGES =+ "vim-common vim-syntax vim-help vim-tutor" | ||
61 | FILES_vim-syntax = "${datadir}/vim/vim${VIMVER}/syntax" | ||
62 | FILES_vim-help = "${datadir}/vim/vim${VIMVER}/doc" | ||
63 | FILES_vim-tutor = "${datadir}/vim/vim${VIMVER}/tutor ${bindir}/vimtutor" | ||
64 | |||
65 | ALTERNATIVE_NAME = "vi" | ||
66 | ALTERNATIVE_PATH = "${bindir}/vim" | ||
67 | ALTERNATIVE_LINK = "${base_bindir}/vi" | ||
68 | ALTERNATIVE_PRIORITY = "100" | ||
69 | |||
70 | SRC_URI[vim7.2tarbz2.md5sum] = "f0901284b338e448bfd79ccca0041254" | ||
71 | SRC_URI[vim7.2tarbz2.sha256sum] = "914db0f2205ebd6f02878295ec2506036ea7500399db112c61a01491cd9a1d86" | ||
72 | SRC_URI[vim7.2langtargz.md5sum] = "d8884786979e0e520c112faf2e176f05" | ||
73 | SRC_URI[vim7.2langtargz.sha256sum] = "11607f539a4518b550bf1606b7d3a6f36c1ffdf566c058e7d94bced78034cd5b" | ||
74 | SRC_URI[vim7.2extratargz.md5sum] = "35e04482f07c57221c9a751aaa3b8dac" | ||
75 | SRC_URI[vim7.2extratargz.sha256sum] = "20894ac79672160bfc4f1d2f9f9775b34d944762d655307a91ca96d358faa04d" | ||
76 | |||
77 | PARALLEL_MAKE = "" | ||
diff --git a/meta-oe/recipes-support/vim/vim_7.2.446.bb b/meta-oe/recipes-support/vim/vim_7.2.446.bb new file mode 100644 index 000000000..62d76d709 --- /dev/null +++ b/meta-oe/recipes-support/vim/vim_7.2.446.bb | |||
@@ -0,0 +1,41 @@ | |||
1 | # vim-tiny sets that too | ||
2 | VIMFEATURES ?= "big" | ||
3 | |||
4 | # GUI type - gvim recipe sets "gtk2" | ||
5 | VIMGUI ?= "no" | ||
6 | |||
7 | # gvim recipes uses "--with-x" | ||
8 | VIMX ?= "--without-x" | ||
9 | |||
10 | require vim.inc | ||
11 | |||
12 | PR = "${INC_PR}.3" | ||
13 | |||
14 | # 001-446; 401-446 are not yet available online | ||
15 | SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.001-100.gz;name=p001-100;apply=yes;patchdir=..;pnum=0" | ||
16 | SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.101-200.gz;name=p101-200;apply=yes;patchdir=..;pnum=0" | ||
17 | SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.201-300.gz;name=p201-300;apply=yes;patchdir=..;pnum=0" | ||
18 | SRC_URI += "http://ftp.vim.org/pub/vim/patches/7.2/7.2.301-400.gz;name=p301-400;apply=yes;patchdir=..;pnum=0" | ||
19 | SRC_URI += "file://401-446.diff;patchdir=..;pnum=0" | ||
20 | |||
21 | SRC_URI[p001-100.md5sum] = "ba91b19374cee90f71b8f4ab1d92dc0f" | ||
22 | SRC_URI[p001-100.sha256sum] = "519f4fea460e4f7a737ea8006c0dc1684982f8372d1581fb963a5d58f8007f67" | ||
23 | SRC_URI[p101-200.md5sum] = "b485233d360041d043c56cd99057dbff" | ||
24 | SRC_URI[p101-200.sha256sum] = "0a6e25e454706377f8a6babe4da99c6eab7e71a63d28ad9b24aa5c170522bac3" | ||
25 | SRC_URI[p201-300.md5sum] = "069fb537772a8e4a74119d8a6a7e61f3" | ||
26 | SRC_URI[p201-300.sha256sum] = "a11bad3a4e167501c62f0212d3b8935a73a1ae378c5d6ed73a477a71f57baffa" | ||
27 | SRC_URI[p301-400.md5sum] = "137b5821ff4a2266796d14d867be5f9f" | ||
28 | SRC_URI[p301-400.sha256sum] = "41f022ec829786a008685c0b00acf8be09525755a94a06236a4b879b1f84b5f4" | ||
29 | |||
30 | SRC_URI += "file://configure.in_remove_CC_quotes.patch;patchdir=.." | ||
31 | SRC_URI += "file://vimrc" | ||
32 | |||
33 | do_install_append() { | ||
34 | install -m 0644 ${WORKDIR}/vimrc ${D}/${datadir}/vim | ||
35 | } | ||
36 | |||
37 | RCONFLICTS_${PN} = "gvim" | ||
38 | RREPLACES_${PN} = "vim-tiny" | ||
39 | PACKAGES =+ "${PN}-vimrc" | ||
40 | |||
41 | FILES_${PN}-vimrc = "${datadir}/vim/vimrc" | ||