diff options
Diffstat (limited to 'src/normal.h')
-rw-r--r-- | src/normal.h | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/src/normal.h b/src/normal.h index 8f4dc71839..2d4b55138b 100644 --- a/src/normal.h +++ b/src/normal.h @@ -1,6 +1,61 @@ #ifndef NEOVIM_NORMAL_H #define NEOVIM_NORMAL_H -/* normal.c */ + +#include "pos.h" + +/* + * Arguments for operators. + */ +typedef struct oparg_S { + int op_type; /* current pending operator type */ + int regname; /* register to use for the operator */ + int motion_type; /* type of the current cursor motion */ + int motion_force; /* force motion type: 'v', 'V' or CTRL-V */ + int use_reg_one; /* TRUE if delete uses reg 1 even when not + linewise */ + int inclusive; /* TRUE if char motion is inclusive (only + valid when motion_type is MCHAR */ + int end_adjusted; /* backuped b_op_end one char (only used by + do_format()) */ + pos_T start; /* start of the operator */ + pos_T end; /* end of the operator */ + pos_T cursor_start; /* cursor position before motion for "gw" */ + + long line_count; /* number of lines from op_start to op_end + (inclusive) */ + int empty; /* op_start and op_end the same (only used by + do_change()) */ + int is_VIsual; /* operator on Visual area */ + int block_mode; /* current operator is Visual block mode */ + colnr_T start_vcol; /* start col for block mode operator */ + colnr_T end_vcol; /* end col for block mode operator */ + long prev_opcount; /* ca.opcount saved for K_CURSORHOLD */ + long prev_count0; /* ca.count0 saved for K_CURSORHOLD */ +} oparg_T; + +/* + * Arguments for Normal mode commands. + */ +typedef struct cmdarg_S { + oparg_T *oap; /* Operator arguments */ + int prechar; /* prefix character (optional, always 'g') */ + int cmdchar; /* command character */ + int nchar; /* next command character (optional) */ + int ncharC1; /* first composing character (optional) */ + int ncharC2; /* second composing character (optional) */ + int extra_char; /* yet another character (optional) */ + long opcount; /* count before an operator */ + long count0; /* count before command, default 0 */ + long count1; /* count before command, default 1 */ + int arg; /* extra argument from nv_cmds[] */ + int retval; /* return: CA_* values */ + char_u *searchbuf; /* return: pointer to search pattern or NULL */ +} cmdarg_T; + +/* values for retval: */ +#define CA_COMMAND_BUSY 1 /* skip restarting edit() once */ +#define CA_NO_ADJ_OP_END 2 /* don't adjust operator end */ + void init_normal_cmds(void); void normal_cmd(oparg_T *oap, int toplevel); void do_pending_operator(cmdarg_T *cap, int old_col, int gui_yank); |