diff options
Diffstat (limited to 'src/nvim/ops.h')
-rw-r--r-- | src/nvim/ops.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/nvim/ops.h b/src/nvim/ops.h index 67a613cbca..519b946f6d 100644 --- a/src/nvim/ops.h +++ b/src/nvim/ops.h @@ -19,6 +19,7 @@ typedef int (*Indenter)(void); /// flags for do_put() enum { + ITER_REGISTER_NULL = 0, PUT_FIXINDENT = 1, ///< make indent look nice PUT_CURSEND = 2, ///< leave cursor after end of new text PUT_CURSLINE = 4, ///< leave cursor on last line of new text @@ -42,6 +43,7 @@ enum { STAR_REGISTER = 37, PLUS_REGISTER = 38, NUM_REGISTERS = 39, + USER_REGISTERS_START = 39 }; /// Operator IDs; The order must correspond to opchars[] in ops.c! @@ -101,6 +103,11 @@ typedef enum { YREG_YANK, YREG_PUT, } yreg_mode_t; +/// Returns a reference to a user-defined register. +int get_userreg(const int regname); + +static inline int op_reg_index(int regname) + REAL_FATTR_CONST; /// Convert register name into register index /// @@ -108,7 +115,6 @@ typedef enum { /// /// @return Index in y_regs array or -1 if register name was not recognized. static inline int op_reg_index(const int regname) - FUNC_ATTR_CONST { if (ascii_isdigit(regname)) { return regname - '0'; @@ -123,15 +129,22 @@ static inline int op_reg_index(const int regname) } else if (regname == '+') { return PLUS_REGISTER; } else { - return -1; + return get_userreg(regname); } } +static inline bool is_literal_register(int regname) + REAL_FATTR_CONST; + +struct yank_registers; +typedef struct yank_registers yank_registers_T; + +typedef size_t iter_register_T; + /// @see get_yank_register /// @return true when register should be inserted literally /// (selection or clipboard) static inline bool is_literal_register(const int regname) - FUNC_ATTR_CONST { return regname == '*' || regname == '+'; } |