Mercurial > vim
annotate src/version.c @ 5899:60cdaa05a6ad v7.4.292
updated for version 7.4.292
Problem: Searching for "a" does not match accented "a" with new regexp
engine, does match with old engine. (David B?rgin)
"ca" does not match "ca" with accented "a" with either engine.
Solution: Change the old engine, check for following composing character
also for single-byte patterns.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 13 May 2014 18:04:00 +0200 |
parents | b5972833add9 |
children | 10fc95f48546 |
rev | line source |
---|---|
7 | 1 /* vi:set ts=8 sts=4 sw=4: |
2 * | |
3 * VIM - Vi IMproved by Bram Moolenaar | |
4 * | |
5 * Do ":help uganda" in Vim to read copying and usage conditions. | |
6 * Do ":help credits" in Vim to see a list of people who contributed. | |
7 * See README.txt for an overview of the Vim source code. | |
8 */ | |
9 | |
10 #include "vim.h" | |
11 | |
12 #ifdef AMIGA | |
13 # include <time.h> /* for time() */ | |
14 #endif | |
15 | |
16 /* | |
17 * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred) | |
18 * It has been changed beyond recognition since then. | |
19 * | |
26 | 20 * Differences between version 6.x and 7.x can be found with ":help version7". |
7 | 21 * Differences between version 5.x and 6.x can be found with ":help version6". |
22 * Differences between version 4.x and 5.x can be found with ":help version5". | |
23 * Differences between version 3.0 and 4.x can be found with ":help version4". | |
24 * All the remarks about older versions have been removed, they are not very | |
25 * interesting. | |
26 */ | |
27 | |
28 #include "version.h" | |
29 | |
378 | 30 char *Version = VIM_VERSION_SHORT; |
31 static char *mediumVersion = VIM_VERSION_MEDIUM; | |
7 | 32 |
33 #if defined(HAVE_DATE_TIME) || defined(PROTO) | |
34 # if (defined(VMS) && defined(VAXC)) || defined(PROTO) | |
35 char longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__) | |
36 + sizeof(__TIME__) + 3]; | |
4147 | 37 |
7 | 38 void |
39 make_version() | |
40 { | |
41 /* | |
42 * Construct the long version string. Necessary because | |
43 * VAX C can't catenate strings in the preprocessor. | |
44 */ | |
45 strcpy(longVersion, VIM_VERSION_LONG_DATE); | |
46 strcat(longVersion, __DATE__); | |
47 strcat(longVersion, " "); | |
48 strcat(longVersion, __TIME__); | |
49 strcat(longVersion, ")"); | |
50 } | |
51 # else | |
52 char *longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")"; | |
53 # endif | |
54 #else | |
55 char *longVersion = VIM_VERSION_LONG; | |
56 #endif | |
57 | |
5166
467efeee8f9e
updated for version 7.4a.009
Bram Moolenaar <bram@vim.org>
parents:
5164
diff
changeset
|
58 static void list_features __ARGS((void)); |
7 | 59 static void version_msg __ARGS((char *s)); |
60 | |
61 static char *(features[]) = | |
62 { | |
5316 | 63 #ifdef HAVE_ACL |
64 "+acl", | |
65 #else | |
66 "-acl", | |
67 #endif | |
7 | 68 #ifdef AMIGA /* only for Amiga systems */ |
69 # ifdef FEAT_ARP | |
70 "+ARP", | |
71 # else | |
72 "-ARP", | |
73 # endif | |
74 #endif | |
75 #ifdef FEAT_ARABIC | |
76 "+arabic", | |
77 #else | |
78 "-arabic", | |
79 #endif | |
80 #ifdef FEAT_AUTOCMD | |
81 "+autocmd", | |
82 #else | |
83 "-autocmd", | |
84 #endif | |
85 #ifdef FEAT_BEVAL | |
86 "+balloon_eval", | |
87 #else | |
88 "-balloon_eval", | |
89 #endif | |
90 #ifdef FEAT_BROWSE | |
91 "+browse", | |
92 #else | |
93 "-browse", | |
94 #endif | |
95 #ifdef NO_BUILTIN_TCAPS | |
96 "-builtin_terms", | |
97 #endif | |
98 #ifdef SOME_BUILTIN_TCAPS | |
99 "+builtin_terms", | |
100 #endif | |
101 #ifdef ALL_BUILTIN_TCAPS | |
102 "++builtin_terms", | |
103 #endif | |
104 #ifdef FEAT_BYTEOFF | |
105 "+byte_offset", | |
106 #else | |
107 "-byte_offset", | |
108 #endif | |
109 #ifdef FEAT_CINDENT | |
110 "+cindent", | |
111 #else | |
112 "-cindent", | |
113 #endif | |
114 #ifdef FEAT_CLIENTSERVER | |
115 "+clientserver", | |
116 #else | |
117 "-clientserver", | |
118 #endif | |
119 #ifdef FEAT_CLIPBOARD | |
120 "+clipboard", | |
121 #else | |
122 "-clipboard", | |
123 #endif | |
124 #ifdef FEAT_CMDL_COMPL | |
125 "+cmdline_compl", | |
126 #else | |
127 "-cmdline_compl", | |
128 #endif | |
129 #ifdef FEAT_CMDHIST | |
130 "+cmdline_hist", | |
131 #else | |
132 "-cmdline_hist", | |
133 #endif | |
134 #ifdef FEAT_CMDL_INFO | |
135 "+cmdline_info", | |
136 #else | |
137 "-cmdline_info", | |
138 #endif | |
139 #ifdef FEAT_COMMENTS | |
140 "+comments", | |
141 #else | |
142 "-comments", | |
143 #endif | |
2250
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
144 #ifdef FEAT_CONCEAL |
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
145 "+conceal", |
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
146 #else |
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
147 "-conceal", |
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
148 #endif |
7 | 149 #ifdef FEAT_CRYPT |
150 "+cryptv", | |
151 #else | |
152 "-cryptv", | |
153 #endif | |
154 #ifdef FEAT_CSCOPE | |
155 "+cscope", | |
156 #else | |
157 "-cscope", | |
158 #endif | |
2250
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
159 #ifdef FEAT_CURSORBIND |
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
160 "+cursorbind", |
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
161 #else |
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
162 "-cursorbind", |
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
163 #endif |
647 | 164 #ifdef CURSOR_SHAPE |
165 "+cursorshape", | |
166 #else | |
167 "-cursorshape", | |
168 #endif | |
7 | 169 #if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG) |
170 "+dialog_con_gui", | |
171 #else | |
172 # if defined(FEAT_CON_DIALOG) | |
173 "+dialog_con", | |
174 # else | |
175 # if defined(FEAT_GUI_DIALOG) | |
176 "+dialog_gui", | |
177 # else | |
178 "-dialog", | |
179 # endif | |
180 # endif | |
181 #endif | |
182 #ifdef FEAT_DIFF | |
183 "+diff", | |
184 #else | |
185 "-diff", | |
186 #endif | |
187 #ifdef FEAT_DIGRAPHS | |
188 "+digraphs", | |
189 #else | |
190 "-digraphs", | |
191 #endif | |
192 #ifdef FEAT_DND | |
193 "+dnd", | |
194 #else | |
195 "-dnd", | |
196 #endif | |
197 #ifdef EBCDIC | |
198 "+ebcdic", | |
199 #else | |
200 "-ebcdic", | |
201 #endif | |
202 #ifdef FEAT_EMACS_TAGS | |
203 "+emacs_tags", | |
204 #else | |
205 "-emacs_tags", | |
206 #endif | |
207 #ifdef FEAT_EVAL | |
208 "+eval", | |
209 #else | |
210 "-eval", | |
211 #endif | |
212 #ifdef FEAT_EX_EXTRA | |
213 "+ex_extra", | |
214 #else | |
215 "-ex_extra", | |
216 #endif | |
217 #ifdef FEAT_SEARCH_EXTRA | |
218 "+extra_search", | |
219 #else | |
220 "-extra_search", | |
221 #endif | |
222 #ifdef FEAT_FKMAP | |
223 "+farsi", | |
224 #else | |
225 "-farsi", | |
226 #endif | |
227 #ifdef FEAT_SEARCHPATH | |
228 "+file_in_path", | |
229 #else | |
230 "-file_in_path", | |
231 #endif | |
232 #ifdef FEAT_FIND_ID | |
233 "+find_in_path", | |
234 #else | |
235 "-find_in_path", | |
236 #endif | |
1621 | 237 #ifdef FEAT_FLOAT |
238 "+float", | |
239 #else | |
240 "-float", | |
241 #endif | |
7 | 242 #ifdef FEAT_FOLDING |
243 "+folding", | |
244 #else | |
245 "-folding", | |
246 #endif | |
247 #ifdef FEAT_FOOTER | |
248 "+footer", | |
249 #else | |
250 "-footer", | |
251 #endif | |
252 /* only interesting on Unix systems */ | |
253 #if !defined(USE_SYSTEM) && defined(UNIX) | |
254 "+fork()", | |
255 #endif | |
256 #ifdef FEAT_GETTEXT | |
257 # ifdef DYNAMIC_GETTEXT | |
258 "+gettext/dyn", | |
259 # else | |
260 "+gettext", | |
261 # endif | |
262 #else | |
263 "-gettext", | |
264 #endif | |
265 #ifdef FEAT_HANGULIN | |
266 "+hangul_input", | |
267 #else | |
268 "-hangul_input", | |
269 #endif | |
270 #if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV) | |
271 # ifdef DYNAMIC_ICONV | |
272 "+iconv/dyn", | |
273 # else | |
274 "+iconv", | |
275 # endif | |
276 #else | |
277 "-iconv", | |
278 #endif | |
279 #ifdef FEAT_INS_EXPAND | |
280 "+insert_expand", | |
281 #else | |
282 "-insert_expand", | |
283 #endif | |
284 #ifdef FEAT_JUMPLIST | |
285 "+jumplist", | |
286 #else | |
287 "-jumplist", | |
288 #endif | |
289 #ifdef FEAT_KEYMAP | |
290 "+keymap", | |
291 #else | |
292 "-keymap", | |
293 #endif | |
294 #ifdef FEAT_LANGMAP | |
295 "+langmap", | |
296 #else | |
297 "-langmap", | |
298 #endif | |
299 #ifdef FEAT_LIBCALL | |
300 "+libcall", | |
301 #else | |
302 "-libcall", | |
303 #endif | |
304 #ifdef FEAT_LINEBREAK | |
305 "+linebreak", | |
306 #else | |
307 "-linebreak", | |
308 #endif | |
309 #ifdef FEAT_LISP | |
310 "+lispindent", | |
311 #else | |
312 "-lispindent", | |
313 #endif | |
314 #ifdef FEAT_LISTCMDS | |
315 "+listcmds", | |
316 #else | |
317 "-listcmds", | |
318 #endif | |
319 #ifdef FEAT_LOCALMAP | |
320 "+localmap", | |
321 #else | |
322 "-localmap", | |
323 #endif | |
2320
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2275
diff
changeset
|
324 #ifdef FEAT_LUA |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2275
diff
changeset
|
325 # ifdef DYNAMIC_LUA |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2275
diff
changeset
|
326 "+lua/dyn", |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2275
diff
changeset
|
327 # else |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2275
diff
changeset
|
328 "+lua", |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2275
diff
changeset
|
329 # endif |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2275
diff
changeset
|
330 #else |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2275
diff
changeset
|
331 "-lua", |
966a5609669e
Added Lua interfae. (Luis Carvalho)
Bram Moolenaar <bram@vim.org>
parents:
2275
diff
changeset
|
332 #endif |
7 | 333 #ifdef FEAT_MENU |
334 "+menu", | |
335 #else | |
336 "-menu", | |
337 #endif | |
338 #ifdef FEAT_SESSION | |
339 "+mksession", | |
340 #else | |
341 "-mksession", | |
342 #endif | |
343 #ifdef FEAT_MODIFY_FNAME | |
344 "+modify_fname", | |
345 #else | |
346 "-modify_fname", | |
347 #endif | |
348 #ifdef FEAT_MOUSE | |
349 "+mouse", | |
350 # ifdef FEAT_MOUSESHAPE | |
351 "+mouseshape", | |
352 # else | |
353 "-mouseshape", | |
354 # endif | |
355 # else | |
356 "-mouse", | |
357 #endif | |
3898 | 358 |
7 | 359 #if defined(UNIX) || defined(VMS) |
360 # ifdef FEAT_MOUSE_DEC | |
361 "+mouse_dec", | |
362 # else | |
363 "-mouse_dec", | |
364 # endif | |
365 # ifdef FEAT_MOUSE_GPM | |
366 "+mouse_gpm", | |
367 # else | |
368 "-mouse_gpm", | |
369 # endif | |
370 # ifdef FEAT_MOUSE_JSB | |
371 "+mouse_jsbterm", | |
372 # else | |
373 "-mouse_jsbterm", | |
374 # endif | |
375 # ifdef FEAT_MOUSE_NET | |
376 "+mouse_netterm", | |
377 # else | |
378 "-mouse_netterm", | |
379 # endif | |
380 #endif | |
3898 | 381 |
7 | 382 #ifdef __QNX__ |
383 # ifdef FEAT_MOUSE_PTERM | |
384 "+mouse_pterm", | |
385 # else | |
386 "-mouse_pterm", | |
387 # endif | |
388 #endif | |
3898 | 389 |
390 #if defined(UNIX) || defined(VMS) | |
391 # ifdef FEAT_MOUSE_SGR | |
392 "+mouse_sgr", | |
393 # else | |
394 "-mouse_sgr", | |
395 # endif | |
396 # ifdef FEAT_SYSMOUSE | |
397 "+mouse_sysmouse", | |
398 # else | |
399 "-mouse_sysmouse", | |
400 # endif | |
401 # ifdef FEAT_MOUSE_URXVT | |
402 "+mouse_urxvt", | |
403 # else | |
404 "-mouse_urxvt", | |
405 # endif | |
406 # ifdef FEAT_MOUSE_XTERM | |
407 "+mouse_xterm", | |
408 # else | |
409 "-mouse_xterm", | |
410 # endif | |
411 #endif | |
412 | |
7 | 413 #ifdef FEAT_MBYTE_IME |
414 # ifdef DYNAMIC_IME | |
415 "+multi_byte_ime/dyn", | |
416 # else | |
417 "+multi_byte_ime", | |
418 # endif | |
419 #else | |
420 # ifdef FEAT_MBYTE | |
421 "+multi_byte", | |
422 # else | |
423 "-multi_byte", | |
424 # endif | |
425 #endif | |
426 #ifdef FEAT_MULTI_LANG | |
427 "+multi_lang", | |
428 #else | |
429 "-multi_lang", | |
430 #endif | |
14 | 431 #ifdef FEAT_MZSCHEME |
132 | 432 # ifdef DYNAMIC_MZSCHEME |
433 "+mzscheme/dyn", | |
434 # else | |
14 | 435 "+mzscheme", |
132 | 436 # endif |
14 | 437 #else |
438 "-mzscheme", | |
439 #endif | |
7 | 440 #ifdef FEAT_NETBEANS_INTG |
441 "+netbeans_intg", | |
442 #else | |
443 "-netbeans_intg", | |
444 #endif | |
445 #ifdef FEAT_GUI_W32 | |
446 # ifdef FEAT_OLE | |
447 "+ole", | |
448 # else | |
449 "-ole", | |
450 # endif | |
451 #endif | |
452 #ifdef FEAT_PATH_EXTRA | |
453 "+path_extra", | |
454 #else | |
455 "-path_extra", | |
456 #endif | |
457 #ifdef FEAT_PERL | |
458 # ifdef DYNAMIC_PERL | |
459 "+perl/dyn", | |
460 # else | |
461 "+perl", | |
462 # endif | |
463 #else | |
464 "-perl", | |
465 #endif | |
2214
f8222d1f9a73
Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
466 #ifdef FEAT_PERSISTENT_UNDO |
f8222d1f9a73
Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
467 "+persistent_undo", |
f8222d1f9a73
Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
468 #else |
f8222d1f9a73
Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
469 "-persistent_undo", |
f8222d1f9a73
Included patch for persistent undo. Lots of changes and added test.
Bram Moolenaar <bram@vim.org>
parents:
2154
diff
changeset
|
470 #endif |
7 | 471 #ifdef FEAT_PRINTER |
472 # ifdef FEAT_POSTSCRIPT | |
473 "+postscript", | |
474 # else | |
475 "-postscript", | |
476 # endif | |
477 "+printer", | |
478 #else | |
479 "-printer", | |
480 #endif | |
170 | 481 #ifdef FEAT_PROFILE |
482 "+profile", | |
483 #else | |
484 "-profile", | |
485 #endif | |
7 | 486 #ifdef FEAT_PYTHON |
487 # ifdef DYNAMIC_PYTHON | |
488 "+python/dyn", | |
489 # else | |
490 "+python", | |
491 # endif | |
492 #else | |
493 "-python", | |
494 #endif | |
2329
ad2889f48843
Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
495 #ifdef FEAT_PYTHON3 |
ad2889f48843
Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
496 # ifdef DYNAMIC_PYTHON3 |
ad2889f48843
Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
497 "+python3/dyn", |
ad2889f48843
Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
498 # else |
ad2889f48843
Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
499 "+python3", |
ad2889f48843
Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
500 # endif |
ad2889f48843
Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
501 #else |
ad2889f48843
Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
502 "-python3", |
ad2889f48843
Added support for Python 3. (Roland Puntaier)
Bram Moolenaar <bram@vim.org>
parents:
2320
diff
changeset
|
503 #endif |
7 | 504 #ifdef FEAT_QUICKFIX |
505 "+quickfix", | |
506 #else | |
507 "-quickfix", | |
508 #endif | |
857 | 509 #ifdef FEAT_RELTIME |
510 "+reltime", | |
511 #else | |
512 "-reltime", | |
513 #endif | |
7 | 514 #ifdef FEAT_RIGHTLEFT |
515 "+rightleft", | |
516 #else | |
517 "-rightleft", | |
518 #endif | |
519 #ifdef FEAT_RUBY | |
520 # ifdef DYNAMIC_RUBY | |
521 "+ruby/dyn", | |
522 # else | |
523 "+ruby", | |
524 # endif | |
525 #else | |
526 "-ruby", | |
527 #endif | |
528 #ifdef FEAT_SCROLLBIND | |
529 "+scrollbind", | |
530 #else | |
531 "-scrollbind", | |
532 #endif | |
533 #ifdef FEAT_SIGNS | |
534 "+signs", | |
535 #else | |
536 "-signs", | |
537 #endif | |
538 #ifdef FEAT_SMARTINDENT | |
539 "+smartindent", | |
540 #else | |
541 "-smartindent", | |
542 #endif | |
543 #ifdef FEAT_SNIFF | |
544 "+sniff", | |
545 #else | |
546 "-sniff", | |
547 #endif | |
1989 | 548 #ifdef STARTUPTIME |
549 "+startuptime", | |
550 #else | |
551 "-startuptime", | |
552 #endif | |
7 | 553 #ifdef FEAT_STL_OPT |
554 "+statusline", | |
555 #else | |
556 "-statusline", | |
557 #endif | |
558 #ifdef FEAT_SUN_WORKSHOP | |
559 "+sun_workshop", | |
560 #else | |
561 "-sun_workshop", | |
562 #endif | |
563 #ifdef FEAT_SYN_HL | |
564 "+syntax", | |
565 #else | |
566 "-syntax", | |
567 #endif | |
568 /* only interesting on Unix systems */ | |
569 #if defined(USE_SYSTEM) && (defined(UNIX) || defined(__EMX__)) | |
570 "+system()", | |
571 #endif | |
572 #ifdef FEAT_TAG_BINS | |
573 "+tag_binary", | |
574 #else | |
575 "-tag_binary", | |
576 #endif | |
577 #ifdef FEAT_TAG_OLDSTATIC | |
578 "+tag_old_static", | |
579 #else | |
580 "-tag_old_static", | |
581 #endif | |
582 #ifdef FEAT_TAG_ANYWHITE | |
583 "+tag_any_white", | |
584 #else | |
585 "-tag_any_white", | |
586 #endif | |
587 #ifdef FEAT_TCL | |
588 # ifdef DYNAMIC_TCL | |
589 "+tcl/dyn", | |
590 # else | |
591 "+tcl", | |
592 # endif | |
593 #else | |
594 "-tcl", | |
595 #endif | |
596 #if defined(UNIX) || defined(__EMX__) | |
597 /* only Unix (or OS/2 with EMX!) can have terminfo instead of termcap */ | |
598 # ifdef TERMINFO | |
599 "+terminfo", | |
600 # else | |
601 "-terminfo", | |
602 # endif | |
603 #else /* unix always includes termcap support */ | |
604 # ifdef HAVE_TGETENT | |
605 "+tgetent", | |
606 # else | |
607 "-tgetent", | |
608 # endif | |
609 #endif | |
610 #ifdef FEAT_TERMRESPONSE | |
611 "+termresponse", | |
612 #else | |
613 "-termresponse", | |
614 #endif | |
615 #ifdef FEAT_TEXTOBJ | |
616 "+textobjects", | |
617 #else | |
618 "-textobjects", | |
619 #endif | |
620 #ifdef FEAT_TITLE | |
621 "+title", | |
622 #else | |
623 "-title", | |
624 #endif | |
625 #ifdef FEAT_TOOLBAR | |
626 "+toolbar", | |
627 #else | |
628 "-toolbar", | |
629 #endif | |
630 #ifdef FEAT_USR_CMDS | |
631 "+user_commands", | |
632 #else | |
633 "-user_commands", | |
634 #endif | |
635 #ifdef FEAT_VERTSPLIT | |
636 "+vertsplit", | |
637 #else | |
638 "-vertsplit", | |
639 #endif | |
640 #ifdef FEAT_VIRTUALEDIT | |
641 "+virtualedit", | |
642 #else | |
643 "-virtualedit", | |
644 #endif | |
645 "+visual", | |
5735 | 646 #ifdef FEAT_VISUALEXTRA |
7 | 647 "+visualextra", |
5735 | 648 #else |
7 | 649 "-visualextra", |
650 #endif | |
651 #ifdef FEAT_VIMINFO | |
652 "+viminfo", | |
653 #else | |
654 "-viminfo", | |
655 #endif | |
656 #ifdef FEAT_VREPLACE | |
657 "+vreplace", | |
658 #else | |
659 "-vreplace", | |
660 #endif | |
661 #ifdef FEAT_WILDIGN | |
662 "+wildignore", | |
663 #else | |
664 "-wildignore", | |
665 #endif | |
666 #ifdef FEAT_WILDMENU | |
667 "+wildmenu", | |
668 #else | |
669 "-wildmenu", | |
670 #endif | |
671 #ifdef FEAT_WINDOWS | |
672 "+windows", | |
673 #else | |
674 "-windows", | |
675 #endif | |
676 #ifdef FEAT_WRITEBACKUP | |
677 "+writebackup", | |
678 #else | |
679 "-writebackup", | |
680 #endif | |
681 #if defined(UNIX) || defined(VMS) | |
682 # ifdef FEAT_X11 | |
683 "+X11", | |
684 # else | |
685 "-X11", | |
686 # endif | |
687 #endif | |
688 #ifdef FEAT_XFONTSET | |
689 "+xfontset", | |
690 #else | |
691 "-xfontset", | |
692 #endif | |
693 #ifdef FEAT_XIM | |
694 "+xim", | |
695 #else | |
696 "-xim", | |
697 #endif | |
698 #if defined(UNIX) || defined(VMS) | |
699 # ifdef USE_XSMP_INTERACT | |
700 "+xsmp_interact", | |
701 # else | |
702 # ifdef USE_XSMP | |
703 "+xsmp", | |
704 # else | |
705 "-xsmp", | |
706 # endif | |
707 # endif | |
708 # ifdef FEAT_XCLIPBOARD | |
709 "+xterm_clipboard", | |
710 # else | |
711 "-xterm_clipboard", | |
712 # endif | |
713 #endif | |
714 #ifdef FEAT_XTERM_SAVE | |
715 "+xterm_save", | |
716 #else | |
717 "-xterm_save", | |
718 #endif | |
719 #ifdef WIN3264 | |
720 # ifdef FEAT_XPM_W32 | |
721 "+xpm_w32", | |
722 # else | |
723 "-xpm_w32", | |
724 # endif | |
5316 | 725 #else |
726 # ifdef HAVE_XPM | |
727 "+xpm", | |
728 # else | |
729 "-xpm", | |
730 # endif | |
7 | 731 #endif |
732 NULL | |
733 }; | |
734 | |
735 static int included_patches[] = | |
736 { /* Add new patch number below this line */ | |
737 /**/ | |
5899 | 738 292, |
739 /**/ | |
5897 | 740 291, |
741 /**/ | |
5895 | 742 290, |
743 /**/ | |
5893 | 744 289, |
745 /**/ | |
5891 | 746 288, |
747 /**/ | |
5889 | 748 287, |
749 /**/ | |
5887 | 750 286, |
751 /**/ | |
5885 | 752 285, |
753 /**/ | |
5883 | 754 284, |
755 /**/ | |
5881 | 756 283, |
757 /**/ | |
5879 | 758 282, |
759 /**/ | |
5877 | 760 281, |
761 /**/ | |
5875 | 762 280, |
763 /**/ | |
5873 | 764 279, |
765 /**/ | |
5871 | 766 278, |
767 /**/ | |
5869 | 768 277, |
769 /**/ | |
5867 | 770 276, |
771 /**/ | |
5865 | 772 275, |
773 /**/ | |
5863 | 774 274, |
775 /**/ | |
5860 | 776 273, |
777 /**/ | |
5858 | 778 272, |
779 /**/ | |
5856 | 780 271, |
781 /**/ | |
5854 | 782 270, |
783 /**/ | |
5852 | 784 269, |
785 /**/ | |
5850 | 786 268, |
787 /**/ | |
5848 | 788 267, |
789 /**/ | |
5846 | 790 266, |
791 /**/ | |
5844 | 792 265, |
793 /**/ | |
5842 | 794 264, |
795 /**/ | |
5840 | 796 263, |
797 /**/ | |
5838 | 798 262, |
799 /**/ | |
5836 | 800 261, |
801 /**/ | |
5834 | 802 260, |
803 /**/ | |
5832 | 804 259, |
805 /**/ | |
5830 | 806 258, |
807 /**/ | |
5828 | 808 257, |
809 /**/ | |
5826 | 810 256, |
811 /**/ | |
5824 | 812 255, |
813 /**/ | |
5822 | 814 254, |
815 /**/ | |
5820 | 816 253, |
817 /**/ | |
5818 | 818 252, |
819 /**/ | |
5816 | 820 251, |
821 /**/ | |
5812 | 822 250, |
823 /**/ | |
5810 | 824 249, |
825 /**/ | |
5808 | 826 248, |
827 /**/ | |
5806 | 828 247, |
829 /**/ | |
5804 | 830 246, |
831 /**/ | |
5802 | 832 245, |
833 /**/ | |
5800 | 834 244, |
835 /**/ | |
5798 | 836 243, |
837 /**/ | |
5796 | 838 242, |
839 /**/ | |
5794 | 840 241, |
841 /**/ | |
5792 | 842 240, |
843 /**/ | |
5790 | 844 239, |
845 /**/ | |
5788 | 846 238, |
847 /**/ | |
5786 | 848 237, |
849 /**/ | |
5784 | 850 236, |
851 /**/ | |
5782 | 852 235, |
853 /**/ | |
5780 | 854 234, |
855 /**/ | |
5778 | 856 233, |
857 /**/ | |
5776 | 858 232, |
859 /**/ | |
5774 | 860 231, |
861 /**/ | |
5772 | 862 230, |
863 /**/ | |
5770 | 864 229, |
865 /**/ | |
5768 | 866 228, |
867 /**/ | |
5766 | 868 227, |
869 /**/ | |
5764 | 870 226, |
871 /**/ | |
5761 | 872 225, |
873 /**/ | |
5759 | 874 224, |
875 /**/ | |
5757 | 876 223, |
877 /**/ | |
5755 | 878 222, |
879 /**/ | |
5753 | 880 221, |
881 /**/ | |
5751 | 882 220, |
883 /**/ | |
5749 | 884 219, |
885 /**/ | |
5747 | 886 218, |
887 /**/ | |
5745 | 888 217, |
889 /**/ | |
5743 | 890 216, |
891 /**/ | |
5741 | 892 215, |
893 /**/ | |
5739 | 894 214, |
895 /**/ | |
5737 | 896 213, |
897 /**/ | |
5735 | 898 212, |
899 /**/ | |
5732 | 900 211, |
901 /**/ | |
5730 | 902 210, |
903 /**/ | |
5728 | 904 209, |
905 /**/ | |
5726 | 906 208, |
907 /**/ | |
5724 | 908 207, |
909 /**/ | |
5722 | 910 206, |
911 /**/ | |
5720 | 912 205, |
913 /**/ | |
5718 | 914 204, |
915 /**/ | |
5716 | 916 203, |
917 /**/ | |
5714 | 918 202, |
919 /**/ | |
5712 | 920 201, |
921 /**/ | |
5710 | 922 200, |
923 /**/ | |
5708 | 924 199, |
925 /**/ | |
5706 | 926 198, |
927 /**/ | |
5704 | 928 197, |
929 /**/ | |
5702 | 930 196, |
931 /**/ | |
5700 | 932 195, |
933 /**/ | |
5698 | 934 194, |
935 /**/ | |
5695 | 936 193, |
937 /**/ | |
5693 | 938 192, |
939 /**/ | |
5690 | 940 191, |
941 /**/ | |
5688 | 942 190, |
943 /**/ | |
5686 | 944 189, |
945 /**/ | |
5684 | 946 188, |
947 /**/ | |
5682 | 948 187, |
949 /**/ | |
5680 | 950 186, |
951 /**/ | |
5678 | 952 185, |
953 /**/ | |
5676 | 954 184, |
955 /**/ | |
5674 | 956 183, |
957 /**/ | |
5672 | 958 182, |
959 /**/ | |
5670 | 960 181, |
961 /**/ | |
5668 | 962 180, |
963 /**/ | |
5666 | 964 179, |
965 /**/ | |
5664 | 966 178, |
967 /**/ | |
5661 | 968 177, |
969 /**/ | |
5659 | 970 176, |
971 /**/ | |
5657 | 972 175, |
973 /**/ | |
5655 | 974 174, |
975 /**/ | |
5653 | 976 173, |
977 /**/ | |
5651 | 978 172, |
979 /**/ | |
5649 | 980 171, |
981 /**/ | |
5647 | 982 170, |
983 /**/ | |
5645 | 984 169, |
985 /**/ | |
5643 | 986 168, |
987 /**/ | |
5641 | 988 167, |
989 /**/ | |
5639 | 990 166, |
991 /**/ | |
5637 | 992 165, |
993 /**/ | |
5635 | 994 164, |
995 /**/ | |
5633 | 996 163, |
997 /**/ | |
5631 | 998 162, |
999 /**/ | |
5629 | 1000 161, |
1001 /**/ | |
5627 | 1002 160, |
1003 /**/ | |
5625 | 1004 159, |
1005 /**/ | |
5623 | 1006 158, |
1007 /**/ | |
5621 | 1008 157, |
1009 /**/ | |
5619 | 1010 156, |
1011 /**/ | |
5616 | 1012 155, |
1013 /**/ | |
5614 | 1014 154, |
1015 /**/ | |
5612 | 1016 153, |
1017 /**/ | |
5610 | 1018 152, |
1019 /**/ | |
5608 | 1020 151, |
1021 /**/ | |
5606 | 1022 150, |
1023 /**/ | |
5604 | 1024 149, |
1025 /**/ | |
5602 | 1026 148, |
1027 /**/ | |
5600 | 1028 147, |
1029 /**/ | |
5598 | 1030 146, |
1031 /**/ | |
5596 | 1032 145, |
1033 /**/ | |
5594 | 1034 144, |
1035 /**/ | |
5592 | 1036 143, |
1037 /**/ | |
5590 | 1038 142, |
1039 /**/ | |
5588 | 1040 141, |
1041 /**/ | |
5586 | 1042 140, |
1043 /**/ | |
5584 | 1044 139, |
1045 /**/ | |
5582 | 1046 138, |
1047 /**/ | |
5580 | 1048 137, |
1049 /**/ | |
5578 | 1050 136, |
1051 /**/ | |
5575 | 1052 135, |
1053 /**/ | |
5573 | 1054 134, |
1055 /**/ | |
5571 | 1056 133, |
1057 /**/ | |
5569 | 1058 132, |
1059 /**/ | |
5566 | 1060 131, |
1061 /**/ | |
5564 | 1062 130, |
1063 /**/ | |
5562 | 1064 129, |
1065 /**/ | |
5560 | 1066 128, |
1067 /**/ | |
5558 | 1068 127, |
1069 /**/ | |
5556 | 1070 126, |
1071 /**/ | |
5553 | 1072 125, |
1073 /**/ | |
5551 | 1074 124, |
1075 /**/ | |
5549 | 1076 123, |
1077 /**/ | |
5547 | 1078 122, |
1079 /**/ | |
5545 | 1080 121, |
1081 /**/ | |
5543 | 1082 120, |
1083 /**/ | |
5541 | 1084 119, |
1085 /**/ | |
5539 | 1086 118, |
1087 /**/ | |
5537 | 1088 117, |
1089 /**/ | |
5535 | 1090 116, |
1091 /**/ | |
5533 | 1092 115, |
1093 /**/ | |
5531 | 1094 114, |
1095 /**/ | |
5529 | 1096 113, |
1097 /**/ | |
5527 | 1098 112, |
1099 /**/ | |
5525 | 1100 111, |
1101 /**/ | |
5523 | 1102 110, |
1103 /**/ | |
5521 | 1104 109, |
1105 /**/ | |
5519 | 1106 108, |
1107 /**/ | |
5517 | 1108 107, |
1109 /**/ | |
5515 | 1110 106, |
1111 /**/ | |
5513 | 1112 105, |
1113 /**/ | |
5511 | 1114 104, |
1115 /**/ | |
5508 | 1116 103, |
1117 /**/ | |
5506 | 1118 102, |
1119 /**/ | |
5504 | 1120 101, |
1121 /**/ | |
5502 | 1122 100, |
1123 /**/ | |
5500 | 1124 99, |
1125 /**/ | |
5498 | 1126 98, |
1127 /**/ | |
5496 | 1128 97, |
1129 /**/ | |
5494 | 1130 96, |
1131 /**/ | |
5492 | 1132 95, |
1133 /**/ | |
5490 | 1134 94, |
1135 /**/ | |
5488 | 1136 93, |
1137 /**/ | |
5485 | 1138 92, |
1139 /**/ | |
5483 | 1140 91, |
1141 /**/ | |
5481 | 1142 90, |
1143 /**/ | |
5479 | 1144 89, |
1145 /**/ | |
5477 | 1146 88, |
1147 /**/ | |
5475 | 1148 87, |
1149 /**/ | |
5473 | 1150 86, |
1151 /**/ | |
5471 | 1152 85, |
1153 /**/ | |
5469 | 1154 84, |
1155 /**/ | |
5467 | 1156 83, |
1157 /**/ | |
5464 | 1158 82, |
1159 /**/ | |
5462 | 1160 81, |
1161 /**/ | |
5460 | 1162 80, |
1163 /**/ | |
5458 | 1164 79, |
1165 /**/ | |
5456 | 1166 78, |
1167 /**/ | |
5454 | 1168 77, |
1169 /**/ | |
5452 | 1170 76, |
1171 /**/ | |
5450 | 1172 75, |
1173 /**/ | |
5448 | 1174 74, |
1175 /**/ | |
5446 | 1176 73, |
1177 /**/ | |
5444 | 1178 72, |
1179 /**/ | |
5442 | 1180 71, |
1181 /**/ | |
5440 | 1182 70, |
1183 /**/ | |
5438 | 1184 69, |
1185 /**/ | |
5436 | 1186 68, |
1187 /**/ | |
5434 | 1188 67, |
1189 /**/ | |
5432 | 1190 66, |
1191 /**/ | |
5430 | 1192 65, |
1193 /**/ | |
5428 | 1194 64, |
1195 /**/ | |
5426 | 1196 63, |
1197 /**/ | |
5423 | 1198 62, |
1199 /**/ | |
5421 | 1200 61, |
1201 /**/ | |
5419 | 1202 60, |
1203 /**/ | |
5417 | 1204 59, |
1205 /**/ | |
5415 | 1206 58, |
1207 /**/ | |
5413 | 1208 57, |
1209 /**/ | |
5411 | 1210 56, |
1211 /**/ | |
5409 | 1212 55, |
1213 /**/ | |
5407 | 1214 54, |
1215 /**/ | |
5405 | 1216 53, |
1217 /**/ | |
5403 | 1218 52, |
1219 /**/ | |
5401 | 1220 51, |
1221 /**/ | |
5398 | 1222 50, |
1223 /**/ | |
5396 | 1224 49, |
1225 /**/ | |
5394 | 1226 48, |
1227 /**/ | |
5392 | 1228 47, |
1229 /**/ | |
5390 | 1230 46, |
1231 /**/ | |
5388 | 1232 45, |
1233 /**/ | |
5386 | 1234 44, |
1235 /**/ | |
5384 | 1236 43, |
1237 /**/ | |
5382 | 1238 42, |
1239 /**/ | |
5380 | 1240 41, |
1241 /**/ | |
5378 | 1242 40, |
1243 /**/ | |
5376 | 1244 39, |
1245 /**/ | |
5374 | 1246 38, |
1247 /**/ | |
5372 | 1248 37, |
1249 /**/ | |
5370 | 1250 36, |
1251 /**/ | |
5367 | 1252 35, |
1253 /**/ | |
5365 | 1254 34, |
1255 /**/ | |
5363 | 1256 33, |
1257 /**/ | |
5360 | 1258 32, |
1259 /**/ | |
5358 | 1260 31, |
1261 /**/ | |
5356 | 1262 30, |
1263 /**/ | |
5353 | 1264 29, |
1265 /**/ | |
5351 | 1266 28, |
1267 /**/ | |
5349 | 1268 27, |
1269 /**/ | |
5347 | 1270 26, |
1271 /**/ | |
5345 | 1272 25, |
1273 /**/ | |
5343 | 1274 24, |
1275 /**/ | |
5341 | 1276 23, |
1277 /**/ | |
5338 | 1278 22, |
1279 /**/ | |
5336 | 1280 21, |
1281 /**/ | |
5334 | 1282 20, |
1283 /**/ | |
5332 | 1284 19, |
1285 /**/ | |
5330 | 1286 18, |
1287 /**/ | |
5328 | 1288 17, |
1289 /**/ | |
5326 | 1290 16, |
1291 /**/ | |
5324 | 1292 15, |
1293 /**/ | |
5322 | 1294 14, |
1295 /**/ | |
5320 | 1296 13, |
1297 /**/ | |
5318 | 1298 12, |
1299 /**/ | |
5316 | 1300 11, |
1301 /**/ | |
5314 | 1302 10, |
1303 /**/ | |
5312 | 1304 9, |
1305 /**/ | |
5310 | 1306 8, |
1307 /**/ | |
5308 | 1308 7, |
1309 /**/ | |
5306 | 1310 6, |
1311 /**/ | |
5304 | 1312 5, |
1313 /**/ | |
5302 | 1314 4, |
1315 /**/ | |
5300 | 1316 3, |
1317 /**/ | |
5298 | 1318 2, |
1319 /**/ | |
5296 | 1320 1, |
1321 /**/ | |
7 | 1322 0 |
1323 }; | |
1324 | |
1760 | 1325 /* |
1326 * Place to put a short description when adding a feature with a patch. | |
1327 * Keep it short, e.g.,: "relative numbers", "persistent undo". | |
1328 * Also add a comment marker to separate the lines. | |
1329 * See the official Vim patches for the diff format: It must use a context of | |
1777 | 1330 * one line only. Create it by hand or use "diff -C2" and edit the patch. |
1760 | 1331 */ |
1332 static char *(extra_patches[]) = | |
1333 { /* Add your patch description below this line */ | |
1334 /**/ | |
1335 NULL | |
1336 }; | |
1337 | |
7 | 1338 int |
1339 highest_patch() | |
1340 { | |
1341 int i; | |
1342 int h = 0; | |
1343 | |
1344 for (i = 0; included_patches[i] != 0; ++i) | |
1345 if (included_patches[i] > h) | |
1346 h = included_patches[i]; | |
1347 return h; | |
1348 } | |
1349 | |
1350 #if defined(FEAT_EVAL) || defined(PROTO) | |
1351 /* | |
1352 * Return TRUE if patch "n" has been included. | |
1353 */ | |
1354 int | |
1355 has_patch(n) | |
1356 int n; | |
1357 { | |
1358 int i; | |
1359 | |
1360 for (i = 0; included_patches[i] != 0; ++i) | |
1361 if (included_patches[i] == n) | |
1362 return TRUE; | |
1363 return FALSE; | |
1364 } | |
1365 #endif | |
1366 | |
1367 void | |
1368 ex_version(eap) | |
1369 exarg_T *eap; | |
1370 { | |
1371 /* | |
1372 * Ignore a ":version 9.99" command. | |
1373 */ | |
1374 if (*eap->arg == NUL) | |
1375 { | |
1376 msg_putchar('\n'); | |
1377 list_version(); | |
1378 } | |
1379 } | |
1380 | |
4147 | 1381 /* |
1382 * List all features aligned in columns, dictionary style. | |
1383 */ | |
1384 static void | |
1385 list_features() | |
1386 { | |
1387 int i; | |
1388 int ncol; | |
1389 int nrow; | |
1390 int nfeat = 0; | |
1391 int width = 0; | |
1392 | |
1393 /* Find the length of the longest feature name, use that + 1 as the column | |
1394 * width */ | |
1395 for (i = 0; features[i] != NULL; ++i) | |
1396 { | |
4160 | 1397 int l = (int)STRLEN(features[i]); |
4147 | 1398 |
1399 if (l > width) | |
1400 width = l; | |
1401 ++nfeat; | |
1402 } | |
1403 width += 1; | |
1404 | |
1405 if (Columns < width) | |
1406 { | |
1407 /* Not enough screen columns - show one per line */ | |
1408 for (i = 0; features[i] != NULL; ++i) | |
1409 { | |
1410 version_msg(features[i]); | |
1411 if (msg_col > 0) | |
1412 msg_putchar('\n'); | |
1413 } | |
1414 return; | |
1415 } | |
1416 | |
1417 /* The rightmost column doesn't need a separator. | |
1418 * Sacrifice it to fit in one more column if possible. */ | |
4170 | 1419 ncol = (int) (Columns + 1) / width; |
4147 | 1420 nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0); |
1421 | |
4170 | 1422 /* i counts columns then rows. idx counts rows then columns. */ |
4147 | 1423 for (i = 0; !got_int && i < nrow * ncol; ++i) |
1424 { | |
1425 int idx = (i / ncol) + (i % ncol) * nrow; | |
1426 | |
1427 if (idx < nfeat) | |
1428 { | |
1429 int last_col = (i + 1) % ncol == 0; | |
1430 | |
1431 msg_puts((char_u *)features[idx]); | |
1432 if (last_col) | |
1433 { | |
1434 if (msg_col > 0) | |
1435 msg_putchar('\n'); | |
1436 } | |
1437 else | |
1438 { | |
1439 while (msg_col % width) | |
1440 msg_putchar(' '); | |
1441 } | |
1442 } | |
1443 else | |
4170 | 1444 { |
1445 if (msg_col > 0) | |
1446 msg_putchar('\n'); | |
1447 } | |
4147 | 1448 } |
1449 } | |
4160 | 1450 |
7 | 1451 void |
1452 list_version() | |
1453 { | |
1454 int i; | |
1455 int first; | |
1456 char *s = ""; | |
1457 | |
1458 /* | |
1459 * When adding features here, don't forget to update the list of | |
1460 * internal variables in eval.c! | |
1461 */ | |
1462 MSG(longVersion); | |
1463 #ifdef WIN3264 | |
1464 # ifdef FEAT_GUI_W32 | |
1465 # if defined(_MSC_VER) && (_MSC_VER <= 1010) | |
1466 /* Only MS VC 4.1 and earlier can do Win32s */ | |
1607 | 1467 MSG_PUTS(_("\nMS-Windows 16/32-bit GUI version")); |
7 | 1468 # else |
990 | 1469 # ifdef _WIN64 |
1607 | 1470 MSG_PUTS(_("\nMS-Windows 64-bit GUI version")); |
990 | 1471 # else |
1607 | 1472 MSG_PUTS(_("\nMS-Windows 32-bit GUI version")); |
990 | 1473 # endif |
7 | 1474 # endif |
1475 if (gui_is_win32s()) | |
1476 MSG_PUTS(_(" in Win32s mode")); | |
1477 # ifdef FEAT_OLE | |
1478 MSG_PUTS(_(" with OLE support")); | |
1479 # endif | |
1480 # else | |
1607 | 1481 # ifdef _WIN64 |
1482 MSG_PUTS(_("\nMS-Windows 64-bit console version")); | |
1483 # else | |
1484 MSG_PUTS(_("\nMS-Windows 32-bit console version")); | |
1485 # endif | |
7 | 1486 # endif |
1487 #endif | |
1488 #ifdef WIN16 | |
1607 | 1489 MSG_PUTS(_("\nMS-Windows 16-bit version")); |
7 | 1490 #endif |
1491 #ifdef MSDOS | |
1492 # ifdef DJGPP | |
1607 | 1493 MSG_PUTS(_("\n32-bit MS-DOS version")); |
7 | 1494 # else |
1607 | 1495 MSG_PUTS(_("\n16-bit MS-DOS version")); |
7 | 1496 # endif |
1497 #endif | |
1498 #ifdef MACOS | |
1499 # ifdef MACOS_X | |
1500 # ifdef MACOS_X_UNIX | |
1501 MSG_PUTS(_("\nMacOS X (unix) version")); | |
1502 # else | |
1503 MSG_PUTS(_("\nMacOS X version")); | |
1504 # endif | |
1505 #else | |
1506 MSG_PUTS(_("\nMacOS version")); | |
1507 # endif | |
1508 #endif | |
1509 | |
1510 #ifdef VMS | |
1705 | 1511 MSG_PUTS(_("\nOpenVMS version")); |
1045 | 1512 # ifdef HAVE_PATHDEF |
1513 if (*compiled_arch != NUL) | |
1514 { | |
1515 MSG_PUTS(" - "); | |
1516 MSG_PUTS(compiled_arch); | |
1517 } | |
1518 # endif | |
1519 | |
7 | 1520 #endif |
1521 | |
1522 /* Print the list of patch numbers if there is at least one. */ | |
1523 /* Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" */ | |
1524 if (included_patches[0] != 0) | |
1525 { | |
1526 MSG_PUTS(_("\nIncluded patches: ")); | |
1527 first = -1; | |
1528 /* find last one */ | |
1529 for (i = 0; included_patches[i] != 0; ++i) | |
1530 ; | |
1531 while (--i >= 0) | |
1532 { | |
1533 if (first < 0) | |
1534 first = included_patches[i]; | |
1535 if (i == 0 || included_patches[i - 1] != included_patches[i] + 1) | |
1536 { | |
1537 MSG_PUTS(s); | |
1538 s = ", "; | |
1539 msg_outnum((long)first); | |
1540 if (first != included_patches[i]) | |
1541 { | |
1542 MSG_PUTS("-"); | |
1543 msg_outnum((long)included_patches[i]); | |
1544 } | |
1545 first = -1; | |
1546 } | |
1547 } | |
1548 } | |
1549 | |
1760 | 1550 /* Print the list of extra patch descriptions if there is at least one. */ |
1551 if (extra_patches[0] != NULL) | |
1552 { | |
1553 MSG_PUTS(_("\nExtra patches: ")); | |
1554 s = ""; | |
1555 for (i = 0; extra_patches[i] != NULL; ++i) | |
1556 { | |
1557 MSG_PUTS(s); | |
1558 s = ", "; | |
1559 MSG_PUTS(extra_patches[i]); | |
1560 } | |
1561 } | |
1562 | |
7 | 1563 #ifdef MODIFIED_BY |
1564 MSG_PUTS("\n"); | |
1565 MSG_PUTS(_("Modified by ")); | |
1566 MSG_PUTS(MODIFIED_BY); | |
1567 #endif | |
1568 | |
1569 #ifdef HAVE_PATHDEF | |
1570 if (*compiled_user != NUL || *compiled_sys != NUL) | |
1571 { | |
1572 MSG_PUTS(_("\nCompiled ")); | |
1573 if (*compiled_user != NUL) | |
1574 { | |
1575 MSG_PUTS(_("by ")); | |
1576 MSG_PUTS(compiled_user); | |
1577 } | |
1578 if (*compiled_sys != NUL) | |
1579 { | |
1580 MSG_PUTS("@"); | |
1581 MSG_PUTS(compiled_sys); | |
1582 } | |
1583 } | |
1584 #endif | |
1585 | |
1586 #ifdef FEAT_HUGE | |
1587 MSG_PUTS(_("\nHuge version ")); | |
1588 #else | |
1589 # ifdef FEAT_BIG | |
1590 MSG_PUTS(_("\nBig version ")); | |
1591 # else | |
1592 # ifdef FEAT_NORMAL | |
1593 MSG_PUTS(_("\nNormal version ")); | |
1594 # else | |
1595 # ifdef FEAT_SMALL | |
1596 MSG_PUTS(_("\nSmall version ")); | |
1597 # else | |
1598 MSG_PUTS(_("\nTiny version ")); | |
1599 # endif | |
1600 # endif | |
1601 # endif | |
1602 #endif | |
1603 #ifndef FEAT_GUI | |
1604 MSG_PUTS(_("without GUI.")); | |
1605 #else | |
1606 # ifdef FEAT_GUI_GTK | |
1607 # ifdef FEAT_GUI_GNOME | |
1608 MSG_PUTS(_("with GTK2-GNOME GUI.")); | |
1609 # else | |
1610 MSG_PUTS(_("with GTK2 GUI.")); | |
1611 # endif | |
1612 # else | |
1613 # ifdef FEAT_GUI_MOTIF | |
1614 MSG_PUTS(_("with X11-Motif GUI.")); | |
1615 # else | |
1616 # ifdef FEAT_GUI_ATHENA | |
1617 # ifdef FEAT_GUI_NEXTAW | |
1618 MSG_PUTS(_("with X11-neXtaw GUI.")); | |
1619 # else | |
1620 MSG_PUTS(_("with X11-Athena GUI.")); | |
1621 # endif | |
1622 # else | |
1623 # ifdef FEAT_GUI_PHOTON | |
1624 MSG_PUTS(_("with Photon GUI.")); | |
1625 # else | |
1626 # if defined(MSWIN) | |
1627 MSG_PUTS(_("with GUI.")); | |
1628 # else | |
2250
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
1629 # if defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON |
7 | 1630 MSG_PUTS(_("with Carbon GUI.")); |
1631 # else | |
2250
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
1632 # if defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX |
7 | 1633 MSG_PUTS(_("with Cocoa GUI.")); |
1634 # else | |
2250
1bac28a53fae
Add the conceal patch from Vince Negri.
Bram Moolenaar <bram@vim.org>
parents:
2214
diff
changeset
|
1635 # if defined(MACOS) |
7 | 1636 MSG_PUTS(_("with (classic) GUI.")); |
1637 # endif | |
1638 # endif | |
1639 # endif | |
1640 # endif | |
1641 # endif | |
1642 # endif | |
1643 # endif | |
1644 # endif | |
1645 #endif | |
1646 version_msg(_(" Features included (+) or not (-):\n")); | |
1647 | |
4147 | 1648 list_features(); |
7 | 1649 |
1650 #ifdef SYS_VIMRC_FILE | |
1651 version_msg(_(" system vimrc file: \"")); | |
1652 version_msg(SYS_VIMRC_FILE); | |
1653 version_msg("\"\n"); | |
1654 #endif | |
1655 #ifdef USR_VIMRC_FILE | |
1656 version_msg(_(" user vimrc file: \"")); | |
1657 version_msg(USR_VIMRC_FILE); | |
1658 version_msg("\"\n"); | |
1659 #endif | |
1660 #ifdef USR_VIMRC_FILE2 | |
1661 version_msg(_(" 2nd user vimrc file: \"")); | |
1662 version_msg(USR_VIMRC_FILE2); | |
1663 version_msg("\"\n"); | |
1664 #endif | |
1665 #ifdef USR_VIMRC_FILE3 | |
1666 version_msg(_(" 3rd user vimrc file: \"")); | |
1667 version_msg(USR_VIMRC_FILE3); | |
1668 version_msg("\"\n"); | |
1669 #endif | |
1670 #ifdef USR_EXRC_FILE | |
1671 version_msg(_(" user exrc file: \"")); | |
1672 version_msg(USR_EXRC_FILE); | |
1673 version_msg("\"\n"); | |
1674 #endif | |
1675 #ifdef USR_EXRC_FILE2 | |
1676 version_msg(_(" 2nd user exrc file: \"")); | |
1677 version_msg(USR_EXRC_FILE2); | |
1678 version_msg("\"\n"); | |
1679 #endif | |
1680 #ifdef FEAT_GUI | |
1681 # ifdef SYS_GVIMRC_FILE | |
1682 version_msg(_(" system gvimrc file: \"")); | |
1683 version_msg(SYS_GVIMRC_FILE); | |
1684 version_msg("\"\n"); | |
1685 # endif | |
1686 version_msg(_(" user gvimrc file: \"")); | |
1687 version_msg(USR_GVIMRC_FILE); | |
1688 version_msg("\"\n"); | |
1689 # ifdef USR_GVIMRC_FILE2 | |
1690 version_msg(_("2nd user gvimrc file: \"")); | |
1691 version_msg(USR_GVIMRC_FILE2); | |
1692 version_msg("\"\n"); | |
1693 # endif | |
1694 # ifdef USR_GVIMRC_FILE3 | |
1695 version_msg(_("3rd user gvimrc file: \"")); | |
1696 version_msg(USR_GVIMRC_FILE3); | |
1697 version_msg("\"\n"); | |
1698 # endif | |
1699 #endif | |
1700 #ifdef FEAT_GUI | |
1701 # ifdef SYS_MENU_FILE | |
1702 version_msg(_(" system menu file: \"")); | |
1703 version_msg(SYS_MENU_FILE); | |
1704 version_msg("\"\n"); | |
1705 # endif | |
1706 #endif | |
1707 #ifdef HAVE_PATHDEF | |
1708 if (*default_vim_dir != NUL) | |
1709 { | |
1710 version_msg(_(" fall-back for $VIM: \"")); | |
1711 version_msg((char *)default_vim_dir); | |
1712 version_msg("\"\n"); | |
1713 } | |
1714 if (*default_vimruntime_dir != NUL) | |
1715 { | |
1716 version_msg(_(" f-b for $VIMRUNTIME: \"")); | |
1717 version_msg((char *)default_vimruntime_dir); | |
1718 version_msg("\"\n"); | |
1719 } | |
1720 version_msg(_("Compilation: ")); | |
1721 version_msg((char *)all_cflags); | |
1722 version_msg("\n"); | |
1723 #ifdef VMS | |
1724 if (*compiler_version != NUL) | |
1725 { | |
1726 version_msg(_("Compiler: ")); | |
1727 version_msg((char *)compiler_version); | |
1728 version_msg("\n"); | |
1729 } | |
1730 #endif | |
1731 version_msg(_("Linking: ")); | |
1732 version_msg((char *)all_lflags); | |
1733 #endif | |
1734 #ifdef DEBUG | |
1735 version_msg("\n"); | |
1736 version_msg(_(" DEBUG BUILD")); | |
1737 #endif | |
1738 } | |
1739 | |
1740 /* | |
1741 * Output a string for the version message. If it's going to wrap, output a | |
1742 * newline, unless the message is too long to fit on the screen anyway. | |
1743 */ | |
1744 static void | |
1745 version_msg(s) | |
1746 char *s; | |
1747 { | |
1748 int len = (int)STRLEN(s); | |
1749 | |
1750 if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns | |
1751 && *s != '\n') | |
1752 msg_putchar('\n'); | |
1753 if (!got_int) | |
1754 MSG_PUTS(s); | |
1755 } | |
1756 | |
1757 static void do_intro_line __ARGS((int row, char_u *mesg, int add_version, int attr)); | |
1758 | |
1759 /* | |
5126
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1760 * Show the intro message when not editing a file. |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1761 */ |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1762 void |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1763 maybe_intro_message() |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1764 { |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1765 if (bufempty() |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1766 && curbuf->b_fname == NULL |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1767 #ifdef FEAT_WINDOWS |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1768 && firstwin->w_next == NULL |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1769 #endif |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1770 && vim_strchr(p_shm, SHM_INTRO) == NULL) |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1771 intro_message(FALSE); |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1772 } |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1773 |
71859e71b1f9
updated for version 7.3.1306
Bram Moolenaar <bram@vim.org>
parents:
5124
diff
changeset
|
1774 /* |
7 | 1775 * Give an introductory message about Vim. |
1776 * Only used when starting Vim on an empty file, without a file name. | |
1777 * Or with the ":intro" command (for Sven :-). | |
1778 */ | |
1779 void | |
1780 intro_message(colon) | |
1781 int colon; /* TRUE for ":intro" */ | |
1782 { | |
1783 int i; | |
1784 int row; | |
1785 int blanklines; | |
1786 int sponsor; | |
1787 char *p; | |
1788 static char *(lines[]) = | |
1789 { | |
1790 N_("VIM - Vi IMproved"), | |
1791 "", | |
1792 N_("version "), | |
1793 N_("by Bram Moolenaar et al."), | |
1794 #ifdef MODIFIED_BY | |
1795 " ", | |
1796 #endif | |
1797 N_("Vim is open source and freely distributable"), | |
1798 "", | |
1799 N_("Help poor children in Uganda!"), | |
1800 N_("type :help iccf<Enter> for information "), | |
1801 "", | |
1802 N_("type :q<Enter> to exit "), | |
1803 N_("type :help<Enter> or <F1> for on-line help"), | |
26 | 1804 N_("type :help version7<Enter> for version info"), |
7 | 1805 NULL, |
1806 "", | |
1807 N_("Running in Vi compatible mode"), | |
1808 N_("type :set nocp<Enter> for Vim defaults"), | |
1809 N_("type :help cp-default<Enter> for info on this"), | |
1810 }; | |
1811 #ifdef FEAT_GUI | |
1812 static char *(gui_lines[]) = | |
1813 { | |
1814 NULL, | |
1815 NULL, | |
1816 NULL, | |
1817 NULL, | |
1818 #ifdef MODIFIED_BY | |
1819 NULL, | |
1820 #endif | |
1821 NULL, | |
1822 NULL, | |
1823 NULL, | |
1824 N_("menu Help->Orphans for information "), | |
1825 NULL, | |
1826 N_("Running modeless, typed text is inserted"), | |
1827 N_("menu Edit->Global Settings->Toggle Insert Mode "), | |
1828 N_(" for two modes "), | |
1829 NULL, | |
1830 NULL, | |
1831 NULL, | |
1832 N_("menu Edit->Global Settings->Toggle Vi Compatible"), | |
1833 N_(" for Vim defaults "), | |
1834 }; | |
1835 #endif | |
1836 | |
1837 /* blanklines = screen height - # message lines */ | |
1838 blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1); | |
1839 if (!p_cp) | |
1840 blanklines += 4; /* add 4 for not showing "Vi compatible" message */ | |
1841 #if defined(WIN3264) && !defined(FEAT_GUI_W32) | |
1842 if (mch_windows95()) | |
1843 blanklines -= 3; /* subtract 3 for showing "Windows 95" message */ | |
1844 #endif | |
1845 | |
1846 #ifdef FEAT_WINDOWS | |
1847 /* Don't overwrite a statusline. Depends on 'cmdheight'. */ | |
1848 if (p_ls > 1) | |
1849 blanklines -= Rows - topframe->fr_height; | |
1850 #endif | |
1851 if (blanklines < 0) | |
1852 blanklines = 0; | |
1853 | |
1854 /* Show the sponsor and register message one out of four times, the Uganda | |
1855 * message two out of four times. */ | |
615 | 1856 sponsor = (int)time(NULL); |
7 | 1857 sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0); |
1858 | |
1859 /* start displaying the message lines after half of the blank lines */ | |
1860 row = blanklines / 2; | |
1861 if ((row >= 2 && Columns >= 50) || colon) | |
1862 { | |
1863 for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i) | |
1864 { | |
1865 p = lines[i]; | |
1866 #ifdef FEAT_GUI | |
1867 if (p_im && gui.in_use && gui_lines[i] != NULL) | |
1868 p = gui_lines[i]; | |
1869 #endif | |
1870 if (p == NULL) | |
1871 { | |
1872 if (!p_cp) | |
1873 break; | |
1874 continue; | |
1875 } | |
1876 if (sponsor != 0) | |
1877 { | |
1878 if (strstr(p, "children") != NULL) | |
1879 p = sponsor < 0 | |
1880 ? N_("Sponsor Vim development!") | |
1881 : N_("Become a registered Vim user!"); | |
1882 else if (strstr(p, "iccf") != NULL) | |
1883 p = sponsor < 0 | |
1884 ? N_("type :help sponsor<Enter> for information ") | |
1885 : N_("type :help register<Enter> for information "); | |
1886 else if (strstr(p, "Orphans") != NULL) | |
1887 p = N_("menu Help->Sponsor/Register for information "); | |
1888 } | |
1889 if (*p != NUL) | |
1890 do_intro_line(row, (char_u *)_(p), i == 2, 0); | |
1891 ++row; | |
1892 } | |
1893 #if defined(WIN3264) && !defined(FEAT_GUI_W32) | |
1894 if (mch_windows95()) | |
1895 { | |
1896 do_intro_line(++row, | |
1897 (char_u *)_("WARNING: Windows 95/98/ME detected"), | |
1898 FALSE, hl_attr(HLF_E)); | |
1899 do_intro_line(++row, | |
1900 (char_u *)_("type :help windows95<Enter> for info on this"), | |
1901 FALSE, 0); | |
1902 } | |
1903 #endif | |
1904 } | |
1905 | |
1906 /* Make the wait-return message appear just below the text. */ | |
1907 if (colon) | |
1908 msg_row = row; | |
1909 } | |
1910 | |
1911 static void | |
1912 do_intro_line(row, mesg, add_version, attr) | |
1913 int row; | |
1914 char_u *mesg; | |
1915 int add_version; | |
1916 int attr; | |
1917 { | |
1918 char_u vers[20]; | |
1919 int col; | |
1920 char_u *p; | |
1921 int l; | |
1922 int clen; | |
1923 #ifdef MODIFIED_BY | |
1924 # define MODBY_LEN 150 | |
1925 char_u modby[MODBY_LEN]; | |
1926 | |
1927 if (*mesg == ' ') | |
1928 { | |
1491 | 1929 vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1); |
7 | 1930 l = STRLEN(modby); |
1491 | 1931 vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1); |
7 | 1932 mesg = modby; |
1933 } | |
1934 #endif | |
1935 | |
1936 /* Center the message horizontally. */ | |
1937 col = vim_strsize(mesg); | |
1938 if (add_version) | |
1939 { | |
1940 STRCPY(vers, mediumVersion); | |
1941 if (highest_patch()) | |
1942 { | |
1943 /* Check for 9.9x or 9.9xx, alpha/beta version */ | |
2619 | 1944 if (isalpha((int)vers[3])) |
7 | 1945 { |
3396 | 1946 int len = (isalpha((int)vers[4])) ? 5 : 4; |
1947 sprintf((char *)vers + len, ".%d%s", highest_patch(), | |
1948 mediumVersion + len); | |
7 | 1949 } |
1950 else | |
1951 sprintf((char *)vers + 3, ".%d", highest_patch()); | |
1952 } | |
1953 col += (int)STRLEN(vers); | |
1954 } | |
1955 col = (Columns - col) / 2; | |
1956 if (col < 0) | |
1957 col = 0; | |
1958 | |
1959 /* Split up in parts to highlight <> items differently. */ | |
1960 for (p = mesg; *p != NUL; p += l) | |
1961 { | |
1962 clen = 0; | |
1963 for (l = 0; p[l] != NUL | |
1964 && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l) | |
1965 { | |
1966 #ifdef FEAT_MBYTE | |
1967 if (has_mbyte) | |
1968 { | |
1969 clen += ptr2cells(p + l); | |
474 | 1970 l += (*mb_ptr2len)(p + l) - 1; |
7 | 1971 } |
1972 else | |
1973 #endif | |
1974 clen += byte2cells(p[l]); | |
1975 } | |
1976 screen_puts_len(p, l, row, col, *p == '<' ? hl_attr(HLF_8) : attr); | |
1977 col += clen; | |
1978 } | |
1979 | |
1980 /* Add the version number to the version line. */ | |
1981 if (add_version) | |
1982 screen_puts(vers, row, col, 0); | |
1983 } | |
1984 | |
1985 /* | |
1986 * ":intro": clear screen, display intro screen and wait for return. | |
1987 */ | |
1988 void | |
1989 ex_intro(eap) | |
1876 | 1990 exarg_T *eap UNUSED; |
7 | 1991 { |
1992 screenclear(); | |
1993 intro_message(TRUE); | |
1994 wait_return(TRUE); | |
1995 } |