diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-12-10 11:17:11 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-12-10 11:17:11 +0000 |
commit | 6c87bbb4e45515e70ac1728cabd1451063bf427d (patch) | |
tree | 575f7a17f99c68755647ef8265af11dd28f95065 | |
parent | c51a376265708e49a46832816077b6dd27d12c0c (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.h | 4 | ||||
-rw-r--r-- | src/testdir/test_python3.vim | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |