aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/api/tabpage.c27
-rw-r--r--src/api/tabpage.h2
2 files changed, 26 insertions, 3 deletions
diff --git a/src/api/tabpage.c b/src/api/tabpage.c
index b11a7d7e1f..f484044fba 100644
--- a/src/api/tabpage.c
+++ b/src/api/tabpage.c
@@ -3,6 +3,7 @@
#include <stdlib.h>
#include "api/tabpage.h"
+#include "api/vim.h"
#include "api/defs.h"
#include "api/helpers.h"
@@ -36,9 +37,31 @@ Object tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err)
return dict_set_value(tab->tp_vars, name, value, err);
}
-Window tabpage_get_buffer(Tabpage tabpage, Error *err)
+Window tabpage_get_window(Tabpage tabpage, Error *err)
{
- abort();
+ Window rv = 0;
+ tabpage_T *tab = find_tab(tabpage, err);
+
+ if (!tab) {
+ return rv;
+ }
+
+ if (tab == curtab) {
+ return vim_get_current_window();
+ } else {
+ tabpage_T *tp;
+ win_T *wp;
+ rv = 1;
+
+ FOR_ALL_TAB_WINDOWS(tp, wp) {
+ if (tp == tab && wp == tab->tp_curwin) {
+ return rv;
+ }
+ rv++;
+ }
+ // There should always be a current window for a tabpage
+ abort();
+ }
}
bool tabpage_is_valid(Tabpage tabpage)
diff --git a/src/api/tabpage.h b/src/api/tabpage.h
index 8215b5b9d7..7ff7927f54 100644
--- a/src/api/tabpage.h
+++ b/src/api/tabpage.h
@@ -35,7 +35,7 @@ Object tabpage_set_var(Tabpage tabpage, String name, Object value, Error *err);
/// @param tabpage The tab page handle
/// @param[out] err Details of an error that may have occurred
/// @return The Window handle
-Window tabpage_get_buffer(Tabpage tabpage, Error *err);
+Window tabpage_get_window(Tabpage tabpage, Error *err);
/// Checks if a tab page is valid
///