aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSean Dewar <6256228+seandewar@users.noreply.github.com>2024-03-12 21:02:29 +0000
committerSean Dewar <6256228+seandewar@users.noreply.github.com>2024-03-12 21:05:54 +0000
commit29d0ed577c7d283402c84df602a031a25349eb59 (patch)
tree56044bb7a67c4801fb0c25ed14b5da519c4875a3 /test
parent119390e7ce3fe4f4f3da8bdd963ea10ec8976a3a (diff)
downloadrneovim-29d0ed577c7d283402c84df602a031a25349eb59.tar.gz
rneovim-29d0ed577c7d283402c84df602a031a25349eb59.tar.bz2
rneovim-29d0ed577c7d283402c84df602a031a25349eb59.zip
vim-patch:9.1.0169: current window number returned by tabpagewinnr may be outdated
Problem: current window number returned by tabpagewinnr may be outdated when called from win_execute for the original tabpage. Solution: update the original tabpage's tp_curwin in switch_win; use {un}use_tabpage instead. Don't do it in restore_win to ensure tp_curwin of the temporarily visited tabpage is unchanged from switch_win visiting it, as before. (Sean Dewar) Maybe restore_win should only restore tp_curwin if `curtab == switchwin->sw_curtab`, in case the user changed tabpages from within win_execute, but not doing that is consistent with the old behaviour. related: vim/vim#14186 https://github.com/vim/vim/commit/e101028a5c896480c61fef7ea16855255925709b
Diffstat (limited to 'test')
-rw-r--r--test/old/testdir/test_execute_func.vim24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/old/testdir/test_execute_func.vim b/test/old/testdir/test_execute_func.vim
index d9909e92a6..ec8ed160c3 100644
--- a/test/old/testdir/test_execute_func.vim
+++ b/test/old/testdir/test_execute_func.vim
@@ -212,4 +212,28 @@ func Test_execute_cmd_with_null()
endif
endfunc
+func Test_win_execute_tabpagewinnr()
+ belowright split
+ tab split
+ belowright split
+ call assert_equal(2, tabpagewinnr(1))
+
+ tabprevious
+ wincmd p
+ call assert_equal(1, tabpagenr())
+ call assert_equal(1, tabpagewinnr(1))
+ call assert_equal(2, tabpagewinnr(2))
+
+ call win_execute(win_getid(1, 2),
+ \ 'call assert_equal(2, tabpagenr())'
+ \ .. '| call assert_equal(1, tabpagewinnr(1))'
+ \ .. '| call assert_equal(1, tabpagewinnr(2))')
+
+ call assert_equal(1, tabpagenr())
+ call assert_equal(1, tabpagewinnr(1))
+ call assert_equal(2, tabpagewinnr(2))
+
+ %bwipe!
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab