Mercurial > vim
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