/* vi:set ts=8 sts=4 sw=4: * * 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. */ /* * definition of global variables */ /* * 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). */EXTERN long Rows /* nr of rows in the screen */#ifdef DO_INIT# if defined(MSDOS) || defined(WIN3264) || defined(OS2) = 25L# else = 24L# endif#endif ;EXTERN long Columns INIT(= 80); /* nr of columns in the screen */ /* * 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 */ #ifdef FEAT_MBYTE/* * 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. * 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);#endif #ifdef FEAT_WINDOWS/* * Indexes for tab page line: * N > 0 for label of tab page N * N == 0 for no label * N < 0 for closing tab page -N * N == -999 for closing current tab page */EXTERN short *TabPageIdxs INIT(= NULL);#endif EXTERN int screen_Rows INIT(= 0); /* actual size of ScreenLines[] */EXTERN int screen_Columns INIT(= 0); /* actual size of ScreenLines[] */ /* * When vgetc() is called, it sets mod_mask to the set of modifiers that are * held down based on the MOD_MASK_* symbols that are read first. */EXTERN int mod_mask INIT(= 0x0); /* current key modifiers */ /* * Cmdline_row is the row where the command line starts, just below the * last window. * When the cmdline gets longer than the available space the screen gets * scrolled up. After a CTRL-D (show matches), after hitting ':' after * "hit return", and for the :global command, the command line is * temporarily moved. The old position is restored with the next call to * update_screen(). */EXTERN int cmdline_row; EXTERN int redraw_cmdline INIT(= FALSE); /* cmdline must be redrawn */EXTERN int clear_cmdline INIT(= FALSE); /* cmdline must be cleared */EXTERN int mode_displayed INIT(= FALSE); /* mode is being displayed */#if defined(FEAT_CRYPT) || defined(FEAT_EVAL)EXTERN int cmdline_star INIT(= FALSE); /* cmdline is crypted */#endif 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 * is put at the end of the changed text. dollar_vcol is set to the virtual * column of this '$'. */EXTERN colnr_T dollar_vcol INIT(= 0); #ifdef FEAT_INS_EXPAND/* * Variables for Insert mode completion. */ /* Length in bytes of the text being completed (this is deleted to be replaced * by the match.) */EXTERN int compl_length INIT(= 0); /* Set when character typed while looking for matches and it means we should * stop looking for matches. */EXTERN int compl_interrupted INIT(= FALSE); /* List of flags for method of completion. */EXTERN int compl_cont_status INIT(= 0);# define CONT_ADDING 1 /* "normal" or "adding" expansion */# define CONT_INTRPT (2 + 4) /* a ^X interrupted the current expansion */ /* it's set only iff N_ADDS is set */# define CONT_N_ADDS 4 /* next ^X<> will add-new or expand-current */# define CONT_S_IPOS 8 /* next ^X<> will set initial_pos? * if so, word-wise-expansion will set SOL */# define CONT_SOL 16 /* pattern includes start of line, just for * word-wise expansion, not set for ^X^L */# define CONT_LOCAL 32 /* for ctrl_x_mode 0, ^X^P/^X^N do a local * expansion, (eg use complete=.) */#endif /* * Functions for putting characters in the command line, * while keeping ScreenLines[] updated. */#ifdef FEAT_RIGHTLEFTEXTERN int cmdmsg_rl INIT(= FALSE); /* cmdline is drawn right to left */#endifEXTERN int msg_col;EXTERN int msg_row;EXTERN int msg_scrolled; /* Number of screen lines that windows have * scrolled because of printing messages. */EXTERN int msg_scrolled_ign INIT(= FALSE); /* when TRUE don't set need_wait_return in msg_puts_attr() when msg_scrolled is non-zero */ EXTERN char_u *keep_msg INIT(= NULL); /* msg to be shown after redraw */EXTERN int keep_msg_attr INIT(= 0); /* highlight attr for keep_msg */EXTERN int keep_msg_more INIT(= FALSE); /* keep_msg was set by msgmore() */EXTERN int need_fileinfo INIT(= FALSE);/* do fileinfo() after redraw */EXTERN int msg_scroll INIT(= FALSE); /* msg_start() will scroll */EXTERN int msg_didout INIT(= FALSE); /* msg_outstr() was used in line */EXTERN int msg_didany INIT(= FALSE); /* msg_outstr() was used at all */EXTERN int msg_nowait INIT(= FALSE); /* don't wait for this msg */EXTERN int emsg_off INIT(= 0); /* don't display errors for now, unless 'debug' is set. */EXTERN int info_message INIT(= FALSE); /* printing informative message */EXTERN int msg_hist_off INIT(= FALSE); /* don't add messages to history */#ifdef FEAT_EVALEXTERN int emsg_skip INIT(= 0); /* don't display errors for expression that is skipped */EXTERN int emsg_severe INIT(= FALSE); /* use message of next of several emsg() calls for throw */EXTERN int did_endif INIT(= FALSE); /* just had ":endif" */#endifEXTERN int did_emsg; /* set by emsg() when the message is displayed or thrown */EXTERN int called_emsg; /* always set by emsg() */EXTERN int ex_exitval INIT(= 0); /* exit value for ex mode */EXTERN int emsg_on_display INIT(= FALSE); /* there is an error message */EXTERN int rc_did_emsg INIT(= FALSE); /* vim_regcomp() called emsg() */ EXTERN int no_wait_return INIT(= 0); /* don't wait for return for now */EXTERN int need_wait_return INIT(= 0); /* need to wait for return later */EXTERN int did_wait_return INIT(= FALSE); /* wait_return() was used and nothing written since then */#ifdef FEAT_TITLEEXTERN int need_maketitle INIT(= TRUE); /* call maketitle() soon */#endif EXTERN int quit_more INIT(= FALSE); /* 'q' hit at "--more--" msg */#if defined(UNIX) || defined(__EMX__) || defined(VMS) || 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#if (defined(UNIX) || defined(VMS)) && defined(FEAT_X11)EXTERN int x_no_connect INIT(= FALSE); /* don't connect to X server */# if defined(FEAT_CLIENTSERVER)EXTERN int x_force_connect INIT(= FALSE); /* Do connect to X server. Overrules x_no_connect and "exclude" in 'clipboard'. */# endif#endifEXTERN 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 */ 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 */ #ifdef FEAT_EVALEXTERN int ex_nesting_level INIT(= 0); /* nesting level */EXTERN int debug_break_level INIT(= -1); /* break below this level */EXTERN int debug_did_msg INIT(= FALSE); /* did "debug mode" message */EXTERN int debug_tick INIT(= 0); /* breakpoint change count */# ifdef FEAT_PROFILEEXTERN int do_profiling INIT(= PROF_NONE); /* PROF_ values */# endif /* * 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. */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); /* * 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); /* * 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. */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); /* * 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); #endif #ifdef FEAT_EVAL/* 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. */EXTERN int may_garbage_collect INIT(= FALSE);EXTERN int want_garbage_collect INIT(= FALSE); /* ID of script being sourced or was sourced to define the current function. */EXTERN scid_T current_SID INIT(= 0);#endif #if defined(FEAT_EVAL) || defined(FEAT_SYN_HL)/* Magic number used for hashitem "hi_key" value indicating a deleted item. * Only the address is used. */EXTERN char_u hash_removed;#endif EXTERN int scroll_region INIT(= FALSE); /* term supports scroll region */EXTERN int t_colors INIT(= 0); /* int value of T_CCO */ /* * When highlight_match is TRUE, highlight a match, starting at the cursor * position. Search_match_lines is the number of lines after the match (0 for * a match within one line), search_match_endcol the column number of the * character just after the match in the last line. */EXTERN int highlight_match INIT(= FALSE); /* show search match pos */EXTERN linenr_T search_match_lines; /* lines of of matched string */EXTERN colnr_T search_match_endcol; /* col nr of match end */ EXTERN int no_smartcase INIT(= FALSE); /* don't use 'smartcase' once */ EXTERN int need_check_timestamps INIT(= FALSE); /* need to check file timestamps asap */EXTERN int did_check_timestamps INIT(= FALSE); /* did check timestamps recently */EXTERN int no_check_timestamps INIT(= 0); /* Don't check timestamps */ EXTERN int highlight_attr[HLF_COUNT]; /* Highl. attr for each context. */#ifdef FEAT_STL_OPT# define USER_HIGHLIGHT#endif#ifdef USER_HIGHLIGHTEXTERN int highlight_user[9]; /* User[1-9] attributes */# ifdef FEAT_STL_OPTEXTERN int highlight_stlnc[9]; /* On top of user */# endif#endif#ifdef FEAT_GUIEXTERN char_u *use_gvimrc INIT(= NULL); /* "-U" cmdline argument */#endifEXTERN int cterm_normal_fg_color INIT(= 0);EXTERN int cterm_normal_fg_bold INIT(= 0);EXTERN int cterm_normal_bg_color INIT(= 0); #ifdef FEAT_AUTOCMDEXTERN 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 */EXTERN int autocmd_block INIT(= 0); /* block all autocmds */EXTERN int modified_was_set; /* did ":set modified" */EXTERN int did_filetype INIT(= FALSE); /* FileType event found */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);#endif #ifdef FEAT_MOUSE/* * Mouse coordinates, set by check_termcode() */EXTERN int mouse_row;EXTERN int mouse_col;EXTERN int mouse_past_bottom INIT(= FALSE);/* mouse below last line */EXTERN int mouse_past_eol INIT(= FALSE); /* mouse right of line */EXTERN int mouse_dragging INIT(= 0); /* extending Visual area with mouse dragging */# if defined(FEAT_MOUSE_DEC)/* * When the DEC mouse has been pressed but not yet released we enable * automatic querys for the mouse position. */EXTERN int WantQueryMouse INIT(= FALSE);# endif # ifdef FEAT_GUI/* When the window layout is about to be changed, need_mouse_correct is set, * so that gui_mouse_correct() is called afterwards, to correct the mouse * pointer when focus-follow-mouse is being used. */EXTERN int need_mouse_correct INIT(= FALSE); /* When double clicking, topline must be the same */EXTERN linenr_T gui_prev_topline INIT(= 0);# ifdef FEAT_DIFFEXTERN int gui_prev_topfill INIT(= 0);# endif# endif # ifdef FEAT_MOUSESHAPEEXTERN int drag_status_line INIT(= FALSE); /* dragging the status line */EXTERN int postponed_mouseshape INIT(= FALSE); /* postponed updating the mouse pointer shape */# ifdef FEAT_VERTSPLITEXTERN int drag_sep_line INIT(= FALSE); /* dragging vert separator */# endif# endif #endif #ifdef FEAT_DIFF/* Value set from 'diffopt'. */EXTERN int diff_context INIT(= 6); /* context for folds */EXTERN int diff_foldcolumn INIT(= 2); /* 'foldcolumn' for diff mode */EXTERN int diff_need_scrollbind INIT(= FALSE);#endif #ifdef FEAT_MENU/* The root of the menu hierarchy. */EXTERN vimmenu_T *root_menu INIT(= NULL);/* * While defining the system menu, sys_menu is TRUE. This avoids * overruling of menus that the user already defined. */EXTERN int sys_menu INIT(= FALSE);#endif /* While redrawing the screen this flag is set. It means the screen size * ('lines' and 'rows') must not be changed. */EXTERN int updating_screen INIT(= FALSE); #ifdef FEAT_GUI# ifdef FEAT_MENU/* Menu item just selected, set by check_termcode() */EXTERN vimmenu_T *current_menu; /* Set to TRUE after adding/removing menus to ensure they are updated */EXTERN int force_menu_update INIT(= FALSE);# endif# ifdef FEAT_GUI_TABLINE/* Tab in tab pages line just selected, set by check_termcode() */EXTERN int current_tab; /* Menu entry in tab pages line menu just selected, set by check_termcode() */EXTERN int current_tabmenu;# define TABLINE_MENU_CLOSE 1# define TABLINE_MENU_NEW 2# define TABLINE_MENU_OPEN 3# endif /* Scrollbar moved and new value, set by check_termcode() */EXTERN int current_scrollbar;EXTERN long_u scrollbar_value; /* found "-rv" or "-reverse" in command line args */EXTERN int found_reverse_arg INIT(= FALSE); /* "-fn" or "-font" command line argument */EXTERN char *font_argument INIT(= NULL); # ifdef FEAT_GUI_GTK/* "-bg" or "-background" command line argument */EXTERN char *background_argument INIT(= NULL); /* "-fg" or "-foreground" command line argument */EXTERN char *foreground_argument INIT(= NULL);# endif /* * While executing external commands or in Ex mode, should not insert GUI * events in the input buffer: Set hold_gui_events to non-zero. */EXTERN int hold_gui_events INIT(= 0); /* * When resizing the shell is postponed, remember the new size, and call * gui_resize_shell() later. */EXTERN int new_pixel_width INIT(= 0);EXTERN int new_pixel_height INIT(= 0); /* Window position from ":winpos", to be used when opening the GUI window. */EXTERN int gui_win_x INIT(= -1);EXTERN int gui_win_y INIT(= -1);#endif #ifdef FEAT_CLIPBOARDEXTERN VimClipboard clip_star; /* PRIMARY selection in X11 */# ifdef FEAT_X11EXTERN VimClipboard clip_plus; /* CLIPBOARD selection in X11 */# else# define clip_plus clip_star /* there is only one clipboard */Lines 1–500 of 1545. Load more
/* vi:set ts=8 sts=4 sw=4: * * 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. */ /* * definition of global variables */ /* * 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). */ EXTERN long Rows /* nr of rows in the screen */ #ifdef DO_INIT # if defined(MSDOS) || defined(WIN3264) || defined(OS2) = 25L # else = 24L # endif #endif ; EXTERN long Columns INIT(= 80); /* nr of columns in the screen */ /* * 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 */ #ifdef FEAT_MBYTE /* * 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. * 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); #endif #ifdef FEAT_WINDOWS /* * Indexes for tab page line: * N > 0 for label of tab page N * N == 0 for no label * N < 0 for closing tab page -N * N == -999 for closing current tab page */ EXTERN short *TabPageIdxs INIT(= NULL); #endif EXTERN int screen_Rows INIT(= 0); /* actual size of ScreenLines[] */ EXTERN int screen_Columns INIT(= 0); /* actual size of ScreenLines[] */ /* * When vgetc() is called, it sets mod_mask to the set of modifiers that are * held down based on the MOD_MASK_* symbols that are read first. */ EXTERN int mod_mask INIT(= 0x0); /* current key modifiers */ /* * Cmdline_row is the row where the command line starts, just below the * last window. * When the cmdline gets longer than the available space the screen gets * scrolled up. After a CTRL-D (show matches), after hitting ':' after * "hit return", and for the :global command, the command line is * temporarily moved. The old position is restored with the next call to * update_screen(). */ EXTERN int cmdline_row; EXTERN int redraw_cmdline INIT(= FALSE); /* cmdline must be redrawn */ EXTERN int clear_cmdline INIT(= FALSE); /* cmdline must be cleared */ EXTERN int mode_displayed INIT(= FALSE); /* mode is being displayed */ #if defined(FEAT_CRYPT) || defined(FEAT_EVAL) EXTERN int cmdline_star INIT(= FALSE); /* cmdline is crypted */ #endif 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 * is put at the end of the changed text. dollar_vcol is set to the virtual * column of this '$'. */ EXTERN colnr_T dollar_vcol INIT(= 0); #ifdef FEAT_INS_EXPAND /* * Variables for Insert mode completion. */ /* Length in bytes of the text being completed (this is deleted to be replaced * by the match.) */ EXTERN int compl_length INIT(= 0); /* Set when character typed while looking for matches and it means we should * stop looking for matches. */ EXTERN int compl_interrupted INIT(= FALSE); /* List of flags for method of completion. */ EXTERN int compl_cont_status INIT(= 0); # define CONT_ADDING 1 /* "normal" or "adding" expansion */ # define CONT_INTRPT (2 + 4) /* a ^X interrupted the current expansion */ /* it's set only iff N_ADDS is set */ # define CONT_N_ADDS 4 /* next ^X<> will add-new or expand-current */ # define CONT_S_IPOS 8 /* next ^X<> will set initial_pos? * if so, word-wise-expansion will set SOL */ # define CONT_SOL 16 /* pattern includes start of line, just for * word-wise expansion, not set for ^X^L */ # define CONT_LOCAL 32 /* for ctrl_x_mode 0, ^X^P/^X^N do a local * expansion, (eg use complete=.) */ #endif /* * Functions for putting characters in the command line, * while keeping ScreenLines[] updated. */ #ifdef FEAT_RIGHTLEFT EXTERN int cmdmsg_rl INIT(= FALSE); /* cmdline is drawn right to left */ #endif EXTERN int msg_col; EXTERN int msg_row; EXTERN int msg_scrolled; /* Number of screen lines that windows have * scrolled because of printing messages. */ EXTERN int msg_scrolled_ign INIT(= FALSE); /* when TRUE don't set need_wait_return in msg_puts_attr() when msg_scrolled is non-zero */ EXTERN char_u *keep_msg INIT(= NULL); /* msg to be shown after redraw */ EXTERN int keep_msg_attr INIT(= 0); /* highlight attr for keep_msg */ EXTERN int keep_msg_more INIT(= FALSE); /* keep_msg was set by msgmore() */ EXTERN int need_fileinfo INIT(= FALSE);/* do fileinfo() after redraw */ EXTERN int msg_scroll INIT(= FALSE); /* msg_start() will scroll */ EXTERN int msg_didout INIT(= FALSE); /* msg_outstr() was used in line */ EXTERN int msg_didany INIT(= FALSE); /* msg_outstr() was used at all */ EXTERN int msg_nowait INIT(= FALSE); /* don't wait for this msg */ EXTERN int emsg_off INIT(= 0); /* don't display errors for now, unless 'debug' is set. */ EXTERN int info_message INIT(= FALSE); /* printing informative message */ EXTERN int msg_hist_off INIT(= FALSE); /* don't add messages to history */ #ifdef FEAT_EVAL EXTERN int emsg_skip INIT(= 0); /* don't display errors for expression that is skipped */ EXTERN int emsg_severe INIT(= FALSE); /* use message of next of several emsg() calls for throw */ EXTERN int did_endif INIT(= FALSE); /* just had ":endif" */ #endif EXTERN int did_emsg; /* set by emsg() when the message is displayed or thrown */ EXTERN int called_emsg; /* always set by emsg() */ EXTERN int ex_exitval INIT(= 0); /* exit value for ex mode */ EXTERN int emsg_on_display INIT(= FALSE); /* there is an error message */ EXTERN int rc_did_emsg INIT(= FALSE); /* vim_regcomp() called emsg() */ EXTERN int no_wait_return INIT(= 0); /* don't wait for return for now */ EXTERN int need_wait_return INIT(= 0); /* need to wait for return later */ EXTERN int did_wait_return INIT(= FALSE); /* wait_return() was used and nothing written since then */ #ifdef FEAT_TITLE EXTERN int need_maketitle INIT(= TRUE); /* call maketitle() soon */ #endif EXTERN int quit_more INIT(= FALSE); /* 'q' hit at "--more--" msg */ #if defined(UNIX) || defined(__EMX__) || defined(VMS) || 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 #if (defined(UNIX) || defined(VMS)) && defined(FEAT_X11) EXTERN int x_no_connect INIT(= FALSE); /* don't connect to X server */ # if defined(FEAT_CLIENTSERVER) EXTERN int x_force_connect INIT(= FALSE); /* Do connect to X server. Overrules x_no_connect and "exclude" in 'clipboard'. */ # endif #endif 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 */ 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 */ #ifdef FEAT_EVAL EXTERN int ex_nesting_level INIT(= 0); /* nesting level */ EXTERN int debug_break_level INIT(= -1); /* break below this level */ EXTERN int debug_did_msg INIT(= FALSE); /* did "debug mode" message */ EXTERN int debug_tick INIT(= 0); /* breakpoint change count */ # ifdef FEAT_PROFILE EXTERN int do_profiling INIT(= PROF_NONE); /* PROF_ values */ # endif /* * 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. */ 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); /* * 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); /* * 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. */ 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); /* * 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); #endif #ifdef FEAT_EVAL /* 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. */ EXTERN int may_garbage_collect INIT(= FALSE); EXTERN int want_garbage_collect INIT(= FALSE); /* ID of script being sourced or was sourced to define the current function. */ EXTERN scid_T current_SID INIT(= 0); #endif #if defined(FEAT_EVAL) || defined(FEAT_SYN_HL) /* Magic number used for hashitem "hi_key" value indicating a deleted item. * Only the address is used. */ EXTERN char_u hash_removed; #endif EXTERN int scroll_region INIT(= FALSE); /* term supports scroll region */ EXTERN int t_colors INIT(= 0); /* int value of T_CCO */ /* * When highlight_match is TRUE, highlight a match, starting at the cursor * position. Search_match_lines is the number of lines after the match (0 for * a match within one line), search_match_endcol the column number of the * character just after the match in the last line. */ EXTERN int highlight_match INIT(= FALSE); /* show search match pos */ EXTERN linenr_T search_match_lines; /* lines of of matched string */ EXTERN colnr_T search_match_endcol; /* col nr of match end */ EXTERN int no_smartcase INIT(= FALSE); /* don't use 'smartcase' once */ EXTERN int need_check_timestamps INIT(= FALSE); /* need to check file timestamps asap */ EXTERN int did_check_timestamps INIT(= FALSE); /* did check timestamps recently */ EXTERN int no_check_timestamps INIT(= 0); /* Don't check timestamps */ EXTERN int highlight_attr[HLF_COUNT]; /* Highl. attr for each context. */ #ifdef FEAT_STL_OPT # define USER_HIGHLIGHT #endif #ifdef USER_HIGHLIGHT EXTERN int highlight_user[9]; /* User[1-9] attributes */ # ifdef FEAT_STL_OPT EXTERN int highlight_stlnc[9]; /* On top of user */ # endif #endif #ifdef FEAT_GUI EXTERN char_u *use_gvimrc INIT(= NULL); /* "-U" cmdline argument */ #endif EXTERN int cterm_normal_fg_color INIT(= 0); EXTERN int cterm_normal_fg_bold INIT(= 0); EXTERN int cterm_normal_bg_color INIT(= 0); #ifdef FEAT_AUTOCMD 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 */ EXTERN int autocmd_block INIT(= 0); /* block all autocmds */ EXTERN int modified_was_set; /* did ":set modified" */ EXTERN int did_filetype INIT(= FALSE); /* FileType event found */ 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); #endif #ifdef FEAT_MOUSE /* * Mouse coordinates, set by check_termcode() */ EXTERN int mouse_row; EXTERN int mouse_col; EXTERN int mouse_past_bottom INIT(= FALSE);/* mouse below last line */ EXTERN int mouse_past_eol INIT(= FALSE); /* mouse right of line */ EXTERN int mouse_dragging INIT(= 0); /* extending Visual area with mouse dragging */ # if defined(FEAT_MOUSE_DEC) /* * When the DEC mouse has been pressed but not yet released we enable * automatic querys for the mouse position. */ EXTERN int WantQueryMouse INIT(= FALSE); # endif # ifdef FEAT_GUI /* When the window layout is about to be changed, need_mouse_correct is set, * so that gui_mouse_correct() is called afterwards, to correct the mouse * pointer when focus-follow-mouse is being used. */ EXTERN int need_mouse_correct INIT(= FALSE); /* When double clicking, topline must be the same */ EXTERN linenr_T gui_prev_topline INIT(= 0); # ifdef FEAT_DIFF EXTERN int gui_prev_topfill INIT(= 0); # endif # endif # ifdef FEAT_MOUSESHAPE EXTERN int drag_status_line INIT(= FALSE); /* dragging the status line */ EXTERN int postponed_mouseshape INIT(= FALSE); /* postponed updating the mouse pointer shape */ # ifdef FEAT_VERTSPLIT EXTERN int drag_sep_line INIT(= FALSE); /* dragging vert separator */ # endif # endif #endif #ifdef FEAT_DIFF /* Value set from 'diffopt'. */ EXTERN int diff_context INIT(= 6); /* context for folds */ EXTERN int diff_foldcolumn INIT(= 2); /* 'foldcolumn' for diff mode */ EXTERN int diff_need_scrollbind INIT(= FALSE); #endif #ifdef FEAT_MENU /* The root of the menu hierarchy. */ EXTERN vimmenu_T *root_menu INIT(= NULL); /* * While defining the system menu, sys_menu is TRUE. This avoids * overruling of menus that the user already defined. */ EXTERN int sys_menu INIT(= FALSE); #endif /* While redrawing the screen this flag is set. It means the screen size * ('lines' and 'rows') must not be changed. */ EXTERN int updating_screen INIT(= FALSE); #ifdef FEAT_GUI # ifdef FEAT_MENU /* Menu item just selected, set by check_termcode() */ EXTERN vimmenu_T *current_menu; /* Set to TRUE after adding/removing menus to ensure they are updated */ EXTERN int force_menu_update INIT(= FALSE); # endif # ifdef FEAT_GUI_TABLINE /* Tab in tab pages line just selected, set by check_termcode() */ EXTERN int current_tab; /* Menu entry in tab pages line menu just selected, set by check_termcode() */ EXTERN int current_tabmenu; # define TABLINE_MENU_CLOSE 1 # define TABLINE_MENU_NEW 2 # define TABLINE_MENU_OPEN 3 # endif /* Scrollbar moved and new value, set by check_termcode() */ EXTERN int current_scrollbar; EXTERN long_u scrollbar_value; /* found "-rv" or "-reverse" in command line args */ EXTERN int found_reverse_arg INIT(= FALSE); /* "-fn" or "-font" command line argument */ EXTERN char *font_argument INIT(= NULL); # ifdef FEAT_GUI_GTK /* "-bg" or "-background" command line argument */ EXTERN char *background_argument INIT(= NULL); /* "-fg" or "-foreground" command line argument */ EXTERN char *foreground_argument INIT(= NULL); # endif /* * While executing external commands or in Ex mode, should not insert GUI * events in the input buffer: Set hold_gui_events to non-zero. */ EXTERN int hold_gui_events INIT(= 0); /* * When resizing the shell is postponed, remember the new size, and call * gui_resize_shell() later. */ EXTERN int new_pixel_width INIT(= 0); EXTERN int new_pixel_height INIT(= 0); /* Window position from ":winpos", to be used when opening the GUI window. */ EXTERN int gui_win_x INIT(= -1); EXTERN int gui_win_y INIT(= -1); #endif #ifdef FEAT_CLIPBOARD EXTERN VimClipboard clip_star; /* PRIMARY selection in X11 */ # ifdef FEAT_X11 EXTERN VimClipboard clip_plus; /* CLIPBOARD selection in X11 */ # else # define clip_plus clip_star /* there is only one clipboard */