diff options
Diffstat (limited to 'src/nvim/cmdexpand_defs.h')
-rw-r--r-- | src/nvim/cmdexpand_defs.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/nvim/cmdexpand_defs.h b/src/nvim/cmdexpand_defs.h new file mode 100644 index 0000000000..97307c4e50 --- /dev/null +++ b/src/nvim/cmdexpand_defs.h @@ -0,0 +1,113 @@ +#pragma once + +#include <stdbool.h> +#include <stddef.h> + +#include "nvim/eval/typval_defs.h" +#include "nvim/types_defs.h" + +typedef enum { + XP_PREFIX_NONE, ///< prefix not used + XP_PREFIX_NO, ///< "no" prefix for bool option + XP_PREFIX_INV, ///< "inv" prefix for bool option +} xp_prefix_T; + +enum { EXPAND_BUF_LEN = 256, }; + +/// used for completion on the command line +typedef struct expand { + char *xp_pattern; ///< start of item to expand, guaranteed + ///< to be part of xp_line + int xp_context; ///< type of expansion + size_t xp_pattern_len; ///< bytes in xp_pattern before cursor + xp_prefix_T xp_prefix; + char *xp_arg; ///< completion function + LuaRef xp_luaref; ///< Ref to Lua completion function + sctx_T xp_script_ctx; ///< SCTX for completion function + int xp_backslash; ///< one of the XP_BS_ values +#ifndef BACKSLASH_IN_FILENAME + bool xp_shell; ///< true for a shell command, more + ///< characters need to be escaped +#endif + int xp_numfiles; ///< number of files found by file name completion + int xp_col; ///< cursor position in line + int xp_selected; ///< selected index in completion + char *xp_orig; ///< originally expanded string + char **xp_files; ///< list of files + char *xp_line; ///< text being completed + char xp_buf[EXPAND_BUF_LEN]; ///< buffer for returned match +} expand_T; + +/// values for xp_backslash +enum { + XP_BS_NONE = 0, ///< nothing special for backslashes + XP_BS_ONE = 0x1, ///< uses one backslash before a space + XP_BS_THREE = 0x2, ///< uses three backslashes before a space + XP_BS_COMMA = 0x4, ///< commas need to be escaped with a backslash +}; + +/// values for xp_context when doing command line completion +enum { + EXPAND_UNSUCCESSFUL = -2, + EXPAND_OK = -1, + EXPAND_NOTHING = 0, + EXPAND_COMMANDS, + EXPAND_FILES, + EXPAND_DIRECTORIES, + EXPAND_SETTINGS, + EXPAND_BOOL_SETTINGS, + EXPAND_TAGS, + EXPAND_OLD_SETTING, + EXPAND_HELP, + EXPAND_BUFFERS, + EXPAND_EVENTS, + EXPAND_MENUS, + EXPAND_SYNTAX, + EXPAND_HIGHLIGHT, + EXPAND_AUGROUP, + EXPAND_USER_VARS, + EXPAND_MAPPINGS, + EXPAND_TAGS_LISTFILES, + EXPAND_FUNCTIONS, + EXPAND_USER_FUNC, + EXPAND_EXPRESSION, + EXPAND_MENUNAMES, + EXPAND_USER_COMMANDS, + EXPAND_USER_CMD_FLAGS, + EXPAND_USER_NARGS, + EXPAND_USER_COMPLETE, + EXPAND_ENV_VARS, + EXPAND_LANGUAGE, + EXPAND_COLORS, + EXPAND_COMPILER, + EXPAND_USER_DEFINED, + EXPAND_USER_LIST, + EXPAND_USER_LUA, + EXPAND_SHELLCMD, + EXPAND_SIGN, + EXPAND_PROFILE, + EXPAND_FILETYPE, + EXPAND_FILES_IN_PATH, + EXPAND_OWNSYNTAX, + EXPAND_LOCALES, + EXPAND_HISTORY, + EXPAND_USER, + EXPAND_SYNTIME, + EXPAND_USER_ADDR_TYPE, + EXPAND_PACKADD, + EXPAND_MESSAGES, + EXPAND_MAPCLEAR, + EXPAND_ARGLIST, + EXPAND_DIFF_BUFFERS, + EXPAND_BREAKPOINT, + EXPAND_SCRIPTNAMES, + EXPAND_RUNTIME, + EXPAND_STRING_SETTING, + EXPAND_SETTING_SUBTRACT, + EXPAND_ARGOPT, + EXPAND_CHECKHEALTH, + EXPAND_LUA, +}; + +/// Type used by ExpandGeneric() +typedef char *(*CompleteListItemGetter)(expand_T *, int); |