patch 8.0.0253: error when loading session if winminheight is 2
Problem: When creating a session when winminheight is 2 or larger and
loading that session gives an error.
Solution: Also set winminheight before setting winheight to 1. (Rafael
Bodill, neovim #5717)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index bfb4c88..192f45d 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -11197,8 +11197,10 @@
* resized when moving between windows.
* Do this before restoring the view, so that the topline and the
* cursor can be set. This is done again below.
+ * winminheight and winminwidth need to be set to avoid an error if the
+ * user has set winheight or winwidth.
*/
- if (put_line(fd, "set winheight=1 winwidth=1") == FAIL)
+ if (put_line(fd, "set winminheight=1 winheight=1 winminwidth=1 winwidth=1") == FAIL)
return FAIL;
if (nr > 1 && ses_winsizes(fd, restore_size, tab_firstwin) == FAIL)
return FAIL;
@@ -11268,6 +11270,10 @@
if (fprintf(fd, "set winheight=%ld winwidth=%ld shortmess=%s",
p_wh, p_wiw, p_shm) < 0 || put_eol(fd) == FAIL)
return FAIL;
+ /* Re-apply 'winminheight' and 'winminwidth'. */
+ if (fprintf(fd, "set winminheight=%ld winminwidth=%ld",
+ p_wmh, p_wmw) < 0 || put_eol(fd) == FAIL)
+ return FAIL;
/*
* Lastly, execute the x.vim file if it exists.
diff --git a/src/testdir/test_mksession.vim b/src/testdir/test_mksession.vim
index c19f3c5..77025c8 100644
--- a/src/testdir/test_mksession.vim
+++ b/src/testdir/test_mksession.vim
@@ -101,4 +101,13 @@
let &wrap = wrap_save
endfunc
+func Test_mksession_winheight()
+ new
+ set winheight=10 winminheight=2
+ mksession! test_mks.out
+ source test_mks.out
+
+ " call delete('test_mks.out')
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 8645713..19ba72e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 253,
+/**/
252,
/**/
251,