aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/getchar_defs.h
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-11-29 21:52:58 +0000
committerJosh Rahm <joshuarahm@gmail.com>2023-11-29 21:52:58 +0000
commit931bffbda3668ddc609fc1da8f9eb576b170aa52 (patch)
treed8c1843a95da5ea0bb4acc09f7e37843d9995c86 /src/nvim/getchar_defs.h
parent142d9041391780ac15b89886a54015fdc5c73995 (diff)
parent4a8bf24ac690004aedf5540fa440e788459e5e34 (diff)
downloadrneovim-userreg.tar.gz
rneovim-userreg.tar.bz2
rneovim-userreg.zip
Merge remote-tracking branch 'upstream/master' into userreguserreg
Diffstat (limited to 'src/nvim/getchar_defs.h')
-rw-r--r--src/nvim/getchar_defs.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/nvim/getchar_defs.h b/src/nvim/getchar_defs.h
new file mode 100644
index 0000000000..5e6db7d9f3
--- /dev/null
+++ b/src/nvim/getchar_defs.h
@@ -0,0 +1,63 @@
+#pragma once
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "nvim/api/private/defs.h"
+
+typedef struct buffblock buffblock_T;
+typedef struct buffheader buffheader_T;
+
+/// structure used to store one block of the stuff/redo/recording buffers
+struct buffblock {
+ buffblock_T *b_next; ///< pointer to next buffblock
+ char b_str[1]; ///< contents (actually longer)
+};
+
+/// header used for the stuff buffer and the redo buffer
+struct buffheader {
+ buffblock_T bh_first; ///< first (dummy) block of list
+ buffblock_T *bh_curr; ///< buffblock for appending
+ size_t bh_index; ///< index for reading
+ size_t bh_space; ///< space in bh_curr for appending
+};
+
+typedef struct {
+ buffheader_T sr_redobuff;
+ buffheader_T sr_old_redobuff;
+} save_redo_T;
+
+/// Used for the typeahead buffer: typebuf.
+typedef struct {
+ uint8_t *tb_buf; ///< buffer for typed characters
+ uint8_t *tb_noremap; ///< mapping flags for characters in tb_buf[]
+ int tb_buflen; ///< size of tb_buf[]
+ int tb_off; ///< current position in tb_buf[]
+ int tb_len; ///< number of valid bytes in tb_buf[]
+ int tb_maplen; ///< nr of mapped bytes in tb_buf[]
+ int tb_silent; ///< nr of silently mapped bytes in tb_buf[]
+ int tb_no_abbr_cnt; ///< nr of bytes without abbrev. in tb_buf[]
+ int tb_change_cnt; ///< nr of time tb_buf was changed; never zero
+} typebuf_T;
+
+/// Struct to hold the saved typeahead for save_typeahead().
+typedef struct {
+ typebuf_T save_typebuf;
+ bool typebuf_valid; ///< true when save_typebuf valid
+ int old_char;
+ int old_mod_mask;
+ buffheader_T save_readbuf1;
+ buffheader_T save_readbuf2;
+ String save_inputbuf;
+} tasave_T;
+
+/// Values for "noremap" argument of ins_typebuf()
+///
+/// Also used for map->m_noremap and menu->noremap[].
+enum RemapValues {
+ REMAP_YES = 0, ///< Allow remapping.
+ REMAP_NONE = -1, ///< No remapping.
+ REMAP_SCRIPT = -2, ///< Remap script-local mappings only.
+ REMAP_SKIP = -3, ///< No remapping for first char.
+};