commit 87e1693ba63ff6d936ad0bf8a6a9cbacfe2413e9
parent c6dcc6acd84adbaed8e6bcba0cb5e42bffdf1732
Author: zeertzjq <zeertzjq@outlook.com>
Date: Thu, 21 Apr 2022 07:04:40 +0800
vim-patch:8.2.4797: getwininfo() may get oudated values
Problem: getwininfo() may get oudated values.
Solution: Make sure w_botline is up-to-date. (closes vim/vim#10226)
https://github.com/vim/vim/commit/8530b41fd3872c9a1349b083470d565677948518
Correct test order and add a modeline in test_bufwintabinfo.vim.
Diffstat:
2 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
@@ -6401,6 +6401,9 @@ dict_T *get_win_info(win_T *wp, int16_t tpnr, int16_t winnr)
{
dict_T *const dict = tv_dict_alloc();
+ // make sure w_botline is valid
+ validate_botline(wp);
+
tv_dict_add_nr(dict, S_LEN("tabnr"), tpnr);
tv_dict_add_nr(dict, S_LEN("winnr"), winnr);
tv_dict_add_nr(dict, S_LEN("winid"), wp->handle);
diff --git a/src/nvim/testdir/test_bufwintabinfo.vim b/src/nvim/testdir/test_bufwintabinfo.vim
@@ -145,6 +145,13 @@ function Test_get_win_options()
endif
endfunc
+function Test_getbufinfo_lastused()
+ new Xfoo
+ let info = getbufinfo('Xfoo')[0]
+ call assert_equal(has_key(info, 'lastused'), 1)
+ call assert_equal(type(info.lastused), type(0))
+endfunc
+
func Test_getbufinfo_lines()
new Xfoo
call setline(1, ['a', 'bc', 'd'])
@@ -155,9 +162,26 @@ func Test_getbufinfo_lines()
bw!
endfunc
-function Test_getbufinfo_lastused()
- new Xfoo
- let info = getbufinfo('Xfoo')[0]
- call assert_equal(has_key(info, 'lastused'), 1)
- call assert_equal(type(info.lastused), type(0))
+func Test_getwininfo_au()
+ enew
+ call setline(1, range(1, 16))
+
+ let g:info = #{}
+ augroup T1
+ au!
+ au WinEnter * let g:info = getwininfo(win_getid())[0]
+ augroup END
+
+ 4split
+ " Check that calling getwininfo() from WinEnter returns fresh values for
+ " topline and botline.
+ call assert_equal(1, g:info.topline)
+ call assert_equal(4, g:info.botline)
+ close
+
+ unlet g:info
+ augroup! T1
+ bwipe!
endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab