diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2019-08-04 12:22:22 +0200 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2019-08-06 20:24:36 +0200 |
commit | c0993ed3433ef4111a39e59642d15b15261e8b68 (patch) | |
tree | cb2a4225d70dec491f96412f96ebcb7c5a391e9a /src/nvim/buffer_defs.h | |
parent | b0e26199ec02c9b392af6161522004c55db0441f (diff) | |
download | rneovim-c0993ed3433ef4111a39e59642d15b15261e8b68.tar.gz rneovim-c0993ed3433ef4111a39e59642d15b15261e8b68.tar.bz2 rneovim-c0993ed3433ef4111a39e59642d15b15261e8b68.zip |
lua: support getting UTF-32 and UTF-16 sizes of replaced text
Diffstat (limited to 'src/nvim/buffer_defs.h')
-rw-r--r-- | src/nvim/buffer_defs.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/nvim/buffer_defs.h b/src/nvim/buffer_defs.h index eb26e4ad8e..b11eaefdd0 100644 --- a/src/nvim/buffer_defs.h +++ b/src/nvim/buffer_defs.h @@ -459,8 +459,9 @@ typedef struct { LuaRef on_lines; LuaRef on_changedtick; LuaRef on_detach; + bool utf_sizes; } BufUpdateCallbacks; -#define BUF_UPDATE_CALLBACKS_INIT { LUA_NOREF, LUA_NOREF, LUA_NOREF } +#define BUF_UPDATE_CALLBACKS_INIT { LUA_NOREF, LUA_NOREF, LUA_NOREF, false } #define BUF_HAS_QF_ENTRY 1 #define BUF_HAS_LL_ENTRY 2 @@ -802,12 +803,24 @@ struct file_buffer { kvec_t(BufhlLine *) b_bufhl_move_space; // temporary space for highlights - // array of channelids which have asked to receive updates for this + // array of channel_id:s which have asked to receive updates for this // buffer. kvec_t(uint64_t) update_channels; + // array of lua callbacks for buffer updates. kvec_t(BufUpdateCallbacks) update_callbacks; + // whether an update callback has requested codepoint size of deleted regions. + bool update_need_codepoints; + + // Measurements of the deleted or replaced region since the last update + // event. Some consumers of buffer changes need to know the byte size (like + // tree-sitter) or the corresponding UTF-32/UTF-16 size (like LSP) of the + // deleted text. size_t deleted_bytes; + size_t deleted_codepoints; + size_t deleted_codeunits; + + // The number for times the current line has been flushed in the memline. int flush_count; int b_diff_failed; // internal diff failed for this buffer |