summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-08-21 16:56:34 +0200
committerBram Moolenaar <Bram@vim.org>2018-08-21 16:56:34 +0200
commit0f6b4f06dece71487a6d8546c50de775d9c8c287 (patch)
tree4801fcd4f84a5de0bcf7ba0d0dff832a8a192746 /src/evalfunc.c
parentda6e8919e75fa8f961d1b805e877c8a92e76dafb (diff)
patch 8.1.0307: there is no good way to get the window layoutv8.1.0307
Problem: There is no good way to get the window layout. Solution: Add the winlayout() function. (Yegappan Lakshmanan)
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 2bebdd1c62..5e7c013979 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -463,6 +463,7 @@ static void f_win_screenpos(typval_T *argvars, typval_T *rettv);
static void f_winbufnr(typval_T *argvars, typval_T *rettv);
static void f_wincol(typval_T *argvars, typval_T *rettv);
static void f_winheight(typval_T *argvars, typval_T *rettv);
+static void f_winlayout(typval_T *argvars, typval_T *rettv);
static void f_winline(typval_T *argvars, typval_T *rettv);
static void f_winnr(typval_T *argvars, typval_T *rettv);
static void f_winrestcmd(typval_T *argvars, typval_T *rettv);
@@ -952,6 +953,7 @@ static struct fst
{"winbufnr", 1, 1, f_winbufnr},
{"wincol", 0, 0, f_wincol},
{"winheight", 1, 1, f_winheight},
+ {"winlayout", 0, 1, f_winlayout},
{"winline", 0, 0, f_winline},
{"winnr", 0, 1, f_winnr},
{"winrestcmd", 0, 0, f_winrestcmd},
@@ -13743,6 +13745,29 @@ f_winheight(typval_T *argvars, typval_T *rettv)
}
/*
+ * "winlayout()" function
+ */
+ static void
+f_winlayout(typval_T *argvars, typval_T *rettv)
+{
+ tabpage_T *tp;
+
+ if (rettv_list_alloc(rettv) != OK)
+ return;
+
+ if (argvars[0].v_type == VAR_UNKNOWN)
+ tp = curtab;
+ else
+ {
+ tp = find_tabpage((int)get_tv_number(&argvars[0]));
+ if (tp == NULL)
+ return;
+ }
+
+ get_framelayout(tp->tp_topframe, rettv->vval.v_list, TRUE);
+}
+
+/*
* "winline()" function
*/
static void