diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/api/buffer.c | 51 | ||||
-rw-r--r-- | src/nvim/api/dispatch_deprecated.lua | 8 | ||||
-rw-r--r-- | src/nvim/api/private/helpers.c | 13 | ||||
-rw-r--r-- | src/nvim/api/tabpage.c | 56 | ||||
-rw-r--r-- | src/nvim/api/vim.c | 36 | ||||
-rw-r--r-- | src/nvim/api/window.c | 50 | ||||
-rw-r--r-- | src/nvim/eval.c | 4 | ||||
-rw-r--r-- | src/nvim/terminal.c | 11 |
8 files changed, 175 insertions, 54 deletions
diff --git a/src/nvim/api/buffer.c b/src/nvim/api/buffer.c index 602372a661..c4415ddf94 100644 --- a/src/nvim/api/buffer.c +++ b/src/nvim/api/buffer.c @@ -432,11 +432,46 @@ Object nvim_buf_get_var(Buffer buffer, String name, Error *err) /// @param name The variable name /// @param value The variable value /// @param[out] err Details of an error that may have occurred +void nvim_buf_set_var(Buffer buffer, String name, Object value, Error *err) +{ + buf_T *buf = find_buffer_by_handle(buffer, err); + + if (!buf) { + return; + } + + dict_set_value(buf->b_vars, name, value, false, false, err); +} + +/// Removes a buffer-scoped (b:) variable +/// +/// @param buffer The buffer handle +/// @param name The variable name +/// @param[out] err Details of an error that may have occurred +void nvim_buf_del_var(Buffer buffer, String name, Error *err) +{ + buf_T *buf = find_buffer_by_handle(buffer, err); + + if (!buf) { + return; + } + + dict_set_value(buf->b_vars, name, NIL, true, false, err); +} + +/// Sets a buffer-scoped (b:) variable +/// +/// @deprecated +/// +/// @param buffer The buffer handle +/// @param name The variable name +/// @param value The variable value +/// @param[out] err Details of an error that may have occurred /// @return The old value or nil if there was no previous value. /// /// @warning It may return nil if there was no previous value /// or if previous value was `v:null`. -Object nvim_buf_set_var(Buffer buffer, String name, Object value, Error *err) +Object buffer_set_var(Buffer buffer, String name, Object value, Error *err) { buf_T *buf = find_buffer_by_handle(buffer, err); @@ -444,19 +479,18 @@ Object nvim_buf_set_var(Buffer buffer, String name, Object value, Error *err) return (Object) OBJECT_INIT; } - return dict_set_value(buf->b_vars, name, value, false, err); + return dict_set_value(buf->b_vars, name, value, false, true, err); } /// Removes a buffer-scoped (b:) variable /// +/// @deprecated +/// /// @param buffer The buffer handle /// @param name The variable name /// @param[out] err Details of an error that may have occurred -/// @return The old value or nil if there was no previous value. -/// -/// @warning It may return nil if there was no previous value -/// or if previous value was `v:null`. -Object nvim_buf_del_var(Buffer buffer, String name, Error *err) +/// @return The old value +Object buffer_del_var(Buffer buffer, String name, Error *err) { buf_T *buf = find_buffer_by_handle(buffer, err); @@ -464,9 +498,10 @@ Object nvim_buf_del_var(Buffer buffer, String name, Error *err) return (Object) OBJECT_INIT; } - return dict_set_value(buf->b_vars, name, NIL, true, err); + return dict_set_value(buf->b_vars, name, NIL, true, true, err); } + /// Gets a buffer option value /// /// @param buffer The buffer handle diff --git a/src/nvim/api/dispatch_deprecated.lua b/src/nvim/api/dispatch_deprecated.lua index f3b299e3fc..a4b4c8d196 100644 --- a/src/nvim/api/dispatch_deprecated.lua +++ b/src/nvim/api/dispatch_deprecated.lua @@ -3,8 +3,6 @@ local deprecated_aliases = { nvim_buf_get_lines="buffer_get_lines", nvim_buf_set_lines="buffer_set_lines", nvim_buf_get_var="buffer_get_var", - nvim_buf_set_var="buffer_set_var", - nvim_buf_del_var="buffer_del_var", nvim_buf_get_option="buffer_get_option", nvim_buf_set_option="buffer_set_option", nvim_buf_get_number="buffer_get_number", @@ -16,8 +14,6 @@ local deprecated_aliases = { nvim_buf_clear_highlight="buffer_clear_highlight", nvim_tabpage_get_windows="tabpage_get_windows", nvim_tabpage_get_var="tabpage_get_var", - nvim_tabpage_set_var="tabpage_set_var", - nvim_tabpage_del_var="tabpage_del_var", nvim_tabpage_get_window="tabpage_get_window", nvim_tabpage_is_valid="tabpage_is_valid", nvim_ui_detach="ui_detach", @@ -33,8 +29,6 @@ local deprecated_aliases = { nvim_list_runtime_paths="vim_list_runtime_paths", nvim_change_directory="vim_change_directory", nvim_get_var="vim_get_var", - nvim_set_var="vim_set_var", - nvim_del_var="vim_del_var", nvim_get_vvar="vim_get_vvar", nvim_get_option="vim_get_option", nvim_set_option="vim_set_option", @@ -66,8 +60,6 @@ local deprecated_aliases = { nvim_win_get_width="window_get_width", nvim_win_set_width="window_set_width", nvim_win_get_var="window_get_var", - nvim_win_set_var="window_set_var", - nvim_win_del_var="window_del_var", nvim_win_get_option="window_get_option", nvim_win_set_option="window_set_option", nvim_win_get_position="window_get_position", diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c index 3735139a07..fc114bae16 100644 --- a/src/nvim/api/private/helpers.c +++ b/src/nvim/api/private/helpers.c @@ -104,10 +104,11 @@ Object dict_get_value(dict_T *dict, String key, Error *err) /// @param value The new value /// @param del Delete key in place of setting it. Argument `value` is ignored in /// this case. +/// @param retval If true the old value will be converted and returned. /// @param[out] err Details of an error that may have occurred -/// @return the old value, if any +/// @return The old value if `retval` is true and the key was present, else NIL Object dict_set_value(dict_T *dict, String key, Object value, bool del, - Error *err) + bool retval, Error *err) { Object rv = OBJECT_INIT; @@ -135,7 +136,9 @@ Object dict_set_value(dict_T *dict, String key, Object value, bool del, api_set_error(err, Validation, _("Key \"%s\" doesn't exist"), key.data); } else { // Return the old value - rv = vim_to_object(&di->di_tv); + if (retval) { + rv = vim_to_object(&di->di_tv); + } // Delete the entry hashitem_T *hi = hash_find(&dict->dv_hashtab, di->di_key); hash_remove(&dict->dv_hashtab, hi); @@ -156,7 +159,9 @@ Object dict_set_value(dict_T *dict, String key, Object value, bool del, dict_add(dict, di); } else { // Return the old value - rv = vim_to_object(&di->di_tv); + if (retval) { + rv = vim_to_object(&di->di_tv); + } clear_tv(&di->di_tv); } diff --git a/src/nvim/api/tabpage.c b/src/nvim/api/tabpage.c index 5eb901bcb1..0116c9f91e 100644 --- a/src/nvim/api/tabpage.c +++ b/src/nvim/api/tabpage.c @@ -60,14 +60,49 @@ Object nvim_tabpage_get_var(Tabpage tabpage, String name, Error *err) /// @param name The variable name /// @param value The variable value /// @param[out] err Details of an error that may have occurred +void nvim_tabpage_set_var(Tabpage tabpage, + String name, + Object value, + Error *err) +{ + tabpage_T *tab = find_tab_by_handle(tabpage, err); + + if (!tab) { + return; + } + + dict_set_value(tab->tp_vars, name, value, false, false, err); +} + +/// Removes a tab-scoped (t:) variable +/// +/// @param tabpage handle +/// @param name The variable name +/// @param[out] err Details of an error that may have occurred +void nvim_tabpage_del_var(Tabpage tabpage, String name, Error *err) +{ + tabpage_T *tab = find_tab_by_handle(tabpage, err); + + if (!tab) { + return; + } + + dict_set_value(tab->tp_vars, name, NIL, true, false, err); +} + +/// Sets a tab-scoped (t:) variable +/// +/// @deprecated +/// +/// @param tabpage handle +/// @param name The variable name +/// @param value The variable value +/// @param[out] err Details of an error that may have occurred /// @return The old value or nil if there was no previous value. /// /// @warning It may return nil if there was no previous value /// or if previous value was `v:null`. -Object nvim_tabpage_set_var(Tabpage tabpage, - String name, - Object value, - Error *err) +Object tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err) { tabpage_T *tab = find_tab_by_handle(tabpage, err); @@ -75,19 +110,18 @@ Object nvim_tabpage_set_var(Tabpage tabpage, return (Object) OBJECT_INIT; } - return dict_set_value(tab->tp_vars, name, value, false, err); + return dict_set_value(tab->tp_vars, name, value, false, true, err); } /// Removes a tab-scoped (t:) variable /// +/// @deprecated +/// /// @param tabpage handle /// @param name The variable name /// @param[out] err Details of an error that may have occurred -/// @return The old value or nil if there was no previous value. -/// -/// @warning It may return nil if there was no previous value -/// or if previous value was `v:null`. -Object nvim_tabpage_del_var(Tabpage tabpage, String name, Error *err) +/// @return The old value +Object tabpage_del_var(Tabpage tabpage, String name, Error *err) { tabpage_T *tab = find_tab_by_handle(tabpage, err); @@ -95,7 +129,7 @@ Object nvim_tabpage_del_var(Tabpage tabpage, String name, Error *err) return (Object) OBJECT_INIT; } - return dict_set_value(tab->tp_vars, name, NIL, true, err); + return dict_set_value(tab->tp_vars, name, NIL, true, true, err); } /// Gets the current window in a tab page diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index d123b6b8d8..57810134f9 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -354,26 +354,46 @@ Object nvim_get_var(String name, Error *err) /// @param name The variable name /// @param value The variable value /// @param[out] err Details of an error that may have occurred -/// @return The old value or nil if there was no previous value. -/// -/// @warning It may return nil if there was no previous value -/// or if previous value was `v:null`. -Object nvim_set_var(String name, Object value, Error *err) +void nvim_set_var(String name, Object value, Error *err) { - return dict_set_value(&globvardict, name, value, false, err); + dict_set_value(&globvardict, name, value, false, false, err); } /// Removes a global variable /// /// @param name The variable name /// @param[out] err Details of an error that may have occurred +void nvim_del_var(String name, Error *err) +{ + dict_set_value(&globvardict, name, NIL, true, false, err); +} + +/// Sets a global variable +/// +/// @deprecated +/// +/// @param name The variable name +/// @param value The variable value +/// @param[out] err Details of an error that may have occurred /// @return The old value or nil if there was no previous value. /// /// @warning It may return nil if there was no previous value /// or if previous value was `v:null`. -Object nvim_del_var(String name, Error *err) +Object vim_set_var(String name, Object value, Error *err) +{ + return dict_set_value(&globvardict, name, value, false, true, err); +} + +/// Removes a global variable +/// +/// @deprecated +/// +/// @param name The variable name +/// @param[out] err Details of an error that may have occurred +/// @return The old value +Object vim_del_var(String name, Error *err) { - return dict_set_value(&globvardict, name, NIL, true, err); + return dict_set_value(&globvardict, name, NIL, true, true, err); } /// Gets a vim variable diff --git a/src/nvim/api/window.c b/src/nvim/api/window.c index ade0fe7c01..90d560cfeb 100644 --- a/src/nvim/api/window.c +++ b/src/nvim/api/window.c @@ -202,11 +202,46 @@ Object nvim_win_get_var(Window window, String name, Error *err) /// @param name The variable name /// @param value The variable value /// @param[out] err Details of an error that may have occurred +void nvim_win_set_var(Window window, String name, Object value, Error *err) +{ + win_T *win = find_window_by_handle(window, err); + + if (!win) { + return; + } + + dict_set_value(win->w_vars, name, value, false, false, err); +} + +/// Removes a window-scoped (w:) variable +/// +/// @param window The window handle +/// @param name The variable name +/// @param[out] err Details of an error that may have occurred +void nvim_win_del_var(Window window, String name, Error *err) +{ + win_T *win = find_window_by_handle(window, err); + + if (!win) { + return; + } + + dict_set_value(win->w_vars, name, NIL, true, false, err); +} + +/// Sets a window-scoped (w:) variable +/// +/// @deprecated +/// +/// @param window The window handle +/// @param name The variable name +/// @param value The variable value +/// @param[out] err Details of an error that may have occurred /// @return The old value or nil if there was no previous value. /// /// @warning It may return nil if there was no previous value /// or if previous value was `v:null`. -Object nvim_win_set_var(Window window, String name, Object value, Error *err) +Object window_set_var(Window window, String name, Object value, Error *err) { win_T *win = find_window_by_handle(window, err); @@ -214,19 +249,18 @@ Object nvim_win_set_var(Window window, String name, Object value, Error *err) return (Object) OBJECT_INIT; } - return dict_set_value(win->w_vars, name, value, false, err); + return dict_set_value(win->w_vars, name, value, false, true, err); } /// Removes a window-scoped (w:) variable /// +/// @deprecated +/// /// @param window The window handle /// @param name The variable name /// @param[out] err Details of an error that may have occurred -/// @return The old value or nil if there was no previous value. -/// -/// @warning It may return nil if there was no previous value -/// or if previous value was `v:null`. -Object nvim_win_del_var(Window window, String name, Error *err) +/// @return The old value +Object window_del_var(Window window, String name, Error *err) { win_T *win = find_window_by_handle(window, err); @@ -234,7 +268,7 @@ Object nvim_win_del_var(Window window, String name, Error *err) return (Object) OBJECT_INIT; } - return dict_set_value(win->w_vars, name, NIL, true, err); + return dict_set_value(win->w_vars, name, NIL, true, true, err); } /// Gets a window option value diff --git a/src/nvim/eval.c b/src/nvim/eval.c index ccbc5a6264..e707099ea3 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -16332,9 +16332,9 @@ static void f_termopen(typval_T *argvars, typval_T *rettv, FunPtr fptr) // Save the job id and pid in b:terminal_job_{id,pid} Error err; dict_set_value(curbuf->b_vars, cstr_as_string("terminal_job_id"), - INTEGER_OBJ(rettv->vval.v_number), false, &err); + INTEGER_OBJ(rettv->vval.v_number), false, false, &err); dict_set_value(curbuf->b_vars, cstr_as_string("terminal_job_pid"), - INTEGER_OBJ(pid), false, &err); + INTEGER_OBJ(pid), false, false, &err); Terminal *term = terminal_open(topts); data->term = term; diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c index 6f35cdc35a..ff98dc9f22 100644 --- a/src/nvim/terminal.c +++ b/src/nvim/terminal.c @@ -623,11 +623,12 @@ static void buf_set_term_title(buf_T *buf, char *title) FUNC_ATTR_NONNULL_ALL { Error err; - api_free_object(dict_set_value(buf->b_vars, - cstr_as_string("term_title"), - STRING_OBJ(cstr_as_string(title)), - false, - &err)); + dict_set_value(buf->b_vars, + cstr_as_string("term_title"), + STRING_OBJ(cstr_as_string(title)), + false, + false, + &err); } static int term_settermprop(VTermProp prop, VTermValue *val, void *data) |