mirror of
https://github.com/neovim/neovim.git
synced 2025-10-15 14:26:07 +00:00
api: Replace set_var(name, NIL) with del_var(name)
This commit is contained in:
@@ -423,7 +423,7 @@ Object buffer_get_var(Buffer buffer, String name, Error *err)
|
||||
return dict_get_value(buf->b_vars, name, err);
|
||||
}
|
||||
|
||||
/// Sets a buffer-scoped (b:) variable. 'nil' value deletes the variable.
|
||||
/// Sets a buffer-scoped (b:) variable
|
||||
///
|
||||
/// @param buffer The buffer handle
|
||||
/// @param name The variable name
|
||||
@@ -438,7 +438,24 @@ Object buffer_set_var(Buffer buffer, String name, Object value, Error *err)
|
||||
return (Object) OBJECT_INIT;
|
||||
}
|
||||
|
||||
return dict_set_value(buf->b_vars, name, value, err);
|
||||
return dict_set_value(buf->b_vars, name, value, 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
|
||||
/// @return The old value
|
||||
Object buffer_del_var(Buffer buffer, String name, Error *err)
|
||||
{
|
||||
buf_T *buf = find_buffer_by_handle(buffer, err);
|
||||
|
||||
if (!buf) {
|
||||
return (Object) OBJECT_INIT;
|
||||
}
|
||||
|
||||
return dict_set_value(buf->b_vars, name, NIL, true, err);
|
||||
}
|
||||
|
||||
/// Gets a buffer option value
|
||||
|
@@ -90,14 +90,17 @@ Object dict_get_value(dict_T *dict, String key, Error *err)
|
||||
}
|
||||
|
||||
/// Set a value in a dict. Objects are recursively expanded into their
|
||||
/// vimscript equivalents. Passing 'nil' as value deletes the key.
|
||||
/// vimscript equivalents.
|
||||
///
|
||||
/// @param dict The vimscript dict
|
||||
/// @param key The key
|
||||
/// @param value The new value
|
||||
/// @param del Delete key in place of setting it. Argument `value` is ignored in
|
||||
/// this case.
|
||||
/// @param[out] err Details of an error that may have occurred
|
||||
/// @return the old value, if any
|
||||
Object dict_set_value(dict_T *dict, String key, Object value, Error *err)
|
||||
Object dict_set_value(dict_T *dict, String key, Object value, bool del,
|
||||
Error *err)
|
||||
{
|
||||
Object rv = OBJECT_INIT;
|
||||
|
||||
@@ -118,7 +121,7 @@ Object dict_set_value(dict_T *dict, String key, Object value, Error *err)
|
||||
|
||||
dictitem_T *di = dict_find(dict, (uint8_t *)key.data, (int)key.size);
|
||||
|
||||
if (value.type == kObjectTypeNil) {
|
||||
if (del) {
|
||||
// Delete the key
|
||||
if (di == NULL) {
|
||||
// Doesn't exist, fail
|
||||
|
@@ -54,7 +54,7 @@ Object tabpage_get_var(Tabpage tabpage, String name, Error *err)
|
||||
return dict_get_value(tab->tp_vars, name, err);
|
||||
}
|
||||
|
||||
/// Sets a tab-scoped (t:) variable. 'nil' value deletes the variable.
|
||||
/// Sets a tab-scoped (t:) variable
|
||||
///
|
||||
/// @param tabpage handle
|
||||
/// @param name The variable name
|
||||
@@ -69,7 +69,24 @@ Object tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err)
|
||||
return (Object) OBJECT_INIT;
|
||||
}
|
||||
|
||||
return dict_set_value(tab->tp_vars, name, value, err);
|
||||
return dict_set_value(tab->tp_vars, name, value, 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
|
||||
/// @return The tab page handle
|
||||
Object tabpage_del_var(Tabpage tabpage, String name, Error *err)
|
||||
{
|
||||
tabpage_T *tab = find_tab_by_handle(tabpage, err);
|
||||
|
||||
if (!tab) {
|
||||
return (Object) OBJECT_INIT;
|
||||
}
|
||||
|
||||
return dict_set_value(tab->tp_vars, name, NIL, true, err);
|
||||
}
|
||||
|
||||
/// Gets the current window in a tab page
|
||||
|
@@ -331,7 +331,7 @@ Object vim_get_var(String name, Error *err)
|
||||
return dict_get_value(&globvardict, name, err);
|
||||
}
|
||||
|
||||
/// Sets a global variable. Passing 'nil' as value deletes the variable.
|
||||
/// Sets a global variable
|
||||
///
|
||||
/// @param name The variable name
|
||||
/// @param value The variable value
|
||||
@@ -339,7 +339,17 @@ Object vim_get_var(String name, Error *err)
|
||||
/// @return the old value if any
|
||||
Object vim_set_var(String name, Object value, Error *err)
|
||||
{
|
||||
return dict_set_value(&globvardict, name, value, err);
|
||||
return dict_set_value(&globvardict, name, value, false, err);
|
||||
}
|
||||
|
||||
/// Removes a global variable
|
||||
///
|
||||
/// @param name The variable name
|
||||
/// @param[out] err Details of an error that may have occurred
|
||||
/// @return the old value if any
|
||||
Object vim_del_var(String name, Error *err)
|
||||
{
|
||||
return dict_set_value(&globvardict, name, NIL, true, err);
|
||||
}
|
||||
|
||||
/// Gets a vim variable
|
||||
|
@@ -197,7 +197,7 @@ Object window_get_var(Window window, String name, Error *err)
|
||||
return dict_get_value(win->w_vars, name, err);
|
||||
}
|
||||
|
||||
/// Sets a window-scoped (w:) variable. 'nil' value deletes the variable.
|
||||
/// Sets a window-scoped (w:) variable
|
||||
///
|
||||
/// @param window The window handle
|
||||
/// @param name The variable name
|
||||
@@ -212,7 +212,24 @@ Object window_set_var(Window window, String name, Object value, Error *err)
|
||||
return (Object) OBJECT_INIT;
|
||||
}
|
||||
|
||||
return dict_set_value(win->w_vars, name, value, err);
|
||||
return dict_set_value(win->w_vars, name, value, 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
|
||||
/// @return The old value
|
||||
Object window_del_var(Window window, String name, Error *err)
|
||||
{
|
||||
win_T *win = find_window_by_handle(window, err);
|
||||
|
||||
if (!win) {
|
||||
return (Object) OBJECT_INIT;
|
||||
}
|
||||
|
||||
return dict_set_value(win->w_vars, name, NIL, true, err);
|
||||
}
|
||||
|
||||
/// Gets a window option value
|
||||
|
Reference in New Issue
Block a user