summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-12-10 11:17:11 +0000
committerBram Moolenaar <Bram@vim.org>2022-12-10 11:17:11 +0000
commit6c87bbb4e45515e70ac1728cabd1451063bf427d (patch)
tree575f7a17f99c68755647ef8265af11dd28f95065
parentc51a376265708e49a46832816077b6dd27d12c0c (diff)
patch 9.0.1044: setting window height using Python may cause errorsv9.0.1044
Problem: Setting window height using Python may cause errors. Solution: When setting "curwin" also set "curbuf". (closes #11687)
-rw-r--r--src/if_py_both.h4
-rw-r--r--src/testdir/test_python3.vim18
-rw-r--r--src/version.c2
3 files changed, 24 insertions, 0 deletions
diff --git a/src/if_py_both.h b/src/if_py_both.h
index 8dd7f09b55..110de234fd 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -4081,10 +4081,12 @@ WindowSetattr(WindowObject *self, char *name, PyObject *valObject)
#endif
savewin = curwin;
curwin = self->win;
+ curbuf = curwin->w_buffer;
VimTryStart();
win_setheight((int) height);
curwin = savewin;
+ curbuf = curwin->w_buffer;
if (VimTryEnd())
return -1;
@@ -4103,10 +4105,12 @@ WindowSetattr(WindowObject *self, char *name, PyObject *valObject)
#endif
savewin = curwin;
curwin = self->win;
+ curbuf = curwin->w_buffer;
VimTryStart();
win_setwidth((int) width);
curwin = savewin;
+ curbuf = curwin->w_buffer;
if (VimTryEnd())
return -1;
diff --git a/src/testdir/test_python3.vim b/src/testdir/test_python3.vim
index 56d20796af..5de94649ac 100644
--- a/src/testdir/test_python3.vim
+++ b/src/testdir/test_python3.vim
@@ -540,6 +540,24 @@ func Test_python3_window()
%bw!
endfunc
+" This was causing trouble because "curbuf" was not matching curwin->w_buffer
+func Test_python3_window_set_height()
+ enew!
+ call setline(1, ['aaa', 'bbb', 'ccc'])
+ call cursor(2, 1)
+ set foldmethod=expr
+ new
+ wincmd w
+ python3 vim.windows[0].height = 5
+ call assert_equal(5, winheight(1))
+
+ call feedkeys('j', 'xt')
+ call assert_equal(3, getpos('.')[1])
+
+ bwipe!
+ bwipe!
+endfunc
+
" Test for the python List object
func Test_python3_list()
" Try to convert a null List
diff --git a/src/version.c b/src/version.c
index 0acd21764f..bc22ab1277 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1044,
+/**/
1043,
/**/
1042,