1
0
forked from aniani/vim

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.
This commit is contained in:
Bram Moolenaar
2018-07-14 21:41:44 +02:00
parent 1741367131
commit b6959a8e06
4 changed files with 25 additions and 2 deletions

View File

@@ -4994,8 +4994,10 @@ getwininfo([{winid}]) *getwininfo()*
variables a reference to the dictionary with variables a reference to the dictionary with
window-local variables window-local variables
width window width width window width
wincol leftmost screen column of the window
winid |window-ID| winid |window-ID|
winnr window number winnr window number
winrow topmost screen column of the window
To obtain all window-local variables use: > To obtain all window-local variables use: >
gettabwinvar({tabnr}, {winnr}, '&') gettabwinvar({tabnr}, {winnr}, '&')

View File

@@ -5648,10 +5648,12 @@ get_win_info(win_T *wp, short tpnr, short winnr)
dict_add_number(dict, "winnr", winnr); dict_add_number(dict, "winnr", winnr);
dict_add_number(dict, "winid", wp->w_id); dict_add_number(dict, "winid", wp->w_id);
dict_add_number(dict, "height", wp->w_height); dict_add_number(dict, "height", wp->w_height);
dict_add_number(dict, "winrow", wp->w_winrow);
#ifdef FEAT_MENU #ifdef FEAT_MENU
dict_add_number(dict, "winbar", wp->w_winbar_height); dict_add_number(dict, "winbar", wp->w_winbar_height);
#endif #endif
dict_add_number(dict, "width", wp->w_width); 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); dict_add_number(dict, "bufnr", wp->w_buffer->b_fnum);
#ifdef FEAT_TERMINAL #ifdef FEAT_TERMINAL

View File

@@ -46,17 +46,34 @@ function Test_getbufwintabinfo()
let w2_id = win_getid() let w2_id = win_getid()
tabnew | let w3_id = win_getid() tabnew | let w3_id = win_getid()
new | let w4_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') call setwinvar(0, 'signal', 'green')
tabfirst tabfirst
let winlist = getwininfo() let winlist = getwininfo()
call assert_equal(5, len(winlist)) 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(winbufnr(2), winlist[1].bufnr)
call assert_equal(winheight(2), winlist[1].height) 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].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[3].tabnr)
call assert_equal(2, winlist[4].tabnr)
call assert_equal('green', winlist[2].variables.signal) call assert_equal('green', winlist[2].variables.signal)
call assert_equal(winwidth(1), winlist[0].width)
call assert_equal(w4_id, winlist[3].winid) call assert_equal(w4_id, winlist[3].winid)
let winfo = getwininfo(w5_id)[0] let winfo = getwininfo(w5_id)[0]
call assert_equal(2, winfo.tabnr) call assert_equal(2, winfo.tabnr)

View File

@@ -789,6 +789,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
184,
/**/ /**/
183, 183,
/**/ /**/