📄 vim.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.
*/
#ifndef VIM__H
# define VIM__H
/* use fastcall for Borland, when compiling for Win32 (not for DOS16) */
#if defined(__BORLANDC__) && defined(WIN32) && !defined(DEBUG)
# pragma option -pr
#endif
/* ============ the header file puzzle (ca. 50-100 pieces) ========= */
#ifdef HAVE_CONFIG_H /* GNU autoconf (or something else) was here */
# include "config.h"
# define HAVE_PATHDEF
#endif
#ifdef __EMX__ /* hand-edited config.h for OS/2 with EMX */
# include "os_os2_cfg.h"
#endif
/*
* This is a bit of a wishlist. Currently we only have a few GUIs.
*/
#if defined macintosh
# define USE_GUI_MAC /* mandatory */
#endif
#if defined(USE_GUI_MOTIF) \
|| defined(USE_GUI_ATHENA) \
|| defined(USE_GUI_MAC) \
|| defined(USE_GUI_WIN16) \
|| defined(USE_GUI_WIN32) \
|| defined(USE_GUI_OS2) \
|| defined(USE_GUI_BEOS) \
|| defined(USE_GUI_AMIGA)
# ifndef USE_GUI
# define USE_GUI
# endif
#endif
/*
* NextStep has a problem with configure, undefine a few things:
*/
#ifdef NeXT
# undef HAVE_UTIME
# undef HAVE_SYS_UTSNAME_H
#endif
#include "feature.h" /* #defines for optionals and features */
/*
* Find out if function definitions should include argument types
*/
#ifdef AZTEC_C
# include <functions.h>
# define __ARGS(x) x
#endif
#ifdef SASC
# include <clib/exec_protos.h>
# define __ARGS(x) x
#endif
#ifdef _DCC
# include <clib/exec_protos.h>
# define __ARGS(x) x
#endif
#ifdef __TURBOC__
# define __ARGS(x) x
#endif
#ifdef __BEOS__
# include "os_beos.h"
# define __ARGS(x) x
#endif
#if defined(UNIX) || defined(__EMX__)
# include "os_unix.h" /* bring lots of system header files */
#endif
#ifdef VMS
# include "os_vms.h"
#endif
#ifndef __ARGS
# if defined(__STDC__) || defined(__GNUC__) || defined(WIN32)
# define __ARGS(x) x
# else
# define __ARGS(x) ()
# endif
#endif
/* __ARGS and __PARMS are the same thing. */
#ifndef __PARMS
# define __PARMS(x) __ARGS(x)
#endif
#ifdef UNIX
# include "osdef.h" /* bring missing declarations in */
#endif
#ifdef __EMX__
# define getcwd _getcwd2
# define chdir _chdir2
# undef CHECK_INODE
#endif
#ifdef AMIGA
# include "os_amiga.h"
#endif
#ifdef MSDOS
# include "os_msdos.h"
#endif
#ifdef WIN32
# include "os_win32.h"
#endif
#ifdef __MINT__
# include "os_mint.h"
#endif
#ifdef macintosh
# include "os_mac.h"
#endif
#ifdef RISCOS
# include "os_riscos.h"
#endif
/*
* 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.
*/
#ifndef MAXPATHL
# ifdef MAXPATHLEN
# define MAXPATHL MAXPATHLEN
# else
# define MAXPATHL 256
# endif
#endif
#define NUMBUFLEN 30 /* length of a buffer to store a number in ASCII */
/*
* Shorthand for unsigned variables. Many systems, but not all, have u_char
* already defined, so we use char_u to avoid trouble.
*/
typedef unsigned char char_u;
typedef unsigned short short_u;
typedef unsigned int int_u;
typedef unsigned long long_u;
#ifndef UNIX /* For Unix this is included in os_unix.h */
#include <stdio.h>
#include <ctype.h>
#endif
#if defined(HAVE_STRING_H)
# include <string.h>
#else
# ifdef HAVE_STRINGS_H
# include <strings.h>
# endif
#endif
#include "ascii.h"
#include "keymap.h"
#include "term.h"
#include "macros.h"
#ifdef LATTICE
# include <sys/types.h>
# include <sys/stat.h>
#endif
#ifdef _DCC
# include <sys/stat.h>
#endif
#if defined MSDOS || defined WIN32
# include <sys/stat.h>
#endif
/* allow other (non-unix) systems to configure themselves now */
#ifndef UNIX
# ifdef HAVE_STAT_H
# include <stat.h>
# endif
# ifdef HAVE_STDLIB_H
# include <stdlib.h>
# endif
#endif /* NON-UNIX */
/* ================ end of the header file puzzle =============== */
/*
* flags for update_screen()
* The higher the value, the higher the priority
*/
#define VALID 10 /* buffer not changed */
#define INVERTED 20 /* redisplay inverted part */
#define VALID_TO_CURSCHAR 30 /* line at/below cursor changed */
#define VALID_BEF_CURSCHAR 35 /* line just above cursor changed */
#define NOT_VALID 40 /* buffer changed somewhere */
#define CLEAR 50 /* screen messed up, clear it */
/*
* Hints used to optimize screen updating.
*/
#define HINT_NONE 0 /* no current hint */
#define HINT_DEL_CHAR 1 /* delete character */
#define HINT_INS_CHAR 2 /* insert character */
/*
* Terminal highlighting attribute bits.
* Attibutes above HL_ALL are used for syntax highlighting.
*/
#define HL_NORMAL 0x00
#define HL_INVERSE 0x01
#define HL_BOLD 0x02
#define HL_ITALIC 0x04
#define HL_UNDERLINE 0x08
#define HL_STANDOUT 0x10
#define HL_ALL 0x1f
/*
* values for State
*
* The lower byte is used to distinguish normal/visual/op_pending and cmdline/
* insert+replace mode. This is used for mapping. If none of these bits are
* set, no mapping is done.
* The upper byte is used to distinguish between other states.
*/
#define NORMAL 0x01 /* Normal mode, command expected */
#define VISUAL 0x02 /* Visual mode - use get_real_state() */
#define OP_PENDING 0x04 /* Normal mode, operator is pending - use
get_real_state() */
#define CMDLINE 0x08 /* Editing command line */
#define INSERT 0x10 /* Insert mode */
#define NORMAL_BUSY (0x100 + NORMAL) /* Normal mode, busy with a command */
#define REPLACE (0x200 + INSERT) /* Replace mode */
#define HITRETURN (0x600 + NORMAL) /* waiting for return or command */
#define ASKMORE 0x700 /* Asking if you want --more-- */
#define SETWSIZE 0x800 /* window size has changed */
#define ABBREV 0x900 /* abbreviation instead of mapping */
#define EXTERNCMD 0xa00 /* executing an external command */
#define SHOWMATCH (0xb00 + INSERT) /* show matching paren */
#define CONFIRM 0xc00 /* ":confirm" prompt */
/* directions */
#define FORWARD 1
#define BACKWARD (-1)
#define BOTH_DIRECTIONS 2
/* return values for functions */
#define OK 1
#define FAIL 0
/* flags for b_flags */
#define BF_RECOVERED 1 /* buffer has been recovered */
#define BF_CHECK_RO 2 /* need to check readonly when loading
file into buffer (set by ":e", may be
reset by ":buf" */
#define BF_NEVERLOADED 4 /* file has never been loaded into buffer,
many variables still need to be set */
/*
* values for command line completion
*/
#define CONTEXT_UNKNOWN (-2)
#define EXPAND_UNSUCCESSFUL (-1)
#define EXPAND_NOTHING 0
#define EXPAND_COMMANDS 1
#define EXPAND_FILES 2
#define EXPAND_DIRECTORIES 3
#define EXPAND_SETTINGS 4
#define EXPAND_BOOL_SETTINGS 5
#define EXPAND_TAGS 6
#define EXPAND_OLD_SETTING 7
#define EXPAND_HELP 8
#define EXPAND_BUFFERS 9
#define EXPAND_EVENTS 10
#define EXPAND_MENUS 11
#define EXPAND_SYNTAX 12
#define EXPAND_HIGHLIGHT 13
#define EXPAND_AUGROUP 14
#define EXPAND_USER_VARS 15
/* Values for nextwild() and ExpandOne(). See ExpandOne() for meaning. */
#define WILD_FREE 1
#define WILD_EXPAND_FREE 2
#define WILD_EXPAND_KEEP 3
#define WILD_NEXT 4
#define WILD_PREV 5
#define WILD_ALL 6
#define WILD_LONGEST 7
#define WILD_LIST_NOTFOUND 1
#define WILD_HOME_REPLACE 2
#define WILD_USE_NL 4 /* separate names with '\n' */
#define WILD_NO_BEEP 8 /* don't beep for multiple matches */
/* Flags for expand_wildcards() */
#define EW_DIR 1 /* include directory names */
#define EW_FILE 2 /* include file names */
#define EW_NOTFOUND 4 /* include not found names */
#ifdef NO_EXPANDPATH
# define gen_expand_wildcards mch_expand_wildcards
#endif
/* Values for the find_pattern_in_path() function args 'type' and 'action': */
#define FIND_ANY 1
#define FIND_DEFINE 2
#define CHECK_PATH 3
#define ACTION_SHOW 1
#define ACTION_GOTO 2
#define ACTION_SPLIT 3
#define ACTION_SHOW_ALL 4
#ifdef INSERT_EXPAND
# define ACTION_EXPAND 5
#endif
/* Values for 'options' argument in do_search() and searchit() */
#define SEARCH_REV 0x01 /* go in reverse of previous dir. */
#define SEARCH_ECHO 0x02 /* echo the search command and handle options */
#define SEARCH_MSG 0x0c /* give messages (yes, it's not 0x04) */
#define SEARCH_NFMSG 0x08 /* give all messages except not found */
#define SEARCH_OPT 0x10 /* interpret optional flags */
#define SEARCH_HIS 0x20 /* put search pattern in history */
#define SEARCH_END 0x40 /* put cursor at end of match */
#define SEARCH_NOOF 0x80 /* don't add offset to position */
#define SEARCH_START 0x100 /* start search without col offset */
#define SEARCH_MARK 0x200 /* set previous context mark */
#define SEARCH_KEEP 0x400 /* keep previous search pattern */
/* Values for find_ident_under_cursor() */
#define FIND_IDENT 1 /* find identifier (word) */
#define FIND_STRING 2 /* find any string (WORD) */
/* Values for get_file_name_in_path() */
#define FNAME_MESS 1 /* give error message */
#define FNAME_EXP 2 /* expand to path */
#define FNAME_HYP 4 /* check for hypertext link */
/* Values for buflist_getfile() */
#define GETF_SETMARK 0x01 /* set pcmark before jumping */
#define GETF_ALT 0x02 /* jumping to alternate file (not buf num) */
/* Values for in_indentkeys() */
#define KEY_OPEN_FORW 0x101
#define KEY_OPEN_BACK 0x102
/* Values for mch_call_shell() second argument */
#define SHELL_FILTER 1 /* filtering text */
#define SHELL_EXPAND 2 /* expanding wildcards */
#define SHELL_COOKED 4 /* set term to cooked mode */
#define SHELL_DOOUT 8 /* redirecting output */
/* Values for readfile() flags */
#define READ_NEW 0x01 /* read a file into a new buffer */
#define READ_FILTER 0x02 /* read filter output */
#define READ_STDIN 0x04 /* read from stdin */
/* Values for change_indent() */
#define INDENT_SET 1 /* set indent */
#define INDENT_INC 2 /* increase indent */
#define INDENT_DEC 3 /* decrease indent */
/* Values for flags argument for findmatchlimit() */
#define FM_BACKWARD 0x01 /* search backwards */
#define FM_FORWARD 0x02 /* search forwards */
#define FM_BLOCKSTOP 0x04 /* stop at start/end of block */
#define FM_SKIPCOMM 0x08 /* skip comments */
/* Values for action argument for do_buffer() */
#define DOBUF_GOTO 0 /* go to specified buffer */
#define DOBUF_SPLIT 1 /* split window and go to specified buffer */
#define DOBUF_UNLOAD 2 /* unload specified buffer(s) */
#define DOBUF_DEL 3 /* delete specified buffer(s) */
/* Values for start argument for do_buffer() */
#define DOBUF_CURRENT 0 /* "count" buffer from current buffer */
#define DOBUF_FIRST 1 /* "count" buffer from first buffer */
#define DOBUF_LAST 2 /* "count" buffer from last buffer */
#define DOBUF_MOD 3 /* "count" mod. buffer from current buffer */
/* Values for sub_cmd and which_pat argument for search_regcomp() */
/* Also used for which_pat argument for searchit() */
#define RE_SEARCH 0 /* save/use pat in/from search_pattern */
#define RE_SUBST 1 /* save/use pat in/from subst_pattern */
#define RE_BOTH 2 /* save pat in both patterns */
#define RE_LAST 2 /* use last used pattern if "pat" is NULL */
/* Return values for fullpathcmp() */
/* Note: can use (fullpathcmp() & FPC_SAME) to check for equal files */
#define FPC_SAME 1 /* both exist and are the same file. */
#define FPC_DIFF 2 /* both exist and are different files. */
#define FPC_NOTX 4 /* both don't exist. */
#define FPC_DIFFX 6 /* one of them doesn't exist. */
#define FPC_SAMEX 7 /* both don't exist and file names are same. */
/* flags for do_ecmd() */
#define ECMD_HIDE 0x01 /* don't free the current buffer */
#define ECMD_SET_HELP 0x02 /* set b_help flag of (new) buffer before
opening file */
#define ECMD_OLDBUF 0x04 /* use existing buffer if it exists */
#define ECMD_FORCEIT 0x08 /* ! used in Ex command */
#define ECMD_ADDBUF 0x10 /* don't edit, just add to buffer list */
/* flags for do_cmdline() */
#define DOCMD_VERBOSE 0x01 /* included command in error message */
#define DOCMD_NOWAIT 0x02 /* don't call wait_return() and friends */
#define DOCMD_REPEAT 0x04 /* repeat exec. until getline() returns NULL */
/* flags for beginline() */
#define BL_WHITE 1 /* cursor on first non-white in the line */
#define BL_SOL 2 /* use 'sol' option */
#define BL_FIX 4 /* don't leave cursor on a NUL */
/* flags for mf_sync() */
#define MFS_ALL 1 /* also sync blocks with negative numbers */
#define MFS_STOP 2 /* stop syncing when a character is available */
#define MFS_FLUSH 4 /* flushed file to disk */
#define MFS_ZERO 8 /* only write block 0 */
/* flags for buf_copy_options() */
#define BCO_ENTER 1 /* going to enter the buffer */
#define BCO_ALWAYS 2 /* always copy the options */
#define BCO_NOHELP 4 /* don't touch the help related options */
/* flags for do_put() */
#define PUT_FIXINDENT 1 /* make indent look nice */
#define PUT_CURSEND 2 /* leave cursor after end of new text */
/*
* There are three history tables:
*/
#define HIST_CMD 0 /* colon commands */
#define HIST_SEARCH 1 /* search commands */
#define HIST_EXPR 2 /* expressions (from entering | register) */
#define HIST_INPUT 3 /* input() lines */
#define HIST_COUNT 4 /* number of history tables */
/*
* Flags for chartab[].
*/
#define CHAR_MASK 0x03 /* low two bits for size */
#define CHAR_IP 0x04 /* third bit set for printable chars */
#define CHAR_ID 0x08 /* fourth bit set for ID chars */
#define CHAR_IF 0x10 /* fifth bit set for file name chars */
/*
* Values for do_tag().
*/
#define DT_TAG 1 /* jump to newer position or same tag again */
#define DT_POP 2 /* jump to older position */
#define DT_NEXT 3 /* jump to next match of same tag */
#define DT_PREV 4 /* jump to previous match of same tag */
#define DT_FIRST 5 /* jump to first match of same tag */
#define DT_LAST 6 /* jump to first match of same tag */
#define DT_SELECT 7 /* jump to selection from list */
#define DT_HELP 8 /* like DT_TAG, but no wildcards */
#define DT_JUMP 9 /* jump to new tag or selection from list */
#define DT_CSCOPE 10 /* cscope find command (like tjump) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -