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