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