📄 globals.h
字号:
/* 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
*
* EXTERN is only defined in main.c (and in option.h)
*/
#ifndef EXTERN
# define EXTERN extern
# define INIT(x)
#else
# ifndef INIT
# define INIT(x) x
# define DO_INIT
# endif
#endif
/*
* Number of Rows and Columns in the screen.
* Must be long to be able to use them as options in option.c.
*/
EXTERN long Rows INIT(= MIN_LINES); /* nr of rows in the screen */
EXTERN long Columns INIT(= MIN_COLUMNS); /* nr of columns in the screen */
/*
* The characters that are currently on the screen are kept in NextScreen.
* It is a single block of characters, twice the size of the screen.
* First come the characters for one line, then the attributes for that line.
*
* "LinePointers[n]" points into NextScreen, at the start of line 'n'.
* "LinePointers[n] + Columns" points to the attibutes of line 'n'.
*/
EXTERN char_u *NextScreen INIT(= NULL);
EXTERN char_u **LinePointers INIT(= NULL);
EXTERN int screen_Rows INIT(= 0); /* actual size of NextScreen */
EXTERN int screen_Columns INIT(= 0); /* actual size of NextScreen */
/*
* When vgetc() is called, it sets mod_mask to the set of modifiers that are
* held down based on the KSMOD_* 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 modified INIT(= FALSE); /* buffer was modified since
last redraw */
EXTERN int tag_modified INIT(= FALSE); /* buffer was modified since
start of tag command */
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);
/*
* used for completion on the command line
*/
EXTERN int expand_context INIT(= CONTEXT_UNKNOWN);
EXTERN char_u *expand_pattern INIT(= NULL);
EXTERN int expand_interactively INIT(= FALSE);
EXTERN int expand_set_path INIT(= FALSE); /* ":set path=/dir/<Tab>" */
#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=.) */
EXTERN int completion_length INIT(= 0);
EXTERN int continue_status INIT(= 0);
/*
* Keep the last (typed) count for a Normal mode command. Used for the
* "count" built-in variable.
*/
EXTERN linenr_t global_opnum INIT(= 0);
/*
* Functions for putting characters in the command line,
* while keeping NextScreen updated.
*/
EXTERN int msg_col;
EXTERN int msg_row;
EXTERN int msg_scrolled;
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 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(= FALSE); /* don't display errors for now */
EXTERN int did_emsg; /* set by emsg() for DoOneCmd() */
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 now */
EXTERN int need_wait_return INIT(= 0); /* need to wait for return later */
EXTERN int dont_wait_return INIT(= 0); /* no need to wait for return */
EXTERN int quit_more INIT(= FALSE); /* 'q' hit at "--more--" msg */
#if defined(UNIX) || defined(__EMX__)
EXTERN int newline_on_exit INIT(= FALSE); /* did msg in altern. screen */
EXTERN int intr_char INIT(= 0); /* extra interrupt character */
#endif
EXTERN int vgetc_busy INIT(= FALSE); /* inside vgetc() now */
EXTERN int call_shell_retval; /* return value from call_shell() */
/*
* 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 char_u *sourcing_name INIT( = NULL);/* name of error message source */
EXTERN linenr_t sourcing_lnum INIT(= 0); /* line number of the source file */
EXTERN int file_on_stdin INIT(= FALSE); /* read file from stdin */
EXTERN int scroll_region INIT(= FALSE); /* term supports scroll region */
EXTERN int highlight_match INIT(= FALSE); /* show search match pos */
EXTERN int search_match_len; /* length of matched string */
EXTERN int no_smartcase INIT(= FALSE); /* don't use 'smartcase' once */
EXTERN int need_check_timestamps INIT(= FALSE); /* got STOP signal */
EXTERN int highlight_attr[HLF_COUNT]; /* Highl. attr for each context. */
EXTERN char_u *use_gvimrc INIT(= NULL); /* "-U" cmdline argument */
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 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 modified_was_set; /* did ":set modified" */
#endif
#ifdef USE_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 */
#if defined(DEC_MOUSE)
/*
* When the DEC mouse has been pressed but not yet released we enable
* automatic querys for the mouse position.
*/
EXTERN int WantQueryMouse INIT(= 0);
#endif
#ifdef USE_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);
#endif
#endif
#ifdef USE_GUI
/*
* Menu item just selected, set by check_termcode()
*/
EXTERN GuiMenu *current_menu;
/*
* 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);
EXTERN char * font_opt INIT(= NULL);
#endif
#ifdef USE_CLIPBOARD
EXTERN VimClipboard clipboard;
#endif
/*
* All windows are linked in a list. firstwin points to the first entry, lastwin
* to the last entry (can be the same as firstwin) and curwin to the currently
* active window.
*/
EXTERN WIN *firstwin; /* first window */
EXTERN WIN *lastwin; /* last window */
EXTERN WIN *curwin; /* currently active window */
/*
* 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 *firstbuf INIT(= NULL); /* first buffer */
EXTERN BUF *lastbuf INIT(= NULL); /* last buffer */
EXTERN BUF *curbuf INIT(= NULL); /* currently active buffer */
/*
* list of files being edited (argument list)
*/
EXTERN char_u **arg_files; /* list of files */
EXTERN int arg_file_count; /* number of files */
EXTERN int arg_had_last INIT(= FALSE); /* accessed last file in arglist */
EXTERN int ru_col; /* column for ruler */
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(= TRUE);
/* set to FALSE when starting up finished */
EXTERN int exiting INIT(= FALSE);
/* set to TRUE when abandoning Vim */
EXTERN int full_screen INIT(= FALSE);
/* set to TRUE when doing full-screen output
* otherwise only writing some messages */
EXTERN int restricted INIT(= FALSE);
/* set to TRUE when started as "rvim" */
EXTERN int secure INIT(= FALSE);
/* set to TRUE when only "safe" commands are
* allowed, e.g. when sourcing .exrc or .vimrc
* in current directory */
EXTERN int silent_mode INIT(= FALSE);
/* set to TRUE when "-s" commandline argument
* used for ex */
EXTERN FPOS 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 */
EXTERN int redo_VIsual_busy INIT(= FALSE);
/* TRUE when redoing Visual */
#ifdef USE_MOUSE
/*
* 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 FPOS where_paste_started;
#endif
/*
* This flag is used to make auto-indent work right on lines where only a
* <RETURN> or <ESC> is typed. It is set when an auto-indent is done, and
* reset when any other editting 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);
#ifdef SMARTINDENT
/*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -