1 /* vi:set ts=8 sts=4 sw=4 noet: 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 * 20 * Differences between version 7.4 and 8.x can be found with ":help version8". 21 * Differences between version 6.4 and 7.x can be found with ":help version7". 22 * Differences between version 5.8 and 6.x can be found with ":help version6". 23 * Differences between version 4.x and 5.x can be found with ":help version5". 24 * Differences between version 3.0 and 4.x can be found with ":help version4". 25 * All the remarks about older versions have been removed, they are not very 26 * interesting. 27 */ 28 29 #include "version.h" 30 31 char *Version = VIM_VERSION_SHORT; 32 static char *mediumVersion = VIM_VERSION_MEDIUM; 33 34 #if defined(HAVE_DATE_TIME) || defined(PROTO) 35 # if (defined(VMS) && defined(VAXC)) || defined(PROTO) 36 char longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__) 37 + sizeof(__TIME__) + 3]; 38 39 void 40 make_version(void) 41 { 42 /* 43 * Construct the long version string. Necessary because 44 * VAX C can't catenate strings in the preprocessor. 45 */ 46 strcpy(longVersion, VIM_VERSION_LONG_DATE); 47 strcat(longVersion, __DATE__); 48 strcat(longVersion, " "); 49 strcat(longVersion, __TIME__); 50 strcat(longVersion, ")"); 51 } 52 # else 53 char *longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")"; 54 # endif 55 #else 56 char *longVersion = VIM_VERSION_LONG; 57 #endif 58 59 static void list_features(void); 60 static void version_msg(char *s); 61 62 static char *(features[]) = 63 { 64 #ifdef HAVE_ACL 65 "+acl", 66 #else 67 "-acl", 68 #endif 69 #ifdef AMIGA /* only for Amiga systems */ 70 # ifdef FEAT_ARP 71 "+ARP", 72 # else 73 "-ARP", 74 # endif 75 #endif 76 #ifdef FEAT_ARABIC 77 "+arabic", 78 #else 79 "-arabic", 80 #endif 81 #ifdef FEAT_AUTOCMD 82 "+autocmd", 83 #else 84 "-autocmd", 85 #endif 86 #ifdef FEAT_AUTOSERVERNAME 87 "+autoservername", 88 #else 89 "-autoservername", 90 #endif 91 #ifdef FEAT_BEVAL_GUI 92 "+balloon_eval", 93 #else 94 "-balloon_eval", 95 #endif 96 #ifdef FEAT_BEVAL_TERM 97 "+balloon_eval_term", 98 #else 99 "-balloon_eval_term", 100 #endif 101 #ifdef FEAT_BROWSE 102 "+browse", 103 #else 104 "-browse", 105 #endif 106 #ifdef NO_BUILTIN_TCAPS 107 "-builtin_terms", 108 #endif 109 #ifdef SOME_BUILTIN_TCAPS 110 "+builtin_terms", 111 #endif 112 #ifdef ALL_BUILTIN_TCAPS 113 "++builtin_terms", 114 #endif 115 #ifdef FEAT_BYTEOFF 116 "+byte_offset", 117 #else 118 "-byte_offset", 119 #endif 120 #ifdef FEAT_JOB_CHANNEL 121 "+channel", 122 #else 123 "-channel", 124 #endif 125 #ifdef FEAT_CINDENT 126 "+cindent", 127 #else 128 "-cindent", 129 #endif 130 #ifdef FEAT_CLIENTSERVER 131 "+clientserver", 132 #else 133 "-clientserver", 134 #endif 135 #ifdef FEAT_CLIPBOARD 136 "+clipboard", 137 #else 138 "-clipboard", 139 #endif 140 #ifdef FEAT_CMDL_COMPL 141 "+cmdline_compl", 142 #else 143 "-cmdline_compl", 144 #endif 145 #ifdef FEAT_CMDHIST 146 "+cmdline_hist", 147 #else 148 "-cmdline_hist", 149 #endif 150 #ifdef FEAT_CMDL_INFO 151 "+cmdline_info", 152 #else 153 "-cmdline_info", 154 #endif 155 #ifdef FEAT_COMMENTS 156 "+comments", 157 #else 158 "-comments", 159 #endif 160 #ifdef FEAT_CONCEAL 161 "+conceal", 162 #else 163 "-conceal", 164 #endif 165 #ifdef FEAT_CRYPT 166 "+cryptv", 167 #else 168 "-cryptv", 169 #endif 170 #ifdef FEAT_CSCOPE 171 "+cscope", 172 #else 173 "-cscope", 174 #endif 175 #ifdef FEAT_CURSORBIND 176 "+cursorbind", 177 #else 178 "-cursorbind", 179 #endif 180 #ifdef CURSOR_SHAPE 181 "+cursorshape", 182 #else 183 "-cursorshape", 184 #endif 185 #if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG) 186 "+dialog_con_gui", 187 #else 188 # if defined(FEAT_CON_DIALOG) 189 "+dialog_con", 190 # else 191 # if defined(FEAT_GUI_DIALOG) 192 "+dialog_gui", 193 # else 194 "-dialog", 195 # endif 196 # endif 197 #endif 198 #ifdef FEAT_DIFF 199 "+diff", 200 #else 201 "-diff", 202 #endif 203 #ifdef FEAT_DIGRAPHS 204 "+digraphs", 205 #else 206 "-digraphs", 207 #endif 208 #ifdef FEAT_GUI_W32 209 # ifdef FEAT_DIRECTX 210 "+directx", 211 # else 212 "-directx", 213 # endif 214 #endif 215 #ifdef FEAT_DND 216 "+dnd", 217 #else 218 "-dnd", 219 #endif 220 #ifdef EBCDIC 221 "+ebcdic", 222 #else 223 "-ebcdic", 224 #endif 225 #ifdef FEAT_EMACS_TAGS 226 "+emacs_tags", 227 #else 228 "-emacs_tags", 229 #endif 230 #ifdef FEAT_EVAL 231 "+eval", 232 #else 233 "-eval", 234 #endif 235 "+ex_extra", 236 #ifdef FEAT_SEARCH_EXTRA 237 "+extra_search", 238 #else 239 "-extra_search", 240 #endif 241 #ifdef FEAT_FKMAP 242 "+farsi", 243 #else 244 "-farsi", 245 #endif 246 #ifdef FEAT_SEARCHPATH 247 "+file_in_path", 248 #else 249 "-file_in_path", 250 #endif 251 #ifdef FEAT_FIND_ID 252 "+find_in_path", 253 #else 254 "-find_in_path", 255 #endif 256 #ifdef FEAT_FLOAT 257 "+float", 258 #else 259 "-float", 260 #endif 261 #ifdef FEAT_FOLDING 262 "+folding", 263 #else 264 "-folding", 265 #endif 266 #ifdef FEAT_FOOTER 267 "+footer", 268 #else 269 "-footer", 270 #endif 271 /* only interesting on Unix systems */ 272 #if !defined(USE_SYSTEM) && defined(UNIX) 273 "+fork()", 274 #endif 275 #ifdef FEAT_GETTEXT 276 # ifdef DYNAMIC_GETTEXT 277 "+gettext/dyn", 278 # else 279 "+gettext", 280 # endif 281 #else 282 "-gettext", 283 #endif 284 #ifdef FEAT_HANGULIN 285 "+hangul_input", 286 #else 287 "-hangul_input", 288 #endif 289 #if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV) 290 # ifdef DYNAMIC_ICONV 291 "+iconv/dyn", 292 # else 293 "+iconv", 294 # endif 295 #else 296 "-iconv", 297 #endif 298 #ifdef FEAT_INS_EXPAND 299 "+insert_expand", 300 #else 301 "-insert_expand", 302 #endif 303 #ifdef FEAT_JOB_CHANNEL 304 "+job", 305 #else 306 "-job", 307 #endif 308 #ifdef FEAT_JUMPLIST 309 "+jumplist", 310 #else 311 "-jumplist", 312 #endif 313 #ifdef FEAT_KEYMAP 314 "+keymap", 315 #else 316 "-keymap", 317 #endif 318 #ifdef FEAT_EVAL 319 "+lambda", 320 #else 321 "-lambda", 322 #endif 323 #ifdef FEAT_LANGMAP 324 "+langmap", 325 #else 326 "-langmap", 327 #endif 328 #ifdef FEAT_LIBCALL 329 "+libcall", 330 #else 331 "-libcall", 332 #endif 333 #ifdef FEAT_LINEBREAK 334 "+linebreak", 335 #else 336 "-linebreak", 337 #endif 338 #ifdef FEAT_LISP 339 "+lispindent", 340 #else 341 "-lispindent", 342 #endif 343 #ifdef FEAT_LISTCMDS 344 "+listcmds", 345 #else 346 "-listcmds", 347 #endif 348 #ifdef FEAT_LOCALMAP 349 "+localmap", 350 #else 351 "-localmap", 352 #endif 353 #ifdef FEAT_LUA 354 # ifdef DYNAMIC_LUA 355 "+lua/dyn", 356 # else 357 "+lua", 358 # endif 359 #else 360 "-lua", 361 #endif 362 #ifdef FEAT_MENU 363 "+menu", 364 #else 365 "-menu", 366 #endif 367 #ifdef FEAT_SESSION 368 "+mksession", 369 #else 370 "-mksession", 371 #endif 372 #ifdef FEAT_MODIFY_FNAME 373 "+modify_fname", 374 #else 375 "-modify_fname", 376 #endif 377 #ifdef FEAT_MOUSE 378 "+mouse", 379 # ifdef FEAT_MOUSESHAPE 380 "+mouseshape", 381 # else 382 "-mouseshape", 383 # endif 384 # else 385 "-mouse", 386 #endif 387 388 #if defined(UNIX) || defined(VMS) 389 # ifdef FEAT_MOUSE_DEC 390 "+mouse_dec", 391 # else 392 "-mouse_dec", 393 # endif 394 # ifdef FEAT_MOUSE_GPM 395 "+mouse_gpm", 396 # else 397 "-mouse_gpm", 398 # endif 399 # ifdef FEAT_MOUSE_JSB 400 "+mouse_jsbterm", 401 # else 402 "-mouse_jsbterm", 403 # endif 404 # ifdef FEAT_MOUSE_NET 405 "+mouse_netterm", 406 # else 407 "-mouse_netterm", 408 # endif 409 #endif 410 411 #ifdef __QNX__ 412 # ifdef FEAT_MOUSE_PTERM 413 "+mouse_pterm", 414 # else 415 "-mouse_pterm", 416 # endif 417 #endif 418 419 #if defined(UNIX) || defined(VMS) 420 # ifdef FEAT_MOUSE_SGR 421 "+mouse_sgr", 422 # else 423 "-mouse_sgr", 424 # endif 425 # ifdef FEAT_SYSMOUSE 426 "+mouse_sysmouse", 427 # else 428 "-mouse_sysmouse", 429 # endif 430 # ifdef FEAT_MOUSE_URXVT 431 "+mouse_urxvt", 432 # else 433 "-mouse_urxvt", 434 # endif 435 # ifdef FEAT_MOUSE_XTERM 436 "+mouse_xterm", 437 # else 438 "-mouse_xterm", 439 # endif 440 #endif 441 442 #ifdef FEAT_MBYTE_IME 443 # ifdef DYNAMIC_IME 444 "+multi_byte_ime/dyn", 445 # else 446 "+multi_byte_ime", 447 # endif 448 #else 449 # ifdef FEAT_MBYTE 450 "+multi_byte", 451 # else 452 "-multi_byte", 453 # endif 454 #endif 455 #ifdef FEAT_MULTI_LANG 456 "+multi_lang", 457 #else 458 "-multi_lang", 459 #endif 460 #ifdef FEAT_MZSCHEME 461 # ifdef DYNAMIC_MZSCHEME 462 "+mzscheme/dyn", 463 # else 464 "+mzscheme", 465 # endif 466 #else 467 "-mzscheme", 468 #endif 469 #ifdef FEAT_NETBEANS_INTG 470 "+netbeans_intg", 471 #else 472 "-netbeans_intg", 473 #endif 474 #ifdef FEAT_NUM64 475 "+num64", 476 #else 477 "-num64", 478 #endif 479 #ifdef FEAT_GUI_W32 480 # ifdef FEAT_OLE 481 "+ole", 482 # else 483 "-ole", 484 # endif 485 #endif 486 "+packages", 487 #ifdef FEAT_PATH_EXTRA 488 "+path_extra", 489 #else 490 "-path_extra", 491 #endif 492 #ifdef FEAT_PERL 493 # ifdef DYNAMIC_PERL 494 "+perl/dyn", 495 # else 496 "+perl", 497 # endif 498 #else 499 "-perl", 500 #endif 501 #ifdef FEAT_PERSISTENT_UNDO 502 "+persistent_undo", 503 #else 504 "-persistent_undo", 505 #endif 506 #ifdef FEAT_PRINTER 507 # ifdef FEAT_POSTSCRIPT 508 "+postscript", 509 # else 510 "-postscript", 511 # endif 512 "+printer", 513 #else 514 "-printer", 515 #endif 516 #ifdef FEAT_PROFILE 517 "+profile", 518 #else 519 "-profile", 520 #endif 521 #ifdef FEAT_PYTHON 522 # ifdef DYNAMIC_PYTHON 523 "+python/dyn", 524 # else 525 "+python", 526 # endif 527 #else 528 "-python", 529 #endif 530 #ifdef FEAT_PYTHON3 531 # ifdef DYNAMIC_PYTHON3 532 "+python3/dyn", 533 # else 534 "+python3", 535 # endif 536 #else 537 "-python3", 538 #endif 539 #ifdef FEAT_QUICKFIX 540 "+quickfix", 541 #else 542 "-quickfix", 543 #endif 544 #ifdef FEAT_RELTIME 545 "+reltime", 546 #else 547 "-reltime", 548 #endif 549 #ifdef FEAT_RIGHTLEFT 550 "+rightleft", 551 #else 552 "-rightleft", 553 #endif 554 #ifdef FEAT_RUBY 555 # ifdef DYNAMIC_RUBY 556 "+ruby/dyn", 557 # else 558 "+ruby", 559 # endif 560 #else 561 "-ruby", 562 #endif 563 #ifdef FEAT_SCROLLBIND 564 "+scrollbind", 565 #else 566 "-scrollbind", 567 #endif 568 #ifdef FEAT_SIGNS 569 "+signs", 570 #else 571 "-signs", 572 #endif 573 #ifdef FEAT_SMARTINDENT 574 "+smartindent", 575 #else 576 "-smartindent", 577 #endif 578 #ifdef STARTUPTIME 579 "+startuptime", 580 #else 581 "-startuptime", 582 #endif 583 #ifdef FEAT_STL_OPT 584 "+statusline", 585 #else 586 "-statusline", 587 #endif 588 #ifdef FEAT_SUN_WORKSHOP 589 "+sun_workshop", 590 #else 591 "-sun_workshop", 592 #endif 593 #ifdef FEAT_SYN_HL 594 "+syntax", 595 #else 596 "-syntax", 597 #endif 598 /* only interesting on Unix systems */ 599 #if defined(USE_SYSTEM) && defined(UNIX) 600 "+system()", 601 #endif 602 #ifdef FEAT_TAG_BINS 603 "+tag_binary", 604 #else 605 "-tag_binary", 606 #endif 607 #ifdef FEAT_TAG_OLDSTATIC 608 "+tag_old_static", 609 #else 610 "-tag_old_static", 611 #endif 612 #ifdef FEAT_TAG_ANYWHITE 613 "+tag_any_white", 614 #else 615 "-tag_any_white", 616 #endif 617 #ifdef FEAT_TCL 618 # ifdef DYNAMIC_TCL 619 "+tcl/dyn", 620 # else 621 "+tcl", 622 # endif 623 #else 624 "-tcl", 625 #endif 626 #ifdef FEAT_TERMGUICOLORS 627 "+termguicolors", 628 #else 629 "-termguicolors", 630 #endif 631 #ifdef FEAT_TERMINAL 632 "+terminal", 633 #else 634 "-terminal", 635 #endif 636 #if defined(UNIX) 637 /* only Unix can have terminfo instead of termcap */ 638 # ifdef TERMINFO 639 "+terminfo", 640 # else 641 "-terminfo", 642 # endif 643 #else /* unix always includes termcap support */ 644 # ifdef HAVE_TGETENT 645 "+tgetent", 646 # else 647 "-tgetent", 648 # endif 649 #endif 650 #ifdef FEAT_TERMRESPONSE 651 "+termresponse", 652 #else 653 "-termresponse", 654 #endif 655 #ifdef FEAT_TEXTOBJ 656 "+textobjects", 657 #else 658 "-textobjects", 659 #endif 660 #ifdef FEAT_TIMERS 661 "+timers", 662 #else 663 "-timers", 664 #endif 665 #ifdef FEAT_TITLE 666 "+title", 667 #else 668 "-title", 669 #endif 670 #ifdef FEAT_TOOLBAR 671 "+toolbar", 672 #else 673 "-toolbar", 674 #endif 675 #ifdef FEAT_USR_CMDS 676 "+user_commands", 677 #else 678 "-user_commands", 679 #endif 680 "+vertsplit", 681 #ifdef FEAT_VIRTUALEDIT 682 "+virtualedit", 683 #else 684 "-virtualedit", 685 #endif 686 "+visual", 687 #ifdef FEAT_VISUALEXTRA 688 "+visualextra", 689 #else 690 "-visualextra", 691 #endif 692 #ifdef FEAT_VIMINFO 693 "+viminfo", 694 #else 695 "-viminfo", 696 #endif 697 #ifdef FEAT_VREPLACE 698 "+vreplace", 699 #else 700 "-vreplace", 701 #endif 702 #ifdef FEAT_WILDIGN 703 "+wildignore", 704 #else 705 "-wildignore", 706 #endif 707 #ifdef FEAT_WILDMENU 708 "+wildmenu", 709 #else 710 "-wildmenu", 711 #endif 712 "+windows", 713 #ifdef FEAT_WRITEBACKUP 714 "+writebackup", 715 #else 716 "-writebackup", 717 #endif 718 #if defined(UNIX) || defined(VMS) 719 # ifdef FEAT_X11 720 "+X11", 721 # else 722 "-X11", 723 # endif 724 #endif 725 #ifdef FEAT_XFONTSET 726 "+xfontset", 727 #else 728 "-xfontset", 729 #endif 730 #ifdef FEAT_XIM 731 "+xim", 732 #else 733 "-xim", 734 #endif 735 #ifdef WIN3264 736 # ifdef FEAT_XPM_W32 737 "+xpm_w32", 738 # else 739 "-xpm_w32", 740 # endif 741 #else 742 # ifdef HAVE_XPM 743 "+xpm", 744 # else 745 "-xpm", 746 # endif 747 #endif 748 #if defined(UNIX) || defined(VMS) 749 # ifdef USE_XSMP_INTERACT 750 "+xsmp_interact", 751 # else 752 # ifdef USE_XSMP 753 "+xsmp", 754 # else 755 "-xsmp", 756 # endif 757 # endif 758 # ifdef FEAT_XCLIPBOARD 759 "+xterm_clipboard", 760 # else 761 "-xterm_clipboard", 762 # endif 763 #endif 764 #ifdef FEAT_XTERM_SAVE 765 "+xterm_save", 766 #else 767 "-xterm_save", 768 #endif 769 NULL 770 }; 771 772 static int included_patches[] = 773 { /* Add new patch number below this line */ 774 /**/ 775 1400, 776 /**/ 777 1399, 778 /**/ 779 1398, 780 /**/ 781 1397, 782 /**/ 783 1396, 784 /**/ 785 1395, 786 /**/ 787 1394, 788 /**/ 789 1393, 790 /**/ 791 1392, 792 /**/ 793 1391, 794 /**/ 795 1390, 796 /**/ 797 1389, 798 /**/ 799 1388, 800 /**/ 801 1387, 802 /**/ 803 1386, 804 /**/ 805 1385, 806 /**/ 807 1384, 808 /**/ 809 1383, 810 /**/ 811 1382, 812 /**/ 813 1381, 814 /**/ 815 1380, 816 /**/ 817 1379, 818 /**/ 819 1378, 820 /**/ 821 1377, 822 /**/ 823 1376, 824 /**/ 825 1375, 826 /**/ 827 1374, 828 /**/ 829 1373, 830 /**/ 831 1372, 832 /**/ 833 1371, 834 /**/ 835 1370, 836 /**/ 837 1369, 838 /**/ 839 1368, 840 /**/ 841 1367, 842 /**/ 843 1366, 844 /**/ 845 1365, 846 /**/ 847 1364, 848 /**/ 849 1363, 850 /**/ 851 1362, 852 /**/ 853 1361, 854 /**/ 855 1360, 856 /**/ 857 1359, 858 /**/ 859 1358, 860 /**/ 861 1357, 862 /**/ 863 1356, 864 /**/ 865 1355, 866 /**/ 867 1354, 868 /**/ 869 1353, 870 /**/ 871 1352, 872 /**/ 873 1351, 874 /**/ 875 1350, 876 /**/ 877 1349, 878 /**/ 879 1348, 880 /**/ 881 1347, 882 /**/ 883 1346, 884 /**/ 885 1345, 886 /**/ 887 1344, 888 /**/ 889 1343, 890 /**/ 891 1342, 892 /**/ 893 1341, 894 /**/ 895 1340, 896 /**/ 897 1339, 898 /**/ 899 1338, 900 /**/ 901 1337, 902 /**/ 903 1336, 904 /**/ 905 1335, 906 /**/ 907 1334, 908 /**/ 909 1333, 910 /**/ 911 1332, 912 /**/ 913 1331, 914 /**/ 915 1330, 916 /**/ 917 1329, 918 /**/ 919 1328, 920 /**/ 921 1327, 922 /**/ 923 1326, 924 /**/ 925 1325, 926 /**/ 927 1324, 928 /**/ 929 1323, 930 /**/ 931 1322, 932 /**/ 933 1321, 934 /**/ 935 1320, 936 /**/ 937 1319, 938 /**/ 939 1318, 940 /**/ 941 1317, 942 /**/ 943 1316, 944 /**/ 945 1315, 946 /**/ 947 1314, 948 /**/ 949 1313, 950 /**/ 951 1312, 952 /**/ 953 1311, 954 /**/ 955 1310, 956 /**/ 957 1309, 958 /**/ 959 1308, 960 /**/ 961 1307, 962 /**/ 963 1306, 964 /**/ 965 1305, 966 /**/ 967 1304, 968 /**/ 969 1303, 970 /**/ 971 1302, 972 /**/ 973 1301, 974 /**/ 975 1300, 976 /**/ 977 1299, 978 /**/ 979 1298, 980 /**/ 981 1297, 982 /**/ 983 1296, 984 /**/ 985 1295, 986 /**/ 987 1294, 988 /**/ 989 1293, 990 /**/ 991 1292, 992 /**/ 993 1291, 994 /**/ 995 1290, 996 /**/ 997 1289, 998 /**/ 999 1288, 1000 /**/ 1001 1287, 1002 /**/ 1003 1286, 1004 /**/ 1005 1285, 1006 /**/ 1007 1284, 1008 /**/ 1009 1283, 1010 /**/ 1011 1282, 1012 /**/ 1013 1281, 1014 /**/ 1015 1280, 1016 /**/ 1017 1279, 1018 /**/ 1019 1278, 1020 /**/ 1021 1277, 1022 /**/ 1023 1276, 1024 /**/ 1025 1275, 1026 /**/ 1027 1274, 1028 /**/ 1029 1273, 1030 /**/ 1031 1272, 1032 /**/ 1033 1271, 1034 /**/ 1035 1270, 1036 /**/ 1037 1269, 1038 /**/ 1039 1268, 1040 /**/ 1041 1267, 1042 /**/ 1043 1266, 1044 /**/ 1045 1265, 1046 /**/ 1047 1264, 1048 /**/ 1049 1263, 1050 /**/ 1051 1262, 1052 /**/ 1053 1261, 1054 /**/ 1055 1260, 1056 /**/ 1057 1259, 1058 /**/ 1059 1258, 1060 /**/ 1061 1257, 1062 /**/ 1063 1256, 1064 /**/ 1065 1255, 1066 /**/ 1067 1254, 1068 /**/ 1069 1253, 1070 /**/ 1071 1252, 1072 /**/ 1073 1251, 1074 /**/ 1075 1250, 1076 /**/ 1077 1249, 1078 /**/ 1079 1248, 1080 /**/ 1081 1247, 1082 /**/ 1083 1246, 1084 /**/ 1085 1245, 1086 /**/ 1087 1244, 1088 /**/ 1089 1243, 1090 /**/ 1091 1242, 1092 /**/ 1093 1241, 1094 /**/ 1095 1240, 1096 /**/ 1097 1239, 1098 /**/ 1099 1238, 1100 /**/ 1101 1237, 1102 /**/ 1103 1236, 1104 /**/ 1105 1235, 1106 /**/ 1107 1234, 1108 /**/ 1109 1233, 1110 /**/ 1111 1232, 1112 /**/ 1113 1231, 1114 /**/ 1115 1230, 1116 /**/ 1117 1229, 1118 /**/ 1119 1228, 1120 /**/ 1121 1227, 1122 /**/ 1123 1226, 1124 /**/ 1125 1225, 1126 /**/ 1127 1224, 1128 /**/ 1129 1223, 1130 /**/ 1131 1222, 1132 /**/ 1133 1221, 1134 /**/ 1135 1220, 1136 /**/ 1137 1219, 1138 /**/ 1139 1218, 1140 /**/ 1141 1217, 1142 /**/ 1143 1216, 1144 /**/ 1145 1215, 1146 /**/ 1147 1214, 1148 /**/ 1149 1213, 1150 /**/ 1151 1212, 1152 /**/ 1153 1211, 1154 /**/ 1155 1210, 1156 /**/ 1157 1209, 1158 /**/ 1159 1208, 1160 /**/ 1161 1207, 1162 /**/ 1163 1206, 1164 /**/ 1165 1205, 1166 /**/ 1167 1204, 1168 /**/ 1169 1203, 1170 /**/ 1171 1202, 1172 /**/ 1173 1201, 1174 /**/ 1175 1200, 1176 /**/ 1177 1199, 1178 /**/ 1179 1198, 1180 /**/ 1181 1197, 1182 /**/ 1183 1196, 1184 /**/ 1185 1195, 1186 /**/ 1187 1194, 1188 /**/ 1189 1193, 1190 /**/ 1191 1192, 1192 /**/ 1193 1191, 1194 /**/ 1195 1190, 1196 /**/ 1197 1189, 1198 /**/ 1199 1188, 1200 /**/ 1201 1187, 1202 /**/ 1203 1186, 1204 /**/ 1205 1185, 1206 /**/ 1207 1184, 1208 /**/ 1209 1183, 1210 /**/ 1211 1182, 1212 /**/ 1213 1181, 1214 /**/ 1215 1180, 1216 /**/ 1217 1179, 1218 /**/ 1219 1178, 1220 /**/ 1221 1177, 1222 /**/ 1223 1176, 1224 /**/ 1225 1175, 1226 /**/ 1227 1174, 1228 /**/ 1229 1173, 1230 /**/ 1231 1172, 1232 /**/ 1233 1171, 1234 /**/ 1235 1170, 1236 /**/ 1237 1169, 1238 /**/ 1239 1168, 1240 /**/ 1241 1167, 1242 /**/ 1243 1166, 1244 /**/ 1245 1165, 1246 /**/ 1247 1164, 1248 /**/ 1249 1163, 1250 /**/ 1251 1162, 1252 /**/ 1253 1161, 1254 /**/ 1255 1160, 1256 /**/ 1257 1159, 1258 /**/ 1259 1158, 1260 /**/ 1261 1157, 1262 /**/ 1263 1156, 1264 /**/ 1265 1155, 1266 /**/ 1267 1154, 1268 /**/ 1269 1153, 1270 /**/ 1271 1152, 1272 /**/ 1273 1151, 1274 /**/ 1275 1150, 1276 /**/ 1277 1149, 1278 /**/ 1279 1148, 1280 /**/ 1281 1147, 1282 /**/ 1283 1146, 1284 /**/ 1285 1145, 1286 /**/ 1287 1144, 1288 /**/ 1289 1143, 1290 /**/ 1291 1142, 1292 /**/ 1293 1141, 1294 /**/ 1295 1140, 1296 /**/ 1297 1139, 1298 /**/ 1299 1138, 1300 /**/ 1301 1137, 1302 /**/ 1303 1136, 1304 /**/ 1305 1135, 1306 /**/ 1307 1134, 1308 /**/ 1309 1133, 1310 /**/ 1311 1132, 1312 /**/ 1313 1131, 1314 /**/ 1315 1130, 1316 /**/ 1317 1129, 1318 /**/ 1319 1128, 1320 /**/ 1321 1127, 1322 /**/ 1323 1126, 1324 /**/ 1325 1125, 1326 /**/ 1327 1124, 1328 /**/ 1329 1123, 1330 /**/ 1331 1122, 1332 /**/ 1333 1121, 1334 /**/ 1335 1120, 1336 /**/ 1337 1119, 1338 /**/ 1339 1118, 1340 /**/ 1341 1117, 1342 /**/ 1343 1116, 1344 /**/ 1345 1115, 1346 /**/ 1347 1114, 1348 /**/ 1349 1113, 1350 /**/ 1351 1112, 1352 /**/ 1353 1111, 1354 /**/ 1355 1110, 1356 /**/ 1357 1109, 1358 /**/ 1359 1108, 1360 /**/ 1361 1107, 1362 /**/ 1363 1106, 1364 /**/ 1365 1105, 1366 /**/ 1367 1104, 1368 /**/ 1369 1103, 1370 /**/ 1371 1102, 1372 /**/ 1373 1101, 1374 /**/ 1375 1100, 1376 /**/ 1377 1099, 1378 /**/ 1379 1098, 1380 /**/ 1381 1097, 1382 /**/ 1383 1096, 1384 /**/ 1385 1095, 1386 /**/ 1387 1094, 1388 /**/ 1389 1093, 1390 /**/ 1391 1092, 1392 /**/ 1393 1091, 1394 /**/ 1395 1090, 1396 /**/ 1397 1089, 1398 /**/ 1399 1088, 1400 /**/ 1401 1087, 1402 /**/ 1403 1086, 1404 /**/ 1405 1085, 1406 /**/ 1407 1084, 1408 /**/ 1409 1083, 1410 /**/ 1411 1082, 1412 /**/ 1413 1081, 1414 /**/ 1415 1080, 1416 /**/ 1417 1079, 1418 /**/ 1419 1078, 1420 /**/ 1421 1077, 1422 /**/ 1423 1076, 1424 /**/ 1425 1075, 1426 /**/ 1427 1074, 1428 /**/ 1429 1073, 1430 /**/ 1431 1072, 1432 /**/ 1433 1071, 1434 /**/ 1435 1070, 1436 /**/ 1437 1069, 1438 /**/ 1439 1068, 1440 /**/ 1441 1067, 1442 /**/ 1443 1066, 1444 /**/ 1445 1065, 1446 /**/ 1447 1064, 1448 /**/ 1449 1063, 1450 /**/ 1451 1062, 1452 /**/ 1453 1061, 1454 /**/ 1455 1060, 1456 /**/ 1457 1059, 1458 /**/ 1459 1058, 1460 /**/ 1461 1057, 1462 /**/ 1463 1056, 1464 /**/ 1465 1055, 1466 /**/ 1467 1054, 1468 /**/ 1469 1053, 1470 /**/ 1471 1052, 1472 /**/ 1473 1051, 1474 /**/ 1475 1050, 1476 /**/ 1477 1049, 1478 /**/ 1479 1048, 1480 /**/ 1481 1047, 1482 /**/ 1483 1046, 1484 /**/ 1485 1045, 1486 /**/ 1487 1044, 1488 /**/ 1489 1043, 1490 /**/ 1491 1042, 1492 /**/ 1493 1041, 1494 /**/ 1495 1040, 1496 /**/ 1497 1039, 1498 /**/ 1499 1038, 1500 /**/ 1501 1037, 1502 /**/ 1503 1036, 1504 /**/ 1505 1035, 1506 /**/ 1507 1034, 1508 /**/ 1509 1033, 1510 /**/ 1511 1032, 1512 /**/ 1513 1031, 1514 /**/ 1515 1030, 1516 /**/ 1517 1029, 1518 /**/ 1519 1028, 1520 /**/ 1521 1027, 1522 /**/ 1523 1026, 1524 /**/ 1525 1025, 1526 /**/ 1527 1024, 1528 /**/ 1529 1023, 1530 /**/ 1531 1022, 1532 /**/ 1533 1021, 1534 /**/ 1535 1020, 1536 /**/ 1537 1019, 1538 /**/ 1539 1018, 1540 /**/ 1541 1017, 1542 /**/ 1543 1016, 1544 /**/ 1545 1015, 1546 /**/ 1547 1014, 1548 /**/ 1549 1013, 1550 /**/ 1551 1012, 1552 /**/ 1553 1011, 1554 /**/ 1555 1010, 1556 /**/ 1557 1009, 1558 /**/ 1559 1008, 1560 /**/ 1561 1007, 1562 /**/ 1563 1006, 1564 /**/ 1565 1005, 1566 /**/ 1567 1004, 1568 /**/ 1569 1003, 1570 /**/ 1571 1002, 1572 /**/ 1573 1001, 1574 /**/ 1575 1000, 1576 /**/ 1577 999, 1578 /**/ 1579 998, 1580 /**/ 1581 997, 1582 /**/ 1583 996, 1584 /**/ 1585 995, 1586 /**/ 1587 994, 1588 /**/ 1589 993, 1590 /**/ 1591 992, 1592 /**/ 1593 991, 1594 /**/ 1595 990, 1596 /**/ 1597 989, 1598 /**/ 1599 988, 1600 /**/ 1601 987, 1602 /**/ 1603 986, 1604 /**/ 1605 985, 1606 /**/ 1607 984, 1608 /**/ 1609 983, 1610 /**/ 1611 982, 1612 /**/ 1613 981, 1614 /**/ 1615 980, 1616 /**/ 1617 979, 1618 /**/ 1619 978, 1620 /**/ 1621 977, 1622 /**/ 1623 976, 1624 /**/ 1625 975, 1626 /**/ 1627 974, 1628 /**/ 1629 973, 1630 /**/ 1631 972, 1632 /**/ 1633 971, 1634 /**/ 1635 970, 1636 /**/ 1637 969, 1638 /**/ 1639 968, 1640 /**/ 1641 967, 1642 /**/ 1643 966, 1644 /**/ 1645 965, 1646 /**/ 1647 964, 1648 /**/ 1649 963, 1650 /**/ 1651 962, 1652 /**/ 1653 961, 1654 /**/ 1655 960, 1656 /**/ 1657 959, 1658 /**/ 1659 958, 1660 /**/ 1661 957, 1662 /**/ 1663 956, 1664 /**/ 1665 955, 1666 /**/ 1667 954, 1668 /**/ 1669 953, 1670 /**/ 1671 952, 1672 /**/ 1673 951, 1674 /**/ 1675 950, 1676 /**/ 1677 949, 1678 /**/ 1679 948, 1680 /**/ 1681 947, 1682 /**/ 1683 946, 1684 /**/ 1685 945, 1686 /**/ 1687 944, 1688 /**/ 1689 943, 1690 /**/ 1691 942, 1692 /**/ 1693 941, 1694 /**/ 1695 940, 1696 /**/ 1697 939, 1698 /**/ 1699 938, 1700 /**/ 1701 937, 1702 /**/ 1703 936, 1704 /**/ 1705 935, 1706 /**/ 1707 934, 1708 /**/ 1709 933, 1710 /**/ 1711 932, 1712 /**/ 1713 931, 1714 /**/ 1715 930, 1716 /**/ 1717 929, 1718 /**/ 1719 928, 1720 /**/ 1721 927, 1722 /**/ 1723 926, 1724 /**/ 1725 925, 1726 /**/ 1727 924, 1728 /**/ 1729 923, 1730 /**/ 1731 922, 1732 /**/ 1733 921, 1734 /**/ 1735 920, 1736 /**/ 1737 919, 1738 /**/ 1739 918, 1740 /**/ 1741 917, 1742 /**/ 1743 916, 1744 /**/ 1745 915, 1746 /**/ 1747 914, 1748 /**/ 1749 913, 1750 /**/ 1751 912, 1752 /**/ 1753 911, 1754 /**/ 1755 910, 1756 /**/ 1757 909, 1758 /**/ 1759 908, 1760 /**/ 1761 907, 1762 /**/ 1763 906, 1764 /**/ 1765 905, 1766 /**/ 1767 904, 1768 /**/ 1769 903, 1770 /**/ 1771 902, 1772 /**/ 1773 901, 1774 /**/ 1775 900, 1776 /**/ 1777 899, 1778 /**/ 1779 898, 1780 /**/ 1781 897, 1782 /**/ 1783 896, 1784 /**/ 1785 895, 1786 /**/ 1787 894, 1788 /**/ 1789 893, 1790 /**/ 1791 892, 1792 /**/ 1793 891, 1794 /**/ 1795 890, 1796 /**/ 1797 889, 1798 /**/ 1799 888, 1800 /**/ 1801 887, 1802 /**/ 1803 886, 1804 /**/ 1805 885, 1806 /**/ 1807 884, 1808 /**/ 1809 883, 1810 /**/ 1811 882, 1812 /**/ 1813 881, 1814 /**/ 1815 880, 1816 /**/ 1817 879, 1818 /**/ 1819 878, 1820 /**/ 1821 877, 1822 /**/ 1823 876, 1824 /**/ 1825 875, 1826 /**/ 1827 874, 1828 /**/ 1829 873, 1830 /**/ 1831 872, 1832 /**/ 1833 871, 1834 /**/ 1835 870, 1836 /**/ 1837 869, 1838 /**/ 1839 868, 1840 /**/ 1841 867, 1842 /**/ 1843 866, 1844 /**/ 1845 865, 1846 /**/ 1847 864, 1848 /**/ 1849 863, 1850 /**/ 1851 862, 1852 /**/ 1853 861, 1854 /**/ 1855 860, 1856 /**/ 1857 859, 1858 /**/ 1859 858, 1860 /**/ 1861 857, 1862 /**/ 1863 856, 1864 /**/ 1865 855, 1866 /**/ 1867 854, 1868 /**/ 1869 853, 1870 /**/ 1871 852, 1872 /**/ 1873 851, 1874 /**/ 1875 850, 1876 /**/ 1877 849, 1878 /**/ 1879 848, 1880 /**/ 1881 847, 1882 /**/ 1883 846, 1884 /**/ 1885 845, 1886 /**/ 1887 844, 1888 /**/ 1889 843, 1890 /**/ 1891 842, 1892 /**/ 1893 841, 1894 /**/ 1895 840, 1896 /**/ 1897 839, 1898 /**/ 1899 838, 1900 /**/ 1901 837, 1902 /**/ 1903 836, 1904 /**/ 1905 835, 1906 /**/ 1907 834, 1908 /**/ 1909 833, 1910 /**/ 1911 832, 1912 /**/ 1913 831, 1914 /**/ 1915 830, 1916 /**/ 1917 829, 1918 /**/ 1919 828, 1920 /**/ 1921 827, 1922 /**/ 1923 826, 1924 /**/ 1925 825, 1926 /**/ 1927 824, 1928 /**/ 1929 823, 1930 /**/ 1931 822, 1932 /**/ 1933 821, 1934 /**/ 1935 820, 1936 /**/ 1937 819, 1938 /**/ 1939 818, 1940 /**/ 1941 817, 1942 /**/ 1943 816, 1944 /**/ 1945 815, 1946 /**/ 1947 814, 1948 /**/ 1949 813, 1950 /**/ 1951 812, 1952 /**/ 1953 811, 1954 /**/ 1955 810, 1956 /**/ 1957 809, 1958 /**/ 1959 808, 1960 /**/ 1961 807, 1962 /**/ 1963 806, 1964 /**/ 1965 805, 1966 /**/ 1967 804, 1968 /**/ 1969 803, 1970 /**/ 1971 802, 1972 /**/ 1973 801, 1974 /**/ 1975 800, 1976 /**/ 1977 799, 1978 /**/ 1979 798, 1980 /**/ 1981 797, 1982 /**/ 1983 796, 1984 /**/ 1985 795, 1986 /**/ 1987 794, 1988 /**/ 1989 793, 1990 /**/ 1991 792, 1992 /**/ 1993 791, 1994 /**/ 1995 790, 1996 /**/ 1997 789, 1998 /**/ 1999 788, 2000 /**/ 2001 787, 2002 /**/ 2003 786, 2004 /**/ 2005 785, 2006 /**/ 2007 784, 2008 /**/ 2009 783, 2010 /**/ 2011 782, 2012 /**/ 2013 781, 2014 /**/ 2015 780, 2016 /**/ 2017 779, 2018 /**/ 2019 778, 2020 /**/ 2021 777, 2022 /**/ 2023 776, 2024 /**/ 2025 775, 2026 /**/ 2027 774, 2028 /**/ 2029 773, 2030 /**/ 2031 772, 2032 /**/ 2033 771, 2034 /**/ 2035 770, 2036 /**/ 2037 769, 2038 /**/ 2039 768, 2040 /**/ 2041 767, 2042 /**/ 2043 766, 2044 /**/ 2045 765, 2046 /**/ 2047 764, 2048 /**/ 2049 763, 2050 /**/ 2051 762, 2052 /**/ 2053 761, 2054 /**/ 2055 760, 2056 /**/ 2057 759, 2058 /**/ 2059 758, 2060 /**/ 2061 757, 2062 /**/ 2063 756, 2064 /**/ 2065 755, 2066 /**/ 2067 754, 2068 /**/ 2069 753, 2070 /**/ 2071 752, 2072 /**/ 2073 751, 2074 /**/ 2075 750, 2076 /**/ 2077 749, 2078 /**/ 2079 748, 2080 /**/ 2081 747, 2082 /**/ 2083 746, 2084 /**/ 2085 745, 2086 /**/ 2087 744, 2088 /**/ 2089 743, 2090 /**/ 2091 742, 2092 /**/ 2093 741, 2094 /**/ 2095 740, 2096 /**/ 2097 739, 2098 /**/ 2099 738, 2100 /**/ 2101 737, 2102 /**/ 2103 736, 2104 /**/ 2105 735, 2106 /**/ 2107 734, 2108 /**/ 2109 733, 2110 /**/ 2111 732, 2112 /**/ 2113 731, 2114 /**/ 2115 730, 2116 /**/ 2117 729, 2118 /**/ 2119 728, 2120 /**/ 2121 727, 2122 /**/ 2123 726, 2124 /**/ 2125 725, 2126 /**/ 2127 724, 2128 /**/ 2129 723, 2130 /**/ 2131 722, 2132 /**/ 2133 721, 2134 /**/ 2135 720, 2136 /**/ 2137 719, 2138 /**/ 2139 718, 2140 /**/ 2141 717, 2142 /**/ 2143 716, 2144 /**/ 2145 715, 2146 /**/ 2147 714, 2148 /**/ 2149 713, 2150 /**/ 2151 712, 2152 /**/ 2153 711, 2154 /**/ 2155 710, 2156 /**/ 2157 709, 2158 /**/ 2159 708, 2160 /**/ 2161 707, 2162 /**/ 2163 706, 2164 /**/ 2165 705, 2166 /**/ 2167 704, 2168 /**/ 2169 703, 2170 /**/ 2171 702, 2172 /**/ 2173 701, 2174 /**/ 2175 700, 2176 /**/ 2177 699, 2178 /**/ 2179 698, 2180 /**/ 2181 697, 2182 /**/ 2183 696, 2184 /**/ 2185 695, 2186 /**/ 2187 694, 2188 /**/ 2189 693, 2190 /**/ 2191 692, 2192 /**/ 2193 691, 2194 /**/ 2195 690, 2196 /**/ 2197 689, 2198 /**/ 2199 688, 2200 /**/ 2201 687, 2202 /**/ 2203 686, 2204 /**/ 2205 685, 2206 /**/ 2207 684, 2208 /**/ 2209 683, 2210 /**/ 2211 682, 2212 /**/ 2213 681, 2214 /**/ 2215 680, 2216 /**/ 2217 679, 2218 /**/ 2219 678, 2220 /**/ 2221 677, 2222 /**/ 2223 676, 2224 /**/ 2225 675, 2226 /**/ 2227 674, 2228 /**/ 2229 673, 2230 /**/ 2231 672, 2232 /**/ 2233 671, 2234 /**/ 2235 670, 2236 /**/ 2237 669, 2238 /**/ 2239 668, 2240 /**/ 2241 667, 2242 /**/ 2243 666, 2244 /**/ 2245 665, 2246 /**/ 2247 664, 2248 /**/ 2249 663, 2250 /**/ 2251 662, 2252 /**/ 2253 661, 2254 /**/ 2255 660, 2256 /**/ 2257 659, 2258 /**/ 2259 658, 2260 /**/ 2261 657, 2262 /**/ 2263 656, 2264 /**/ 2265 655, 2266 /**/ 2267 654, 2268 /**/ 2269 653, 2270 /**/ 2271 652, 2272 /**/ 2273 651, 2274 /**/ 2275 650, 2276 /**/ 2277 649, 2278 /**/ 2279 648, 2280 /**/ 2281 647, 2282 /**/ 2283 646, 2284 /**/ 2285 645, 2286 /**/ 2287 644, 2288 /**/ 2289 643, 2290 /**/ 2291 642, 2292 /**/ 2293 641, 2294 /**/ 2295 640, 2296 /**/ 2297 639, 2298 /**/ 2299 638, 2300 /**/ 2301 637, 2302 /**/ 2303 636, 2304 /**/ 2305 635, 2306 /**/ 2307 634, 2308 /**/ 2309 633, 2310 /**/ 2311 632, 2312 /**/ 2313 631, 2314 /**/ 2315 630, 2316 /**/ 2317 629, 2318 /**/ 2319 628, 2320 /**/ 2321 627, 2322 /**/ 2323 626, 2324 /**/ 2325 625, 2326 /**/ 2327 624, 2328 /**/ 2329 623, 2330 /**/ 2331 622, 2332 /**/ 2333 621, 2334 /**/ 2335 620, 2336 /**/ 2337 619, 2338 /**/ 2339 618, 2340 /**/ 2341 617, 2342 /**/ 2343 616, 2344 /**/ 2345 615, 2346 /**/ 2347 614, 2348 /**/ 2349 613, 2350 /**/ 2351 612, 2352 /**/ 2353 611, 2354 /**/ 2355 610, 2356 /**/ 2357 609, 2358 /**/ 2359 608, 2360 /**/ 2361 607, 2362 /**/ 2363 606, 2364 /**/ 2365 605, 2366 /**/ 2367 604, 2368 /**/ 2369 603, 2370 /**/ 2371 602, 2372 /**/ 2373 601, 2374 /**/ 2375 600, 2376 /**/ 2377 599, 2378 /**/ 2379 598, 2380 /**/ 2381 597, 2382 /**/ 2383 596, 2384 /**/ 2385 595, 2386 /**/ 2387 594, 2388 /**/ 2389 593, 2390 /**/ 2391 592, 2392 /**/ 2393 591, 2394 /**/ 2395 590, 2396 /**/ 2397 589, 2398 /**/ 2399 588, 2400 /**/ 2401 587, 2402 /**/ 2403 586, 2404 /**/ 2405 585, 2406 /**/ 2407 584, 2408 /**/ 2409 583, 2410 /**/ 2411 582, 2412 /**/ 2413 581, 2414 /**/ 2415 580, 2416 /**/ 2417 579, 2418 /**/ 2419 578, 2420 /**/ 2421 577, 2422 /**/ 2423 576, 2424 /**/ 2425 575, 2426 /**/ 2427 574, 2428 /**/ 2429 573, 2430 /**/ 2431 572, 2432 /**/ 2433 571, 2434 /**/ 2435 570, 2436 /**/ 2437 569, 2438 /**/ 2439 568, 2440 /**/ 2441 567, 2442 /**/ 2443 566, 2444 /**/ 2445 565, 2446 /**/ 2447 564, 2448 /**/ 2449 563, 2450 /**/ 2451 562, 2452 /**/ 2453 561, 2454 /**/ 2455 560, 2456 /**/ 2457 559, 2458 /**/ 2459 558, 2460 /**/ 2461 557, 2462 /**/ 2463 556, 2464 /**/ 2465 555, 2466 /**/ 2467 554, 2468 /**/ 2469 553, 2470 /**/ 2471 552, 2472 /**/ 2473 551, 2474 /**/ 2475 550, 2476 /**/ 2477 549, 2478 /**/ 2479 548, 2480 /**/ 2481 547, 2482 /**/ 2483 546, 2484 /**/ 2485 545, 2486 /**/ 2487 544, 2488 /**/ 2489 543, 2490 /**/ 2491 542, 2492 /**/ 2493 541, 2494 /**/ 2495 540, 2496 /**/ 2497 539, 2498 /**/ 2499 538, 2500 /**/ 2501 537, 2502 /**/ 2503 536, 2504 /**/ 2505 535, 2506 /**/ 2507 534, 2508 /**/ 2509 533, 2510 /**/ 2511 532, 2512 /**/ 2513 531, 2514 /**/ 2515 530, 2516 /**/ 2517 529, 2518 /**/ 2519 528, 2520 /**/ 2521 527, 2522 /**/ 2523 526, 2524 /**/ 2525 525, 2526 /**/ 2527 524, 2528 /**/ 2529 523, 2530 /**/ 2531 522, 2532 /**/ 2533 521, 2534 /**/ 2535 520, 2536 /**/ 2537 519, 2538 /**/ 2539 518, 2540 /**/ 2541 517, 2542 /**/ 2543 516, 2544 /**/ 2545 515, 2546 /**/ 2547 514, 2548 /**/ 2549 513, 2550 /**/ 2551 512, 2552 /**/ 2553 511, 2554 /**/ 2555 510, 2556 /**/ 2557 509, 2558 /**/ 2559 508, 2560 /**/ 2561 507, 2562 /**/ 2563 506, 2564 /**/ 2565 505, 2566 /**/ 2567 504, 2568 /**/ 2569 503, 2570 /**/ 2571 502, 2572 /**/ 2573 501, 2574 /**/ 2575 500, 2576 /**/ 2577 499, 2578 /**/ 2579 498, 2580 /**/ 2581 497, 2582 /**/ 2583 496, 2584 /**/ 2585 495, 2586 /**/ 2587 494, 2588 /**/ 2589 493, 2590 /**/ 2591 492, 2592 /**/ 2593 491, 2594 /**/ 2595 490, 2596 /**/ 2597 489, 2598 /**/ 2599 488, 2600 /**/ 2601 487, 2602 /**/ 2603 486, 2604 /**/ 2605 485, 2606 /**/ 2607 484, 2608 /**/ 2609 483, 2610 /**/ 2611 482, 2612 /**/ 2613 481, 2614 /**/ 2615 480, 2616 /**/ 2617 479, 2618 /**/ 2619 478, 2620 /**/ 2621 477, 2622 /**/ 2623 476, 2624 /**/ 2625 475, 2626 /**/ 2627 474, 2628 /**/ 2629 473, 2630 /**/ 2631 472, 2632 /**/ 2633 471, 2634 /**/ 2635 470, 2636 /**/ 2637 469, 2638 /**/ 2639 468, 2640 /**/ 2641 467, 2642 /**/ 2643 466, 2644 /**/ 2645 465, 2646 /**/ 2647 464, 2648 /**/ 2649 463, 2650 /**/ 2651 462, 2652 /**/ 2653 461, 2654 /**/ 2655 460, 2656 /**/ 2657 459, 2658 /**/ 2659 458, 2660 /**/ 2661 457, 2662 /**/ 2663 456, 2664 /**/ 2665 455, 2666 /**/ 2667 454, 2668 /**/ 2669 453, 2670 /**/ 2671 452, 2672 /**/ 2673 451, 2674 /**/ 2675 450, 2676 /**/ 2677 449, 2678 /**/ 2679 448, 2680 /**/ 2681 447, 2682 /**/ 2683 446, 2684 /**/ 2685 445, 2686 /**/ 2687 444, 2688 /**/ 2689 443, 2690 /**/ 2691 442, 2692 /**/ 2693 441, 2694 /**/ 2695 440, 2696 /**/ 2697 439, 2698 /**/ 2699 438, 2700 /**/ 2701 437, 2702 /**/ 2703 436, 2704 /**/ 2705 435, 2706 /**/ 2707 434, 2708 /**/ 2709 433, 2710 /**/ 2711 432, 2712 /**/ 2713 431, 2714 /**/ 2715 430, 2716 /**/ 2717 429, 2718 /**/ 2719 428, 2720 /**/ 2721 427, 2722 /**/ 2723 426, 2724 /**/ 2725 425, 2726 /**/ 2727 424, 2728 /**/ 2729 423, 2730 /**/ 2731 422, 2732 /**/ 2733 421, 2734 /**/ 2735 420, 2736 /**/ 2737 419, 2738 /**/ 2739 418, 2740 /**/ 2741 417, 2742 /**/ 2743 416, 2744 /**/ 2745 415, 2746 /**/ 2747 414, 2748 /**/ 2749 413, 2750 /**/ 2751 412, 2752 /**/ 2753 411, 2754 /**/ 2755 410, 2756 /**/ 2757 409, 2758 /**/ 2759 408, 2760 /**/ 2761 407, 2762 /**/ 2763 406, 2764 /**/ 2765 405, 2766 /**/ 2767 404, 2768 /**/ 2769 403, 2770 /**/ 2771 402, 2772 /**/ 2773 401, 2774 /**/ 2775 400, 2776 /**/ 2777 399, 2778 /**/ 2779 398, 2780 /**/ 2781 397, 2782 /**/ 2783 396, 2784 /**/ 2785 395, 2786 /**/ 2787 394, 2788 /**/ 2789 393, 2790 /**/ 2791 392, 2792 /**/ 2793 391, 2794 /**/ 2795 390, 2796 /**/ 2797 389, 2798 /**/ 2799 388, 2800 /**/ 2801 387, 2802 /**/ 2803 386, 2804 /**/ 2805 385, 2806 /**/ 2807 384, 2808 /**/ 2809 383, 2810 /**/ 2811 382, 2812 /**/ 2813 381, 2814 /**/ 2815 380, 2816 /**/ 2817 379, 2818 /**/ 2819 378, 2820 /**/ 2821 377, 2822 /**/ 2823 376, 2824 /**/ 2825 375, 2826 /**/ 2827 374, 2828 /**/ 2829 373, 2830 /**/ 2831 372, 2832 /**/ 2833 371, 2834 /**/ 2835 370, 2836 /**/ 2837 369, 2838 /**/ 2839 368, 2840 /**/ 2841 367, 2842 /**/ 2843 366, 2844 /**/ 2845 365, 2846 /**/ 2847 364, 2848 /**/ 2849 363, 2850 /**/ 2851 362, 2852 /**/ 2853 361, 2854 /**/ 2855 360, 2856 /**/ 2857 359, 2858 /**/ 2859 358, 2860 /**/ 2861 357, 2862 /**/ 2863 356, 2864 /**/ 2865 355, 2866 /**/ 2867 354, 2868 /**/ 2869 353, 2870 /**/ 2871 352, 2872 /**/ 2873 351, 2874 /**/ 2875 350, 2876 /**/ 2877 349, 2878 /**/ 2879 348, 2880 /**/ 2881 347, 2882 /**/ 2883 346, 2884 /**/ 2885 345, 2886 /**/ 2887 344, 2888 /**/ 2889 343, 2890 /**/ 2891 342, 2892 /**/ 2893 341, 2894 /**/ 2895 340, 2896 /**/ 2897 339, 2898 /**/ 2899 338, 2900 /**/ 2901 337, 2902 /**/ 2903 336, 2904 /**/ 2905 335, 2906 /**/ 2907 334, 2908 /**/ 2909 333, 2910 /**/ 2911 332, 2912 /**/ 2913 331, 2914 /**/ 2915 330, 2916 /**/ 2917 329, 2918 /**/ 2919 328, 2920 /**/ 2921 327, 2922 /**/ 2923 326, 2924 /**/ 2925 325, 2926 /**/ 2927 324, 2928 /**/ 2929 323, 2930 /**/ 2931 322, 2932 /**/ 2933 321, 2934 /**/ 2935 320, 2936 /**/ 2937 319, 2938 /**/ 2939 318, 2940 /**/ 2941 317, 2942 /**/ 2943 316, 2944 /**/ 2945 315, 2946 /**/ 2947 314, 2948 /**/ 2949 313, 2950 /**/ 2951 312, 2952 /**/ 2953 311, 2954 /**/ 2955 310, 2956 /**/ 2957 309, 2958 /**/ 2959 308, 2960 /**/ 2961 307, 2962 /**/ 2963 306, 2964 /**/ 2965 305, 2966 /**/ 2967 304, 2968 /**/ 2969 303, 2970 /**/ 2971 302, 2972 /**/ 2973 301, 2974 /**/ 2975 300, 2976 /**/ 2977 299, 2978 /**/ 2979 298, 2980 /**/ 2981 297, 2982 /**/ 2983 296, 2984 /**/ 2985 295, 2986 /**/ 2987 294, 2988 /**/ 2989 293, 2990 /**/ 2991 292, 2992 /**/ 2993 291, 2994 /**/ 2995 290, 2996 /**/ 2997 289, 2998 /**/ 2999 288, 3000 /**/ 3001 287, 3002 /**/ 3003 286, 3004 /**/ 3005 285, 3006 /**/ 3007 284, 3008 /**/ 3009 283, 3010 /**/ 3011 282, 3012 /**/ 3013 281, 3014 /**/ 3015 280, 3016 /**/ 3017 279, 3018 /**/ 3019 278, 3020 /**/ 3021 277, 3022 /**/ 3023 276, 3024 /**/ 3025 275, 3026 /**/ 3027 274, 3028 /**/ 3029 273, 3030 /**/ 3031 272, 3032 /**/ 3033 271, 3034 /**/ 3035 270, 3036 /**/ 3037 269, 3038 /**/ 3039 268, 3040 /**/ 3041 267, 3042 /**/ 3043 266, 3044 /**/ 3045 265, 3046 /**/ 3047 264, 3048 /**/ 3049 263, 3050 /**/ 3051 262, 3052 /**/ 3053 261, 3054 /**/ 3055 260, 3056 /**/ 3057 259, 3058 /**/ 3059 258, 3060 /**/ 3061 257, 3062 /**/ 3063 256, 3064 /**/ 3065 255, 3066 /**/ 3067 254, 3068 /**/ 3069 253, 3070 /**/ 3071 252, 3072 /**/ 3073 251, 3074 /**/ 3075 250, 3076 /**/ 3077 249, 3078 /**/ 3079 248, 3080 /**/ 3081 247, 3082 /**/ 3083 246, 3084 /**/ 3085 245, 3086 /**/ 3087 244, 3088 /**/ 3089 243, 3090 /**/ 3091 242, 3092 /**/ 3093 241, 3094 /**/ 3095 240, 3096 /**/ 3097 239, 3098 /**/ 3099 238, 3100 /**/ 3101 237, 3102 /**/ 3103 236, 3104 /**/ 3105 235, 3106 /**/ 3107 234, 3108 /**/ 3109 233, 3110 /**/ 3111 232, 3112 /**/ 3113 231, 3114 /**/ 3115 230, 3116 /**/ 3117 229, 3118 /**/ 3119 228, 3120 /**/ 3121 227, 3122 /**/ 3123 226, 3124 /**/ 3125 225, 3126 /**/ 3127 224, 3128 /**/ 3129 223, 3130 /**/ 3131 222, 3132 /**/ 3133 221, 3134 /**/ 3135 220, 3136 /**/ 3137 219, 3138 /**/ 3139 218, 3140 /**/ 3141 217, 3142 /**/ 3143 216, 3144 /**/ 3145 215, 3146 /**/ 3147 214, 3148 /**/ 3149 213, 3150 /**/ 3151 212, 3152 /**/ 3153 211, 3154 /**/ 3155 210, 3156 /**/ 3157 209, 3158 /**/ 3159 208, 3160 /**/ 3161 207, 3162 /**/ 3163 206, 3164 /**/ 3165 205, 3166 /**/ 3167 204, 3168 /**/ 3169 203, 3170 /**/ 3171 202, 3172 /**/ 3173 201, 3174 /**/ 3175 200, 3176 /**/ 3177 199, 3178 /**/ 3179 198, 3180 /**/ 3181 197, 3182 /**/ 3183 196, 3184 /**/ 3185 195, 3186 /**/ 3187 194, 3188 /**/ 3189 193, 3190 /**/ 3191 192, 3192 /**/ 3193 191, 3194 /**/ 3195 190, 3196 /**/ 3197 189, 3198 /**/ 3199 188, 3200 /**/ 3201 187, 3202 /**/ 3203 186, 3204 /**/ 3205 185, 3206 /**/ 3207 184, 3208 /**/ 3209 183, 3210 /**/ 3211 182, 3212 /**/ 3213 181, 3214 /**/ 3215 180, 3216 /**/ 3217 179, 3218 /**/ 3219 178, 3220 /**/ 3221 177, 3222 /**/ 3223 176, 3224 /**/ 3225 175, 3226 /**/ 3227 174, 3228 /**/ 3229 173, 3230 /**/ 3231 172, 3232 /**/ 3233 171, 3234 /**/ 3235 170, 3236 /**/ 3237 169, 3238 /**/ 3239 168, 3240 /**/ 3241 167, 3242 /**/ 3243 166, 3244 /**/ 3245 165, 3246 /**/ 3247 164, 3248 /**/ 3249 163, 3250 /**/ 3251 162, 3252 /**/ 3253 161, 3254 /**/ 3255 160, 3256 /**/ 3257 159, 3258 /**/ 3259 158, 3260 /**/ 3261 157, 3262 /**/ 3263 156, 3264 /**/ 3265 155, 3266 /**/ 3267 154, 3268 /**/ 3269 153, 3270 /**/ 3271 152, 3272 /**/ 3273 151, 3274 /**/ 3275 150, 3276 /**/ 3277 149, 3278 /**/ 3279 148, 3280 /**/ 3281 147, 3282 /**/ 3283 146, 3284 /**/ 3285 145, 3286 /**/ 3287 144, 3288 /**/ 3289 143, 3290 /**/ 3291 142, 3292 /**/ 3293 141, 3294 /**/ 3295 140, 3296 /**/ 3297 139, 3298 /**/ 3299 138, 3300 /**/ 3301 137, 3302 /**/ 3303 136, 3304 /**/ 3305 135, 3306 /**/ 3307 134, 3308 /**/ 3309 133, 3310 /**/ 3311 132, 3312 /**/ 3313 131, 3314 /**/ 3315 130, 3316 /**/ 3317 129, 3318 /**/ 3319 128, 3320 /**/ 3321 127, 3322 /**/ 3323 126, 3324 /**/ 3325 125, 3326 /**/ 3327 124, 3328 /**/ 3329 123, 3330 /**/ 3331 122, 3332 /**/ 3333 121, 3334 /**/ 3335 120, 3336 /**/ 3337 119, 3338 /**/ 3339 118, 3340 /**/ 3341 117, 3342 /**/ 3343 116, 3344 /**/ 3345 115, 3346 /**/ 3347 114, 3348 /**/ 3349 113, 3350 /**/ 3351 112, 3352 /**/ 3353 111, 3354 /**/ 3355 110, 3356 /**/ 3357 109, 3358 /**/ 3359 108, 3360 /**/ 3361 107, 3362 /**/ 3363 106, 3364 /**/ 3365 105, 3366 /**/ 3367 104, 3368 /**/ 3369 103, 3370 /**/ 3371 102, 3372 /**/ 3373 101, 3374 /**/ 3375 100, 3376 /**/ 3377 99, 3378 /**/ 3379 98, 3380 /**/ 3381 97, 3382 /**/ 3383 96, 3384 /**/ 3385 95, 3386 /**/ 3387 94, 3388 /**/ 3389 93, 3390 /**/ 3391 92, 3392 /**/ 3393 91, 3394 /**/ 3395 90, 3396 /**/ 3397 89, 3398 /**/ 3399 88, 3400 /**/ 3401 87, 3402 /**/ 3403 86, 3404 /**/ 3405 85, 3406 /**/ 3407 84, 3408 /**/ 3409 83, 3410 /**/ 3411 82, 3412 /**/ 3413 81, 3414 /**/ 3415 80, 3416 /**/ 3417 79, 3418 /**/ 3419 78, 3420 /**/ 3421 77, 3422 /**/ 3423 76, 3424 /**/ 3425 75, 3426 /**/ 3427 74, 3428 /**/ 3429 73, 3430 /**/ 3431 72, 3432 /**/ 3433 71, 3434 /**/ 3435 70, 3436 /**/ 3437 69, 3438 /**/ 3439 68, 3440 /**/ 3441 67, 3442 /**/ 3443 66, 3444 /**/ 3445 65, 3446 /**/ 3447 64, 3448 /**/ 3449 63, 3450 /**/ 3451 62, 3452 /**/ 3453 61, 3454 /**/ 3455 60, 3456 /**/ 3457 59, 3458 /**/ 3459 58, 3460 /**/ 3461 57, 3462 /**/ 3463 56, 3464 /**/ 3465 55, 3466 /**/ 3467 54, 3468 /**/ 3469 53, 3470 /**/ 3471 52, 3472 /**/ 3473 51, 3474 /**/ 3475 50, 3476 /**/ 3477 49, 3478 /**/ 3479 48, 3480 /**/ 3481 47, 3482 /**/ 3483 46, 3484 /**/ 3485 45, 3486 /**/ 3487 44, 3488 /**/ 3489 43, 3490 /**/ 3491 42, 3492 /**/ 3493 41, 3494 /**/ 3495 40, 3496 /**/ 3497 39, 3498 /**/ 3499 38, 3500 /**/ 3501 37, 3502 /**/ 3503 36, 3504 /**/ 3505 35, 3506 /**/ 3507 34, 3508 /**/ 3509 33, 3510 /**/ 3511 32, 3512 /**/ 3513 31, 3514 /**/ 3515 30, 3516 /**/ 3517 29, 3518 /**/ 3519 28, 3520 /**/ 3521 27, 3522 /**/ 3523 26, 3524 /**/ 3525 25, 3526 /**/ 3527 24, 3528 /**/ 3529 23, 3530 /**/ 3531 22, 3532 /**/ 3533 21, 3534 /**/ 3535 20, 3536 /**/ 3537 19, 3538 /**/ 3539 18, 3540 /**/ 3541 17, 3542 /**/ 3543 16, 3544 /**/ 3545 15, 3546 /**/ 3547 14, 3548 /**/ 3549 13, 3550 /**/ 3551 12, 3552 /**/ 3553 11, 3554 /**/ 3555 10, 3556 /**/ 3557 9, 3558 /**/ 3559 8, 3560 /**/ 3561 7, 3562 /**/ 3563 6, 3564 /**/ 3565 5, 3566 /**/ 3567 4, 3568 /**/ 3569 3, 3570 /**/ 3571 2, 3572 /**/ 3573 1, 3574 /**/ 3575 0 3576 }; 3577 3578 /* 3579 * Place to put a short description when adding a feature with a patch. 3580 * Keep it short, e.g.,: "relative numbers", "persistent undo". 3581 * Also add a comment marker to separate the lines. 3582 * See the official Vim patches for the diff format: It must use a context of 3583 * one line only. Create it by hand or use "diff -C2" and edit the patch. 3584 */ 3585 static char *(extra_patches[]) = 3586 { /* Add your patch description below this line */ 3587 /**/ 3588 NULL 3589 }; 3590 3591 int 3592 highest_patch(void) 3593 { 3594 int i; 3595 int h = 0; 3596 3597 for (i = 0; included_patches[i] != 0; ++i) 3598 if (included_patches[i] > h) 3599 h = included_patches[i]; 3600 return h; 3601 } 3602 3603 #if defined(FEAT_EVAL) || defined(PROTO) 3604 /* 3605 * Return TRUE if patch "n" has been included. 3606 */ 3607 int 3608 has_patch(int n) 3609 { 3610 int i; 3611 3612 for (i = 0; included_patches[i] != 0; ++i) 3613 if (included_patches[i] == n) 3614 return TRUE; 3615 return FALSE; 3616 } 3617 #endif 3618 3619 void 3620 ex_version(exarg_T *eap) 3621 { 3622 /* 3623 * Ignore a ":version 9.99" command. 3624 */ 3625 if (*eap->arg == NUL) 3626 { 3627 msg_putchar('\n'); 3628 list_version(); 3629 } 3630 } 3631 3632 /* 3633 * List all features aligned in columns, dictionary style. 3634 */ 3635 static void 3636 list_features(void) 3637 { 3638 int i; 3639 int ncol; 3640 int nrow; 3641 int nfeat = 0; 3642 int width = 0; 3643 3644 /* Find the length of the longest feature name, use that + 1 as the column 3645 * width */ 3646 for (i = 0; features[i] != NULL; ++i) 3647 { 3648 int l = (int)STRLEN(features[i]); 3649 3650 if (l > width) 3651 width = l; 3652 ++nfeat; 3653 } 3654 width += 1; 3655 3656 if (Columns < width) 3657 { 3658 /* Not enough screen columns - show one per line */ 3659 for (i = 0; features[i] != NULL; ++i) 3660 { 3661 version_msg(features[i]); 3662 if (msg_col > 0) 3663 msg_putchar('\n'); 3664 } 3665 return; 3666 } 3667 3668 /* The rightmost column doesn't need a separator. 3669 * Sacrifice it to fit in one more column if possible. */ 3670 ncol = (int) (Columns + 1) / width; 3671 nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0); 3672 3673 /* i counts columns then rows. idx counts rows then columns. */ 3674 for (i = 0; !got_int && i < nrow * ncol; ++i) 3675 { 3676 int idx = (i / ncol) + (i % ncol) * nrow; 3677 3678 if (idx < nfeat) 3679 { 3680 int last_col = (i + 1) % ncol == 0; 3681 3682 msg_puts((char_u *)features[idx]); 3683 if (last_col) 3684 { 3685 if (msg_col > 0) 3686 msg_putchar('\n'); 3687 } 3688 else 3689 { 3690 while (msg_col % width) 3691 msg_putchar(' '); 3692 } 3693 } 3694 else 3695 { 3696 if (msg_col > 0) 3697 msg_putchar('\n'); 3698 } 3699 } 3700 } 3701 3702 void 3703 list_version(void) 3704 { 3705 int i; 3706 int first; 3707 char *s = ""; 3708 3709 /* 3710 * When adding features here, don't forget to update the list of 3711 * internal variables in eval.c! 3712 */ 3713 MSG(longVersion); 3714 #ifdef WIN3264 3715 # ifdef FEAT_GUI_W32 3716 # ifdef _WIN64 3717 MSG_PUTS(_("\nMS-Windows 64-bit GUI version")); 3718 # else 3719 MSG_PUTS(_("\nMS-Windows 32-bit GUI version")); 3720 # endif 3721 # ifdef FEAT_OLE 3722 MSG_PUTS(_(" with OLE support")); 3723 # endif 3724 # else 3725 # ifdef _WIN64 3726 MSG_PUTS(_("\nMS-Windows 64-bit console version")); 3727 # else 3728 MSG_PUTS(_("\nMS-Windows 32-bit console version")); 3729 # endif 3730 # endif 3731 #endif 3732 #if defined(MACOS_X) 3733 # if defined(MACOS_X_DARWIN) 3734 MSG_PUTS(_("\nmacOS version")); 3735 # else 3736 MSG_PUTS(_("\nmacOS version w/o darwin feat.")); 3737 # endif 3738 #endif 3739 3740 #ifdef VMS 3741 MSG_PUTS(_("\nOpenVMS version")); 3742 # ifdef HAVE_PATHDEF 3743 if (*compiled_arch != NUL) 3744 { 3745 MSG_PUTS(" - "); 3746 MSG_PUTS(compiled_arch); 3747 } 3748 # endif 3749 3750 #endif 3751 3752 /* Print the list of patch numbers if there is at least one. */ 3753 /* Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" */ 3754 if (included_patches[0] != 0) 3755 { 3756 MSG_PUTS(_("\nIncluded patches: ")); 3757 first = -1; 3758 /* find last one */ 3759 for (i = 0; included_patches[i] != 0; ++i) 3760 ; 3761 while (--i >= 0) 3762 { 3763 if (first < 0) 3764 first = included_patches[i]; 3765 if (i == 0 || included_patches[i - 1] != included_patches[i] + 1) 3766 { 3767 MSG_PUTS(s); 3768 s = ", "; 3769 msg_outnum((long)first); 3770 if (first != included_patches[i]) 3771 { 3772 MSG_PUTS("-"); 3773 msg_outnum((long)included_patches[i]); 3774 } 3775 first = -1; 3776 } 3777 } 3778 } 3779 3780 /* Print the list of extra patch descriptions if there is at least one. */ 3781 if (extra_patches[0] != NULL) 3782 { 3783 MSG_PUTS(_("\nExtra patches: ")); 3784 s = ""; 3785 for (i = 0; extra_patches[i] != NULL; ++i) 3786 { 3787 MSG_PUTS(s); 3788 s = ", "; 3789 MSG_PUTS(extra_patches[i]); 3790 } 3791 } 3792 3793 #ifdef MODIFIED_BY 3794 MSG_PUTS("\n"); 3795 MSG_PUTS(_("Modified by ")); 3796 MSG_PUTS(MODIFIED_BY); 3797 #endif 3798 3799 #ifdef HAVE_PATHDEF 3800 if (*compiled_user != NUL || *compiled_sys != NUL) 3801 { 3802 MSG_PUTS(_("\nCompiled ")); 3803 if (*compiled_user != NUL) 3804 { 3805 MSG_PUTS(_("by ")); 3806 MSG_PUTS(compiled_user); 3807 } 3808 if (*compiled_sys != NUL) 3809 { 3810 MSG_PUTS("@"); 3811 MSG_PUTS(compiled_sys); 3812 } 3813 } 3814 #endif 3815 3816 #ifdef FEAT_HUGE 3817 MSG_PUTS(_("\nHuge version ")); 3818 #else 3819 # ifdef FEAT_BIG 3820 MSG_PUTS(_("\nBig version ")); 3821 # else 3822 # ifdef FEAT_NORMAL 3823 MSG_PUTS(_("\nNormal version ")); 3824 # else 3825 # ifdef FEAT_SMALL 3826 MSG_PUTS(_("\nSmall version ")); 3827 # else 3828 MSG_PUTS(_("\nTiny version ")); 3829 # endif 3830 # endif 3831 # endif 3832 #endif 3833 #ifndef FEAT_GUI 3834 MSG_PUTS(_("without GUI.")); 3835 #else 3836 # ifdef FEAT_GUI_GTK 3837 # ifdef USE_GTK3 3838 MSG_PUTS(_("with GTK3 GUI.")); 3839 # else 3840 # ifdef FEAT_GUI_GNOME 3841 MSG_PUTS(_("with GTK2-GNOME GUI.")); 3842 # else 3843 MSG_PUTS(_("with GTK2 GUI.")); 3844 # endif 3845 # endif 3846 # else 3847 # ifdef FEAT_GUI_MOTIF 3848 MSG_PUTS(_("with X11-Motif GUI.")); 3849 # else 3850 # ifdef FEAT_GUI_ATHENA 3851 # ifdef FEAT_GUI_NEXTAW 3852 MSG_PUTS(_("with X11-neXtaw GUI.")); 3853 # else 3854 MSG_PUTS(_("with X11-Athena GUI.")); 3855 # endif 3856 # else 3857 # ifdef FEAT_GUI_PHOTON 3858 MSG_PUTS(_("with Photon GUI.")); 3859 # else 3860 # if defined(MSWIN) 3861 MSG_PUTS(_("with GUI.")); 3862 # else 3863 # if defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON 3864 MSG_PUTS(_("with Carbon GUI.")); 3865 # else 3866 # if defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX 3867 MSG_PUTS(_("with Cocoa GUI.")); 3868 # else 3869 # endif 3870 # endif 3871 # endif 3872 # endif 3873 # endif 3874 # endif 3875 # endif 3876 #endif 3877 version_msg(_(" Features included (+) or not (-):\n")); 3878 3879 list_features(); 3880 3881 #ifdef SYS_VIMRC_FILE 3882 version_msg(_(" system vimrc file: \"")); 3883 version_msg(SYS_VIMRC_FILE); 3884 version_msg("\"\n"); 3885 #endif 3886 #ifdef USR_VIMRC_FILE 3887 version_msg(_(" user vimrc file: \"")); 3888 version_msg(USR_VIMRC_FILE); 3889 version_msg("\"\n"); 3890 #endif 3891 #ifdef USR_VIMRC_FILE2 3892 version_msg(_(" 2nd user vimrc file: \"")); 3893 version_msg(USR_VIMRC_FILE2); 3894 version_msg("\"\n"); 3895 #endif 3896 #ifdef USR_VIMRC_FILE3 3897 version_msg(_(" 3rd user vimrc file: \"")); 3898 version_msg(USR_VIMRC_FILE3); 3899 version_msg("\"\n"); 3900 #endif 3901 #ifdef USR_EXRC_FILE 3902 version_msg(_(" user exrc file: \"")); 3903 version_msg(USR_EXRC_FILE); 3904 version_msg("\"\n"); 3905 #endif 3906 #ifdef USR_EXRC_FILE2 3907 version_msg(_(" 2nd user exrc file: \"")); 3908 version_msg(USR_EXRC_FILE2); 3909 version_msg("\"\n"); 3910 #endif 3911 #ifdef FEAT_GUI 3912 # ifdef SYS_GVIMRC_FILE 3913 version_msg(_(" system gvimrc file: \"")); 3914 version_msg(SYS_GVIMRC_FILE); 3915 version_msg("\"\n"); 3916 # endif 3917 version_msg(_(" user gvimrc file: \"")); 3918 version_msg(USR_GVIMRC_FILE); 3919 version_msg("\"\n"); 3920 # ifdef USR_GVIMRC_FILE2 3921 version_msg(_("2nd user gvimrc file: \"")); 3922 version_msg(USR_GVIMRC_FILE2); 3923 version_msg("\"\n"); 3924 # endif 3925 # ifdef USR_GVIMRC_FILE3 3926 version_msg(_("3rd user gvimrc file: \"")); 3927 version_msg(USR_GVIMRC_FILE3); 3928 version_msg("\"\n"); 3929 # endif 3930 #endif 3931 version_msg(_(" defaults file: \"")); 3932 version_msg(VIM_DEFAULTS_FILE); 3933 version_msg("\"\n"); 3934 #ifdef FEAT_GUI 3935 # ifdef SYS_MENU_FILE 3936 version_msg(_(" system menu file: \"")); 3937 version_msg(SYS_MENU_FILE); 3938 version_msg("\"\n"); 3939 # endif 3940 #endif 3941 #ifdef HAVE_PATHDEF 3942 if (*default_vim_dir != NUL) 3943 { 3944 version_msg(_(" fall-back for $VIM: \"")); 3945 version_msg((char *)default_vim_dir); 3946 version_msg("\"\n"); 3947 } 3948 if (*default_vimruntime_dir != NUL) 3949 { 3950 version_msg(_(" f-b for $VIMRUNTIME: \"")); 3951 version_msg((char *)default_vimruntime_dir); 3952 version_msg("\"\n"); 3953 } 3954 version_msg(_("Compilation: ")); 3955 version_msg((char *)all_cflags); 3956 version_msg("\n"); 3957 #ifdef VMS 3958 if (*compiler_version != NUL) 3959 { 3960 version_msg(_("Compiler: ")); 3961 version_msg((char *)compiler_version); 3962 version_msg("\n"); 3963 } 3964 #endif 3965 version_msg(_("Linking: ")); 3966 version_msg((char *)all_lflags); 3967 #endif 3968 #ifdef DEBUG 3969 version_msg("\n"); 3970 version_msg(_(" DEBUG BUILD")); 3971 #endif 3972 } 3973 3974 /* 3975 * Output a string for the version message. If it's going to wrap, output a 3976 * newline, unless the message is too long to fit on the screen anyway. 3977 */ 3978 static void 3979 version_msg(char *s) 3980 { 3981 int len = (int)STRLEN(s); 3982 3983 if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns 3984 && *s != '\n') 3985 msg_putchar('\n'); 3986 if (!got_int) 3987 MSG_PUTS(s); 3988 } 3989 3990 static void do_intro_line(int row, char_u *mesg, int add_version, int attr); 3991 3992 /* 3993 * Show the intro message when not editing a file. 3994 */ 3995 void 3996 maybe_intro_message(void) 3997 { 3998 if (BUFEMPTY() 3999 && curbuf->b_fname == NULL 4000 && firstwin->w_next == NULL 4001 && vim_strchr(p_shm, SHM_INTRO) == NULL) 4002 intro_message(FALSE); 4003 } 4004 4005 /* 4006 * Give an introductory message about Vim. 4007 * Only used when starting Vim on an empty file, without a file name. 4008 * Or with the ":intro" command (for Sven :-). 4009 */ 4010 void 4011 intro_message( 4012 int colon) /* TRUE for ":intro" */ 4013 { 4014 int i; 4015 int row; 4016 int blanklines; 4017 int sponsor; 4018 char *p; 4019 static char *(lines[]) = 4020 { 4021 N_("VIM - Vi IMproved"), 4022 "", 4023 N_("version "), 4024 N_("by Bram Moolenaar et al."), 4025 #ifdef MODIFIED_BY 4026 " ", 4027 #endif 4028 N_("Vim is open source and freely distributable"), 4029 "", 4030 N_("Help poor children in Uganda!"), 4031 N_("type :help iccf<Enter> for information "), 4032 "", 4033 N_("type :q<Enter> to exit "), 4034 N_("type :help<Enter> or <F1> for on-line help"), 4035 N_("type :help version8<Enter> for version info"), 4036 NULL, 4037 "", 4038 N_("Running in Vi compatible mode"), 4039 N_("type :set nocp<Enter> for Vim defaults"), 4040 N_("type :help cp-default<Enter> for info on this"), 4041 }; 4042 #ifdef FEAT_GUI 4043 static char *(gui_lines[]) = 4044 { 4045 NULL, 4046 NULL, 4047 NULL, 4048 NULL, 4049 #ifdef MODIFIED_BY 4050 NULL, 4051 #endif 4052 NULL, 4053 NULL, 4054 NULL, 4055 N_("menu Help->Orphans for information "), 4056 NULL, 4057 N_("Running modeless, typed text is inserted"), 4058 N_("menu Edit->Global Settings->Toggle Insert Mode "), 4059 N_(" for two modes "), 4060 NULL, 4061 NULL, 4062 NULL, 4063 N_("menu Edit->Global Settings->Toggle Vi Compatible"), 4064 N_(" for Vim defaults "), 4065 }; 4066 #endif 4067 4068 /* blanklines = screen height - # message lines */ 4069 blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1); 4070 if (!p_cp) 4071 blanklines += 4; /* add 4 for not showing "Vi compatible" message */ 4072 4073 /* Don't overwrite a statusline. Depends on 'cmdheight'. */ 4074 if (p_ls > 1) 4075 blanklines -= Rows - topframe->fr_height; 4076 if (blanklines < 0) 4077 blanklines = 0; 4078 4079 /* Show the sponsor and register message one out of four times, the Uganda 4080 * message two out of four times. */ 4081 sponsor = (int)time(NULL); 4082 sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0); 4083 4084 /* start displaying the message lines after half of the blank lines */ 4085 row = blanklines / 2; 4086 if ((row >= 2 && Columns >= 50) || colon) 4087 { 4088 for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i) 4089 { 4090 p = lines[i]; 4091 #ifdef FEAT_GUI 4092 if (p_im && gui.in_use && gui_lines[i] != NULL) 4093 p = gui_lines[i]; 4094 #endif 4095 if (p == NULL) 4096 { 4097 if (!p_cp) 4098 break; 4099 continue; 4100 } 4101 if (sponsor != 0) 4102 { 4103 if (strstr(p, "children") != NULL) 4104 p = sponsor < 0 4105 ? N_("Sponsor Vim development!") 4106 : N_("Become a registered Vim user!"); 4107 else if (strstr(p, "iccf") != NULL) 4108 p = sponsor < 0 4109 ? N_("type :help sponsor<Enter> for information ") 4110 : N_("type :help register<Enter> for information "); 4111 else if (strstr(p, "Orphans") != NULL) 4112 p = N_("menu Help->Sponsor/Register for information "); 4113 } 4114 if (*p != NUL) 4115 do_intro_line(row, (char_u *)_(p), i == 2, 0); 4116 ++row; 4117 } 4118 } 4119 4120 /* Make the wait-return message appear just below the text. */ 4121 if (colon) 4122 msg_row = row; 4123 } 4124 4125 static void 4126 do_intro_line( 4127 int row, 4128 char_u *mesg, 4129 int add_version, 4130 int attr) 4131 { 4132 char_u vers[20]; 4133 int col; 4134 char_u *p; 4135 int l; 4136 int clen; 4137 #ifdef MODIFIED_BY 4138 # define MODBY_LEN 150 4139 char_u modby[MODBY_LEN]; 4140 4141 if (*mesg == ' ') 4142 { 4143 vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1); 4144 l = (int)STRLEN(modby); 4145 vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1); 4146 mesg = modby; 4147 } 4148 #endif 4149 4150 /* Center the message horizontally. */ 4151 col = vim_strsize(mesg); 4152 if (add_version) 4153 { 4154 STRCPY(vers, mediumVersion); 4155 if (highest_patch()) 4156 { 4157 /* Check for 9.9x or 9.9xx, alpha/beta version */ 4158 if (isalpha((int)vers[3])) 4159 { 4160 int len = (isalpha((int)vers[4])) ? 5 : 4; 4161 sprintf((char *)vers + len, ".%d%s", highest_patch(), 4162 mediumVersion + len); 4163 } 4164 else 4165 sprintf((char *)vers + 3, ".%d", highest_patch()); 4166 } 4167 col += (int)STRLEN(vers); 4168 } 4169 col = (Columns - col) / 2; 4170 if (col < 0) 4171 col = 0; 4172 4173 /* Split up in parts to highlight <> items differently. */ 4174 for (p = mesg; *p != NUL; p += l) 4175 { 4176 clen = 0; 4177 for (l = 0; p[l] != NUL 4178 && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l) 4179 { 4180 #ifdef FEAT_MBYTE 4181 if (has_mbyte) 4182 { 4183 clen += ptr2cells(p + l); 4184 l += (*mb_ptr2len)(p + l) - 1; 4185 } 4186 else 4187 #endif 4188 clen += byte2cells(p[l]); 4189 } 4190 screen_puts_len(p, l, row, col, *p == '<' ? HL_ATTR(HLF_8) : attr); 4191 col += clen; 4192 } 4193 4194 /* Add the version number to the version line. */ 4195 if (add_version) 4196 screen_puts(vers, row, col, 0); 4197 } 4198 4199 /* 4200 * ":intro": clear screen, display intro screen and wait for return. 4201 */ 4202 void 4203 ex_intro(exarg_T *eap UNUSED) 4204 { 4205 screenclear(); 4206 intro_message(TRUE); 4207 wait_return(TRUE); 4208 } 4209