diff options
Diffstat (limited to 'src/nvim/globals.h')
-rw-r--r-- | src/nvim/globals.h | 744 |
1 files changed, 301 insertions, 443 deletions
diff --git a/src/nvim/globals.h b/src/nvim/globals.h index ed9862a264..2550fb8163 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -12,32 +12,14 @@ #include "nvim/syntax_defs.h" #include "nvim/types.h" #include "nvim/event/loop.h" - -/* - * definition of global variables - */ +#include "nvim/os/os_defs.h" #define IOSIZE (1024+1) // file I/O and sprintf buffer size -#define MAX_MCO 6 // maximum value for 'maxcombine' - # define MSG_BUF_LEN 480 // length of buffer for small messages # define MSG_BUF_CLEN (MSG_BUF_LEN / 6) // cell length (worst case: utf-8 // takes 6 bytes for one cell) -/* - * Maximum length of a path (for non-unix systems) Make it a bit long, to stay - * on the safe side. But not too long to put on the stack. - * TODO(metrix78): Move this to os_defs.h - */ -#ifndef MAXPATHL -# ifdef MAXPATHLEN -# define MAXPATHL MAXPATHLEN -# else -# define MAXPATHL 256 -# endif -#endif - #ifdef WIN32 # define _PATHSEPSTR "\\" #else @@ -96,6 +78,11 @@ typedef enum { kTrue = 1, } TriState; +EXTERN struct nvim_stats_s { + int64_t fsync; + int64_t redraw; +} g_stats INIT(= { 0, 0 }); + /* Values for "starting" */ #define NO_SCREEN 2 /* no screen updating yet */ #define NO_BUFFERS 1 /* not all buffers loaded yet */ @@ -104,59 +91,43 @@ typedef enum { /* * Number of Rows and Columns in the screen. * Must be long to be able to use them as options in option.c. - * Note: Use screen_Rows and screen_Columns to access items in ScreenLines[]. - * They may have different values when the screen wasn't (re)allocated yet - * after setting Rows or Columns (e.g., when starting up). + * Note: Use default_grid.Rows and default_grid.Columns to access items in + * default_grid.chars[]. They may have different values when the screen + * wasn't (re)allocated yet after setting Rows or Columns (e.g., when starting + * up). */ - -#define DFLT_COLS 80 /* default value for 'columns' */ -#define DFLT_ROWS 24 /* default value for 'lines' */ - +#define DFLT_COLS 80 // default value for 'columns' +#define DFLT_ROWS 24 // default value for 'lines' EXTERN long Rows INIT(= DFLT_ROWS); // nr of rows in the screen - EXTERN long Columns INIT(= DFLT_COLS); // nr of columns in the screen -/* - * The characters and attributes cached for the screen. - */ -typedef char_u schar_T; -typedef unsigned short sattr_T; - -/* - * The characters that are currently on the screen are kept in ScreenLines[]. - * It is a single block of characters, the size of the screen plus one line. - * The attributes for those characters are kept in ScreenAttrs[]. - * - * "LineOffset[n]" is the offset from ScreenLines[] for the start of line 'n'. - * The same value is used for ScreenLinesUC[] and ScreenAttrs[]. - * - * Note: before the screen is initialized and when out of memory these can be - * NULL. - */ -EXTERN schar_T *ScreenLines INIT(= NULL); -EXTERN sattr_T *ScreenAttrs INIT(= NULL); -EXTERN unsigned *LineOffset INIT(= NULL); -EXTERN char_u *LineWraps INIT(= NULL); /* line wraps to next line */ - -/* - * When using Unicode characters (in UTF-8 encoding) the character in - * ScreenLinesUC[] contains the Unicode for the character at this position, or - * NUL when the character in ScreenLines[] is to be used (ASCII char). - * The composing characters are to be drawn on top of the original character. - * ScreenLinesC[0][off] is only to be used when ScreenLinesUC[off] != 0. - * Note: These three are only allocated when enc_utf8 is set! - */ -EXTERN u8char_T *ScreenLinesUC INIT(= NULL); /* decoded UTF-8 characters */ -EXTERN u8char_T *ScreenLinesC[MAX_MCO]; /* composing characters */ -EXTERN int Screen_mco INIT(= 0); /* value of p_mco used when - allocating ScreenLinesC[] */ - -/* Only used for euc-jp: Second byte of a character that starts with 0x8e. - * These are single-width. */ -EXTERN schar_T *ScreenLines2 INIT(= NULL); - -EXTERN int screen_Rows INIT(= 0); /* actual size of ScreenLines[] */ -EXTERN int screen_Columns INIT(= 0); /* actual size of ScreenLines[] */ +// We use 64-bit file functions here, if available. E.g. ftello() returns +// off_t instead of long, which helps if long is 32 bit and off_t is 64 bit. +// We assume that when fseeko() is available then ftello() is too. +// Note that Windows has different function names. +#if (defined(_MSC_VER) && (_MSC_VER >= 1300)) || defined(__MINGW32__) +typedef __int64 off_T; +# ifdef __MINGW32__ +# define vim_lseek lseek64 +# define vim_fseek fseeko64 +# define vim_ftell ftello64 +# else +# define vim_lseek _lseeki64 +# define vim_fseek _fseeki64 +# define vim_ftell _ftelli64 +# endif +#else +typedef off_t off_T; +# ifdef HAVE_FSEEKO +# define vim_lseek lseek +# define vim_ftell ftello +# define vim_fseek fseeko +# else +# define vim_lseek lseek +# define vim_ftell ftell +# define vim_fseek(a, b, c) fseek(a, (long)b, c) +# endif +#endif /* * When vgetc() is called, it sets mod_mask to the set of modifiers that are @@ -182,8 +153,6 @@ EXTERN int cmdline_star INIT(= FALSE); /* cmdline is crypted */ EXTERN int exec_from_reg INIT(= FALSE); /* executing register */ -EXTERN int screen_cleared INIT(= FALSE); /* screen has been cleared */ - /* * When '$' is included in 'cpoptions' option set: * When a change command is given that deletes only part of a line, a dollar @@ -221,11 +190,8 @@ EXTERN int compl_cont_status INIT(= 0); # define CONT_LOCAL 32 /* for ctrl_x_mode 0, ^X^P/^X^N do a local * expansion, (eg use complete=.) */ -/* - * Functions for putting characters in the command line, - * while keeping ScreenLines[] updated. - */ -EXTERN int cmdmsg_rl INIT(= FALSE); /* cmdline is drawn right to left */ +// state for putting characters in the message area +EXTERN int cmdmsg_rl INIT(= false); // cmdline is drawn right to left EXTERN int msg_col; EXTERN int msg_row; EXTERN int msg_scrolled; /* Number of screen lines that windows have @@ -271,24 +237,18 @@ EXTERN int did_wait_return INIT(= FALSE); /* wait_return() was used and nothing written since then */ EXTERN int need_maketitle INIT(= TRUE); /* call maketitle() soon */ -EXTERN int quit_more INIT(= FALSE); /* 'q' hit at "--more--" msg */ -#if defined(UNIX) || defined(MACOS_X) -EXTERN int newline_on_exit INIT(= FALSE); /* did msg in altern. screen */ -EXTERN int intr_char INIT(= 0); /* extra interrupt character */ -#endif -EXTERN int ex_keep_indent INIT(= FALSE); /* getexmodeline(): keep indent */ -EXTERN int vgetc_busy INIT(= 0); /* when inside vgetc() then > 0 */ +EXTERN int quit_more INIT(= false); // 'q' hit at "--more--" msg +EXTERN int ex_keep_indent INIT(= false); // getexmodeline(): keep indent +EXTERN int vgetc_busy INIT(= 0); // when inside vgetc() then > 0 EXTERN int didset_vim INIT(= FALSE); /* did set $VIM ourselves */ EXTERN int didset_vimruntime INIT(= FALSE); /* idem for $VIMRUNTIME */ -/* - * Lines left before a "more" message. Ex mode needs to be able to reset this - * after you type something. - */ -EXTERN int lines_left INIT(= -1); /* lines left for listing */ -EXTERN int msg_no_more INIT(= FALSE); /* don't use more prompt, truncate - messages */ +/// Lines left before a "more" message. Ex mode needs to be able to reset this +/// after you type something. +EXTERN int lines_left INIT(= -1); // lines left for listing +EXTERN int msg_no_more INIT(= false); // don't use more prompt, truncate + // messages EXTERN char_u *sourcing_name INIT( = NULL); /* name of error message source */ EXTERN linenr_T sourcing_lnum INIT(= 0); /* line number of the source file */ @@ -299,120 +259,100 @@ EXTERN int debug_did_msg INIT(= false); // did "debug mode" message EXTERN int debug_tick INIT(= 0); // breakpoint change count EXTERN int debug_backtrace_level INIT(= 0); // breakpoint backtrace level -/* Values for "do_profiling". */ -#define PROF_NONE 0 /* profiling not started */ -#define PROF_YES 1 /* profiling busy */ -#define PROF_PAUSED 2 /* profiling paused */ -EXTERN int do_profiling INIT(= PROF_NONE); /* PROF_ values */ +// Values for "do_profiling". +#define PROF_NONE 0 ///< profiling not started +#define PROF_YES 1 ///< profiling busy +#define PROF_PAUSED 2 ///< profiling paused +EXTERN int do_profiling INIT(= PROF_NONE); ///< PROF_ values -/* - * The exception currently being thrown. Used to pass an exception to - * a different cstack. Also used for discarding an exception before it is - * caught or made pending. Only valid when did_throw is TRUE. - */ +/// Exception currently being thrown. Used to pass an exception to a different +/// cstack. Also used for discarding an exception before it is caught or made +/// pending. EXTERN except_T *current_exception; -/* - * did_throw: An exception is being thrown. Reset when the exception is caught - * or as long as it is pending in a finally clause. - */ -EXTERN int did_throw INIT(= FALSE); - -/* - * need_rethrow: set to TRUE when a throw that cannot be handled in do_cmdline() - * must be propagated to the cstack of the previously called do_cmdline(). - */ -EXTERN int need_rethrow INIT(= FALSE); +/// Set when a throw that cannot be handled in do_cmdline() must be propagated +/// to the cstack of the previously called do_cmdline(). +EXTERN int need_rethrow INIT(= false); -/* - * check_cstack: set to TRUE when a ":finish" or ":return" that cannot be - * handled in do_cmdline() must be propagated to the cstack of the previously - * called do_cmdline(). - */ -EXTERN int check_cstack INIT(= FALSE); +/// Set when a ":finish" or ":return" that cannot be handled in do_cmdline() +/// must be propagated to the cstack of the previously called do_cmdline(). +EXTERN int check_cstack INIT(= false); -/* - * Number of nested try conditionals (across function calls and ":source" - * commands). - */ +/// Number of nested try conditionals (across function calls and ":source" +/// commands). EXTERN int trylevel INIT(= 0); -/* - * When "force_abort" is TRUE, always skip commands after an error message, - * even after the outermost ":endif", ":endwhile" or ":endfor" or for a - * function without the "abort" flag. It is set to TRUE when "trylevel" is - * non-zero (and ":silent!" was not used) or an exception is being thrown at - * the time an error is detected. It is set to FALSE when "trylevel" gets - * zero again and there was no error or interrupt or throw. - */ -EXTERN int force_abort INIT(= FALSE); - -/* - * "msg_list" points to a variable in the stack of do_cmdline() which keeps - * the list of arguments of several emsg() calls, one of which is to be - * converted to an error exception immediately after the failing command - * returns. The message to be used for the exception value is pointed to by - * the "throw_msg" field of the first element in the list. It is usually the - * same as the "msg" field of that element, but can be identical to the "msg" - * field of a later list element, when the "emsg_severe" flag was set when the - * emsg() call was made. - */ +/// When "force_abort" is TRUE, always skip commands after an error message, +/// even after the outermost ":endif", ":endwhile" or ":endfor" or for a +/// function without the "abort" flag. It is set to TRUE when "trylevel" is +/// non-zero (and ":silent!" was not used) or an exception is being thrown at +/// the time an error is detected. It is set to FALSE when "trylevel" gets +/// zero again and there was no error or interrupt or throw. +EXTERN int force_abort INIT(= false); + +/// "msg_list" points to a variable in the stack of do_cmdline() which keeps +/// the list of arguments of several emsg() calls, one of which is to be +/// converted to an error exception immediately after the failing command +/// returns. The message to be used for the exception value is pointed to by +/// the "throw_msg" field of the first element in the list. It is usually the +/// same as the "msg" field of that element, but can be identical to the "msg" +/// field of a later list element, when the "emsg_severe" flag was set when the +/// emsg() call was made. EXTERN struct msglist **msg_list INIT(= NULL); -/* - * suppress_errthrow: When TRUE, don't convert an error to an exception. Used - * when displaying the interrupt message or reporting an exception that is still - * uncaught at the top level (which has already been discarded then). Also used - * for the error message when no exception can be thrown. - */ -EXTERN int suppress_errthrow INIT(= FALSE); +/// When set, don't convert an error to an exception. Used when displaying the +/// interrupt message or reporting an exception that is still uncaught at the +/// top level (which has already been discarded then). Also used for the error +/// message when no exception can be thrown. +EXTERN int suppress_errthrow INIT(= false); -/* - * The stack of all caught and not finished exceptions. The exception on the - * top of the stack is the one got by evaluation of v:exception. The complete - * stack of all caught and pending exceptions is embedded in the various - * cstacks; the pending exceptions, however, are not on the caught stack. - */ +/// The stack of all caught and not finished exceptions. The exception on the +/// top of the stack is the one got by evaluation of v:exception. The complete +/// stack of all caught and pending exceptions is embedded in the various +/// cstacks; the pending exceptions, however, are not on the caught stack. EXTERN except_T *caught_stack INIT(= NULL); -/* - * Garbage collection can only take place when we are sure there are no Lists - * or Dictionaries being used internally. This is flagged with - * "may_garbage_collect" when we are at the toplevel. - * "want_garbage_collect" is set by the garbagecollect() function, which means - * we do garbage collection before waiting for a char at the toplevel. - * "garbage_collect_at_exit" indicates garbagecollect(1) was called. - */ -EXTERN int may_garbage_collect INIT(= FALSE); -EXTERN int want_garbage_collect INIT(= FALSE); -EXTERN int garbage_collect_at_exit INIT(= FALSE); - -/* Special values for current_SID. */ -#define SID_MODELINE -1 /* when using a modeline */ -#define SID_CMDARG -2 /* for "--cmd" argument */ -#define SID_CARG -3 /* for "-c" argument */ -#define SID_ENV -4 /* for sourcing environment variable */ -#define SID_ERROR -5 /* option was reset because of an error */ -#define SID_NONE -6 /* don't set scriptID */ - -/* ID of script being sourced or was sourced to define the current function. */ +/// +/// Garbage collection can only take place when we are sure there are no Lists +/// or Dictionaries being used internally. This is flagged with +/// "may_garbage_collect" when we are at the toplevel. +/// "want_garbage_collect" is set by the garbagecollect() function, which means +/// we do garbage collection before waiting for a char at the toplevel. +/// "garbage_collect_at_exit" indicates garbagecollect(1) was called. +/// +EXTERN int may_garbage_collect INIT(= false); +EXTERN int want_garbage_collect INIT(= false); +EXTERN int garbage_collect_at_exit INIT(= false); + +// Special values for current_SID. +#define SID_MODELINE -1 // when using a modeline +#define SID_CMDARG -2 // for "--cmd" argument +#define SID_CARG -3 // for "-c" argument +#define SID_ENV -4 // for sourcing environment variable +#define SID_ERROR -5 // option was reset because of an error +#define SID_NONE -6 // don't set scriptID +#define SID_LUA -7 // for Lua scripts/chunks +#define SID_API_CLIENT -8 // for API clients + +// ID of script being sourced or was sourced to define the current function. EXTERN scid_T current_SID INIT(= 0); +// ID of the current channel making a client API call +EXTERN uint64_t current_channel_id INIT(= 0); + +EXTERN bool did_source_packages INIT(= false); + // Scope information for the code that indirectly triggered the current // provider function call EXTERN struct caller_scope { scid_T SID; uint8_t *sourcing_name, *autocmd_fname, *autocmd_match; linenr_T sourcing_lnum; - int autocmd_fname_full, autocmd_bufnr; + int autocmd_bufnr; void *funccalp; } provider_caller_scope; EXTERN int provider_call_nesting INIT(= 0); -/* Magic number used for hashitem "hi_key" value indicating a deleted item. - * Only the address is used. */ -EXTERN char_u hash_removed; - EXTERN int t_colors INIT(= 256); // int value of T_CCO @@ -434,78 +374,6 @@ EXTERN int did_check_timestamps INIT(= FALSE); /* did check timestamps recently */ EXTERN int no_check_timestamps INIT(= 0); /* Don't check timestamps */ -/* - * Values for index in highlight_attr[]. - * When making changes, also update HL_FLAGS below! And update the default - * value of 'highlight' in option.c. - */ -typedef enum { - HLF_8 = 0 /* Meta & special keys listed with ":map", text that is - displayed different from what it is */ - , HLF_EOB //< after the last line in the buffer - , HLF_TERM //< terminal cursor focused - , HLF_TERMNC //< terminal cursor unfocused - , HLF_AT /* @ characters at end of screen, characters that - don't really exist in the text */ - , HLF_D /* directories in CTRL-D listing */ - , HLF_E /* error messages */ - , HLF_I /* incremental search */ - , HLF_L /* last search string */ - , HLF_M /* "--More--" message */ - , HLF_CM /* Mode (e.g., "-- INSERT --") */ - , HLF_N /* line number for ":number" and ":#" commands */ - , HLF_CLN /* current line number */ - , HLF_R /* return to continue message and yes/no questions */ - , HLF_S /* status lines */ - , HLF_SNC /* status lines of not-current windows */ - , HLF_C /* column to separate vertically split windows */ - , HLF_T /* Titles for output from ":set all", ":autocmd" etc. */ - , HLF_V /* Visual mode */ - , HLF_VNC /* Visual mode, autoselecting and not clipboard owner */ - , HLF_W /* warning messages */ - , HLF_WM /* Wildmenu highlight */ - , HLF_FL /* Folded line */ - , HLF_FC /* Fold column */ - , HLF_ADD /* Added diff line */ - , HLF_CHD /* Changed diff line */ - , HLF_DED /* Deleted diff line */ - , HLF_TXD /* Text Changed in diff line */ - , HLF_CONCEAL /* Concealed text */ - , HLF_SC /* Sign column */ - , HLF_SPB /* SpellBad */ - , HLF_SPC /* SpellCap */ - , HLF_SPR /* SpellRare */ - , HLF_SPL /* SpellLocal */ - , HLF_PNI /* popup menu normal item */ - , HLF_PSI /* popup menu selected item */ - , HLF_PSB /* popup menu scrollbar */ - , HLF_PST /* popup menu scrollbar thumb */ - , HLF_TP /* tabpage line */ - , HLF_TPS /* tabpage line selected */ - , HLF_TPF /* tabpage line filler */ - , HLF_CUC /* 'cursurcolumn' */ - , HLF_CUL /* 'cursurline' */ - , HLF_MC /* 'colorcolumn' */ - , HLF_COUNT /* MUST be the last one */ -} hlf_T; - -/* The HL_FLAGS must be in the same order as the HLF_ enums! - * When changing this also adjust the default for 'highlight'. */ -#define HL_FLAGS {'8', '~', 'z', 'Z', '@', 'd', 'e', 'i', 'l', 'm', 'M', 'n', \ - 'N', 'r', 's', 'S', 'c', 't', 'v', 'V', 'w', 'W', 'f', 'F', \ - 'A', 'C', 'D', 'T', '-', '>', 'B', 'P', 'R', 'L', '+', '=', \ - 'x', 'X', '*', '#', '_', '!', '.', 'o'} - -EXTERN int highlight_attr[HLF_COUNT]; /* Highl. attr for each context. */ -EXTERN int highlight_user[9]; /* User[1-9] attributes */ -EXTERN int highlight_stlnc[9]; /* On top of user */ -EXTERN int cterm_normal_fg_color INIT(= 0); -EXTERN int cterm_normal_fg_bold INIT(= 0); -EXTERN int cterm_normal_bg_color INIT(= 0); -EXTERN RgbValue normal_fg INIT(= -1); -EXTERN RgbValue normal_bg INIT(= -1); -EXTERN RgbValue normal_sp INIT(= -1); - EXTERN int autocmd_busy INIT(= FALSE); /* Is apply_autocmds() busy? */ EXTERN int autocmd_no_enter INIT(= FALSE); /* *Enter autocmds disabled */ EXTERN int autocmd_no_leave INIT(= FALSE); /* *Leave autocmds disabled */ @@ -515,9 +383,9 @@ EXTERN int keep_filetype INIT(= FALSE); /* value for did_filetype when starting to execute autocommands */ -/* When deleting the current buffer, another one must be loaded. If we know - * which one is preferred, au_new_curbuf is set to it */ -EXTERN buf_T *au_new_curbuf INIT(= NULL); +// When deleting the current buffer, another one must be loaded. +// If we know which one is preferred, au_new_curbuf is set to it. +EXTERN bufref_T au_new_curbuf INIT(= { NULL, 0, 0 }); // When deleting a buffer/window and autocmd_busy is TRUE, do not free the // buffer/window. but link it in the list starting with @@ -561,6 +429,7 @@ EXTERN int updating_screen INIT(= FALSE); EXTERN win_T *firstwin; /* first window */ EXTERN win_T *lastwin; /* last window */ EXTERN win_T *prevwin INIT(= NULL); /* previous window */ +# define ONE_WINDOW (firstwin == lastwin) /* * When using this macro "break" only breaks out of the inner loop. Use "goto" * to break out of the tabpage loop. @@ -569,6 +438,7 @@ EXTERN win_T *prevwin INIT(= NULL); /* previous window */ FOR_ALL_TABS(tp) \ FOR_ALL_WINDOWS_IN_TAB(wp, tp) +// -V:FOR_ALL_WINDOWS_IN_TAB:501 # define FOR_ALL_WINDOWS_IN_TAB(wp, tp) \ for (win_T *wp = ((tp) == curtab) \ ? firstwin : (tp)->tp_firstwin; wp != NULL; wp = wp->w_next) @@ -599,16 +469,15 @@ EXTERN int redraw_tabline INIT(= FALSE); /* need to redraw tabline */ * All buffers are linked in a list. 'firstbuf' points to the first entry, * 'lastbuf' to the last entry and 'curbuf' to the currently active buffer. */ -EXTERN buf_T *firstbuf INIT(= NULL); /* first buffer */ -EXTERN buf_T *lastbuf INIT(= NULL); /* last buffer */ -EXTERN buf_T *curbuf INIT(= NULL); /* currently active buffer */ +EXTERN buf_T *firstbuf INIT(= NULL); // first buffer +EXTERN buf_T *lastbuf INIT(= NULL); // last buffer +EXTERN buf_T *curbuf INIT(= NULL); // currently active buffer // Iterates over all buffers in the buffer list. -# define FOR_ALL_BUFFERS(buf) for (buf_T *buf = firstbuf; buf != NULL; buf = buf->b_next) - -/* Flag that is set when switching off 'swapfile'. It means that all blocks - * are to be loaded into memory. Shouldn't be global... */ -EXTERN int mf_dont_release INIT(= FALSE); /* don't release blocks */ +#define FOR_ALL_BUFFERS(buf) \ + for (buf_T *buf = firstbuf; buf != NULL; buf = buf->b_next) +#define FOR_ALL_BUFFERS_BACKWARDS(buf) \ + for (buf_T *buf = lastbuf; buf != NULL; buf = buf->b_prev) /* * List of files being edited (global argument list). curwin->w_alist points @@ -616,80 +485,70 @@ EXTERN int mf_dont_release INIT(= FALSE); /* don't release blocks */ */ EXTERN alist_T global_alist; /* global argument list */ EXTERN int max_alist_id INIT(= 0); ///< the previous argument list id -EXTERN int arg_had_last INIT(= FALSE); /* accessed last file in - global_alist */ +EXTERN bool arg_had_last INIT(= false); // accessed last file in + // global_alist EXTERN int ru_col; /* column for ruler */ EXTERN int ru_wid; /* 'rulerfmt' width of ruler when non-zero */ EXTERN int sc_col; /* column for shown command */ -/* - * When starting or exiting some things are done differently (e.g. screen - * updating). - */ -EXTERN int starting INIT(= NO_SCREEN); -/* first NO_SCREEN, then NO_BUFFERS and then - * set to 0 when starting up finished */ -EXTERN int exiting INIT(= FALSE); -/* TRUE when planning to exit Vim. Might - * still keep on running if there is a changed - * buffer. */ -/* volatile because it is used in signal handler deathtrap(). */ -EXTERN volatile int full_screen INIT(= FALSE); -/* TRUE when doing full-screen output - * otherwise only writing some messages */ - -EXTERN int restricted INIT(= FALSE); -// TRUE when started in restricted mode (-Z) -EXTERN int secure INIT(= FALSE); -/* non-zero when only "safe" commands are - * allowed, e.g. when sourcing .exrc or .vimrc - * in current directory */ +// +// When starting or exiting some things are done differently (e.g. screen +// updating). +// +// First NO_SCREEN, then NO_BUFFERS, then 0 when startup finished. +EXTERN int starting INIT(= NO_SCREEN); +// true when planning to exit. Might keep running if there is a changed buffer. +EXTERN int exiting INIT(= false); +// is stdin a terminal? +EXTERN int stdin_isatty INIT(= true); +// is stdout a terminal? +EXTERN int stdout_isatty INIT(= true); +// true when doing full-screen output, otherwise only writing some messages. +// volatile because it is used in a signal handler. +EXTERN volatile int full_screen INIT(= false); + +// When started in restricted mode (-Z). +EXTERN int restricted INIT(= false); + +/// Non-zero when only "safe" commands are allowed, e.g. when sourcing .exrc or +/// .vimrc in current directory. +EXTERN int secure INIT(= false); + +/// Non-zero when changing text and jumping to another window/buffer is not +/// allowed. EXTERN int textlock INIT(= 0); -/* non-zero when changing text and jumping to - * another window or buffer is not allowed */ +/// Non-zero when the current buffer can't be changed. Used for FileChangedRO. EXTERN int curbuf_lock INIT(= 0); -/* non-zero when the current buffer can't be - * changed. Used for FileChangedRO. */ + +/// Non-zero when no buffer name can be changed, no buffer can be deleted and +/// current directory can't be changed. Used for SwapExists et al. EXTERN int allbuf_lock INIT(= 0); -/* non-zero when no buffer name can be - * changed, no buffer can be deleted and - * current directory can't be changed. - * Used for SwapExists et al. */ + +/// Non-zero when evaluating an expression in a "sandbox". Several things are +/// not allowed then. EXTERN int sandbox INIT(= 0); -/* Non-zero when evaluating an expression in a - * "sandbox". Several things are not allowed - * then. */ - -EXTERN int silent_mode INIT(= FALSE); -/* set to TRUE when "-s" commandline argument - * used for ex */ - -// Set to true when sourcing of startup scripts (init.vim) is done. -// Used for options that cannot be changed after startup scripts. -EXTERN bool did_source_startup_scripts INIT(= false); - -EXTERN pos_T VIsual; /* start position of active Visual selection */ -EXTERN int VIsual_active INIT(= FALSE); -/* whether Visual mode is active */ -EXTERN int VIsual_select INIT(= FALSE); -/* whether Select mode is active */ -EXTERN int VIsual_reselect; -/* whether to restart the selection after a - * Select mode mapping or menu */ -EXTERN int VIsual_mode INIT(= 'v'); -/* type of Visual mode */ +/// Batch-mode: "-es" or "-Es" commandline argument was given. +EXTERN int silent_mode INIT(= false); -EXTERN int redo_VIsual_busy INIT(= FALSE); -/* TRUE when redoing Visual */ +/// Start position of active Visual selection. +EXTERN pos_T VIsual; +/// Whether Visual mode is active. +EXTERN int VIsual_active INIT(= false); +/// Whether Select mode is active. +EXTERN int VIsual_select INIT(= false); +/// Whether to restart the selection after a Select-mode mapping or menu. +EXTERN int VIsual_reselect; +/// Type of Visual mode. +EXTERN int VIsual_mode INIT(= 'v'); +/// TRUE when redoing Visual. +EXTERN int redo_VIsual_busy INIT(= false); -/* - * When pasting text with the middle mouse button in visual mode with - * restart_edit set, remember where it started so we can set Insstart. - */ +/// When pasting text with the middle mouse button in visual mode with +/// restart_edit set, remember where it started so we can set Insstart. EXTERN pos_T where_paste_started; /* @@ -698,7 +557,7 @@ EXTERN pos_T where_paste_started; * reset when any other editing is done on the line. If an <ESC> or <RETURN> * is received, and did_ai is TRUE, the line is truncated. */ -EXTERN int did_ai INIT(= FALSE); +EXTERN bool did_ai INIT(= false); /* * Column of first char after autoindent. 0 when no autoindent done. Used @@ -726,19 +585,19 @@ EXTERN int did_syncbind INIT(= FALSE); * This flag is set when a smart indent has been performed. When the next typed * character is a '{' the inserted tab will be deleted again. */ -EXTERN int did_si INIT(= FALSE); +EXTERN bool did_si INIT(= false); /* * This flag is set after an auto indent. If the next typed character is a '}' * one indent will be removed. */ -EXTERN int can_si INIT(= FALSE); +EXTERN bool can_si INIT(= false); /* * This flag is set after an "O" command. If the next typed character is a '{' * one indent will be removed. */ -EXTERN int can_si_back INIT(= FALSE); +EXTERN bool can_si_back INIT(= false); // w_cursor before formatting text. EXTERN pos_T saved_cursor INIT(= INIT_POS_T(0, 0, 0)); @@ -777,45 +636,16 @@ EXTERN int vr_lines_changed INIT(= 0); /* #Lines changed by "gR" so far */ # define DBCS_2BYTE 1 /* 2byte- */ # define DBCS_DEBUG -1 -EXTERN int enc_dbcs INIT(= 0); /* One of DBCS_xxx values if - DBCS encoding */ -EXTERN int enc_unicode INIT(= 0); /* 2: UCS-2 or UTF-16, 4: UCS-4 */ -EXTERN bool enc_utf8 INIT(= false); /* UTF-8 encoded Unicode */ -EXTERN int enc_latin1like INIT(= TRUE); /* 'encoding' is latin1 comp. */ -EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */ +// mbyte flags that used to depend on 'encoding'. These are now deprecated, as +// 'encoding' is always "utf-8". Code that use them can be refactored to +// remove dead code. +#define enc_dbcs 0 +#define enc_utf8 true +#define has_mbyte true /// Encoding used when 'fencs' is set to "default" EXTERN char_u *fenc_default INIT(= NULL); -/* - * To speed up BYTELEN() we fill a table with the byte lengths whenever - * enc_utf8 or enc_dbcs changes. - */ -EXTERN char mb_bytelen_tab[256]; - -/* - * Function pointers, used to quickly get to the right function. Each has - * three possible values: latin_ (8-bit), utfc_ or utf_ (utf-8) and dbcs_ - * (DBCS). - * The value is set in mb_init(); - */ -/* length of char in bytes, including following composing chars */ -EXTERN int (*mb_ptr2len)(const char_u *p) INIT(= latin_ptr2len); -/* idem, with limit on string length */ -EXTERN int (*mb_ptr2len_len)(const char_u *p, int size) INIT(= latin_ptr2len_len); -/* byte length of char */ -EXTERN int (*mb_char2len)(int c) INIT(= latin_char2len); -/* convert char to bytes, return the length */ -EXTERN int (*mb_char2bytes)(int c, char_u *buf) INIT(= latin_char2bytes); -EXTERN int (*mb_ptr2cells)(const char_u *p) INIT(= latin_ptr2cells); -EXTERN int (*mb_ptr2cells_len)(const char_u *p, int size) INIT( - = latin_ptr2cells_len); -EXTERN int (*mb_char2cells)(int c) INIT(= latin_char2cells); -EXTERN int (*mb_off2cells)(unsigned off, unsigned max_off) INIT( - = latin_off2cells); -EXTERN int (*mb_ptr2char)(const char_u *p) INIT(= latin_ptr2char); -EXTERN int (*mb_head_off)(const char_u *base, const char_u *p) INIT(= latin_head_off); - # if defined(USE_ICONV) && defined(DYNAMIC_ICONV) /* Pointers to functions and variables to be loaded at runtime */ EXTERN size_t (*iconv)(iconv_t cd, const char **inbuf, size_t *inbytesleft, @@ -826,35 +656,31 @@ EXTERN int (*iconvctl)(iconv_t cd, int request, void *argument); EXTERN int* (*iconv_errno)(void); # endif -/* - * "State" is the main state of Vim. - * There are other variables that modify the state: - * "Visual_mode" When State is NORMAL or INSERT. - * "finish_op" When State is NORMAL, after typing the operator and before - * typing the motion command. - */ -EXTERN int State INIT(= NORMAL); /* This is the current state of the - * command interpreter. */ +/// "State" is the main state of Vim. +/// There are other variables that modify the state: +/// Visual_mode: When State is NORMAL or INSERT. +/// finish_op : When State is NORMAL, after typing the operator and +/// before typing the motion command. +/// motion_force: Last motion_force from do_pending_operator() +EXTERN int State INIT(= NORMAL); // This is the current state of the + // command interpreter. EXTERN bool finish_op INIT(= false); // true while an operator is pending EXTERN long opcount INIT(= 0); // count for pending operator +EXTERN int motion_force INIT(=0); // motion force for pending operator -/* - * ex mode (Q) state - */ -EXTERN int exmode_active INIT(= 0); /* zero, EXMODE_NORMAL or EXMODE_VIM */ -EXTERN int ex_no_reprint INIT(= FALSE); /* no need to print after z or p */ +// Ex Mode (Q) state +EXTERN int exmode_active INIT(= 0); // Zero, EXMODE_NORMAL or EXMODE_VIM. +EXTERN int ex_no_reprint INIT(=false); // No need to print after z or p. -EXTERN int Recording INIT(= FALSE); /* TRUE when recording into a reg. */ -EXTERN int Exec_reg INIT(= FALSE); /* TRUE when executing a register */ +EXTERN int Recording INIT(= false); // TRUE when recording into a reg. +EXTERN int Exec_reg INIT(= false); // TRUE when executing a register. -EXTERN int no_mapping INIT(= FALSE); /* currently no mapping allowed */ -EXTERN int no_zero_mapping INIT(= 0); /* mapping zero not allowed */ -EXTERN int allow_keys INIT(= FALSE); /* allow key codes when no_mapping - * is set */ -EXTERN int no_u_sync INIT(= 0); /* Don't call u_sync() */ -EXTERN int u_sync_once INIT(= 0); /* Call u_sync() once when evaluating - an expression. */ +EXTERN int no_mapping INIT(= false); // currently no mapping allowed +EXTERN int no_zero_mapping INIT(= 0); // mapping zero not allowed +EXTERN int no_u_sync INIT(= 0); // Don't call u_sync() +EXTERN int u_sync_once INIT(= 0); // Call u_sync() once when evaluating + // an expression. EXTERN bool force_restart_edit INIT(= false); // force restart_edit after // ex_normal returns @@ -877,9 +703,10 @@ EXTERN int mapped_ctrl_c INIT(= 0); // Modes where CTRL-C is mapped. EXTERN cmdmod_T cmdmod; /* Ex command modifiers */ -EXTERN int msg_silent INIT(= 0); /* don't print messages */ -EXTERN int emsg_silent INIT(= 0); /* don't print error messages */ -EXTERN int cmd_silent INIT(= FALSE); /* don't echo the command line */ +EXTERN int msg_silent INIT(= 0); // don't print messages +EXTERN int emsg_silent INIT(= 0); // don't print error messages +EXTERN bool emsg_noredir INIT(= false); // don't redirect error messages +EXTERN bool cmd_silent INIT(= false); // don't echo the command line /* Values for swap_exists_action: what to do when swap file already exists */ #define SEA_NONE 0 /* don't use dialog */ @@ -893,9 +720,16 @@ EXTERN int swap_exists_action INIT(= SEA_NONE); EXTERN int swap_exists_did_quit INIT(= FALSE); /* Selected "quit" at the dialog. */ -EXTERN char_u IObuff[IOSIZE]; /* sprintf's are done in this buffer */ -EXTERN char_u NameBuff[MAXPATHL]; /* buffer for expanding file names */ -EXTERN char_u msg_buf[MSG_BUF_LEN]; /* small buffer for messages */ +EXTERN char_u IObuff[IOSIZE]; ///< Buffer for sprintf, I/O, etc. +EXTERN char_u NameBuff[MAXPATHL]; ///< Buffer for expanding file names +EXTERN char_u msg_buf[MSG_BUF_LEN]; ///< Small buffer for messages +EXTERN char os_buf[ ///< Buffer for the os/ layer +#if MAXPATHL > IOSIZE +MAXPATHL +#else +IOSIZE +#endif +]; /* When non-zero, postpone redrawing. */ EXTERN int RedrawingDisabled INIT(= 0); @@ -910,13 +744,10 @@ EXTERN int ex_normal_busy INIT(= 0); // recursiveness of ex_normal() EXTERN int ex_normal_lock INIT(= 0); // forbid use of ex_normal() EXTERN int ignore_script INIT(= false); // ignore script input EXTERN int stop_insert_mode; // for ":stopinsert" and 'insertmode' -EXTERN int KeyTyped; // TRUE if user typed current char +EXTERN bool KeyTyped; // true if user typed current char EXTERN int KeyStuffed; // TRUE if current char from stuffbuf EXTERN int maptick INIT(= 0); // tick for each non-mapped char -EXTERN uint8_t chartab[256]; // table used in charset.c; See - // init_chartab() for explanation - EXTERN int must_redraw INIT(= 0); /* type of redraw necessary */ EXTERN int skip_redraw INIT(= FALSE); /* skip redraw once */ EXTERN int do_redraw INIT(= FALSE); /* extra redraw once */ @@ -924,14 +755,11 @@ EXTERN int do_redraw INIT(= FALSE); /* extra redraw once */ EXTERN int need_highlight_changed INIT(= true); EXTERN char *used_shada_file INIT(= NULL); // name of the ShaDa file to use -#define NSCRIPT 15 -EXTERN FILE *scriptin[NSCRIPT]; /* streams to read script from */ -EXTERN int curscript INIT(= 0); /* index in scriptin[] */ -EXTERN FILE *scriptout INIT(= NULL); /* stream to write script to */ +EXTERN FILE *scriptout INIT(= NULL); ///< Stream to write script to. -/* volatile because it is used in signal handler catch_sigint(). */ -EXTERN volatile int got_int INIT(= FALSE); /* set to TRUE when interrupt - signal occurred */ +// volatile because it is used in a signal handler. +EXTERN volatile int got_int INIT(= false); // set to true when interrupt + // signal occurred EXTERN int bangredo INIT(= FALSE); /* set to TRUE with ! command */ EXTERN int searchcmdlen; /* length of previous search cmd */ EXTERN int reg_do_extmatch INIT(= 0); /* Used when compiling regexp: @@ -956,16 +784,12 @@ EXTERN char_u *last_cmdline INIT(= NULL); // last command line (for ":) EXTERN char_u *repeat_cmdline INIT(= NULL); // command line for "." EXTERN char_u *new_last_cmdline INIT(= NULL); // new value for last_cmdline EXTERN char_u *autocmd_fname INIT(= NULL); // fname for <afile> on cmdline -EXTERN int autocmd_fname_full; // autocmd_fname is full path EXTERN int autocmd_bufnr INIT(= 0); // fnum for <abuf> on cmdline EXTERN char_u *autocmd_match INIT(= NULL); // name for <amatch> on cmdline EXTERN int did_cursorhold INIT(= false); // set when CursorHold t'gerd // for CursorMoved event EXTERN pos_T last_cursormoved INIT(= INIT_POS_T(0, 0, 0)); -EXTERN int last_changedtick INIT(= 0); // for TextChanged event -EXTERN buf_T *last_changedtick_buf INIT(= NULL); - EXTERN int postponed_split INIT(= 0); /* for CTRL-W CTRL-] command */ EXTERN int postponed_split_flags INIT(= 0); /* args for win_split() */ EXTERN int postponed_split_tab INIT(= 0); /* cmdmod.tab */ @@ -989,18 +813,19 @@ EXTERN int redir_off INIT(= false); // no redirection for a moment EXTERN FILE *redir_fd INIT(= NULL); // message redirection file EXTERN int redir_reg INIT(= 0); // message redirection register EXTERN int redir_vname INIT(= 0); // message redirection variable -EXTERN garray_T *capture_ga INIT(= NULL); // capture() buffer +EXTERN garray_T *capture_ga INIT(= NULL); // captured output for execute() EXTERN char_u langmap_mapchar[256]; /* mapping for language keys */ EXTERN int save_p_ls INIT(= -1); /* Save 'laststatus' setting */ EXTERN int save_p_wmh INIT(= -1); /* Save 'winminheight' setting */ EXTERN int wild_menu_showing INIT(= 0); -# define WM_SHOWN 1 /* wildmenu showing */ -# define WM_SCROLLED 2 /* wildmenu showing with scroll */ - +enum { + WM_SHOWN = 1, ///< wildmenu showing + WM_SCROLLED = 2, ///< wildmenu showing with scroll + WM_LIST = 3, ///< cmdline CTRL-D +}; -EXTERN char breakat_flags[256]; /* which characters are in 'breakat' */ /* * Some file names are stored in pathdef.c, which is generated from the @@ -1018,7 +843,7 @@ extern char_u *compiled_sys; * directory is not a local directory, globaldir is NULL. */ EXTERN char_u *globaldir INIT(= NULL); -/* Characters from 'listchars' option */ +// 'listchars' characters. Defaults are overridden in set_chars_option(). EXTERN int lcs_eol INIT(= '$'); EXTERN int lcs_ext INIT(= NUL); EXTERN int lcs_prec INIT(= NUL); @@ -1029,20 +854,23 @@ EXTERN int lcs_tab2 INIT(= NUL); EXTERN int lcs_trail INIT(= NUL); EXTERN int lcs_conceal INIT(= ' '); -/* Characters from 'fillchars' option */ +// 'fillchars' characters. Defaults are overridden in set_chars_option(). EXTERN int fill_stl INIT(= ' '); EXTERN int fill_stlnc INIT(= ' '); -EXTERN int fill_vert INIT(= ' '); -EXTERN int fill_fold INIT(= '-'); +EXTERN int fill_vert INIT(= 9474); // │ +EXTERN int fill_fold INIT(= 183); // · EXTERN int fill_diff INIT(= '-'); +EXTERN int fill_msgsep INIT(= ' '); +EXTERN int fill_eob INIT(= '~'); /* Whether 'keymodel' contains "stopsel" and "startsel". */ EXTERN int km_stopsel INIT(= FALSE); EXTERN int km_startsel INIT(= FALSE); -EXTERN int cedit_key INIT(= -1); /* key value of 'cedit' option */ -EXTERN int cmdwin_type INIT(= 0); /* type of cmdline window or 0 */ -EXTERN int cmdwin_result INIT(= 0); /* result of cmdline window or 0 */ +EXTERN int cedit_key INIT(= -1); ///< key value of 'cedit' option +EXTERN int cmdwin_type INIT(= 0); ///< type of cmdline window or 0 +EXTERN int cmdwin_result INIT(= 0); ///< result of cmdline window or 0 +EXTERN int cmdwin_level INIT(= 0); ///< cmdline recursion level EXTERN char_u no_lines_msg[] INIT(= N_("--No lines in buffer--")); @@ -1069,8 +897,8 @@ EXTERN int no_hlsearch INIT(= FALSE); EXTERN linenr_T printer_page_num; -EXTERN int typebuf_was_filled INIT(= FALSE); /* received text from client - or from feedkeys() */ +EXTERN bool typebuf_was_filled INIT(= false); // received text from client + // or from feedkeys() #ifdef BACKSLASH_IN_FILENAME @@ -1079,9 +907,9 @@ EXTERN char psepcN INIT(= '/'); // abnormal path separator character EXTERN char pseps[2] INIT(= { '\\', 0 }); // normal path separator string #endif -/* Set to TRUE when an operator is being executed with virtual editing, MAYBE - * when no operator is being executed, FALSE otherwise. */ -EXTERN int virtual_op INIT(= MAYBE); +// Set to kTrue when an operator is being executed with virtual editing +// kNone when no operator is being executed, kFalse otherwise. +EXTERN TriState virtual_op INIT(= kNone); /* Display tick, incremented for each call to update_screen() */ EXTERN disptick_T display_tick INIT(= 0); @@ -1090,10 +918,6 @@ EXTERN disptick_T display_tick INIT(= 0); * cursor position in Insert mode. */ EXTERN linenr_T spell_redraw_lnum INIT(= 0); -/* Set when the cursor line needs to be redrawn. */ -EXTERN int need_cursor_line_redraw INIT(= FALSE); - - #ifdef USE_MCH_ERRMSG // Grow array to collect error messages in until they can be displayed. EXTERN garray_T error_ga INIT(= GA_EMPTY_INIT_VALUE); @@ -1123,6 +947,7 @@ EXTERN char_u e_for[] INIT(= N_("E588: :endfor without :for")); EXTERN char_u e_exists[] INIT(= N_("E13: File exists (add ! to override)")); EXTERN char_u e_failed[] INIT(= N_("E472: Command failed")); EXTERN char_u e_internal[] INIT(= N_("E473: Internal error")); +EXTERN char_u e_intern2[] INIT(= N_("E685: Internal error: %s")); EXTERN char_u e_interr[] INIT(= N_("Interrupted")); EXTERN char_u e_invaddr[] INIT(= N_("E14: Invalid address")); EXTERN char_u e_invarg[] INIT(= N_("E474: Invalid argument")); @@ -1131,12 +956,20 @@ EXTERN char_u e_invexpr2[] INIT(= N_("E15: Invalid expression: %s")); EXTERN char_u e_invrange[] INIT(= N_("E16: Invalid range")); EXTERN char_u e_invcmd[] INIT(= N_("E476: Invalid command")); EXTERN char_u e_isadir2[] INIT(= N_("E17: \"%s\" is a directory")); -EXTERN char_u e_invjob[] INIT(= N_("E900: Invalid job id")); +EXTERN char_u e_invchan[] INIT(= N_("E900: Invalid channel id")); +EXTERN char_u e_invchanjob[] INIT(= N_("E900: Invalid channel id: not a job")); EXTERN char_u e_jobtblfull[] INIT(= N_("E901: Job table is full")); -EXTERN char_u e_jobexe[] INIT(= N_("E902: \"%s\" is not an executable")); EXTERN char_u e_jobspawn[] INIT(= N_( - "E903: Process for command \"%s\" could not be spawned")); -EXTERN char_u e_jobnotpty[] INIT(= N_("E904: Job is not connected to a pty")); + "E903: Process failed to start: %s: \"%s\"")); +EXTERN char_u e_channotpty[] INIT(= N_("E904: channel is not a pty")); +EXTERN char_u e_stdiochan2[] INIT(= N_( + "E905: Couldn't open stdio channel: %s")); +EXTERN char_u e_invstream[] INIT(= N_("E906: invalid stream for channel")); +EXTERN char_u e_invstreamrpc[] INIT(= N_( + "E906: invalid stream for rpc channel, use 'rpc'")); +EXTERN char_u e_streamkey[] INIT(= N_( + "E5210: dict key '%s' already set for buffered stream in channel %" + PRIu64)); EXTERN char_u e_libcall[] INIT(= N_("E364: Library call failed for \"%s()\"")); EXTERN char_u e_mkdir[] INIT(= N_("E739: Cannot create directory %s: %s")); EXTERN char_u e_markinval[] INIT(= N_("E19: Mark has invalid line number")); @@ -1147,7 +980,6 @@ EXTERN char_u e_nesting[] INIT(= N_("E22: Scripts nested too deep")); EXTERN char_u e_noalt[] INIT(= N_("E23: No alternate file")); EXTERN char_u e_noabbr[] INIT(= N_("E24: No such abbreviation")); EXTERN char_u e_nobang[] INIT(= N_("E477: No ! allowed")); -EXTERN char_u e_nogvim[] INIT(= N_("E25: Nvim does not have a built-in GUI")); EXTERN char_u e_nogroup[] INIT(= N_("E28: No such highlight group name: %s")); EXTERN char_u e_noinstext[] INIT(= N_("E29: No inserted text yet")); EXTERN char_u e_nolastcmd[] INIT(= N_("E30: No previous command line")); @@ -1161,9 +993,9 @@ EXTERN char_u e_noprev[] INIT(= N_("E34: No previous command")); EXTERN char_u e_noprevre[] INIT(= N_("E35: No previous regular expression")); EXTERN char_u e_norange[] INIT(= N_("E481: No range allowed")); EXTERN char_u e_noroom[] INIT(= N_("E36: Not enough room")); -EXTERN char_u e_notcreate[] INIT(= N_("E482: Can't create file %s")); EXTERN char_u e_notmp[] INIT(= N_("E483: Can't get temp file name")); EXTERN char_u e_notopen[] INIT(= N_("E484: Can't open file %s")); +EXTERN char_u e_notopen_2[] INIT(= N_("E484: Can't open file %s: %s")); EXTERN char_u e_notread[] INIT(= N_("E485: Can't read file %s")); EXTERN char_u e_nowrtmsg[] INIT(= N_( "E37: No write since last change (add ! to override)")); @@ -1183,11 +1015,7 @@ EXTERN char_u e_loclist[] INIT(= N_("E776: No location list")); EXTERN char_u e_re_damg[] INIT(= N_("E43: Damaged match string")); EXTERN char_u e_re_corr[] INIT(= N_("E44: Corrupted regexp program")); EXTERN char_u e_readonly[] INIT(= N_( - "E45: 'readonly' option is set (add ! to override)")); -EXTERN char_u e_readonlyvar[] INIT(= N_( - "E46: Cannot change read-only variable \"%s\"")); -EXTERN char_u e_readonlysbx[] INIT(= N_( - "E794: Cannot set variable in the sandbox: \"%s\"")); + "E45: 'readonly' option is set (add ! to override)")); EXTERN char_u e_readerrf[] INIT(= N_("E47: Error while reading errorfile")); EXTERN char_u e_sandbox[] INIT(= N_("E48: Not allowed in sandbox")); EXTERN char_u e_secure[] INIT(= N_("E523: Not allowed here")); @@ -1203,6 +1031,7 @@ EXTERN char_u e_longname[] INIT(= N_("E75: Name too long")); EXTERN char_u e_toomsbra[] INIT(= N_("E76: Too many [")); EXTERN char_u e_toomany[] INIT(= N_("E77: Too many file names")); EXTERN char_u e_trailing[] INIT(= N_("E488: Trailing characters")); +EXTERN char_u e_trailing2[] INIT(= N_("E488: Trailing characters: %s")); EXTERN char_u e_umark[] INIT(= N_("E78: Unknown mark")); EXTERN char_u e_wildexpand[] INIT(= N_("E79: Cannot expand wildcards")); EXTERN char_u e_winheight[] INIT(= N_( @@ -1210,9 +1039,9 @@ EXTERN char_u e_winheight[] INIT(= N_( EXTERN char_u e_winwidth[] INIT(= N_( "E592: 'winwidth' cannot be smaller than 'winminwidth'")); EXTERN char_u e_write[] INIT(= N_("E80: Error while writing")); -EXTERN char_u e_zerocount[] INIT(= N_("Zero count")); -EXTERN char_u e_usingsid[] INIT(= N_("E81: Using <SID> not in a script context")); -EXTERN char_u e_intern2[] INIT(= N_("E685: Internal error: %s")); +EXTERN char_u e_zerocount[] INIT(= N_("E939: Positive count required")); +EXTERN char_u e_usingsid[] INIT(= N_( + "E81: Using <SID> not in a script context")); EXTERN char_u e_maxmempat[] INIT(= N_( "E363: pattern uses more memory than 'maxmempattern'")); EXTERN char_u e_emptybuf[] INIT(= N_("E749: empty buffer")); @@ -1225,7 +1054,19 @@ EXTERN char_u e_notset[] INIT(= N_("E764: Option '%s' is not set")); EXTERN char_u e_invalidreg[] INIT(= N_("E850: Invalid register name")); EXTERN char_u e_dirnotf[] INIT(= N_( "E919: Directory not found in '%s': \"%s\"")); +EXTERN char_u e_au_recursive[] INIT(= N_( + "E952: Autocommand caused recursive behavior")); EXTERN char_u e_unsupportedoption[] INIT(= N_("E519: Option not supported")); +EXTERN char_u e_fnametoolong[] INIT(= N_("E856: Filename too long")); +EXTERN char_u e_float_as_string[] INIT(= N_("E806: using Float as a String")); +EXTERN char_u e_autocmd_err[] INIT(=N_( + "E5500: autocmd has thrown an exception: %s")); +EXTERN char_u e_cmdmap_err[] INIT(=N_( + "E5520: <Cmd> mapping must end with <CR>")); +EXTERN char_u e_cmdmap_repeated[] INIT(=N_( + "E5521: <Cmd> mapping must end with <CR> before second <Cmd>")); +EXTERN char_u e_cmdmap_key[] INIT(=N_( + "E5522: <Cmd> mapping must not include %s key")); EXTERN char top_bot_msg[] INIT(= N_("search hit TOP, continuing at BOTTOM")); @@ -1241,11 +1082,12 @@ EXTERN FILE *time_fd INIT(= NULL); /* where to write startup timing */ * can't do anything useful with the value. Assign to this variable to avoid * the warning. */ -EXTERN int ignored; -EXTERN char *ignoredp; +EXTERN int vim_ignored; -// If a msgpack-rpc channel should be started over stdin/stdout +// Start a msgpack-rpc channel over stdin/stdout. EXTERN bool embedded_mode INIT(= false); +// Do not start a UI nor read/write to stdio (unless embedding). +EXTERN bool headless_mode INIT(= false); /// Used to track the status of external functions. /// Currently only used for iconv(). @@ -1255,4 +1097,20 @@ typedef enum { kBroken } WorkingStatus; +/// The scope of a working-directory command like `:cd`. +/// +/// Scopes are enumerated from lowest to highest. When adding a scope make sure +/// to update all functions using scopes as well, such as the implementation of +/// `getcwd()`. When using scopes as limits (e.g. in loops) don't use the scopes +/// directly, use `MIN_CD_SCOPE` and `MAX_CD_SCOPE` instead. +typedef enum { + kCdScopeInvalid = -1, + kCdScopeWindow, ///< Affects one window. + kCdScopeTab, ///< Affects one tab page. + kCdScopeGlobal, ///< Affects the entire Nvim instance. +} CdScope; + +#define MIN_CD_SCOPE kCdScopeWindow +#define MAX_CD_SCOPE kCdScopeGlobal + #endif /* NVIM_GLOBALS_H */ |