diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-11 11:02:29 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-13 14:11:32 -0300 |
commit | e026be46af28701c6791d80419e7eb26b7ef858b (patch) | |
tree | 3493e5716244c8316c0d9cb5d9fad4b06c92a419 | |
parent | bfe3b6712e75d0c290c0fb9d3693d2cf982a8eb1 (diff) | |
download | rneovim-e026be46af28701c6791d80419e7eb26b7ef858b.tar.gz rneovim-e026be46af28701c6791d80419e7eb26b7ef858b.tar.bz2 rneovim-e026be46af28701c6791d80419e7eb26b7ef858b.zip |
API: Implement tabpage_{get,set}_var
-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 /// |