summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0046
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0046')
-rw-r--r--data/vim/patches/8.1.0046256
1 files changed, 256 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0046 b/data/vim/patches/8.1.0046
new file mode 100644
index 000000000..2b9682b93
--- /dev/null
+++ b/data/vim/patches/8.1.0046
@@ -0,0 +1,256 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0046
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0046
+Problem: Loading a session file fails if 'winheight' is a big number.
+Solution: Set 'minwinheight' to zero at first. Don't give an error when
+ setting 'minwinheight' while 'winheight' is a big number.
+ Fix using vertical splits. Fix setting 'minwinwidth'.
+ (closes #2970)
+Files: src/testdir/test_mksession.vim, src/option.c, src/window.c,
+ src/proto/window.pro
+
+
+*** ../vim-8.1.0045/src/testdir/test_mksession.vim 2018-03-09 21:25:55.000000000 +0100
+--- src/testdir/test_mksession.vim 2018-06-12 16:38:40.344105918 +0200
+***************
+*** 106,118 ****
+
+ func Test_mksession_winheight()
+ new
+! set winheight=10 winminheight=2
+ mksession! Xtest_mks.out
+ source Xtest_mks.out
+
+ call delete('Xtest_mks.out')
+ endfunc
+
+ func Test_mksession_arglist()
+ argdel *
+ next file1 file2 file3 file4
+--- 106,127 ----
+
+ func Test_mksession_winheight()
+ new
+! set winheight=10
+! set winminheight=2
+ mksession! Xtest_mks.out
+ source Xtest_mks.out
+
+ call delete('Xtest_mks.out')
+ endfunc
+
++ func Test_mksession_large_winheight()
++ set winheight=999
++ mksession! Xtest_mks_winheight.out
++ set winheight&
++ source Xtest_mks_winheight.out
++ call delete('Xtest_mks_winheight.out')
++ endfunc
++
+ func Test_mksession_arglist()
+ argdel *
+ next file1 file2 file3 file4
+*** ../vim-8.1.0045/src/option.c 2018-06-04 17:28:04.729961269 +0200
+--- src/option.c 2018-06-12 16:34:27.832376913 +0200
+***************
+*** 8796,8801 ****
+--- 8796,8802 ----
+ */
+ if (pp == &p_wh || pp == &p_hh)
+ {
++ // 'winheight' and 'helpheight'
+ if (p_wh < 1)
+ {
+ errmsg = e_positive;
+***************
+*** 8821,8830 ****
+ win_setheight((int)p_hh);
+ }
+ }
+-
+- /* 'winminheight' */
+ else if (pp == &p_wmh)
+ {
+ if (p_wmh < 0)
+ {
+ errmsg = e_positive;
+--- 8822,8830 ----
+ win_setheight((int)p_hh);
+ }
+ }
+ else if (pp == &p_wmh)
+ {
++ // 'winminheight'
+ if (p_wmh < 0)
+ {
+ errmsg = e_positive;
+***************
+*** 8839,8844 ****
+--- 8839,8845 ----
+ }
+ else if (pp == &p_wiw)
+ {
++ // 'winwidth'
+ if (p_wiw < 1)
+ {
+ errmsg = e_positive;
+***************
+*** 8854,8863 ****
+ if (!ONE_WINDOW && curwin->w_width < p_wiw)
+ win_setwidth((int)p_wiw);
+ }
+-
+- /* 'winminwidth' */
+ else if (pp == &p_wmw)
+ {
+ if (p_wmw < 0)
+ {
+ errmsg = e_positive;
+--- 8855,8863 ----
+ if (!ONE_WINDOW && curwin->w_width < p_wiw)
+ win_setwidth((int)p_wiw);
+ }
+ else if (pp == &p_wmw)
+ {
++ // 'winminwidth'
+ if (p_wmw < 0)
+ {
+ errmsg = e_positive;
+***************
+*** 8868,8874 ****
+ errmsg = e_winwidth;
+ p_wmw = p_wiw;
+ }
+! win_setminheight();
+ }
+
+ /* (re)set last window status line */
+--- 8868,8874 ----
+ errmsg = e_winwidth;
+ p_wmw = p_wiw;
+ }
+! win_setminwidth();
+ }
+
+ /* (re)set last window status line */
+*** ../vim-8.1.0045/src/window.c 2018-06-10 14:39:47.022412206 +0200
+--- src/window.c 2018-06-12 16:41:04.447771813 +0200
+***************
+*** 5430,5457 ****
+ }
+
+ /*
+! * Check 'winminheight' for a valid value.
+ */
+ void
+ win_setminheight(void)
+ {
+ int room;
+ int first = TRUE;
+- win_T *wp;
+
+! /* loop until there is a 'winminheight' that is possible */
+ while (p_wmh > 0)
+ {
+! /* TODO: handle vertical splits */
+! room = -p_wh;
+! FOR_ALL_WINDOWS(wp)
+! room += VISIBLE_HEIGHT(wp) - p_wmh;
+! if (room >= 0)
+ break;
+ --p_wmh;
+ if (first)
+ {
+ EMSG(_(e_noroom));
+ first = FALSE;
+ }
+ }
+--- 5430,5481 ----
+ }
+
+ /*
+! * Check 'winminheight' for a valid value and reduce it if needed.
+ */
+ void
+ win_setminheight(void)
+ {
+ int room;
++ int needed;
+ int first = TRUE;
+
+! // loop until there is a 'winminheight' that is possible
+ while (p_wmh > 0)
+ {
+! room = Rows - p_ch;
+! needed = frame_minheight(topframe, NULL);
+! if (room >= needed)
+ break;
+ --p_wmh;
+ if (first)
+ {
+ EMSG(_(e_noroom));
++ first = FALSE;
++ }
++ }
++ }
++
++ /*
++ * Check 'winminwidth' for a valid value and reduce it if needed.
++ */
++ void
++ win_setminwidth(void)
++ {
++ int room;
++ int needed;
++ int first = TRUE;
++
++ // loop until there is a 'winminheight' that is possible
++ while (p_wmw > 0)
++ {
++ room = Columns;
++ needed = frame_minwidth(topframe, NULL);
++ if (room >= needed)
++ break;
++ --p_wmw;
++ if (first)
++ {
++ EMSG(_(e_noroom));
+ first = FALSE;
+ }
+ }
+*** ../vim-8.1.0045/src/proto/window.pro 2018-05-17 13:52:56.000000000 +0200
+--- src/proto/window.pro 2018-06-12 16:34:10.876376437 +0200
+***************
+*** 54,59 ****
+--- 54,60 ----
+ void win_setwidth(int width);
+ void win_setwidth_win(int width, win_T *wp);
+ void win_setminheight(void);
++ void win_setminwidth(void);
+ void win_drag_status_line(win_T *dragwin, int offset);
+ void win_drag_vsep_line(win_T *dragwin, int offset);
+ void set_fraction(win_T *wp);
+*** ../vim-8.1.0045/src/version.c 2018-06-12 15:22:39.640579965 +0200
+--- src/version.c 2018-06-12 16:01:12.917283351 +0200
+***************
+*** 763,764 ****
+--- 763,766 ----
+ { /* Add new patch number below this line */
++ /**/
++ 46,
+ /**/
+
+--
+He who laughs last, thinks slowest.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///