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) | 
