Patch 8.1.0187 (after 8.1.0184)
Problem: getwininfo() and win_screenpos() return different numbers.
Solution: Add one to "wincol" and "winrow" from getwininfo().
Files: src/evalfunc.c, src/testdir/test_bufwintabinfo.vim,
runtime/doc/eval.txt
*** ../vim-8.1.0186/src/evalfunc.c Sat Jul 14 21:41:38 2018
--- src/evalfunc.c Sun Jul 15 16:51:34 2018
***************
*** 5648,5659 ****
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
--- 5648,5659 ----
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 + 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 + 1);
dict_add_number(dict, "bufnr", wp->w_buffer->b_fnum);
#ifdef FEAT_TERMINAL
*** ../vim-8.1.0186/src/testdir/test_bufwintabinfo.vim Sat Jul 14 22:23:44 2018
--- src/testdir/test_bufwintabinfo.vim Sun Jul 15 16:57:49 2018
***************
*** 52,72 ****
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(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[2].winnr)
! call assert_equal(tablineheight, 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)
--- 52,73 ----
let winlist = getwininfo()
call assert_equal(5, len(winlist))
call assert_equal(winwidth(1), winlist[0].width)
! 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(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 + 1, winlist[2].winrow)
! call assert_equal(1, winlist[2].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)
*** ../vim-8.1.0186/runtime/doc/eval.txt Sat Jul 14 21:41:38 2018
--- runtime/doc/eval.txt Sun Jul 15 16:54:29 2018
***************
*** 2196,2202 ****
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
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
--- 2196,2202 ----
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 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
***************
*** 4935,4940 ****
--- 4936,4976 ----
: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:
***************
*** 4968,5006 ****
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: >
--- 5004,5009 ----
***************
*** 9047,9053 ****
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].
{nr} can be the window number or the |window-ID|.
Return [0, 0] if the window cannot be found in the current
tabpage.
--- 9051,9057 ----
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], 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.
*** ../vim-8.1.0186/src/version.c Sat Jul 14 22:23:44 2018
--- src/version.c Sun Jul 15 17:00:11 2018
***************
*** 791,792 ****
--- 791,794 ----
{ /* Add new patch number below this line */
+ /**/
+ 187,
/**/
--
hundred-and-one symptoms of being an internet addict:
251. You've never seen your closest friends who usually live WAY too far away.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.