aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/api/helpers.c11
-rw-r--r--src/api/helpers.h7
-rw-r--r--src/api/tabpage.c24
-rw-r--r--src/api/tabpage.h5
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
///