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