From b0e26199ec02c9b392af6161522004c55db0441f Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Mon, 15 Jul 2019 18:23:11 +0200 Subject: lua: add {old_byte_size} to on_lines buffer change event --- src/nvim/buffer_defs.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/nvim/buffer_defs.h') diff --git a/src/nvim/buffer_defs.h b/src/nvim/buffer_defs.h index 143737b478..eb26e4ad8e 100644 --- a/src/nvim/buffer_defs.h +++ b/src/nvim/buffer_defs.h @@ -807,6 +807,9 @@ struct file_buffer { kvec_t(uint64_t) update_channels; kvec_t(BufUpdateCallbacks) update_callbacks; + size_t deleted_bytes; + int flush_count; + int b_diff_failed; // internal diff failed for this buffer }; -- cgit From c0993ed3433ef4111a39e59642d15b15261e8b68 Mon Sep 17 00:00:00 2001 From: Björn Linse Date: Sun, 4 Aug 2019 12:22:22 +0200 Subject: lua: support getting UTF-32 and UTF-16 sizes of replaced text --- src/nvim/buffer_defs.h | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/nvim/buffer_defs.h') 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 -- cgit