# HG changeset patch # User Christian Brabandt # Date 1531597505 -7200 # Node ID 48287f1fc8a1e27a899933d92161bddea4820fd4 # Parent 20983d6293b4ceb4ade82958e9de39a49b081121 patch 8.1.0184: not easy to figure out the window layout commit https://github.com/vim/vim/commit/b6959a8e06cef6d2126b030b2f8acd49457a3582 Author: Bram Moolenaar Date: Sat Jul 14 21:41:44 2018 +0200 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. diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- 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 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -5648,10 +5648,12 @@ get_win_info(win_T *wp, short tpnr, shor 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 --- 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 --- a/src/version.c +++ b/src/version.c @@ -790,6 +790,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 184, +/**/ 183, /**/ 182,