vim-patch:9.1.1944: getwininfo() does not return if statusline is visible (#36828)

Problem:  gewininfo() does not return if statusline is visible
Solution: Add status_height to the dict items returned by
          getwininfo() (Hirohito Higashi)

closes: vim/vim#18841

a04ab5f04c

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
This commit is contained in:
zeertzjq
2025-12-05 07:38:05 +08:00
committed by GitHub
parent 22c3e5802a
commit e8fdc7ef9a
5 changed files with 38 additions and 12 deletions

View File

@@ -4445,8 +4445,12 @@ getwininfo([{winid}]) *getwininfo()*
'wrap' is off
loclist 1 if showing a location list
quickfix 1 if quickfix or location list window
terminal 1 if a terminal window
status_height status lines height (0 or 1)
tabnr tab page number
terminal 1 if a terminal window
textoff number of columns occupied by any
'foldcolumn', 'signcolumn' and line
number in front of the text
topline first displayed buffer line
variables a reference to the dictionary with
window-local variables
@@ -4455,9 +4459,6 @@ getwininfo([{winid}]) *getwininfo()*
otherwise
wincol leftmost screen column of the window;
"col" from |win_screenpos()|
textoff number of columns occupied by any
'foldcolumn', 'signcolumn' and line
number in front of the text
winid |window-ID|
winnr window number
winrow topmost screen line of the window;

View File

@@ -4012,8 +4012,12 @@ function vim.fn.gettext(text) end
--- 'wrap' is off
--- loclist 1 if showing a location list
--- quickfix 1 if quickfix or location list window
--- terminal 1 if a terminal window
--- status_height status lines height (0 or 1)
--- tabnr tab page number
--- terminal 1 if a terminal window
--- textoff number of columns occupied by any
--- 'foldcolumn', 'signcolumn' and line
--- number in front of the text
--- topline first displayed buffer line
--- variables a reference to the dictionary with
--- window-local variables
@@ -4022,9 +4026,6 @@ function vim.fn.gettext(text) end
--- otherwise
--- wincol leftmost screen column of the window;
--- "col" from |win_screenpos()|
--- textoff number of columns occupied by any
--- 'foldcolumn', 'signcolumn' and line
--- number in front of the text
--- winid |window-ID|
--- winnr window number
--- winrow topmost screen line of the window;

View File

@@ -4961,8 +4961,12 @@ M.funcs = {
'wrap' is off
loclist 1 if showing a location list
quickfix 1 if quickfix or location list window
terminal 1 if a terminal window
status_height status lines height (0 or 1)
tabnr tab page number
terminal 1 if a terminal window
textoff number of columns occupied by any
'foldcolumn', 'signcolumn' and line
number in front of the text
topline first displayed buffer line
variables a reference to the dictionary with
window-local variables
@@ -4971,9 +4975,6 @@ M.funcs = {
otherwise
wincol leftmost screen column of the window;
"col" from |win_screenpos()|
textoff number of columns occupied by any
'foldcolumn', 'signcolumn' and line
number in front of the text
winid |window-ID|
winnr window number
winrow topmost screen line of the window;

View File

@@ -333,6 +333,7 @@ static dict_T *get_win_info(win_T *wp, int16_t tpnr, int16_t winnr)
tv_dict_add_nr(dict, S_LEN("winnr"), winnr);
tv_dict_add_nr(dict, S_LEN("winid"), wp->handle);
tv_dict_add_nr(dict, S_LEN("height"), wp->w_view_height);
tv_dict_add_nr(dict, S_LEN("status_height"), wp->w_status_height);
tv_dict_add_nr(dict, S_LEN("winrow"), wp->w_winrow + 1);
tv_dict_add_nr(dict, S_LEN("topline"), wp->w_topline);
tv_dict_add_nr(dict, S_LEN("botline"), wp->w_botline - 1);

View File

@@ -201,4 +201,26 @@ func Test_getwininfo_au()
bwipe!
endfunc
func Test_getwininfo_status_height()
set laststatus=0
vsplit
let info = getwininfo(win_getid())[0]
call assert_equal(0, info.status_height)
set laststatus=2
let info = getwininfo(win_getid())[0]
call assert_equal(1, info.status_height)
set laststatus=1
only
let info = getwininfo(win_getid())[0]
call assert_equal(0, info.status_height)
vsplit
let info = getwininfo(win_getid())[0]
call assert_equal(1, info.status_height)
set laststatus&vim
bwipe!
endfunc
" vim: shiftwidth=2 sts=2 expandtab