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