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 * Insert mode completion with 'completefunc'. 383 */ 384 #if defined(FEAT_INS_EXPAND) && defined(FEAT_EVAL) 385 # define FEAT_COMPL_FUNC 386 #endif 387 388 /* 389 * +user_commands Allow the user to define his own commands. 390 */ 391 #ifdef FEAT_NORMAL 392 # define FEAT_USR_CMDS 393 #endif 394 395 /* 396 * +printer ":hardcopy" command 397 * +postscript Printing uses PostScript file output. 398 */ 399 #if defined(FEAT_NORMAL) && (defined(MSWIN) || defined(FEAT_EVAL)) \ 400 && !defined(AMIGA) 401 # define FEAT_PRINTER 402 #endif 403 #if defined(FEAT_PRINTER) && ((defined(MSWIN) && defined(MSWINPS)) \ 404 || (!defined(MSWIN) && defined(FEAT_EVAL))) 405 # define FEAT_POSTSCRIPT 406 #endif 407 408 /* 409 * +modify_fname modifiers for file name. E.g., "%:p:h". 410 */ 411 #ifdef FEAT_NORMAL 412 # define FEAT_MODIFY_FNAME 413 #endif 414 415 /* 416 * +autocmd ":autocmd" command 417 */ 418 #ifdef FEAT_NORMAL 419 # define FEAT_AUTOCMD 420 #endif 421 422 /* 423 * +diff Displaying diffs in a nice way. 424 * Requires +windows and +autocmd. 425 */ 426 #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) && defined(FEAT_AUTOCMD) 427 # define FEAT_DIFF 428 #endif 429 430 /* 431 * +title 'title' and 'icon' options 432 * +statusline 'statusline', 'rulerformat' and special format of 433 * 'titlestring' and 'iconstring' options. 434 * +byte_offset '%o' in 'statusline' and builtin functions line2byte() 435 * and byte2line(). 436 * Note: Required for Macintosh. 437 */ 438 #if defined(FEAT_NORMAL) && !defined(MSDOS) 439 # define FEAT_TITLE 440 #endif 441 442 #ifdef FEAT_NORMAL 443 # define FEAT_STL_OPT 444 # ifndef FEAT_CMDL_INFO 445 # define FEAT_CMDL_INFO /* 'ruler' is required for 'statusline' */ 446 # endif 447 #endif 448 449 #ifdef FEAT_NORMAL 450 # define FEAT_BYTEOFF 451 #endif 452 453 /* 454 * +wildignore 'wildignore' and 'backupskip' options 455 * Needed for Unix to make "crontab -e" work. 456 */ 457 #if defined(FEAT_NORMAL) || defined(UNIX) 458 # define FEAT_WILDIGN 459 #endif 460 461 /* 462 * +wildmenu 'wildmenu' option 463 */ 464 #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) 465 # define FEAT_WILDMENU 466 #endif 467 468 /* 469 * +osfiletype filetype checking in autocommand patterns. 470 * Only on systems that support filetypes (RISC OS). 471 */ 472 #if 0 473 # define FEAT_OSFILETYPE 474 # define DFLT_OFT "Text" 475 #endif 476 477 /* 478 * +viminfo reading/writing the viminfo file. Takes about 8Kbyte 479 * of code. 480 * VIMINFO_FILE Location of user .viminfo file (should start with $). 481 * VIMINFO_FILE2 Location of alternate user .viminfo file. 482 */ 483 #ifdef FEAT_NORMAL 484 # define FEAT_VIMINFO 485 /* #define VIMINFO_FILE "$HOME/foo/.viminfo" */ 486 /* #define VIMINFO_FILE2 "~/bar/.viminfo" */ 487 #endif 488 489 /* 490 * +syntax syntax highlighting. When using this, it's a good 491 * idea to have +autocmd and +eval too. 492 */ 493 #if defined(FEAT_NORMAL) || defined(PROTO) 494 # define FEAT_SYN_HL 495 #endif 496 497 /* 498 * +builtin_terms Choose one out of the following four: 499 * 500 * NO_BUILTIN_TCAPS Do not include any builtin termcap entries (used only 501 * with HAVE_TGETENT defined). 502 * 503 * (nothing) Machine specific termcap entries will be included. 504 * This is default for win16 to save static data. 505 * 506 * SOME_BUILTIN_TCAPS Include most useful builtin termcap entries (used only 507 * with NO_BUILTIN_TCAPS not defined). 508 * This is the default. 509 * 510 * ALL_BUILTIN_TCAPS Include all builtin termcap entries 511 * (used only with NO_BUILTIN_TCAPS not defined). 512 */ 513 #ifdef HAVE_TGETENT 514 /* #define NO_BUILTIN_TCAPS */ 515 #endif 516 517 #if !defined(NO_BUILTIN_TCAPS) && !defined(FEAT_GUI_W16) 518 # ifdef FEAT_BIG 519 # define ALL_BUILTIN_TCAPS 520 # else 521 # define SOME_BUILTIN_TCAPS /* default */ 522 # endif 523 #endif 524 525 /* 526 * +lispindent lisp indenting (From Eric Fischer). 527 * +cindent C code indenting (From Eric Fischer). 528 * +smartindent smart C code indenting when the 'si' option is set. 529 * 530 * These two need to be defined when making prototypes. 531 */ 532 #if defined(FEAT_NORMAL) || defined(PROTO) 533 # define FEAT_LISP 534 #endif 535 536 #if defined(FEAT_NORMAL) || defined(PROTO) 537 # define FEAT_CINDENT 538 #endif 539 540 #ifdef FEAT_NORMAL 541 # define FEAT_SMARTINDENT 542 #endif 543 544 /* 545 * +comments 'comments' option. 546 */ 547 #ifdef FEAT_NORMAL 548 # define FEAT_COMMENTS 549 #endif 550 551 /* 552 * +cryptv Encryption (by Mohsin Ahmed <[email protected]>). 553 */ 554 #if defined(FEAT_NORMAL) || defined(PROTO) 555 # define FEAT_CRYPT 556 #endif 557 558 /* 559 * +mksession ":mksession" command. 560 * Requires +windows and +vertsplit. 561 */ 562 #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) && defined(FEAT_VERTSPLIT) 563 # define FEAT_SESSION 564 #endif 565 566 /* 567 * +multi_lang Multi language support. ":menutrans", ":language", etc. 568 * +gettext Message translations (requires +multi_lang) 569 * (only when "lang" archive unpacked) 570 */ 571 #ifdef FEAT_NORMAL 572 # define FEAT_MULTI_LANG 573 #endif 574 #if defined(HAVE_GETTEXT) && defined(FEAT_MULTI_LANG) \ 575 && (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) 576 # define FEAT_GETTEXT 577 #endif 578 579 /* 580 * +multi_byte Generic multi-byte character handling. Doesn't work 581 * with 16 bit ints. Required for GTK+ 2. 582 * 583 * Disabled for EBCDIC: 584 * Multibyte support doesn't work on OS390 Unix currently. 585 */ 586 #if (defined(FEAT_BIG) || defined(HAVE_GTK2) || defined(FEAT_ARABIC)) \ 587 && !defined(FEAT_MBYTE) && !defined(WIN16) \ 588 && SIZEOF_INT >= 4 && !defined(EBCDIC) 589 # define FEAT_MBYTE 590 #endif 591 592 /* 593 * +multi_byte_ime Win32 IME input method. Requires +multi_byte. 594 * Only for far-east Windows, so IME can be used to input 595 * chars. Not tested much! 596 */ 597 #if defined(FEAT_GUI_W32) && !defined(FEAT_MBYTE_IME) 598 /* #define FEAT_MBYTE_IME */ 599 # endif 600 601 #if defined(FEAT_MBYTE_IME) && !defined(FEAT_MBYTE) 602 # define FEAT_MBYTE 603 #endif 604 605 #if defined(FEAT_MBYTE) && SIZEOF_INT < 4 && !defined(PROTO) 606 Error: Can only handle multi-byte feature with 32 bit int or larger 607 #endif 608 609 /* Use iconv() when it's available. */ 610 #if defined(FEAT_MBYTE) && ((defined(HAVE_ICONV_H) && defined(HAVE_ICONV)) \ 611 || defined(DYNAMIC_ICONV)) 612 # define USE_ICONV 613 #endif 614 615 /* 616 * +xim X Input Method. For entering special languages like 617 * chinese and Japanese. 618 * +hangul_input Internal Hangul input method. Must be included 619 * through configure: "--enable-hangulin" 620 * Both are for Unix and VMS only. 621 */ 622 #ifndef FEAT_XIM 623 /* #define FEAT_XIM */ 624 #endif 625 626 #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK) 627 # define USE_XIM 1 /* needed for GTK include files */ 628 #endif 629 630 #ifdef FEAT_HANGULIN 631 # define HANGUL_DEFAULT_KEYBOARD 2 /* 2 or 3 bulsik keyboard */ 632 # define ESC_CHG_TO_ENG_MODE /* if defined, when ESC pressed, 633 * turn to english mode 634 */ 635 # if !defined(FEAT_XFONTSET) && defined(HAVE_X11) 636 # define FEAT_XFONTSET /* Hangul input requires xfontset */ 637 # endif 638 # if defined(FEAT_XIM) && !defined(LINT) 639 Error: You should select only ONE of XIM and HANGUL INPUT 640 # endif 641 #endif 642 #if defined(FEAT_HANGULIN) || defined(FEAT_XIM) 643 /* # define X_LOCALE */ /* for OS with incomplete locale 644 support, like old linux versions. */ 645 /* # define SLOW_XSERVER */ /* for extremely slow X server */ 646 #endif 647 648 /* 649 * +xfontset X fontset support. For outputting wide characters. 650 */ 651 #ifndef FEAT_XFONTSET 652 # if defined(FEAT_MBYTE) && defined(HAVE_X11) && !defined(HAVE_GTK2) 653 # define FEAT_XFONTSET 654 # else 655 /* # define FEAT_XFONTSET */ 656 # endif 657 #endif 658 659 /* 660 * +libcall libcall() function 661 */ 662 /* Using dlopen() also requires dlsym() to be available. */ 663 #if defined(HAVE_DLOPEN) && defined(HAVE_DLSYM) 664 # define USE_DLOPEN 665 #endif 666 #if defined(FEAT_EVAL) && (defined(WIN3264) || ((defined(UNIX) || defined(VMS)) \ 667 && (defined(USE_DLOPEN) || defined(HAVE_SHL_LOAD)))) 668 # define FEAT_LIBCALL 669 #endif 670 671 /* 672 * +scrollbind synchronization of split windows 673 */ 674 #if defined(FEAT_NORMAL) && defined(FEAT_WINDOWS) 675 # define FEAT_SCROLLBIND 676 #endif 677 678 /* 679 * +menu ":menu" command 680 */ 681 #ifdef FEAT_NORMAL 682 # define FEAT_MENU 683 # ifdef FEAT_GUI_W32 684 # define FEAT_TEAROFF 685 # endif 686 #endif 687 688 /* There are two ways to use XPM. */ 689 #if (defined(HAVE_XM_XPMP_H) && defined(FEAT_GUI_MOTIF)) \ 690 || defined(HAVE_X11_XPM_H) 691 # define HAVE_XPM 1 692 #endif 693 694 /* 695 * +toolbar Include code for a toolbar (for the Win32 GUI, GTK 696 * always has it). But only if menus are enabled. 697 */ 698 #if defined(FEAT_NORMAL) && defined(FEAT_MENU) \ 699 && (defined(FEAT_GUI_KDE) \ 700 || defined(FEAT_GUI_GTK) \ 701 || defined(FEAT_GUI_MSWIN) \ 702 || ((defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) \ 703 && defined(HAVE_XPM)) \ 704 || defined(FEAT_GUI_PHOTON)) 705 # define FEAT_TOOLBAR 706 #endif 707 708 709 #if defined(FEAT_TOOLBAR) && !defined(FEAT_MENU) 710 # define FEAT_MENU 711 #endif 712 713 /* 714 * +browse ":browse" command. 715 * 716 * BROWSE_CURRBUF Open file browser in the directory of the current 717 * buffer, instead of the current directory. 718 */ 719 #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)) 720 # define FEAT_BROWSE 721 #endif 722 #if defined(FEAT_NORMAL) && defined(FEAT_GUI_MSWIN) 723 # define BROWSE_CURRBUF 724 #endif 725 726 /* 727 * +dialog_gui Use GUI dialog. 728 * +dialog_con May use Console dialog. 729 * When none of these defined there is no dialog support. 730 */ 731 #ifdef FEAT_NORMAL 732 # if ((defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_MOTIF)) \ 733 && defined(HAVE_X11_XPM_H)) \ 734 || defined(FEAT_GUI_GTK) \ 735 || defined(FEAT_GUI_PHOTON) \ 736 || defined(FEAT_GUI_MSWIN) \ 737 || defined(FEAT_GUI_MAC) \ 738 || defined(FEAT_GUI_KDE) 739 # define FEAT_CON_DIALOG 740 # define FEAT_GUI_DIALOG 741 # else 742 # define FEAT_CON_DIALOG 743 # endif 744 #endif 745 #if !defined(FEAT_GUI_DIALOG) && (defined(FEAT_GUI_MOTIF) \ 746 || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE)) 747 /* need a dialog to show error messages when starting from the desktop */ 748 # define FEAT_GUI_DIALOG 749 #endif 750 #if defined(FEAT_GUI_DIALOG) && \ 751 (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) \ 752 || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE)|| defined(FEAT_GUI_MSWIN) \ 753 || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)) 754 # define FEAT_GUI_TEXTDIALOG 755 #endif 756 757 /* Mac specific thing: Codewarrior interface. */ 758 #ifdef FEAT_GUI_MAC 759 # define FEAT_CW_EDITOR 760 #endif 761 762 /* 763 * Preferences: 764 * ============ 765 */ 766 767 /* 768 * +writebackup 'writebackup' is default on: 769 * Use a backup file while overwriting a file. But it's 770 * deleted again when 'backup' is not set. Changing this 771 * is strongly discouraged: You can loose all your 772 * changes when the computer crashes while writing the 773 * file. 774 * VMS note: It does work on VMS as well, but because of 775 * version handling it does not have any purpose. 776 * Overwrite will write to the new version. 777 */ 778 #ifndef VMS 779 # define FEAT_WRITEBACKUP 780 #endif 781 782 /* 783 * +xterm_save The t_ti and t_te entries for the builtin xterm will 784 * be set to save the screen when starting Vim and 785 * restoring it when exiting. 786 */ 787 /* #define FEAT_XTERM_SAVE */ 788 789 /* 790 * DEBUG Output a lot of debugging garbage. 791 */ 792 /* #define DEBUG */ 793 794 /* 795 * STARTUPTIME Time the startup process. Writes a "vimstartup" file 796 * with timestamps. 797 */ 798 /* #define STARTUPTIME "vimstartup" */ 799 800 /* 801 * MEM_PROFILE Debugging of memory allocation and freeing. 802 */ 803 /* #define MEM_PROFILE */ 804 805 /* 806 * VIMRC_FILE Name of the .vimrc file in current dir. 807 */ 808 /* #define VIMRC_FILE ".vimrc" */ 809 810 /* 811 * EXRC_FILE Name of the .exrc file in current dir. 812 */ 813 /* #define EXRC_FILE ".exrc" */ 814 815 /* 816 * GVIMRC_FILE Name of the .gvimrc file in current dir. 817 */ 818 /* #define GVIMRC_FILE ".gvimrc" */ 819 820 /* 821 * VIEW_FILE Name of the default ":mkview" file. 822 */ 823 #define VIEW_FILE "View.vim" 824 825 /* 826 * SESSION_FILE Name of the default ":mksession" file. 827 */ 828 #define SESSION_FILE "Session.vim" 829 830 /* 831 * USR_VIMRC_FILE Name of the user .vimrc file. 832 * USR_VIMRC_FILE2 Name of alternate user .vimrc file. 833 * USR_VIMRC_FILE3 Name of alternate user .vimrc file. 834 */ 835 /* #define USR_VIMRC_FILE "~/foo/.vimrc" */ 836 /* #define USR_VIMRC_FILE2 "~/bar/.vimrc" */ 837 /* #define USR_VIMRC_FILE3 "$VIM/.vimrc" */ 838 839 /* 840 * EVIM_FILE Name of the evim.vim script file 841 */ 842 /* #define EVIM_FILE "$VIMRUNTIME/evim.vim" */ 843 844 /* 845 * USR_EXRC_FILE Name of the user .exrc file. 846 * USR_EXRC_FILE2 Name of the alternate user .exrc file. 847 */ 848 /* #define USR_EXRC_FILE "~/foo/.exrc" */ 849 /* #define USR_EXRC_FILE2 "~/bar/.exrc" */ 850 851 /* 852 * USR_GVIMRC_FILE Name of the user .gvimrc file. 853 * USR_GVIMRC_FILE2 Name of the alternate user .gvimrc file. 854 */ 855 /* #define USR_GVIMRC_FILE "~/foo/.gvimrc" */ 856 /* #define USR_GVIMRC_FILE2 "~/bar/.gvimrc" */ 857 /* #define USR_GVIMRC_FILE3 "$VIM/.gvimrc" */ 858 859 /* 860 * SYS_VIMRC_FILE Name of the system-wide .vimrc file. 861 */ 862 /* #define SYS_VIMRC_FILE "/etc/vimrc" */ 863 864 /* 865 * SYS_GVIMRC_FILE Name of the system-wide .gvimrc file. 866 */ 867 /* #define SYS_GVIMRC_FILE "/etc/gvimrc" */ 868 869 /* 870 * DFLT_HELPFILE Name of the help file. 871 */ 872 /* # define DFLT_HELPFILE "$VIMRUNTIME/doc/help.txt.gz" */ 873 874 /* 875 * File names for: 876 * FILETYPE_FILE switch on file type detection 877 * FTPLUGIN_FILE switch on loading filetype plugin files 878 * INDENT_FILE switch on loading indent files 879 * FTOFF_FILE switch off file type detection 880 * FTPLUGOF_FILE switch off loading settings files 881 * INDOFF_FILE switch off loading indent files 882 */ 883 /* # define FILETYPE_FILE "filetype.vim" */ 884 /* # define FTPLUGIN_FILE "ftplugin.vim" */ 885 /* # define INDENT_FILE "indent.vim" */ 886 /* # define FTOFF_FILE "ftoff.vim" */ 887 /* # define FTPLUGOF_FILE "ftplugof.vim" */ 888 /* # define INDOFF_FILE "indoff.vim" */ 889 890 /* 891 * SYS_MENU_FILE Name of the default menu.vim file. 892 */ 893 /* # define SYS_MENU_FILE "$VIMRUNTIME/menu.vim" */ 894 895 /* 896 * SYS_OPTWIN_FILE Name of the default optwin.vim file. 897 */ 898 #ifndef SYS_OPTWIN_FILE 899 # define SYS_OPTWIN_FILE "$VIMRUNTIME/optwin.vim" 900 #endif 901 902 /* 903 * SYNTAX_FNAME Name of a syntax file, where %s is the syntax name. 904 */ 905 /* #define SYNTAX_FNAME "/foo/%s.vim" */ 906 907 /* 908 * RUNTIME_DIRNAME Generic name for the directory of the runtime files. 909 */ 910 #ifndef RUNTIME_DIRNAME 911 # define RUNTIME_DIRNAME "runtime" 912 #endif 913 914 /* 915 * RUNTIME_GLOBAL Directory name for global Vim runtime directory. 916 * Don't define this if the preprocessor can't handle 917 * string concatenation. 918 * Also set by "--with-global-runtime" configure argument. 919 */ 920 /* #define RUNTIME_GLOBAL "/etc/vim" */ 921 922 /* 923 * MODIFIED_BY Name of who modified Vim. Required when distributing 924 * a modifed version of Vim. 925 * Also from the "--with-modified-by" configure argument. 926 */ 927 /* #define MODIFIED_BY "John Doe" */ 928 929 /* 930 * Machine dependent: 931 * ================== 932 */ 933 934 /* 935 * +fork Unix only: fork() support (detected by configure) 936 * +system Use system() instead of fork/exec for starting a 937 * shell. Doesn't work for the GUI! 938 */ 939 /* #define USE_SYSTEM */ 940 941 /* 942 * +X11 Unix only. Include code for xterm title saving and X 943 * clipboard. Only works if HAVE_X11 is also defined. 944 */ 945 #if (defined(FEAT_NORMAL) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) 946 # define WANT_X11 947 #endif 948 949 /* 950 * XSMP - X11 Session Management Protocol 951 * It may be preferred to disable this if the GUI supports it (e.g., 952 * GNOME/KDE) and implement save-yourself etc. through that, but it may also 953 * be cleaner to have all SM-aware vims do the same thing (libSM does not 954 * depend upon X11). 955 * If your GUI wants to support SM itself, change this ifdef. 956 * I'm assuming that any X11 implementation will cope with this for now. 957 */ 958 #if defined(HAVE_X11) && defined(WANT_X11) && defined(HAVE_X11_SM_SMLIB_H) 959 # define USE_XSMP 960 #endif 961 #if defined(USE_XSMP_INTERACT) && !defined(USE_XSMP) 962 # undef USE_XSMP_INTERACT 963 #endif 964 965 /* 966 * +mouse_xterm Unix only: Include code for xterm mouse handling. 967 * +mouse_dec idem, for Dec mouse handling. 968 * +mouse_jsbterm idem, for Jsbterm mouse handling. 969 * +mouse_netterm idem, for Netterm mouse handling. 970 * (none) MS-DOS mouse support. 971 * +mouse_gpm Unix only: Include code for Linux console mouse 972 * handling. 973 * +mouse_pterm PTerm mouse support for QNX 974 * +mouse Any mouse support (any of the above enabled). 975 */ 976 /* OS/2 and Amiga console have no mouse support */ 977 #if (!defined(AMIGA) && !defined(OS2) && !defined(MACOS)) || defined(FEAT_GUI_AMIGA) 978 # ifdef FEAT_NORMAL 979 # define FEAT_MOUSE_XTERM 980 # endif 981 # ifdef FEAT_BIG 982 # define FEAT_MOUSE_NET 983 # endif 984 # ifdef FEAT_BIG 985 # define FEAT_MOUSE_DEC 986 # endif 987 # if defined(FEAT_NORMAL) && (defined(MSDOS) || defined(WIN3264)) 988 # define DOS_MOUSE 989 # endif 990 # if defined(FEAT_NORMAL) && defined(__QNX__) 991 # define FEAT_MOUSE_PTERM 992 # endif 993 #endif 994 995 #if defined(FEAT_NORMAL) && defined(HAVE_GPM) 996 # define FEAT_MOUSE_GPM 997 #endif 998 /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */ 999 #if !defined(FEAT_MOUSE_TTY) && (defined(FEAT_MOUSE_XTERM) \ 1000 || defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \ 1001 || defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \ 1002 || defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM)) 1003 # define FEAT_MOUSE_TTY /* include non-GUI mouse support */ 1004 #endif 1005 #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI)) 1006 # define FEAT_MOUSE /* include generic mouse support */ 1007 #endif 1008 1009 /* 1010 * +clipboard Clipboard support. Always used for the GUI. 1011 * +xterm_clipboard Unix only: Include code for handling the clipboard 1012 * in an xterm like in the GUI. 1013 */ 1014 #ifdef FEAT_GUI 1015 # ifndef FEAT_CLIPBOARD 1016 # define FEAT_CLIPBOARD 1017 # ifndef FEAT_VISUAL 1018 # define FEAT_VISUAL 1019 # endif 1020 # endif 1021 #endif 1022 1023 #if defined(FEAT_NORMAL) && defined(FEAT_VISUAL) \ 1024 && (defined(UNIX) || defined(VMS)) \ 1025 && defined(WANT_X11) && defined(HAVE_X11) 1026 # define FEAT_XCLIPBOARD 1027 # ifndef FEAT_CLIPBOARD 1028 # define FEAT_CLIPBOARD 1029 # endif 1030 #endif 1031 1032 /* 1033 * +dnd Drag'n'drop support. Always used for the GTK+ GUI. 1034 */ 1035 #if defined(FEAT_CLIPBOARD) && defined(FEAT_GUI_GTK) 1036 # define FEAT_DND 1037 #endif 1038 1039 #if defined(FEAT_GUI_MSWIN) && defined(FEAT_SMALL) 1040 # define MSWIN_FIND_REPLACE /* include code for find/replace dialog */ 1041 # define MSWIN_FR_BUFSIZE 256 1042 #endif 1043 1044 /* 1045 * +clientserver Remote control via the remote_send() function 1046 * and the --remote argument 1047 */ 1048 #if (defined(WIN32) || defined(FEAT_XCLIPBOARD)) && defined(FEAT_EVAL) 1049 # define FEAT_CLIENTSERVER 1050 #endif 1051 1052 /* 1053 * +termresponse send t_RV to obtain terminal response. Used for xterm 1054 * to check if mouse dragging can be used and if term 1055 * codes can be obtaind. 1056 */ 1057 #if (defined(FEAT_NORMAL) || defined(FEAT_MOUSE)) && defined(HAVE_TGETENT) 1058 # define FEAT_TERMRESPONSE 1059 #endif 1060 1061 /* 1062 * cursor shape Adjust the shape of the cursor to the mode. 1063 * mouse shape Adjust the shape of the mouse pointer to the mode. 1064 */ 1065 #ifdef FEAT_NORMAL 1066 /* MS-DOS console and Win32 console can change cursor shape */ 1067 # if defined(MSDOS) || (defined(WIN3264) && !defined(FEAT_GUI_W32)) 1068 # define MCH_CURSOR_SHAPE 1069 # endif 1070 # if defined(FEAT_GUI_W32) || defined(FEAT_GUI_W16) || defined(FEAT_GUI_MOTIF) \ 1071 || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE)\ 1072 || defined(FEAT_GUI_PHOTON) 1073 # define FEAT_MOUSESHAPE 1074 # endif 1075 #endif 1076 1077 /* GUI and some consoles can change the shape of the cursor. The code is also 1078 * needed for the 'mouseshape' option. */ 1079 #if defined(FEAT_GUI) || defined(MCH_CURSOR_SHAPE) || defined(FEAT_MOUSESHAPE) 1080 # define CURSOR_SHAPE 1081 #endif 1082 1083 /* 1084 * +ARP Amiga only. Use arp.library, DOS 2.0 is not required. 1085 */ 1086 #ifndef NO_ARP 1087 # define FEAT_ARP 1088 #endif 1089 1090 /* 1091 * +GUI_Athena To compile Vim with or without the GUI (gvim) you have 1092 * +GUI_BeOS to edit the Makefile. 1093 * +GUI_Motif 1094 */ 1095 1096 /* 1097 * +ole Win32 OLE automation: Use Makefile.ovc. 1098 */ 1099 1100 /* 1101 * These features can only be included by using a configure argument. See the 1102 * Makefile for a line to uncomment. 1103 * +perl Perl interface: "--enable-perlinterp" 1104 * +python Python interface: "--enable-pythoninterp" 1105 * +tcl TCL interface: "--enable-tclinterp" 1106 * +sniff Sniff interface: "--enable-sniff" 1107 * +sun_workshop Sun Workshop integegration 1108 * +netbeans_intg Netbeans integration 1109 */ 1110 1111 /* 1112 * These features are automatically detected: 1113 * +terminfo 1114 * +tgetent 1115 */ 1116 1117 /* 1118 * The Sun Workshop features currently only work with Motif. 1119 */ 1120 #if !defined(FEAT_GUI_MOTIF) && defined(FEAT_SUN_WORKSHOP) 1121 # undef FEAT_SUN_WORKSHOP 1122 #endif 1123 1124 /* 1125 * The Netbeans features currently only work with Motif and GTK and Win32. 1126 * It also requires +listcmds and +eval. 1127 */ 1128 #if ((!defined(FEAT_GUI_MOTIF) && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)) \ 1129 || !defined(FEAT_LISTCMDS) || !defined(FEAT_EVAL)) \ 1130 && defined(FEAT_NETBEANS_INTG) 1131 # undef FEAT_NETBEANS_INTG 1132 #endif 1133 1134 /* 1135 * +signs Allow signs to be displayed to the left of text lines. 1136 * Adds the ":sign" command. 1137 */ 1138 #if defined(FEAT_BIG) || defined(FEAT_SUN_WORKSHOP) \ 1139 || defined(FEAT_NETBEANS_INTG) 1140 # define FEAT_SIGNS 1141 # if ((defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) \ 1142 && defined(HAVE_X11_XPM_H)) \ 1143 || defined(FEAT_GUI_GTK) \ 1144 || (defined(WIN32) && defined(FEAT_GUI)) 1145 # define FEAT_SIGN_ICONS 1146 # endif 1147 #endif 1148 1149 /* 1150 * +balloon_eval Allow balloon expression evaluation. Used with a 1151 * debugger and for tooltips. 1152 * Only for GUIs where it was implemented. 1153 */ 1154 #if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) \ 1155 || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)) \ 1156 && ( (defined(FEAT_TOOLBAR) \ 1157 && !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)) \ 1158 || defined(FEAT_SUN_WORKSHOP) \ 1159 || defined(FEAT_NETBEANS_INTG)) 1160 # define FEAT_BEVAL 1161 # if !defined(FEAT_XFONTSET) && !defined(FEAT_GUI_GTK) \ 1162 && !defined(FEAT_GUI_W32) 1163 # define FEAT_XFONTSET 1164 # endif 1165 #endif 1166 1167 #if defined(FEAT_BEVAL) && (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) 1168 # define FEAT_BEVAL_TIP /* balloon eval used for toolbar tooltip */ 1169 #endif 1170 1171 #if defined(FEAT_SUN_WORKSHOP) || defined(FEAT_NETBEANS_INTG) 1172 /* 1173 * The following features are (currently) only used by Sun Visual WorkShop 6 1174 * and NetBeans. These features could be used with other integrations with 1175 * debuggers so I've used separate feature defines. 1176 */ 1177 # if !defined(FEAT_MENU) 1178 # define FEAT_MENU 1179 # endif 1180 #endif 1181 1182 #if defined(FEAT_SUN_WORKSHOP) 1183 /* 1184 * Use an alternative method of X input for a secondary 1185 * command input. 1186 */ 1187 # define ALT_X_INPUT 1188 1189 /* 1190 * +footer Motif only: Add a message area at the bottom of the 1191 * main window area. 1192 */ 1193 # define FEAT_FOOTER 1194 1195 #endif 1196