feature.h
上传用户:gddssl
上传日期:2007-01-06
资源大小:1003k
文件大小:13k
源码类别:

编辑器/阅读器

开发平台:

DOS

  1. /* vi:set ts=8 sts=0 sw=8:
  2.  *
  3.  * VIM - Vi IMproved by Bram Moolenaar
  4.  *
  5.  * Do ":help uganda"  in Vim to read copying and usage conditions.
  6.  * Do ":help credits" in Vim to see a list of people who contributed.
  7.  */
  8. /*
  9.  * feature.h: Defines for optional code and preferences
  10.  *
  11.  * Edit this file to include/exclude parts of Vim, before compiling.
  12.  * The only other file that may be edited is Makefile, it contains machine
  13.  * specific options.
  14.  *
  15.  * To include specific options, change the "#if*" and "#endif" into comments,
  16.  * or uncomment the "#define".
  17.  * To exclude specific options, change the "#define" into a comment.
  18.  */
  19. /*
  20.  * When adding a new feature:
  21.  * - Add a #define below.
  22.  * - Add a message in do_version().
  23.  * - Add a string to f_has().
  24.  * - Add a feature to ":help feature-list" in doc/eval.txt.
  25.  * - Add feature to ":help +feature-list" in doc/various.txt.
  26.  * - Add comment for the documentation of commands that use the feature.
  27.  */
  28. /*
  29.  * Basic choices:
  30.  * ==============
  31.  *
  32.  * MIN_FEAT minimal features enabled, as basic as possible (DOS16)
  33.  * MAX_FEAT maximal features enabled, as rich as possible.
  34.  * default A selection of features enabled.
  35.  *
  36.  * These executables are made available with MAX_FEAT defined, because they
  37.  * are supposed to have enough RAM: Win32 (console & GUI), dos32 and OS/2.
  38.  * The dos16 version has very little RAM available, use MIN_FEAT.
  39.  */
  40. #if !defined(MIN_FEAT) && !defined(MAX_FEAT)
  41. /* #define MIN_FEAT */
  42. /* #define MAX_FEAT */
  43. # if defined(WIN32) || defined(DJGPP) || defined(OS2)
  44. #  define MAX_FEAT
  45. # else
  46. #  ifdef MSDOS
  47. #   define MIN_FEAT
  48. #  endif
  49. # endif
  50. #endif
  51. /*
  52.  * Optional code (see ":help +feature-list")
  53.  * =============
  54.  */
  55. /*
  56.  * +digraphs When DIGRAPHS defined: Include digraph support.
  57.  * In insert mode and on the command line you will be
  58.  * able to use digraphs. The CTRL-K command will work.
  59.  */
  60. #ifndef MIN_FEAT
  61. # define DIGRAPHS
  62. #endif
  63. /*
  64.  * +langmap When HAVE_LANGMAP defined: Include support for
  65.  * 'langmap' option.  Only useful when you put your
  66.  * keyboard in a special language mode, e.g. for typing
  67.  * greek.
  68.  */
  69. #ifdef MAX_FEAT
  70. # define HAVE_LANGMAP
  71. #endif
  72. /*
  73.  * +insert_expand When INSERT_EXPAND defined: Support for
  74.  * CTRL-N/CTRL-P/CTRL-X in insert mode. Takes about
  75.  * 4Kbyte of code.
  76.  */
  77. #ifndef MIN_FEAT
  78. # define INSERT_EXPAND
  79. #endif
  80. /*
  81.  * +textobjects When TEXT_OBJECTS defined: Support for text objects:
  82.  * "vaw", "das", etc.
  83.  */
  84. #ifndef MIN_FEAT
  85. # define TEXT_OBJECTS
  86. #endif
  87. /*
  88.  * +showcmd When SHOWCMD defined: Support for 'showcmd' option.
  89.  */
  90. #ifndef MIN_FEAT
  91. # define SHOWCMD
  92. #endif
  93. /*
  94.  * +ex_extra When EX_EXTRA defined: Support for ":retab", ":right",
  95.  * ":left", ":center", ":normal".
  96.  */
  97. #ifndef MIN_FEAT
  98. # define EX_EXTRA
  99. #endif
  100. /*
  101.  * +extra_search When EXTRA_SEARCH defined: Support for 'hlsearch' and
  102.  * 'incsearch'.
  103.  */
  104. #ifndef MIN_FEAT
  105. # define EXTRA_SEARCH
  106. #endif
  107. /*
  108.  * +quickfix When QUICKFIX defined: Support for quickfix commands.
  109.  */
  110. #ifndef MIN_FEAT
  111. # define QUICKFIX
  112. #endif
  113. /*
  114.  * +file_in_path When FILE_IN_PATH defined: Support for "gf" and
  115.  * "<cfile>".
  116.  */
  117. #ifndef MIN_FEAT
  118. # define FILE_IN_PATH
  119. #endif
  120. /*
  121.  * +find_in_path When FIND_IN_PATH defined: Support for "[I" ":isearch"
  122.  * "^W^I", ":checkpath", etc.
  123.  */
  124. #ifndef MIN_FEAT
  125. # ifdef FILE_IN_PATH /* FILE_IN_PATH is required */
  126. #  define FIND_IN_PATH
  127. # endif
  128. #endif
  129. /*
  130.  * +rightleft When RIGHTLEFT defined: Right-to-left typing and
  131.  * Hebrew support.  Takes some code.
  132.  */
  133. #ifdef MAX_FEAT
  134. # define RIGHTLEFT
  135. #endif
  136. /*
  137.  * +farsi When FKMAP defined: Farsi (Persian language) Keymap
  138.  * support.  Takes some code.  Needs RIGHTLEFT.
  139.  */
  140. #ifdef MAX_FEAT
  141. # ifndef RIGHTLEFT
  142. #  define RIGHTLEFT
  143. # endif
  144. # define FKMAP
  145. #endif
  146. /*
  147.  * +emacs_tags When EMACS_TAGS defined: Include support for emacs
  148.  * style TAGS file.  Takes some code.
  149.  */
  150. #ifdef MAX_FEAT
  151. # define EMACS_TAGS
  152. #endif
  153. /*
  154.  * +tag_binary When BINARY_TAGS defined: Use a binary search instead
  155.  * of a linear search when search a tags file.
  156.  */
  157. #ifndef MIN_FEAT
  158. # define BINARY_TAGS
  159. #endif
  160. /*
  161.  * +tag_old_static When OLD_STATIC_TAGS defined: Include support for old
  162.  * style static tags: "file:tag  file  ..".  Slows down
  163.  * tag searching a bit.
  164.  */
  165. #ifndef MIN_FEAT
  166. # define OLD_STATIC_TAGS
  167. #endif
  168. /*
  169.  * +tag_any_white When TAG_ANY_WHITE defined: Allow any white space to
  170.  * separate the fields in a tags file. When not
  171.  * defined, only a TAB is allowed.
  172.  */
  173. /* #define TAG_ANY_WHITE */
  174. /*
  175.  * +cscope Unix only.  When USE_CSCOPE defined, enable interface
  176.  * to support cscope.
  177.  */
  178. #if defined(UNIX) && defined(MAX_FEAT) && !defined(USE_CSCOPE)
  179. # define USE_CSCOPE
  180. #endif
  181. /*
  182.  * +eval When WANT_EVAL defined: Include built-in script
  183.  * language and expression evaluation, ":let", ":if",
  184.  * etc.
  185.  */
  186. #ifndef MIN_FEAT
  187. # define WANT_EVAL
  188. #endif
  189. /*
  190.  * +user_commands When USER_COMMANDS defined: Allow the user to define
  191.  * his own commands.
  192.  */
  193. #ifndef MIN_FEAT
  194. # define USER_COMMANDS
  195. #endif
  196. /*
  197.  * +modify_fname When WANT_MODIFY_FNAME defined: Include modifiers for
  198.  * file name.  E.g., "%:p:h".
  199.  */
  200. #ifndef MIN_FEAT
  201. # define WANT_MODIFY_FNAME
  202. #endif
  203. /*
  204.  * +autocmd When defined: Include support for ":autocmd"
  205.  */
  206. #ifndef MIN_FEAT
  207. # define AUTOCMD
  208. #endif
  209. /*
  210.  * +wildignore When defined: Include support for 'wildignore'
  211.  */
  212. #ifndef MIN_FEAT
  213. # define WILDIGNORE
  214. #endif
  215. /*
  216.  * +filetype When WANT_FILETYPE defined: Include support for
  217.  * filetype checking in autocommands. Eg:
  218.  * *.html,*.htm,<html>,*.shtml
  219.  * Only on systems that support filetypes (RISC OS).
  220.  */
  221. #if 0
  222. # define WANT_FILETYPE
  223. # define FT_DFLT "Text"
  224. #endif
  225. /*
  226.  * +viminfo When VIMINFO defined: Include support for
  227.  * reading/writing the viminfo file. Takes about 8Kbyte
  228.  * of code.
  229.  * VIMINFO_FILE Location of user .viminfo file (should start with $).
  230.  * VIMINFO_FILE2 Location of alternate user .viminfo file.
  231.  */
  232. #ifndef MIN_FEAT
  233. # define VIMINFO
  234. /* #define VIMINFO_FILE "$HOME/foo/.viminfo" */
  235. /* #define VIMINFO_FILE2 "~/bar/.viminfo" */
  236. #endif
  237. /*
  238.  * +syntax When SYNTAX_HL defined: Include support for syntax
  239.  * highlighting.  When using this, it's a good idea to
  240.  * have AUTOCMD too.
  241.  */
  242. #if !defined(MIN_FEAT) || defined(PROTO)
  243. # define SYNTAX_HL
  244. #endif
  245. /*
  246.  * +sniff When USE_SNIFF defined: Include support for Sniff
  247.  * interface.  This needs to be defined in the Makefile.
  248.  */
  249. /*
  250.  * +builtin_terms Choose one out of the following four:
  251.  *
  252.  * NO_BUILTIN_TCAPS When defined: Do not include any builtin termcap
  253.  * entries (used only with HAVE_TGETENT defined).
  254.  *
  255.  * (nothing) Machine specific termcap entries will be included.
  256.  *
  257.  * SOME_BUILTIN_TCAPS When defined: Include most useful builtin termcap
  258.  * entries (used only with NO_BUILTIN_TCAPS not defined).
  259.  * This is the default.
  260.  *
  261.  * ALL_BUILTIN_TCAPS When defined: Include all builtin termcap entries
  262.  * (used only with NO_BUILTIN_TCAPS not defined).
  263.  */
  264. #ifdef HAVE_TGETENT
  265. /* #define NO_BUILTIN_TCAPS */
  266. #endif
  267. #ifndef NO_BUILTIN_TCAPS
  268. # ifdef MAX_FEAT
  269. #  define ALL_BUILTIN_TCAPS
  270. # else
  271. #  define SOME_BUILTIN_TCAPS /* default */
  272. # endif
  273. #endif
  274. /*
  275.  * +lispindent When LISPINDENT defined: Include lisp indenting (From
  276.  * Eric Fischer). Doesn't completely work like Vi (yet).
  277.  * +cindent When CINDENT defined: Include C code indenting (From
  278.  * Eric Fischer).
  279.  * +smartindent When SMARTINDENT defined: Do smart C code indenting
  280.  * when the 'si' option is set. It's not as good as
  281.  * CINDENT, only included to keep the old code.
  282.  *
  283.  * These two need to be defined when making prototypes.
  284.  */
  285. #if !defined(MIN_FEAT) || defined(PROTO)
  286. # define LISPINDENT
  287. #endif
  288. #if !defined(MIN_FEAT) || defined(PROTO)
  289. # define CINDENT
  290. #endif
  291. #ifndef MIN_FEAT
  292. # define SMARTINDENT
  293. #endif
  294. /*
  295.  * +browse Enable :browse command.
  296.  */
  297. #if !defined(MIN_FEAT) && (defined(USE_GUI_WIN32) || defined(USE_GUI_MOTIF) || defined(USE_GUI_ATHENA))
  298. # define USE_BROWSE
  299. #endif
  300. /*
  301.  * +multi_byte Enable generic multi-byte character handling.
  302.  * Not tested much!
  303.  */
  304. #ifdef MAX_FEAT
  305. # define MULTI_BYTE
  306. #endif
  307. /*
  308.  * +multi_byte_ime Win32 IME input method.  Requires +multi_byte.
  309.  * Only for far-east Windows, so IME can be used to input
  310.  * chars.  Not tested much!
  311.  */
  312. #if defined(MULTI_BYTE) && defined(USE_GUI_WIN32)
  313. /* #  define MULTI_BYTE_IME */
  314. # endif
  315. /*
  316.  * BROWSE_CURRBUF When defined: Open file browser in the directory of
  317.  * the current buffer, instead of the current directory.
  318.  *
  319.  * USE_GUI_WIN32_TOOLBAR  Include a toolbar in the Win32 GUI.
  320.  */
  321. #if defined(USE_GUI_WIN32) && !defined(MIN_FEAT)
  322. # define BROWSE_CURRBUF
  323. # define USE_GUI_WIN32_TOOLBAR
  324. #endif
  325. /*
  326.  * When WINDOWS_ALT_KEYS defined, let Windows handle ALT
  327.  * keys, they are not available to Vim.  Allows
  328.  * selectiong menu items.
  329.  */
  330. /* #define WINDOWS_ALT_KEYS */
  331. /*
  332.  * +dialog_gui When GUI_DIALOG defined, use GUI dialog.
  333.  * +dialog_con When CON_DIALOG defined, may use Console dialog.
  334.  * When none of these defined, no dialog support.
  335.  */
  336. #ifndef MIN_FEAT
  337. # if defined(USE_GUI_WIN32)
  338. #  define GUI_DIALOG
  339. # else
  340. #  if defined(USE_GUI_ATHENA) || defined(USE_GUI_MOTIF)
  341. #   define CON_DIALOG
  342. #   define GUI_DIALOG
  343. #  else
  344. #   define CON_DIALOG
  345. #  endif
  346. # endif
  347. #endif
  348. /*
  349.  * Preferences:
  350.  * ============
  351.  */
  352. /*
  353.  * +writebackup When WRITEBACKUP defined: 'writebackup' is default on:
  354.  * Use a backup file while overwriting a file.  But it's
  355.  * deleted again when 'backup' is not set.  Changing this
  356.  * is strongly discouraged: You can loose all your
  357.  * changes when the computer crashes while writing the
  358.  * file.
  359.  */
  360. #ifndef VMS /* doesn't work on VMS */
  361. # define WRITEBACKUP
  362. #endif
  363. /*
  364.  * +xterm_save When SAVE_XTERM_SCREEN defined: The t_ti and t_te
  365.  * entries for the builtin xterm will be set to save the
  366.  * screen when starting Vim and restoring it when
  367.  * exiting.
  368.  */
  369. /* #define SAVE_XTERM_SCREEN */
  370. /*
  371.  * DEBUG When defined: Output a lot of debugging garbage.
  372.  */
  373. /* #define DEBUG */
  374. /*
  375.  * VIMRC_FILE Name of the .vimrc file in current dir.
  376.  */
  377. /* #define VIMRC_FILE ".vimrc" */
  378. /*
  379.  * EXRC_FILE Name of the .exrc file in current dir.
  380.  */
  381. /* #define EXRC_FILE ".exrc" */
  382. /*
  383.  * GVIMRC_FILE Name of the .gvimrc file in current dir.
  384.  */
  385. /* #define GVIMRC_FILE ".gvimrc" */
  386. /*
  387.  * SESSION_FILE Name of the default ":mksession" file.
  388.  */
  389. #define SESSION_FILE "Session.vim"
  390. /*
  391.  * USR_VIMRC_FILE Name of the user .vimrc file.
  392.  * USR_VIMRC_FILE2 Name of alternate user .vimrc file.
  393.  */
  394. /* #define USR_VIMRC_FILE "~/foo/.vimrc" */
  395. /* #define USR_VIMRC_FILE2 "~/bar/.vimrc" */
  396. /*
  397.  * USR_EXRC_FILE Name of the user .exrc file.
  398.  * USR_EXRC_FILE2 Name of the alternate user .exrc file.
  399.  */
  400. /* #define USR_EXRC_FILE "~/foo/.exrc" */
  401. /* #define USR_EXRC_FILE2 "~/bar/.exrc" */
  402. /*
  403.  * USR_GVIMRC_FILE Name of the user .gvimrc file.
  404.  * USR_GVIMRC_FILE2 Name of the alternate user .gvimrc file.
  405.  */
  406. /* #define USR_GVIMRC_FILE "~/foo/.gvimrc" */
  407. /* #define USR_GVIMRC_FILE2 "~/bar/.gvimrc" */
  408. /*
  409.  * SYS_VIMRC_FILE Name of the system-wide .vimrc file.
  410.  */
  411. /* #define SYS_VIMRC_FILE "/etc/vimrc" */
  412. /*
  413.  * SYS_GVIMRC_FILE Name of the system-wide .gvimrc file.
  414.  */
  415. /* #define SYS_GVIMRC_FILE "/etc/gvimrc" */
  416. /*
  417.  * VIM_HLP Name of the help file.
  418.  */
  419. /* #define VIM_HLP "$VIM/doc/help.txt.gz" */
  420. /*
  421.  * SYS_MENU_FILE Name of the default menu.vim file.
  422.  */
  423. /* #define SYS_MENU_FILE "/foo/menu.vim" */
  424. /*
  425.  * SYNTAX_FNAME Name of a syntax file, where %s is the syntax name.
  426.  */
  427. /* #define SYNTAX_FNAME "/foo/%s.vim" */
  428. /*
  429.  * Machine dependent:
  430.  * ==================
  431.  */
  432. /*
  433.  * +fork Unix only.  When USE_SYSTEM defined: Use system()
  434.  * +system instead of fork/exec for starting a shell.  Doesn't
  435.  * work for the GUI!
  436.  */
  437. /* #define USE_SYSTEM */
  438. /*
  439.  * +X11 Unix only.  When WANT_X11 defined: Include code for
  440.  * xterm title saving. Only works if HAVE_X11 is also
  441.  * defined.
  442.  */
  443. #ifndef MIN_FEAT
  444. # define WANT_X11
  445. #endif
  446. /*
  447.  * +mouse_xterm Unix only. When XTERM_MOUSE defined: Include code for
  448.  * xterm mouse handling.
  449.  * +mouse_netterm idem, NETTERM_MOUSE, for Netterm mouse handling.
  450.  * +mouse_dec idem, DEC_MOUSE, for Dec mouse handling.
  451.  * (none) MS-DOS mouse support.
  452.  * +mouse Any mouse support (any of the above enabled).
  453.  */
  454. #ifndef MIN_FEAT
  455. # define XTERM_MOUSE
  456. #endif
  457. #ifdef MAX_FEAT
  458. # define NETTERM_MOUSE
  459. #endif
  460. #ifdef MAX_FEAT
  461. # define DEC_MOUSE
  462. #endif
  463. #ifndef MIN_FEAT
  464. # define DOS_MOUSE
  465. #endif
  466. /*
  467.  * +GUI_Athena To compile Vim with or without the GUI (gvim) you have
  468.  * +GUI_BeOS to edit Makefile.
  469.  * +GUI_Motif
  470.  */
  471. /*
  472.  * +ole Win32 OLE automation: Use if_ole_vc.mak.
  473.  */
  474. /*
  475.  * +perl Perl interface: edit the Makefile.
  476.  */
  477. /*
  478.  * +python Python interface: edit the Makefile.
  479.  */
  480. /*
  481.  * +terminfo (Automatically) defined in the Makefile.
  482.  */
  483. /*
  484.  * +tgetent (Automatically) defined in the Makefile.
  485.  */
  486. /*
  487.  * +ARP Amiga only. When defined: Do not use arp.library, DOS
  488.  * 2.0 required.
  489.  */
  490. /* #define NO_ARP */