To: vim_dev@googlegroups.com Subject: Patch 8.1.0184 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 -- Bram@Moolenaar.net -- 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 ///