diff src/evalfunc.c @ 12977:2d817fd289ba v8.0.1364

patch 8.0.1364: there is no easy way to get the window position commit https://github.com/vim/vim/commit/22044dc31788d9f1c2da7725269884d9923b4795 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Dec 2 15:43:37 2017 +0100 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().
author Christian Brabandt <cb@256bit.org>
date Sat, 02 Dec 2017 15:45:04 +0100
parents 8ba2a921cd86
children 58cce40c965b
line wrap: on
line diff
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -441,6 +441,7 @@ static void f_win_getid(typval_T *argvar
 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 @@ static struct fst
     {"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 @@ f_win_id2win(typval_T *argvars, typval_T
 }
 
 /*
+ * "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