diff options
-rw-r--r-- | src/nvim/api/buffer.c | 4 | ||||
-rw-r--r-- | src/nvim/api/private/helpers.h | 6 | ||||
-rw-r--r-- | src/nvim/api/vim.c | 16 | ||||
-rw-r--r-- | src/nvim/autocmd.c | 4 | ||||
-rw-r--r-- | src/nvim/buffer_updates.c | 32 | ||||
-rw-r--r-- | src/nvim/decoration_provider.c | 32 | ||||
-rw-r--r-- | src/nvim/highlight.c | 8 |
7 files changed, 48 insertions, 54 deletions
diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index 806b649ce6..5e54d0ec9a 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -538,9 +538,9 @@ void nvim_buf_set_text(uint64_t channel_id, Buffer buffer, Integer start_row, In Integer end_row, Integer end_col, ArrayOf(String) replacement, Error *err) FUNC_API_SINCE(7) { - FIXED_TEMP_ARRAY(scratch, 1); + MAXSIZE_TEMP_ARRAY(scratch, 1); if (replacement.size == 0) { - scratch.items[0] = STRING_OBJ(STATIC_CSTR_AS_STRING("")); + ADD_C(scratch, STRING_OBJ(STATIC_CSTR_AS_STRING(""))); replacement = scratch; } diff --git a/src/nvim/api/private/helpers.h b/src/nvim/api/private/helpers.h index 224ce41aae..1441da853c 100644 --- a/src/nvim/api/private/helpers.h +++ b/src/nvim/api/private/helpers.h @@ -74,12 +74,6 @@ #define ADD_C(array, item) \ kv_push_c(array, item) -#define FIXED_TEMP_ARRAY(name, fixsize) \ - Array name = ARRAY_DICT_INIT; \ - Object name##__items[fixsize]; \ - name.size = fixsize; \ - name.items = name##__items; \ - #define MAXSIZE_TEMP_ARRAY(name, maxsize) \ Array name = ARRAY_DICT_INIT; \ Object name##__items[maxsize]; \ diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index 51807c9ca8..256482fb38 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -473,10 +473,10 @@ Object nvim_exec_lua(String code, Array args, Error *err) Object nvim_notify(String msg, Integer log_level, Dictionary opts, Error *err) FUNC_API_SINCE(7) { - FIXED_TEMP_ARRAY(args, 3); - args.items[0] = STRING_OBJ(msg); - args.items[1] = INTEGER_OBJ(log_level); - args.items[2] = DICTIONARY_OBJ(opts); + MAXSIZE_TEMP_ARRAY(args, 3); + ADD_C(args, STRING_OBJ(msg)); + ADD_C(args, INTEGER_OBJ(log_level)); + ADD_C(args, DICTIONARY_OBJ(opts)); return nlua_exec(STATIC_CSTR_AS_STRING("return vim.notify(...)"), args, err); } @@ -1010,10 +1010,10 @@ static void term_write(char *buf, size_t size, void *data) if (cb == LUA_NOREF) { return; } - FIXED_TEMP_ARRAY(args, 3); - args.items[0] = INTEGER_OBJ((Integer)chan->id); - args.items[1] = BUFFER_OBJ(terminal_buf(chan->term)); - args.items[2] = STRING_OBJ(((String){ .data = buf, .size = size })); + MAXSIZE_TEMP_ARRAY(args, 3); + ADD_C(args, INTEGER_OBJ((Integer)chan->id)); + ADD_C(args, BUFFER_OBJ(terminal_buf(chan->term))); + ADD_C(args, STRING_OBJ(((String){ .data = buf, .size = size }))); textlock++; nlua_call_ref(cb, "input", args, false, NULL); textlock--; diff --git a/src/nvim/autocmd.c b/src/nvim/autocmd.c index 159506a14a..d364881084 100644 --- a/src/nvim/autocmd.c +++ b/src/nvim/autocmd.c @@ -2052,8 +2052,8 @@ static bool call_autocmd_callback(const AutoCmd *ac, const AutoPatCmd *apc) break; } - FIXED_TEMP_ARRAY(args, 1); - args.items[0] = DICTIONARY_OBJ(data); + MAXSIZE_TEMP_ARRAY(args, 1); + ADD_C(args, DICTIONARY_OBJ(data)); Object result = nlua_call_ref(callback.data.luaref, NULL, args, true, NULL); if (result.type == kObjectTypeBoolean) { diff --git a/src/nvim/buffer_updates.c b/src/nvim/buffer_updates.c index 47b88945c7..14973502ab 100644 --- a/src/nvim/buffer_updates.c +++ b/src/nvim/buffer_updates.c @@ -316,23 +316,23 @@ void buf_updates_send_splice(buf_T *buf, int start_row, colnr_T start_col, bcoun BufUpdateCallbacks cb = kv_A(buf->update_callbacks, i); bool keep = true; if (cb.on_bytes != LUA_NOREF && (cb.preview || !cmdpreview)) { - FIXED_TEMP_ARRAY(args, 11); + MAXSIZE_TEMP_ARRAY(args, 11); // the first argument is always the buffer handle - args.items[0] = BUFFER_OBJ(buf->handle); + ADD_C(args, BUFFER_OBJ(buf->handle)); // next argument is b:changedtick - args.items[1] = INTEGER_OBJ(buf_get_changedtick(buf)); - - args.items[2] = INTEGER_OBJ(start_row); - args.items[3] = INTEGER_OBJ(start_col); - args.items[4] = INTEGER_OBJ(start_byte); - args.items[5] = INTEGER_OBJ(old_row); - args.items[6] = INTEGER_OBJ(old_col); - args.items[7] = INTEGER_OBJ(old_byte); - args.items[8] = INTEGER_OBJ(new_row); - args.items[9] = INTEGER_OBJ(new_col); - args.items[10] = INTEGER_OBJ(new_byte); + ADD_C(args, INTEGER_OBJ(buf_get_changedtick(buf))); + + ADD_C(args, INTEGER_OBJ(start_row)); + ADD_C(args, INTEGER_OBJ(start_col)); + ADD_C(args, INTEGER_OBJ(start_byte)); + ADD_C(args, INTEGER_OBJ(old_row)); + ADD_C(args, INTEGER_OBJ(old_col)); + ADD_C(args, INTEGER_OBJ(old_byte)); + ADD_C(args, INTEGER_OBJ(new_row)); + ADD_C(args, INTEGER_OBJ(new_col)); + ADD_C(args, INTEGER_OBJ(new_byte)); textlock++; Object res = nlua_call_ref(cb.on_bytes, "bytes", args, true, NULL); @@ -361,13 +361,13 @@ void buf_updates_changedtick(buf_T *buf) BufUpdateCallbacks cb = kv_A(buf->update_callbacks, i); bool keep = true; if (cb.on_changedtick != LUA_NOREF) { - FIXED_TEMP_ARRAY(args, 2); + MAXSIZE_TEMP_ARRAY(args, 2); // the first argument is always the buffer handle - args.items[0] = BUFFER_OBJ(buf->handle); + ADD_C(args, BUFFER_OBJ(buf->handle)); // next argument is b:changedtick - args.items[1] = INTEGER_OBJ(buf_get_changedtick(buf)); + ADD_C(args, INTEGER_OBJ(buf_get_changedtick(buf))); textlock++; Object res = nlua_call_ref(cb.on_changedtick, "changedtick", diff --git a/src/nvim/decoration_provider.c b/src/nvim/decoration_provider.c index 0f6a260247..04d875c4e3 100644 --- a/src/nvim/decoration_provider.c +++ b/src/nvim/decoration_provider.c @@ -63,9 +63,9 @@ void decor_providers_start(DecorProviders *providers, int type, char **err) bool active; if (p->redraw_start != LUA_NOREF) { - FIXED_TEMP_ARRAY(args, 2); - args.items[0] = INTEGER_OBJ((int)display_tick); - args.items[1] = INTEGER_OBJ(type); + MAXSIZE_TEMP_ARRAY(args, 2); + ADD_C(args, INTEGER_OBJ((int)display_tick)); + ADD_C(args, INTEGER_OBJ(type)); active = decor_provider_invoke(p->ns_id, "start", p->redraw_start, args, true, err); } else { active = true; @@ -96,12 +96,12 @@ void decor_providers_invoke_win(win_T *wp, DecorProviders *providers, for (size_t k = 0; k < kv_size(*providers); k++) { DecorProvider *p = kv_A(*providers, k); if (p && p->redraw_win != LUA_NOREF) { - FIXED_TEMP_ARRAY(args, 4); - args.items[0] = WINDOW_OBJ(wp->handle); - args.items[1] = BUFFER_OBJ(wp->w_buffer->handle); + MAXSIZE_TEMP_ARRAY(args, 4); + ADD_C(args, WINDOW_OBJ(wp->handle)); + ADD_C(args, BUFFER_OBJ(wp->w_buffer->handle)); // TODO(bfredl): we are not using this, but should be first drawn line? - args.items[2] = INTEGER_OBJ(wp->w_topline - 1); - args.items[3] = INTEGER_OBJ(knownmax); + ADD_C(args, INTEGER_OBJ(wp->w_topline - 1)); + ADD_C(args, INTEGER_OBJ(knownmax)); if (decor_provider_invoke(p->ns_id, "win", p->redraw_win, args, true, err)) { kvi_push(*line_providers, p); } @@ -124,10 +124,10 @@ void providers_invoke_line(win_T *wp, DecorProviders *providers, int row, bool * for (size_t k = 0; k < kv_size(*providers); k++) { DecorProvider *p = kv_A(*providers, k); if (p && p->redraw_line != LUA_NOREF) { - FIXED_TEMP_ARRAY(args, 3); - args.items[0] = WINDOW_OBJ(wp->handle); - args.items[1] = BUFFER_OBJ(wp->w_buffer->handle); - args.items[2] = INTEGER_OBJ(row); + MAXSIZE_TEMP_ARRAY(args, 3); + ADD_C(args, WINDOW_OBJ(wp->handle)); + ADD_C(args, BUFFER_OBJ(wp->w_buffer->handle)); + ADD_C(args, INTEGER_OBJ(row)); if (decor_provider_invoke(p->ns_id, "line", p->redraw_line, args, true, err)) { *has_decor = true; } else { @@ -150,8 +150,8 @@ void decor_providers_invoke_buf(buf_T *buf, DecorProviders *providers, char **er for (size_t i = 0; i < kv_size(*providers); i++) { DecorProvider *p = kv_A(*providers, i); if (p && p->redraw_buf != LUA_NOREF) { - FIXED_TEMP_ARRAY(args, 1); - args.items[0] = BUFFER_OBJ(buf->handle); + MAXSIZE_TEMP_ARRAY(args, 1); + ADD_C(args, BUFFER_OBJ(buf->handle)); decor_provider_invoke(p->ns_id, "buf", p->redraw_buf, args, true, err); } } @@ -167,8 +167,8 @@ void decor_providers_invoke_end(DecorProviders *providers, char **err) for (size_t i = 0; i < kv_size(*providers); i++) { DecorProvider *p = kv_A(*providers, i); if (p && p->active && p->redraw_end != LUA_NOREF) { - FIXED_TEMP_ARRAY(args, 1); - args.items[0] = INTEGER_OBJ((int)display_tick); + MAXSIZE_TEMP_ARRAY(args, 1); + ADD_C(args, INTEGER_OBJ((int)display_tick)); decor_provider_invoke(p->ns_id, "end", p->redraw_end, args, true, err); } } diff --git a/src/nvim/highlight.c b/src/nvim/highlight.c index 83d819d3ec..6226130322 100644 --- a/src/nvim/highlight.c +++ b/src/nvim/highlight.c @@ -183,10 +183,10 @@ int ns_get_hl(NS ns_id, int hl_id, bool link, bool nodefault) bool valid_cache = it.version >= p->hl_valid; if (!valid_cache && p->hl_def != LUA_NOREF && !recursive) { - FIXED_TEMP_ARRAY(args, 3); - args.items[0] = INTEGER_OBJ((Integer)ns_id); - args.items[1] = STRING_OBJ(cstr_to_string((char *)syn_id2name(hl_id))); - args.items[2] = BOOLEAN_OBJ(link); + MAXSIZE_TEMP_ARRAY(args, 3); + ADD_C(args, INTEGER_OBJ((Integer)ns_id)); + ADD_C(args, STRING_OBJ(cstr_to_string((char *)syn_id2name(hl_id)))); + ADD_C(args, BOOLEAN_OBJ(link)); // TODO(bfredl): preload the "global" attr dict? Error err = ERROR_INIT; |