patch 8.0.1364: there is no easy way to get the window position
Problem: There is no easy way to get the window position.
Solution: Add win_screenpos().
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 76c5768..7269084 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -441,6 +441,7 @@
static void f_win_gotoid(typval_T *argvars, typval_T *rettv);
static void f_win_id2tabwin(typval_T *argvars, typval_T *rettv);
static void f_win_id2win(typval_T *argvars, typval_T *rettv);
+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);
@@ -899,6 +900,7 @@
{"win_gotoid", 1, 1, f_win_gotoid},
{"win_id2tabwin", 1, 1, f_win_id2tabwin},
{"win_id2win", 1, 1, f_win_id2win},
+ {"win_screenpos", 1, 1, f_win_screenpos},
{"winbufnr", 1, 1, f_winbufnr},
{"wincol", 0, 0, f_wincol},
{"winheight", 1, 1, f_winheight},
@@ -5379,6 +5381,22 @@
}
/*
+ * "win_screenpos()" function
+ */
+ static void
+f_win_screenpos(typval_T *argvars, typval_T *rettv)
+{
+ win_T *wp;
+
+ if (rettv_list_alloc(rettv) == FAIL)
+ return;
+
+ wp = find_win_by_nr(&argvars[0], NULL);
+ list_append_number(rettv->vval.v_list, wp == NULL ? 0 : wp->w_winrow + 1);
+ list_append_number(rettv->vval.v_list, wp == NULL ? 0 : wp->w_wincol + 1);
+}
+
+/*
* "getwinposx()" function
*/
static void
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index 49bd9fa..067f09c 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -362,6 +362,19 @@
set equalalways&
endfunc
+func Test_win_screenpos()
+ call assert_equal(1, winnr('$'))
+ split
+ vsplit
+ 10wincmd _
+ 30wincmd |
+ call assert_equal([1, 1], win_screenpos(1))
+ call assert_equal([1, 32], win_screenpos(2))
+ call assert_equal([12, 1], win_screenpos(3))
+ call assert_equal([0, 0], win_screenpos(4))
+ only
+endfunc
+
func Test_window_jump_tag()
help
/iccf
diff --git a/src/version.c b/src/version.c
index 8587b4d..e85058e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1364,
+/**/
1363,
/**/
1362,