1 /* vi:set ts=8 sts=0 sw=8: 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 */ 8 /* 9 * feature.h: Defines for optional code and preferences 10 * 11 * Edit this file to include/exclude parts of Vim, before compiling. 12 * The only other file that may be edited is Makefile, it contains machine 13 * specific options. 14 * 15 * To include specific options, change the "#if*" and "#endif" into comments, 16 * or uncomment the "#define". 17 * To exclude specific options, change the "#define" into a comment. 18 */ 19 20 /* 21 * When adding a new feature: 22 * - Add a #define below. 23 * - Add a message in the table above ex_version(). 24 * - Add a string to f_has(). 25 * - Add a feature to ":help feature-list" in doc/eval.txt. 26 * - Add feature to ":help +feature-list" in doc/various.txt. 27 * - Add comment for the documentation of commands that use the feature. 28 */ 29 30 /* 31 * Basic choices: 32 * ============== 33 * 34 * +tiny almost no features enabled, not even multiple windows 35 * +small few features enabled, as basic as possible 36 * +normal A default selection of features enabled 37 * +big many features enabled, as rich as possible. 38 * +huge all possible featues enabled. 39 * 40 * When +small is used, +tiny is also included. +normal implies +small, etc. 41 */ 42 43 /* 44 * Uncomment one of these to override the default. For unix use a configure 45 * argument, see Makefile. 46 */ 47 #if !defined(FEAT_TINY) && !defined(FEAT_SMALL) && !defined(FEAT_NORMAL) \ 48 && !defined(FEAT_BIG) && !defined(FEAT_HUGE) 49 /* #define FEAT_TINY */ 50 /* #define FEAT_SMALL */ 51 /* #define FEAT_NORMAL */ 52 /* #define FEAT_BIG */ 53 /* #define FEAT_HUGE */ 54 #endif 55 56 /* 57 * These executables are made available with the +big feature, because they 58 * are supposed to have enough RAM: Win32 (console & GUI), dos32, OS/2 and VMS. 59 * The dos16 version has very little RAM available, use +small. 60 */ 61 #if !defined(FEAT_TINY) && !defined(FEAT_SMALL) && !defined(FEAT_NORMAL) \ 62 && !defined(FEAT_BIG) && !defined(FEAT_HUGE) 63 # if defined(MSWIN) || defined(DJGPP) || defined(OS2) || defined(VMS) || defined(MACOS) || defined(AMIGA) 64 # define FEAT_BIG 65 # else 66 # ifdef MSDOS 67 # define FEAT_SMALL 68 # else 69 # define FEAT_NORMAL 70 # endif 71 # endif 72 #endif 73 74 /* 75 * Each feature implies including the "smaller" ones. 76 */ 77 #ifdef FEAT_HUGE 78 # define FEAT_BIG 79 #endif 80 #ifdef FEAT_BIG 81 # define FEAT_NORMAL 82 #endif 83 #ifdef FEAT_NORMAL 84 # define FEAT_SMALL 85 #endif 86 #ifdef FEAT_SMALL 87 # define FEAT_TINY 88 #endif 89 90 /* 91 * Optional code (see ":help +feature-list") 92 * ============= 93 */ 94 95 /* 96 * +windows Multiple windows. Without this there is no help 97 * window and no status lines. 98 */ 99 #ifdef FEAT_SMALL 100 # define FEAT_WINDOWS 101 #endif 102 103 /* 104 * +listcmds Vim commands for the buffer list and the argument 105 * list. Without this there is no ":buffer" ":bnext", 106 * ":bdel", ":argdelete", etc. 107 */ 108 #ifdef FEAT_NORMAL 109 # define FEAT_LISTCMDS 110 #endif 111 112 /* 113 * +vertsplit Vertically split windows. 114 */ 115 #ifdef FEAT_NORMAL 116 # define FEAT_VERTSPLIT 117 #endif 118 #if defined(FEAT_VERTSPLIT) && !defined(FEAT_WINDOWS) 119 # define FEAT_WINDOWS 120 #endif 121 122 /* 123 * +cmdhist Command line history. 124 */ 125 #ifdef FEAT_SMALL 126 # define FEAT_CMDHIST 127 #endif 128 129 /* 130 * +jumplist Jumplist, CTRL-O and CTRL-I commands. 131 */ 132 #ifdef FEAT_SMALL 133 # define FEAT_JUMPLIST 134 #endif 135 136 /* the cmdline-window requires FEAT_VERTSPLIT and FEAT_CMDHIST */ 137 #if defined(FEAT_VERTSPLIT) && defined(FEAT_CMDHIST) 138 # define FEAT_CMDWIN 139 #endif 140 141 /* 142 * +folding Fold lines. 143 */ 144 #ifdef FEAT_NORMAL 145 # define FEAT_FOLDING 146 #endif 147 148 /* 149 * +digraphs Digraphs. 150 * In insert mode and on the command line you will be 151 * able to use digraphs. The CTRL-K command will work. 152 * Define OLD_DIGRAPHS to get digraphs compatible with 153 * Vim 5.x. The new ones are from RFC 1345. 154 */ 155 #ifdef FEAT_NORMAL 156 # define FEAT_DIGRAPHS 157 /* #define OLD_DIGRAPHS */ 158 #endif 159 160 /* 161 * +langmap 'langmap' option. Only useful when you put your 162 * keyboard in a special language mode, e.g. for typing 163 * greek. 164 */ 165 #ifdef FEAT_BIG 166 # define FEAT_LANGMAP 167 #endif 168 169 /* 170 * +keymap 'keymap' option. Allows you to map typed keys in 171 * Insert mode for a special language. 172 */ 173 #ifdef FEAT_BIG 174 # define FEAT_KEYMAP 175 #endif 176 177 /* 178 * +localmap Mappings and abbreviations local to a buffer. 179 */ 180 #ifdef FEAT_NORMAL 181 # define FEAT_LOCALMAP 182 #endif 183 184 /* 185 * +insert_expand CTRL-N/CTRL-P/CTRL-X in insert mode. Takes about 186 * 4Kbyte of code. 187 */ 188 #ifdef FEAT_NORMAL 189 # define FEAT_INS_EXPAND 190 #endif 191 192 /* 193 * +cmdline_compl completion of mappings/abbreviations in cmdline mode. 194 * Takes a few Kbyte of code. 195 */ 196 #ifdef FEAT_NORMAL 197 # define FEAT_CMDL_COMPL 198 #endif 199 200 #ifdef FEAT_NORMAL 201 # define VIM_BACKTICK /* internal backtick expansion */ 202 #endif 203 204 /* 205 * +textobjects Text objects: "vaw", "das", etc. 206 */ 207 #ifdef FEAT_NORMAL 208 # define FEAT_TEXTOBJ 209 #endif 210 211 /* 212 * +visual Visual mode. 213 * +visualextra Extra features for Visual mode (mostly block operators). 214 */ 215 #ifdef FEAT_SMALL 216 # define FEAT_VISUAL 217 # ifdef FEAT_NORMAL 218 # define FEAT_VISUALEXTRA 219 # endif 220 #else 221 # ifdef FEAT_CLIPBOARD 222 # undef FEAT_CLIPBOARD /* can't use clipboard without Visual mode */ 223 # endif 224 #endif 225 226 /* 227 * +virtualedit 'virtualedit' option and its implementation 228 */ 229 #ifdef FEAT_NORMAL 230 # define FEAT_VIRTUALEDIT 231 #endif 232 233 /* 234 * +vreplace "gR" and "gr" commands. 235 */ 236 #ifdef FEAT_NORMAL 237 # define FEAT_VREPLACE 238 #endif 239 240 /* 241 * +cmdline_info 'showcmd' and 'ruler' options. 242 */ 243 #ifdef FEAT_NORMAL 244 # define FEAT_CMDL_INFO 245 #endif 246 247 /* 248 * +linebreak 'showbreak', 'breakat' and 'linebreak' options. 249 */ 250 #ifdef FEAT_NORMAL 251 # define FEAT_LINEBREAK 252 #endif 253 254 /* 255 * +ex_extra ":retab", ":right", ":left", ":center", ":normal". 256 */ 257 #ifdef FEAT_NORMAL 258 # define FEAT_EX_EXTRA 259 #endif 260 261 /* 262 * +extra_search 'hlsearch' and 'incsearch' options. 263 */ 264 #ifdef FEAT_NORMAL 265 # define FEAT_SEARCH_EXTRA 266 #endif 267 268 /* 269 * +quickfix Quickfix commands. 270 */ 271 #ifdef FEAT_NORMAL 272 # define FEAT_QUICKFIX 273 #endif 274 275 /* 276 * +file_in_path "gf" and "<cfile>" commands. 277 */ 278 #ifdef FEAT_NORMAL 279 # define FEAT_SEARCHPATH 280 #endif 281 282 /* 283 * +find_in_path "[I" ":isearch" "^W^I", ":checkpath", etc. 284 */ 285 #ifdef FEAT_NORMAL 286 # ifdef FEAT_SEARCHPATH /* FEAT_SEARCHPATH is required */ 287 # define FEAT_FIND_ID 288 # endif 289 #endif 290 291 /* 292 * +path_extra up/downwards searching in 'path' and 'tags'. 293 */ 294 #ifdef FEAT_NORMAL 295 # define FEAT_PATH_EXTRA 296 #endif 297 298 /* 299 * +rightleft Right-to-left editing/typing support. 300 */ 301 #ifdef FEAT_BIG 302 # define FEAT_RIGHTLEFT 303 #endif 304 305 /* 306 * +farsi Farsi (Persian language) Keymap support. 307 * Requires FEAT_RIGHTLEFT. 308 */ 309 #ifdef FEAT_BIG 310 # define FEAT_FKMAP 311 #endif 312 #ifdef FEAT_FKMAP 313 # ifndef FEAT_RIGHTLEFT 314 # define FEAT_RIGHTLEFT 315 # endif 316 #endif 317 318 /* 319 * +arabic Arabic keymap and shaping support. 320 * Requires FEAT_RIGHTLEFT and FEAT_MBYTE. 321 */ 322 #if defined(FEAT_BIG) && !defined(WIN16) && SIZEOF_INT >= 4 && !defined(EBCDIC) 323 # define FEAT_ARABIC 324 #endif 325 #ifdef FEAT_ARABIC 326 # ifndef FEAT_RIGHTLEFT 327 # define FEAT_RIGHTLEFT 328 # endif 329 #endif 330 331 /* 332 * +emacs_tags When FEAT_EMACS_TAGS defined: Include support for 333 * emacs style TAGS file. 334 */ 335 #ifdef FEAT_BIG 336 # define FEAT_EMACS_TAGS 337 #endif 338 339 /* 340 * +tag_binary Can use a binary search for the tags file. 341 * 342 * Disabled for EBCDIC: 343 * On OS/390 Unix we have the problem that /bin/sort sorts ASCII instead of 344 * EBCDIC. With this binary search doesn't work, as VIM expects a tag file 345 * sorted by character values. I'm not sure how to fix this. Should we really 346 * do a EBCDIC to ASCII conversion for this?? 347 */ 348 #if defined(FEAT_NORMAL) && !defined(EBCDIC) 349 # define FEAT_TAG_BINS 350 #endif 351 352 /* 353 * +tag_old_static Old style static tags: "file:tag file ..". Slows 354 * down tag searching a bit. 355 */ 356 #ifdef FEAT_NORMAL 357 # define FEAT_TAG_OLDSTATIC 358 #endif 359 360 /* 361 * +tag_any_white Allow any white space to separate the fields in a tags 362 * file. When not defined, only a TAB is allowed. 363 */ 364 /* #define FEAT_TAG_ANYWHITE */ 365 366 /* 367 * +cscope Unix only: Cscope support. 368 */ 369 #if defined(UNIX) && defined(FEAT_BIG) && !defined(FEAT_CSCOPE) && !defined(MACOS_X) 370 # define FEAT_CSCOPE 371 #endif 372 373 /* 374 * +eval Built-in script language and expression evaluation, 375 * ":let", ":if", etc. 376 */ 377 #ifdef FEAT_NORMAL 378 # define FEAT_EVAL 379 #endif 380 381 /* 382 * +user_commands Allow the user to define his own commands. 383 */ 384 #ifdef FEAT_NORMAL 385 # define FEAT_USR_CMDS 386 #endif 387 388 /* 389 * +printer ":hardcopy" command 390 * +postscript Printing uses PostScript file output. 391 */ 392 #if defined(FEAT_NORMAL) && (defined(MSWIN) || defined(FEAT_EVAL)) \ 393 && !defined(AMIGA) 394 # define FEAT_PRINTER 395 #endif 396 #if defined(FEAT_PRINTER) && ((defined(MSWIN) && defined(MSWINPS)) \ 397 || (!defined(MSWIN) && defined(FEAT_EVAL))) 398 # define FEAT_POSTSCRIPT 399 #endif 400 401 /* 402 * +modify_fname modifiers for file name. E.g., "%:p:h". 403 */ 404 #ifdef FEAT_NORMAL 405 # define FEAT_MODIFY_FNAME 406 #endif 407 408 /* 409 * +autocmd ":autocmd" command 410 */ 411 #ifdef FEAT_NORMAL 412 # define FEAT_AUTOCMD 413 #endif 414 415 /* 416 * +diff Displaying diffs in a nice way. 417 * Requires +windows and +autocmd. 418 */ 419 #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) && defined(FEAT_AUTOCMD) 420 # define FEAT_DIFF 421 #endif 422 423 /* 424 * +title 'title' and 'icon' options 425 * +statusline 'statusline', 'rulerformat' and special format of 426 * 'titlestring' and 'iconstring' options. 427 * +byte_offset '%o' in 'statusline' and builtin functions line2byte() 428 * and byte2line(). 429 * Note: Required for Macintosh. 430 */ 431 #if defined(FEAT_NORMAL) && !defined(MSDOS) 432 # define FEAT_TITLE 433 #endif 434 435 #ifdef FEAT_NORMAL 436 # define FEAT_STL_OPT 437 # ifndef FEAT_CMDL_INFO 438 # define FEAT_CMDL_INFO /* 'ruler' is required for 'statusline' */ 439 # endif 440 #endif 441 442 #ifdef FEAT_NORMAL 443 # define FEAT_BYTEOFF 444 #endif 445 446 /* 447 * +wildignore 'wildignore' and 'backupskip' options 448 * Needed for Unix to make "crontab -e" work. 449 */ 450 #if defined(FEAT_NORMAL) || defined(UNIX) 451 # define FEAT_WILDIGN 452 #endif 453 454 /* 455 * +wildmenu 'wildmenu' option 456 */ 457 #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) 458 # define FEAT_WILDMENU 459 #endif 460 461 /* 462 * +osfiletype filetype checking in autocommand patterns. 463 * Only on systems that support filetypes (RISC OS). 464 */ 465 #if 0 466 # define FEAT_OSFILETYPE 467 # define DFLT_OFT "Text" 468 #endif 469 470 /* 471 * +viminfo reading/writing the viminfo file. Takes about 8Kbyte 472 * of code. 473 * VIMINFO_FILE Location of user .viminfo file (should start with $). 474 * VIMINFO_FILE2 Location of alternate user .viminfo file. 475 */ 476 #ifdef FEAT_NORMAL 477 # define FEAT_VIMINFO 478 /* #define VIMINFO_FILE "$HOME/foo/.viminfo" */ 479 /* #define VIMINFO_FILE2 "~/bar/.viminfo" */ 480 #endif 481 482 /* 483 * +syntax syntax highlighting. When using this, it's a good 484 * idea to have +autocmd and +eval too. 485 */ 486 #if defined(FEAT_NORMAL) || defined(PROTO) 487 # define FEAT_SYN_HL 488 #endif 489 490 /* 491 * +builtin_terms Choose one out of the following four: 492 * 493 * NO_BUILTIN_TCAPS Do not include any builtin termcap entries (used only 494 * with HAVE_TGETENT defined). 495 * 496 * (nothing) Machine specific termcap entries will be included. 497 * This is default for win16 to save static data. 498 * 499 * SOME_BUILTIN_TCAPS Include most useful builtin termcap entries (used only 500 * with NO_BUILTIN_TCAPS not defined). 501 * This is the default. 502 * 503 * ALL_BUILTIN_TCAPS Include all builtin termcap entries 504 * (used only with NO_BUILTIN_TCAPS not defined). 505 */ 506 #ifdef HAVE_TGETENT 507 /* #define NO_BUILTIN_TCAPS */ 508 #endif 509 510 #if !defined(NO_BUILTIN_TCAPS) && !defined(FEAT_GUI_W16) 511 # ifdef FEAT_BIG 512 # define ALL_BUILTIN_TCAPS 513 # else 514 # define SOME_BUILTIN_TCAPS /* default */ 515 # endif 516 #endif 517 518 /* 519 * +lispindent lisp indenting (From Eric Fischer). 520 * +cindent C code indenting (From Eric Fischer). 521 * +smartindent smart C code indenting when the 'si' option is set. 522 * 523 * These two need to be defined when making prototypes. 524 */ 525 #if defined(FEAT_NORMAL) || defined(PROTO) 526 # define FEAT_LISP 527 #endif 528 529 #if defined(FEAT_NORMAL) || defined(PROTO) 530 # define FEAT_CINDENT 531 #endif 532 533 #ifdef FEAT_NORMAL 534 # define FEAT_SMARTINDENT 535 #endif 536 537 /* 538 * +comments 'comments' option. 539 */ 540 #ifdef FEAT_NORMAL 541 # define FEAT_COMMENTS 542 #endif 543 544 /* 545 * +cryptv Encryption (by Mohsin Ahmed <[email protected]>). 546 */ 547 #if defined(FEAT_NORMAL) || defined(PROTO) 548 # define FEAT_CRYPT 549 #endif 550 551 /* 552 * +mksession ":mksession" command. 553 * Requires +windows and +vertsplit. 554 */ 555 #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) && defined(FEAT_VERTSPLIT) 556 # define FEAT_SESSION 557 #endif 558 559 /* 560 * +multi_lang Multi language support. ":menutrans", ":language", etc. 561 * +gettext Message translations (requires +multi_lang) 562 * (only when "lang" archive unpacked) 563 */ 564 #ifdef FEAT_NORMAL 565 # define FEAT_MULTI_LANG 566 #endif 567 #if defined(HAVE_GETTEXT) && defined(FEAT_MULTI_LANG) \ 568 && (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) 569 # define FEAT_GETTEXT 570 #endif 571 572 /* 573 * +multi_byte Generic multi-byte character handling. Doesn't work 574 * with 16 bit ints. Required for GTK+ 2. 575 * 576 * Disabled for EBCDIC: 577 * Multibyte support doesn't work on OS390 Unix currently. 578 */ 579 #if (defined(FEAT_BIG) || defined(HAVE_GTK2) || defined(FEAT_ARABIC)) \ 580 && !defined(FEAT_MBYTE) && !defined(WIN16) \ 581 && SIZEOF_INT >= 4 && !defined(EBCDIC) 582 # define FEAT_MBYTE 583 #endif 584 585 /* 586 * +multi_byte_ime Win32 IME input method. Requires +multi_byte. 587 * Only for far-east Windows, so IME can be used to input 588 * chars. Not tested much! 589 */ 590 #if defined(FEAT_GUI_W32) && !defined(FEAT_MBYTE_IME) 591 /* #define FEAT_MBYTE_IME */ 592 # endif 593 594 #if defined(FEAT_MBYTE_IME) && !defined(FEAT_MBYTE) 595 # define FEAT_MBYTE 596 #endif 597 598 #if defined(FEAT_MBYTE) && SIZEOF_INT < 4 && !defined(PROTO) 599 Error: Can only handle multi-byte feature with 32 bit int or larger 600 #endif 601 602 /* Use iconv() when it's available. */ 603 #if defined(FEAT_MBYTE) && ((defined(HAVE_ICONV_H) && defined(HAVE_ICONV)) \ 604 || defined(DYNAMIC_ICONV)) 605 # define USE_ICONV 606 #endif 607 608 /* 609 * +xim X Input Method. For entering special languages like 610 * chinese and Japanese. 611 * +hangul_input Internal Hangul input method. Must be included 612 * through configure: "--enable-hangulin" 613 * Both are for Unix and VMS only. 614 */ 615 #ifndef FEAT_XIM 616 /* #define FEAT_XIM */ 617 #endif 618 619 #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK) 620 # define USE_XIM 1 /* needed for GTK include files */ 621 #endif 622 623 #ifdef FEAT_HANGULIN 624 # define HANGUL_DEFAULT_KEYBOARD 2 /* 2 or 3 bulsik keyboard */ 625 # define ESC_CHG_TO_ENG_MODE /* if defined, when ESC pressed, 626 * turn to english mode 627 */ 628 # if !defined(FEAT_XFONTSET) && defined(HAVE_X11) 629 # define FEAT_XFONTSET /* Hangul input requires xfontset */ 630 # endif 631 # if defined(FEAT_XIM) && !defined(LINT) 632 Error: You should select only ONE of XIM and HANGUL INPUT 633 # endif 634 #endif 635 #if defined(FEAT_HANGULIN) || defined(FEAT_XIM) 636 /* # define X_LOCALE */ /* for OS with incomplete locale 637 support, like old linux versions. */ 638 /* # define SLOW_XSERVER */ /* for extremely slow X server */ 639 #endif 640 641 /* 642 * +xfontset X fontset support. For outputting wide characters. 643 */ 644 #ifndef FEAT_XFONTSET 645 # if defined(FEAT_MBYTE) && defined(HAVE_X11) && !defined(HAVE_GTK2) 646 # define FEAT_XFONTSET 647 # else 648 /* # define FEAT_XFONTSET */ 649 # endif 650 #endif 651 652 /* 653 * +libcall libcall() function 654 */ 655 /* Using dlopen() also requires dlsym() to be available. */ 656 #if defined(HAVE_DLOPEN) && defined(HAVE_DLSYM) 657 # define USE_DLOPEN 658 #endif 659 #if defined(FEAT_EVAL) && (defined(WIN3264) || ((defined(UNIX) || defined(VMS)) \ 660 && (defined(USE_DLOPEN) || defined(HAVE_SHL_LOAD)))) 661 # define FEAT_LIBCALL 662 #endif 663 664 /* 665 * +scrollbind synchronization of split windows 666 */ 667 #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) 668 # define FEAT_SCROLLBIND 669 #endif 670 671 /* 672 * +menu ":menu" command 673 */ 674 #ifdef FEAT_NORMAL 675 # define FEAT_MENU 676 # ifdef FEAT_GUI_W32 677 # define FEAT_TEAROFF 678 # endif 679 #endif 680 681 /* There are two ways to use XPM. */ 682 #if (defined(HAVE_XM_XPMP_H) && defined(FEAT_GUI_MOTIF)) \ 683 || defined(HAVE_X11_XPM_H) 684 # define HAVE_XPM 1 685 #endif 686 687 /* 688 * +toolbar Include code for a toolbar (for the Win32 GUI, GTK 689 * always has it). But only if menus are enabled. 690 */ 691 #if defined(FEAT_NORMAL) && defined(FEAT_MENU) \ 692 && (defined(FEAT_GUI_KDE) \ 693 || defined(FEAT_GUI_GTK) \ 694 || defined(FEAT_GUI_MSWIN) \ 695 || ((defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) \ 696 && defined(HAVE_XPM)) \ 697 || defined(FEAT_GUI_PHOTON)) 698 # define FEAT_TOOLBAR 699 #endif 700 701 702 #if defined(FEAT_TOOLBAR) && !defined(FEAT_MENU) 703 # define FEAT_MENU 704 #endif 705 706 /* 707 * +browse ":browse" command. 708 * 709 * BROWSE_CURRBUF Open file browser in the directory of the current 710 * buffer, instead of the current directory. 711 */ 712 #if defined(FEAT_NORMAL) && (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_KDE) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)) 713 # define FEAT_BROWSE 714 #endif 715 #if defined(FEAT_NORMAL) && defined(FEAT_GUI_MSWIN) 716 # define BROWSE_CURRBUF 717 #endif 718 719 /* 720 * +dialog_gui Use GUI dialog. 721 * +dialog_con May use Console dialog. 722 * When none of these defined there is no dialog support. 723 */ 724 #ifdef FEAT_NORMAL 725 # if ((defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_MOTIF)) \ 726 && defined(HAVE_X11_XPM_H)) \ 727 || defined(FEAT_GUI_GTK) \ 728 || defined(FEAT_GUI_PHOTON) \ 729 || defined(FEAT_GUI_MSWIN) \ 730 || defined(FEAT_GUI_MAC) \ 731 || defined(FEAT_GUI_KDE) 732 # define FEAT_CON_DIALOG 733 # define FEAT_GUI_DIALOG 734 # else 735 # define FEAT_CON_DIALOG 736 # endif 737 #endif 738 #if !defined(FEAT_GUI_DIALOG) && (defined(FEAT_GUI_MOTIF) \ 739 || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE)) 740 /* need a dialog to show error messages when starting from the desktop */ 741 # define FEAT_GUI_DIALOG 742 #endif 743 #if defined(FEAT_GUI_DIALOG) && \ 744 (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) \ 745 || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE)|| defined(FEAT_GUI_MSWIN) \ 746 || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)) 747 # define FEAT_GUI_TEXTDIALOG 748 #endif 749 750 /* Mac specific thing: Codewarrior interface. */ 751 #ifdef FEAT_GUI_MAC 752 # define FEAT_CW_EDITOR 753 #endif 754 755 /* 756 * Preferences: 757 * ============ 758 */ 759 760 /* 761 * +writebackup 'writebackup' is default on: 762 * Use a backup file while overwriting a file. But it's 763 * deleted again when 'backup' is not set. Changing this 764 * is strongly discouraged: You can loose all your 765 * changes when the computer crashes while writing the 766 * file. 767 * VMS note: It does work on VMS as well, but because of 768 * version handling it does not have any purpose. 769 * Overwrite will write to the new version. 770 */ 771 #ifndef VMS 772 # define FEAT_WRITEBACKUP 773 #endif 774 775 /* 776 * +xterm_save The t_ti and t_te entries for the builtin xterm will 777 * be set to save the screen when starting Vim and 778 * restoring it when exiting. 779 */ 780 /* #define FEAT_XTERM_SAVE */ 781 782 /* 783 * DEBUG Output a lot of debugging garbage. 784 */ 785 /* #define DEBUG */ 786 787 /* 788 * STARTUPTIME Time the startup process. Writes a "vimstartup" file 789 * with timestamps. 790 */ 791 /* #define STARTUPTIME "vimstartup" */ 792 793 /* 794 * MEM_PROFILE Debugging of memory allocation and freeing. 795 */ 796 /* #define MEM_PROFILE */ 797 798 /* 799 * VIMRC_FILE Name of the .vimrc file in current dir. 800 */ 801 /* #define VIMRC_FILE ".vimrc" */ 802 803 /* 804 * EXRC_FILE Name of the .exrc file in current dir. 805 */ 806 /* #define EXRC_FILE ".exrc" */ 807 808 /* 809 * GVIMRC_FILE Name of the .gvimrc file in current dir. 810 */ 811 /* #define GVIMRC_FILE ".gvimrc" */ 812 813 /* 814 * VIEW_FILE Name of the default ":mkview" file. 815 */ 816 #define VIEW_FILE "View.vim" 817 818 /* 819 * SESSION_FILE Name of the default ":mksession" file. 820 */ 821 #define SESSION_FILE "Session.vim" 822 823 /* 824 * USR_VIMRC_FILE Name of the user .vimrc file. 825 * USR_VIMRC_FILE2 Name of alternate user .vimrc file. 826 * USR_VIMRC_FILE3 Name of alternate user .vimrc file. 827 */ 828 /* #define USR_VIMRC_FILE "~/foo/.vimrc" */ 829 /* #define USR_VIMRC_FILE2 "~/bar/.vimrc" */ 830 /* #define USR_VIMRC_FILE3 "$VIM/.vimrc" */ 831 832 /* 833 * EVIM_FILE Name of the evim.vim script file 834 */ 835 /* #define EVIM_FILE "$VIMRUNTIME/evim.vim" */ 836 837 /* 838 * USR_EXRC_FILE Name of the user .exrc file. 839 * USR_EXRC_FILE2 Name of the alternate user .exrc file. 840 */ 841 /* #define USR_EXRC_FILE "~/foo/.exrc" */ 842 /* #define USR_EXRC_FILE2 "~/bar/.exrc" */ 843 844 /* 845 * USR_GVIMRC_FILE Name of the user .gvimrc file. 846 * USR_GVIMRC_FILE2 Name of the alternate user .gvimrc file. 847 */ 848 /* #define USR_GVIMRC_FILE "~/foo/.gvimrc" */ 849 /* #define USR_GVIMRC_FILE2 "~/bar/.gvimrc" */ 850 /* #define USR_GVIMRC_FILE3 "$VIM/.gvimrc" */ 851 852 /* 853 * SYS_VIMRC_FILE Name of the system-wide .vimrc file. 854 */ 855 /* #define SYS_VIMRC_FILE "/etc/vimrc" */ 856 857 /* 858 * SYS_GVIMRC_FILE Name of the system-wide .gvimrc file. 859 */ 860 /* #define SYS_GVIMRC_FILE "/etc/gvimrc" */ 861 862 /* 863 * DFLT_HELPFILE Name of the help file. 864 */ 865 /* # define DFLT_HELPFILE "$VIMRUNTIME/doc/help.txt.gz" */ 866 867 /* 868 * File names for: 869 * FILETYPE_FILE switch on file type detection 870 * FTPLUGIN_FILE switch on loading filetype plugin files 871 * INDENT_FILE switch on loading indent files 872 * FTOFF_FILE switch off file type detection 873 * FTPLUGOF_FILE switch off loading settings files 874 * INDOFF_FILE switch off loading indent files 875 */ 876 /* # define FILETYPE_FILE "filetype.vim" */ 877 /* # define FTPLUGIN_FILE "ftplugin.vim" */ 878 /* # define INDENT_FILE "indent.vim" */ 879 /* # define FTOFF_FILE "ftoff.vim" */ 880 /* # define FTPLUGOF_FILE "ftplugof.vim" */ 881 /* # define INDOFF_FILE "indoff.vim" */ 882 883 /* 884 * SYS_MENU_FILE Name of the default menu.vim file. 885 */ 886 /* # define SYS_MENU_FILE "$VIMRUNTIME/menu.vim" */ 887 888 /* 889 * SYS_OPTWIN_FILE Name of the default optwin.vim file. 890 */ 891 #ifndef SYS_OPTWIN_FILE 892 # define SYS_OPTWIN_FILE "$VIMRUNTIME/optwin.vim" 893 #endif 894 895 /* 896 * SYNTAX_FNAME Name of a syntax file, where %s is the syntax name. 897 */ 898 /* #define SYNTAX_FNAME "/foo/%s.vim" */ 899 900 /* 901 * RUNTIME_DIRNAME Generic name for the directory of the runtime files. 902 */ 903 #ifndef RUNTIME_DIRNAME 904 # define RUNTIME_DIRNAME "runtime" 905 #endif 906 907 /* 908 * RUNTIME_GLOBAL Directory name for global Vim runtime directory. 909 * Don't define this if the preprocessor can't handle 910 * string concatenation. 911 * Also set by "--with-global-runtime" configure argument. 912 */ 913 /* #define RUNTIME_GLOBAL "/etc/vim" */ 914 915 /* 916 * MODIFIED_BY Name of who modified Vim. Required when distributing 917 * a modifed version of Vim. 918 * Also from the "--with-modified-by" configure argument. 919 */ 920 /* #define MODIFIED_BY "John Doe" */ 921 922 /* 923 * Machine dependent: 924 * ================== 925 */ 926 927 /* 928 * +fork Unix only: fork() support (detected by configure) 929 * +system Use system() instead of fork/exec for starting a 930 * shell. Doesn't work for the GUI! 931 */ 932 /* #define USE_SYSTEM */ 933 934 /* 935 * +X11 Unix only. Include code for xterm title saving and X 936 * clipboard. Only works if HAVE_X11 is also defined. 937 */ 938 #if (defined(FEAT_NORMAL) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) 939 # define WANT_X11 940 #endif 941 942 /* 943 * XSMP - X11 Session Management Protocol 944 * It may be preferred to disable this if the GUI supports it (e.g., 945 * GNOME/KDE) and implement save-yourself etc. through that, but it may also 946 * be cleaner to have all SM-aware vims do the same thing (libSM does not 947 * depend upon X11). 948 * If your GUI wants to support SM itself, change this ifdef. 949 * I'm assuming that any X11 implementation will cope with this for now. 950 */ 951 #if defined(HAVE_X11) && defined(WANT_X11) && defined(HAVE_X11_SM_SMLIB_H) 952 # define USE_XSMP 953 #endif 954 #if defined(USE_XSMP_INTERACT) && !defined(USE_XSMP) 955 # undef USE_XSMP_INTERACT 956 #endif 957 958 /* 959 * +mouse_xterm Unix only: Include code for xterm mouse handling. 960 * +mouse_dec idem, for Dec mouse handling. 961 * +mouse_jsbterm idem, for Jsbterm mouse handling. 962 * +mouse_netterm idem, for Netterm mouse handling. 963 * (none) MS-DOS mouse support. 964 * +mouse_gpm Unix only: Include code for Linux console mouse 965 * handling. 966 * +mouse_pterm PTerm mouse support for QNX 967 * +mouse Any mouse support (any of the above enabled). 968 */ 969 /* OS/2 and Amiga console have no mouse support */ 970 #if (!defined(AMIGA) && !defined(OS2) && !defined(MACOS)) || defined(FEAT_GUI_AMIGA) 971 # ifdef FEAT_NORMAL 972 # define FEAT_MOUSE_XTERM 973 # endif 974 # ifdef FEAT_BIG 975 # define FEAT_MOUSE_NET 976 # endif 977 # ifdef FEAT_BIG 978 # define FEAT_MOUSE_DEC 979 # endif 980 # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264)) 981 # define DOS_MOUSE 982 # endif 983 # if defined(FEAT_NORMAL) && defined(__QNX__) 984 # define FEAT_MOUSE_PTERM 985 # endif 986 #endif 987 988 #if defined(FEAT_NORMAL) && defined(HAVE_GPM) 989 # define FEAT_MOUSE_GPM 990 #endif 991 /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ 992 #if !defined(FEAT_MOUSE_TTY) && (defined(FEAT_MOUSE_XTERM) \ 993 || defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \ 994 || defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \ 995 || defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM)) 996 # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ 997 #endif 998 #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) 999 # define FEAT_MOUSE /* include generic mouse support */ 1000 #endif 1001 1002 /* 1003 * +clipboard Clipboard support. Always used for the GUI. 1004 * +xterm_clipboard Unix only: Include code for handling the clipboard 1005 * in an xterm like in the GUI. 1006 */ 1007 #ifdef FEAT_GUI 1008 # ifndef FEAT_CLIPBOARD 1009 # define FEAT_CLIPBOARD 1010 # ifndef FEAT_VISUAL 1011 # define FEAT_VISUAL 1012 # endif 1013 # endif 1014 #endif 1015 1016 #if defined(FEAT_NORMAL) && defined(FEAT_VISUAL) \ 1017 && (defined(UNIX) || defined(VMS)) \ 1018 && defined(WANT_X11) && defined(HAVE_X11) 1019 # define FEAT_XCLIPBOARD 1020 # ifndef FEAT_CLIPBOARD 1021 # define FEAT_CLIPBOARD 1022 # endif 1023 #endif 1024 1025 /* 1026 * +dnd Drag'n'drop support. Always used for the GTK+ GUI. 1027 */ 1028 #if defined(FEAT_CLIPBOARD) && defined(FEAT_GUI_GTK) 1029 # define FEAT_DND 1030 #endif 1031 1032 #if defined(FEAT_GUI_MSWIN) && defined(FEAT_SMALL) 1033 # define MSWIN_FIND_REPLACE /* include code for find/replace dialog */ 1034 # define MSWIN_FR_BUFSIZE 256 1035 #endif 1036 1037 /* 1038 * +clientserver Remote control via the remote_send() function 1039 * and the --remote argument 1040 */ 1041 #if (defined(WIN32) || defined(FEAT_XCLIPBOARD)) && defined(FEAT_EVAL) 1042 # define FEAT_CLIENTSERVER 1043 #endif 1044 1045 /* 1046 * +termresponse send t_RV to obtain terminal response. Used for xterm 1047 * to check if mouse dragging can be used and if term 1048 * codes can be obtaind. 1049 */ 1050 #if (defined(FEAT_NORMAL) || defined(FEAT_MOUSE)) && defined(HAVE_TGETENT) 1051 # define FEAT_TERMRESPONSE 1052 #endif 1053 1054 /* 1055 * cursor shape Adjust the shape of the cursor to the mode. 1056 * mouse shape Adjust the shape of the mouse pointer to the mode. 1057 */ 1058 #ifdef FEAT_NORMAL 1059 /* MS-DOS console and Win32 console can change cursor shape */ 1060 # if defined(MSDOS) || (defined(WIN3264) && !defined(FEAT_GUI_W32)) 1061 # define MCH_CURSOR_SHAPE 1062 # endif 1063 # if defined(FEAT_GUI_W32) || defined(FEAT_GUI_W16) || defined(FEAT_GUI_MOTIF) \ 1064 || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE)\ 1065 || defined(FEAT_GUI_PHOTON) 1066 # define FEAT_MOUSESHAPE 1067 # endif 1068 #endif 1069 1070 /* GUI and some consoles can change the shape of the cursor. The code is also 1071 * needed for the 'mouseshape' option. */ 1072 #if defined(FEAT_GUI) || defined(MCH_CURSOR_SHAPE) || defined(FEAT_MOUSESHAPE) 1073 # define CURSOR_SHAPE 1074 #endif 1075 1076 /* 1077 * +ARP Amiga only. Use arp.library, DOS 2.0 is not required. 1078 */ 1079 #ifndef NO_ARP 1080 # define FEAT_ARP 1081 #endif 1082 1083 /* 1084 * +GUI_Athena To compile Vim with or without the GUI (gvim) you have 1085 * +GUI_BeOS to edit the Makefile. 1086 * +GUI_Motif 1087 */ 1088 1089 /* 1090 * +ole Win32 OLE automation: Use Makefile.ovc. 1091 */ 1092 1093 /* 1094 * These features can only be included by using a configure argument. See the 1095 * Makefile for a line to uncomment. 1096 * +perl Perl interface: "--enable-perlinterp" 1097 * +python Python interface: "--enable-pythoninterp" 1098 * +tcl TCL interface: "--enable-tclinterp" 1099 * +sniff Sniff interface: "--enable-sniff" 1100 * +sun_workshop Sun Workshop integegration 1101 * +netbeans_intg Netbeans integration 1102 */ 1103 1104 /* 1105 * These features are automatically detected: 1106 * +terminfo 1107 * +tgetent 1108 */ 1109 1110 /* 1111 * The Sun Workshop features currently only work with Motif. 1112 */ 1113 #if !defined(FEAT_GUI_MOTIF) && defined(FEAT_SUN_WORKSHOP) 1114 # undef FEAT_SUN_WORKSHOP 1115 #endif 1116 1117 /* 1118 * The Netbeans features currently only work with Motif and GTK and Win32. 1119 * It also requires +listcmds and +eval. 1120 */ 1121 #if ((!defined(FEAT_GUI_MOTIF) && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)) \ 1122 || !defined(FEAT_LISTCMDS) || !defined(FEAT_EVAL)) \ 1123 && defined(FEAT_NETBEANS_INTG) 1124 # undef FEAT_NETBEANS_INTG 1125 #endif 1126 1127 /* 1128 * +signs Allow signs to be displayed to the left of text lines. 1129 * Adds the ":sign" command. 1130 */ 1131 #if defined(FEAT_BIG) || defined(FEAT_SUN_WORKSHOP) \ 1132 || defined(FEAT_NETBEANS_INTG) 1133 # define FEAT_SIGNS 1134 # if ((defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) \ 1135 && defined(HAVE_X11_XPM_H)) \ 1136 || defined(FEAT_GUI_GTK) \ 1137 || (defined(WIN32) && defined(FEAT_GUI)) 1138 # define FEAT_SIGN_ICONS 1139 # endif 1140 #endif 1141 1142 /* 1143 * +balloon_eval Allow balloon expression evaluation. Used with a 1144 * debugger and for tooltips. 1145 * Only for GUIs where it was implemented. 1146 */ 1147 #if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) \ 1148 || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)) \ 1149 && ( (defined(FEAT_TOOLBAR) \ 1150 && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)) \ 1151 || defined(FEAT_SUN_WORKSHOP) \ 1152 || defined(FEAT_NETBEANS_INTG)) 1153 # define FEAT_BEVAL 1154 # if !defined(FEAT_XFONTSET) && !defined(FEAT_GUI_GTK) \ 1155 && !defined(FEAT_GUI_W32) 1156 # define FEAT_XFONTSET 1157 # endif 1158 #endif 1159 1160 #if defined(FEAT_BEVAL) && (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) 1161 # define FEAT_BEVAL_TIP /* balloon eval used for toolbar tooltip */ 1162 #endif 1163 1164 #if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) 1165 /* 1166 * The following features are (currently) only used by Sun Visual WorkShop 6 1167 * and NetBeans. These features could be used with other integrations with 1168 * debuggers so I've used separate feature defines. 1169 */ 1170 # if !defined(FEAT_MENU) 1171 # define FEAT_MENU 1172 # endif 1173 #endif 1174 1175 #if defined(FEAT_SUN_WORKSHOP) 1176 /* 1177 * Use an alternative method of X input for a secondary 1178 * command input. 1179 */ 1180 # define ALT_X_INPUT 1181 1182 /* 1183 * +footer Motif only: Add a message area at the bottom of the 1184 * main window area. 1185 */ 1186 # define FEAT_FOOTER 1187 1188 #endif 1189