mirror of
https://github.com/neovim/neovim.git
synced 2025-11-17 07:41:27 +00:00
lua: support getting UTF-32 and UTF-16 sizes of replaced text
This commit is contained in:
@@ -26,6 +26,9 @@ bool buf_updates_register(buf_T *buf, uint64_t channel_id,
|
||||
|
||||
if (channel_id == LUA_INTERNAL_CALL) {
|
||||
kv_push(buf->update_callbacks, cb);
|
||||
if (cb.utf_sizes) {
|
||||
buf->update_need_codepoints = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -169,7 +172,9 @@ void buf_updates_send_changes(buf_T *buf,
|
||||
int64_t num_removed,
|
||||
bool send_tick)
|
||||
{
|
||||
size_t deleted_bytes = ml_flush_deleted_bytes(buf);
|
||||
size_t deleted_codepoints, deleted_codeunits;
|
||||
size_t deleted_bytes = ml_flush_deleted_bytes(buf, &deleted_codepoints,
|
||||
&deleted_codeunits);
|
||||
|
||||
if (!buf_updates_active(buf)) {
|
||||
return;
|
||||
@@ -233,8 +238,8 @@ void buf_updates_send_changes(buf_T *buf,
|
||||
bool keep = true;
|
||||
if (cb.on_lines != LUA_NOREF) {
|
||||
Array args = ARRAY_DICT_INIT;
|
||||
Object items[6];
|
||||
args.size = 6;
|
||||
Object items[8];
|
||||
args.size = 6; // may be increased to 8 below
|
||||
args.items = items;
|
||||
|
||||
// the first argument is always the buffer handle
|
||||
@@ -254,6 +259,11 @@ void buf_updates_send_changes(buf_T *buf,
|
||||
|
||||
// byte count of previous contents
|
||||
args.items[5] = INTEGER_OBJ((Integer)deleted_bytes);
|
||||
if (cb.utf_sizes) {
|
||||
args.size = 8;
|
||||
args.items[6] = INTEGER_OBJ((Integer)deleted_codepoints);
|
||||
args.items[7] = INTEGER_OBJ((Integer)deleted_codeunits);
|
||||
}
|
||||
textlock++;
|
||||
Object res = executor_exec_lua_cb(cb.on_lines, "lines", args, true);
|
||||
textlock--;
|
||||
|
||||
Reference in New Issue
Block a user