From b6959a8e06cef6d2126b030b2f8acd49457a3582 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 14 Jul 2018 21:41:44 +0200 Subject: [PATCH] patch 8.1.0184: not easy to figure out the window layout Problem: Not easy to figure out the window layout. Solution: Add "wincol" and "winrow" to what getwininfo() returns. --- runtime/doc/eval.txt | 2 ++ src/evalfunc.c | 2 ++ src/testdir/test_bufwintabinfo.vim | 21 +++++++++++++++++++-- src/version.c | 2 ++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index bd538d5233290..9394ece21fc12 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -4994,8 +4994,10 @@ getwininfo([{winid}]) *getwininfo()* variables a reference to the dictionary with window-local variables width window width + wincol leftmost screen column of the window winid |window-ID| winnr window number + winrow topmost screen column of the window To obtain all window-local variables use: > gettabwinvar({tabnr}, {winnr}, '&') diff --git a/src/evalfunc.c b/src/evalfunc.c index 5775c78db9081..13c60b9930a95 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -5648,10 +5648,12 @@ get_win_info(win_T *wp, short tpnr, short winnr) dict_add_number(dict, "winnr", winnr); dict_add_number(dict, "winid", wp->w_id); dict_add_number(dict, "height", wp->w_height); + dict_add_number(dict, "winrow", wp->w_winrow); #ifdef FEAT_MENU dict_add_number(dict, "winbar", wp->w_winbar_height); #endif dict_add_number(dict, "width", wp->w_width); + dict_add_number(dict, "wincol", wp->w_wincol); dict_add_number(dict, "bufnr", wp->w_buffer->b_fnum); #ifdef FEAT_TERMINAL diff --git a/src/testdir/test_bufwintabinfo.vim b/src/testdir/test_bufwintabinfo.vim index 31b46500259c6..bcf3c52ed0f2b 100644 --- a/src/testdir/test_bufwintabinfo.vim +++ b/src/testdir/test_bufwintabinfo.vim @@ -46,17 +46,34 @@ function Test_getbufwintabinfo() let w2_id = win_getid() tabnew | let w3_id = win_getid() new | let w4_id = win_getid() - new | let w5_id = win_getid() + vert new | let w5_id = win_getid() call setwinvar(0, 'signal', 'green') tabfirst let winlist = getwininfo() call assert_equal(5, len(winlist)) + call assert_equal(winwidth(1), winlist[0].width) + call assert_equal(0, winlist[0].wincol) + call assert_equal(1, winlist[0].winrow) " tabline adds one + call assert_equal(winbufnr(2), winlist[1].bufnr) call assert_equal(winheight(2), winlist[1].height) + call assert_equal(0, winlist[1].wincol) + call assert_equal(winheight(1) + 2, winlist[1].winrow) + call assert_equal(1, winlist[2].winnr) + call assert_equal(1, winlist[2].winrow) + call assert_equal(0, winlist[2].wincol) + + call assert_equal(winlist[2].width + 1, winlist[3].wincol) + call assert_equal(0, winlist[4].wincol) + + call assert_equal(1, winlist[0].tabnr) + call assert_equal(1, winlist[1].tabnr) + call assert_equal(2, winlist[2].tabnr) call assert_equal(2, winlist[3].tabnr) + call assert_equal(2, winlist[4].tabnr) + call assert_equal('green', winlist[2].variables.signal) - call assert_equal(winwidth(1), winlist[0].width) call assert_equal(w4_id, winlist[3].winid) let winfo = getwininfo(w5_id)[0] call assert_equal(2, winfo.tabnr) diff --git a/src/version.c b/src/version.c index 0cda7a5ae5421..a1535f6822d20 100644 --- a/src/version.c +++ b/src/version.c @@ -789,6 +789,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 184, /**/ 183, /**/