any variable {varname} in tab {nr} or {def}
gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
any {name} in {winnr} in tab page {tabnr}
-getwininfo([{winid}]) List list of windows
+getwininfo([{winid}]) List list of info about each window
getwinpos([{timeout}]) List X and Y coord in pixels of the Vim window
getwinposx() Number X coord in pixels of the Vim window
getwinposy() Number Y coord in pixels of the Vim window
:let list_is_on = gettabwinvar(1, 2, '&list')
:echo "myvar = " . gettabwinvar(3, 1, 'myvar')
<
+getwininfo([{winid}]) *getwininfo()*
+ Returns information about windows as a List with Dictionaries.
+
+ If {winid} is given Information about the window with that ID
+ is returned. If the window does not exist the result is an
+ empty list.
+
+ Without {winid} information about all the windows in all the
+ tab pages is returned.
+
+ Each List item is a Dictionary with the following entries:
+ bufnr number of buffer in the window
+ height window height (excluding winbar)
+ winbar 1 if the window has a toolbar, 0
+ otherwise
+ loclist 1 if showing a location list
+ {only with the +quickfix feature}
+ quickfix 1 if quickfix or location list window
+ {only with the +quickfix feature}
+ terminal 1 if a terminal window
+ {only with the +terminal feature}
+ tabnr tab page number
+ variables a reference to the dictionary with
+ window-local variables
+ width window width
+ wincol leftmost screen column of the window,
+ col from |win_screenpos()|
+ winid |window-ID|
+ winnr window number
+ winrow topmost screen column of the window,
+ row from |win_screenpos()|
+
+ To obtain all window-local variables use: >
+ gettabwinvar({tabnr}, {winnr}, '&')
+
getwinpos([{timeout}]) *getwinpos()*
The result is a list with two numbers, the result of
getwinposx() and getwinposy() combined:
The result will be -1 if the information is not available.
The value can be used with `:winpos`.
-getwininfo([{winid}]) *getwininfo()*
- Returns information about windows as a List with Dictionaries.
-
- If {winid} is given Information about the window with that ID
- is returned. If the window does not exist the result is an
- empty list.
-
- Without {winid} information about all the windows in all the
- tab pages is returned.
-
- Each List item is a Dictionary with the following entries:
- bufnr number of buffer in the window
- height window height (excluding winbar)
- winbar 1 if the window has a toolbar, 0
- otherwise
- loclist 1 if showing a location list
- {only with the +quickfix feature}
- quickfix 1 if quickfix or location list window
- {only with the +quickfix feature}
- terminal 1 if a terminal window
- {only with the +terminal feature}
- tabnr tab page number
- 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}, '&')
-
getwinvar({winnr}, {varname} [, {def}]) *getwinvar()*
Like |gettabwinvar()| for the current tabpage.
Examples: >
win_screenpos({nr}) *win_screenpos()*
Return the screen position of window {nr} as a list with two
numbers: [row, col]. The first window always has position
- [1, 1].
+ [1, 1], unless there is a tabline, then it is [2, 1].
{nr} can be the window number or the |window-ID|.
Return [0, 0] if the window cannot be found in the current
tabpage.
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);
+ dict_add_number(dict, "winrow", wp->w_winrow + 1);
#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, "wincol", wp->w_wincol + 1);
dict_add_number(dict, "bufnr", wp->w_buffer->b_fnum);
#ifdef FEAT_TERMINAL
let winlist = getwininfo()
call assert_equal(5, len(winlist))
call assert_equal(winwidth(1), winlist[0].width)
- call assert_equal(0, winlist[0].wincol)
- let tablineheight = winlist[0].winrow == 1 ? 1 : 0
- call assert_equal(tablineheight, winlist[0].winrow) " tabline adds one
+ call assert_equal(1, winlist[0].wincol)
+ " tabline adds one row in terminal, not in GUI
+ let tablineheight = winlist[0].winrow == 2 ? 1 : 0
+ call assert_equal(tablineheight + 1, winlist[0].winrow)
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(tablineheight + winheight(1) + 1, winlist[1].winrow)
+ call assert_equal(1, winlist[1].wincol)
+ call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow)
call assert_equal(1, winlist[2].winnr)
- call assert_equal(tablineheight, winlist[2].winrow)
- call assert_equal(0, winlist[2].wincol)
+ call assert_equal(tablineheight + 1, winlist[2].winrow)
+ call assert_equal(1, winlist[2].wincol)
- call assert_equal(winlist[2].width + 1, winlist[3].wincol)
- call assert_equal(0, winlist[4].wincol)
+ call assert_equal(winlist[2].width + 2, winlist[3].wincol)
+ call assert_equal(1, winlist[4].wincol)
call assert_equal(1, winlist[0].tabnr)
call assert_equal(1, winlist[1].tabnr)