diff options
-rw-r--r-- | src/api/helpers.c | 11 | ||||
-rw-r--r-- | src/api/helpers.h | 7 | ||||
-rw-r--r-- | src/api/tabpage.c | 24 | ||||
-rw-r--r-- | src/api/tabpage.h | 5 |
4 files changed, 41 insertions, 6 deletions
diff --git a/src/api/helpers.c b/src/api/helpers.c index d5f379812d..dc1c3e1cda 100644 --- a/src/api/helpers.c +++ b/src/api/helpers.c @@ -290,6 +290,17 @@ win_T * find_window(Window window, Error *err) return NULL; } +tabpage_T * find_tab(Tabpage tabpage, Error *err) +{ + tabpage_T *rv = find_tabpage(tabpage); + + if (!rv) { + set_api_error("Invalid tabpage id", err); + } + + return rv; +} + static bool object_to_vim(Object obj, typval_T *tv, Error *err) { tv->v_type = VAR_UNKNOWN; diff --git a/src/api/helpers.h b/src/api/helpers.h index 4c42ef1e17..9f24455b27 100644 --- a/src/api/helpers.h +++ b/src/api/helpers.h @@ -80,5 +80,12 @@ buf_T *find_buffer(Buffer buffer, Error *err); /// @return the window pointer win_T * find_window(Window window, Error *err); +/// Finds the pointer for a tabpage number +/// +/// @param tabpage the tabpage number +/// @param[out] err Details of an error that may have occurred +/// @return the tabpage pointer +tabpage_T * find_tab(Tabpage tabpage, Error *err); + #endif // NEOVIM_API_HELPERS_H diff --git a/src/api/tabpage.c b/src/api/tabpage.c index 1bbde0d986..b11a7d7e1f 100644 --- a/src/api/tabpage.c +++ b/src/api/tabpage.c @@ -4,20 +4,36 @@ #include "api/tabpage.h" #include "api/defs.h" +#include "api/helpers.h" int64_t tabpage_get_window_count(Tabpage tabpage, Error *err) { - abort(); + set_api_error("Not implemented", err); + return 0; } Object tabpage_get_var(Tabpage tabpage, String name, Error *err) { - abort(); + Object rv; + tabpage_T *tab = find_tab(tabpage, err); + + if (!tab) { + return rv; + } + + return dict_get_value(tab->tp_vars, name, false, err); } -void tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err) +Object tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err) { - abort(); + Object rv; + tabpage_T *tab = find_tab(tabpage, err); + + if (!tab) { + return rv; + } + + return dict_set_value(tab->tp_vars, name, value, err); } Window tabpage_get_buffer(Tabpage tabpage, Error *err) diff --git a/src/api/tabpage.h b/src/api/tabpage.h index 5880a984e7..8215b5b9d7 100644 --- a/src/api/tabpage.h +++ b/src/api/tabpage.h @@ -23,11 +23,12 @@ Object tabpage_get_var(Tabpage tabpage, String name, Error *err); /// Sets a tabpage variable /// -/// @param tabpage andle +/// @param tabpage handle /// @param name The variable name /// @param value The variable value /// @param[out] err Details of an error that may have occurred -void tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err); +/// @return The tab page handle +Object tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err); /// Gets the current window in a tab page /// |