/* vi:set ts=8 sts=4 sw=4 noet:
*
* VIM - Vi IMproved by Bram Moolenaar
*
* Do ":help uganda" in Vim to read copying and usage conditions.
* Do ":help credits" in Vim to see a list of people who contributed.
*/
/*
* feature.h: Defines for optional code and preferences
*
* Edit this file to include/exclude parts of Vim, before compiling.
* The only other file that may be edited is Makefile, it contains machine
* specific options.
*
* To include specific options, change the "#if*" and "#endif" into comments,
* or uncomment the "#define".
* To exclude specific options, change the "#define" into a comment.
*/
/*
* When adding a new feature:
* - Add a #define below.
* - Add a message in the table above ex_version().
* - Add a string to f_has().
* - Add a feature to ":help feature-list" in doc/eval.txt.
* - Add feature to ":help +feature-list" in doc/various.txt.
* - Add comment for the documentation of commands that use the feature.
*/
/*
* Basic choices:
* ==============
*
* +tiny almost no features enabled, not even multiple windows
* +small as tiny plus cmdline window
* +normal A default selection of features enabled
* +big many features enabled, as rich as possible.
* +huge all possible features enabled.
*
* When +small is used, +tiny is also included. +normal implies +small, etc.
*/
/*
* Uncomment one of these to override the default. For unix use a configure
* argument, see Makefile.
*/
#if !defined(FEAT_TINY) && !defined(FEAT_SMALL) && !defined(FEAT_NORMAL) \
&& !defined(FEAT_BIG) && !defined(FEAT_HUGE)
// #define FEAT_TINY
// #define FEAT_SMALL
// #define FEAT_NORMAL
// #define FEAT_BIG
// #define FEAT_HUGE
#endif
/*
* For Unix, Mac and Win32 use +huge by default. These days CPUs are fast and
* Memory is cheap.
* Use +big for older systems: Other MS-Windows and VMS.
* Otherwise use +normal
*/
#if !defined(FEAT_TINY) && !defined(FEAT_SMALL) && !defined(FEAT_NORMAL) \
&& !defined(FEAT_BIG) && !defined(FEAT_HUGE)
# if defined(UNIX) || defined(MSWIN) || defined(MACOS_X)
# define FEAT_HUGE
# else
# if defined(MSWIN) || defined(VMS) || defined(AMIGA)
# define FEAT_BIG
# else
# define FEAT_NORMAL
# endif
# endif
#endif
/*
* Each feature implies including the "smaller" ones.
*/
#ifdef FEAT_HUGE
# define FEAT_BIG
#endif
#ifdef FEAT_BIG
# define FEAT_NORMAL
#endif
#ifdef FEAT_NORMAL
# define FEAT_SMALL
#endif
#ifdef FEAT_SMALL
# define FEAT_TINY
#endif
/*
* Optional code (see ":help +feature-list")
* =============
*/
/*
* These features used to be optional but are now always enabled:
* +windows Multiple windows. Without this there is no help
* window and no status lines.
* +vertsplit Vertically split windows.
* +cmdhist Command line history.
* +localmap Mappings and abbreviations local to a buffer.
* +visual Visual mode
* +visualextra Extra features for Visual mode (mostly block operators).
* +virtualedit 'virtualedit' option and its implementation
* +user_commands Allow the user to define his own commands.
* +multi_byte Generic multi-byte character handling.
* +cmdline_compl completion of mappings/abbreviations in cmdline mode.
* +insert_expand CTRL-N/CTRL-P/CTRL-X in insert mode.
* +modify_fname modifiers for file name. E.g., "%:p:h".
* +comments 'comments' option.
* +title 'title' and 'icon' options
* +jumplist Jumplist, CTRL-O and CTRL-I commands.
*
* Obsolete:
* +tag_old_static Old style static tags: "file:tag file ..".
* Support was removed in 8.1.1093.
* +farsi Farsi (Persian language) Keymap support.
* Removed in patch 8.1.0932
*/
/*
* Message history is fixed at 200 messages.
*/
#define MAX_MSG_HIST_LEN 200
#if defined(FEAT_SMALL)
# define FEAT_CMDWIN
#endif
/*
* +folding Fold lines.
*/
#ifdef FEAT_NORMAL
# define FEAT_FOLDING
#endif
/*
* +digraphs Digraphs.
* In insert mode and on the command line you will be
* able to use digraphs. The CTRL-K command will work.
* Define OLD_DIGRAPHS to get digraphs compatible with
* Vim 5.x. The new ones are from RFC 1345.
*/
#ifdef FEAT_NORMAL
# define FEAT_DIGRAPHS
// #define OLD_DIGRAPHS
#endif
/*
* +langmap 'langmap' option. Only useful when you put your
* keyboard in a special language mode, e.g. for typing
* greek.
*/
#ifdef FEAT_BIG
# define FEAT_LANGMAP
#endif
/*
* +keymap 'keymap' option. Allows you to map typed keys in
* Insert mode for a special language.
*/
#ifdef FEAT_BIG
# define FEAT_KEYMAP
#endif
#ifdef FEAT_NORMAL
# define VIM_BACKTICK // internal backtick expansion
#endif
/*
* +cmdline_info 'showcmd' and 'ruler' options.
*/
#ifdef FEAT_NORMAL
# define FEAT_CMDL_INFO
#endif
/*
* +linebreak 'showbreak', 'breakat' and 'linebreak' options.
* Also 'numberwidth'.
*/
#ifdef FEAT_NORMAL
# define FEAT_LINEBREAK
#endif
/*
* +extra_search 'hlsearch' and 'incsearch' options.
*/
#ifdef FEAT_NORMAL
# define FEAT_SEARCH_EXTRA
#endif
/*
* +quickfix Quickfix commands.
*/
#ifdef FEAT_NORMAL
# define FEAT_QUICKFIX
#endif
/*
* +file_in_path "gf" and "<cfile>" commands.
*/
#ifdef FEAT_NORMAL
# define FEAT_SEARCHPATH
#endif
/*
* +find_in_path "[I" ":isearch" "^W^I", ":checkpath", etc.
*/
#ifdef FEAT_NORMAL
# ifdef FEAT_SEARCHPATH // FEAT_SEARCHPATH is required
# define FEAT_FIND_ID
# endif
#endif
/*
* +path_extra up/downwards searching in 'path' and 'tags'.
*/
#ifdef FEAT_NORMAL
# define FEAT_PATH_EXTRA
#endif
/*
* +rightleft Right-to-left editing/typing support.
*/
#if defined(FEAT_BIG) && !defined(DISABLE_RIGHTLEFT)
# define FEAT_RIGHTLEFT
#endif
/*
* +arabic Arabic keymap and shaping support.
* Requires FEAT_RIGHTLEFT
*/
#if defined(FEAT_BIG) && !defined(DISABLE_ARABIC)
# define FEAT_ARABIC
#endif
#ifdef FEAT_ARABIC
# ifndef FEAT_RIGHTLEFT
# define FEAT_RIGHTLEFT
# endif
#endif
/*
* +emacs_tags When FEAT_EMACS_TAGS defined: Include support for
* emacs style TAGS file.
*/
#ifdef FEAT_BIG
# define FEAT_EMACS_TAGS
#endif
/*
* +tag_binary Can use a binary search for the tags file.
*/
#define FEAT_TAG_BINS
/*
* +cscope Unix only: Cscope support.
*/
#if defined(UNIX) && defined(FEAT_BIG) && !defined(FEAT_CSCOPE) && !defined(MACOS_X)
# define FEAT_CSCOPE
#endif
/*
* +eval Built-in script language and expression evaluation,
* ":let", ":if", etc.
* +float Floating point variables.
*/
#ifdef FEAT_NORMAL
# define FEAT_EVAL
# if defined(HAVE_FLOAT_FUNCS) || defined(MSWIN) || defined(MACOS_X)
# define FEAT_FLOAT
# endif
#endif
#ifdef FEAT_EVAL
# define HAVE_SANDBOX
#endif
/*
* +profile Profiling for functions and scripts.
*/
#if defined(FEAT_HUGE) \
&& defined(FEAT_EVAL) \
&& ((defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)) \
|| defined(MSWIN))
# define FEAT_PROFILE
#endif
/*
* +reltime reltime() function
*/
#