changeset 36557:9f484a1841eb draft v9.1.0864

patch 9.1.0864: message history is fixed to 200 Commit: https://github.com/vim/vim/commit/4bd9b2b2467e696061104a029000e9824c6c609e Author: Shougo Matsushita <Shougo.Matsu@gmail.com> Date: Thu Nov 14 22:31:48 2024 +0100 patch 9.1.0864: message history is fixed to 200 Problem: message history is fixed to 200 Solution: Add the 'msghistory' option, increase the default value to 500 (Shougo Matsushita) closes: #16048 Co-authored-by: Milly <milly.ca@gmail.com> Signed-off-by: Shougo Matsushita <Shougo.Matsu@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 14 Nov 2024 22:45:04 +0100
parents 51d6800d9917
children 8de347d3afca
files runtime/doc/message.txt runtime/doc/options.txt runtime/doc/tags runtime/doc/version9.txt runtime/optwin.vim src/feature.h src/message.c src/option.c src/option.h src/optiondefs.h src/testdir/gen_opt_test.vim src/testdir/test_options.vim src/version.c
diffstat 13 files changed, 36 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/message.txt
+++ b/runtime/doc/message.txt
@@ -1,4 +1,4 @@
-*message.txt*   For Vim version 9.1.  Last change: 2024 Mar 13
+*message.txt*   For Vim version 9.1.  Last change: 2024 Nov 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -29,7 +29,7 @@ depends on the 'shortmess' option.
 				Clear messages, keeping only the {count} most
 				recent ones.
 
-The number of remembered messages is fixed at 200.
+The number of remembered messages is determined by the 'msghistory' option.
 
 								*g<*
 The "g<" command can be used to see the last page of previous command output.
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -4440,7 +4440,8 @@ A jump table for the options with a shor
 			global
 	A history of ":" commands, and a history of previous search patterns
 	is remembered.  This option decides how many entries may be stored in
-	each of these histories (see |cmdline-editing|).
+	each of these histories (see |cmdline-editing| and 'msghistory' for
+	the number of messages to remember).
 	The maximum value is 10000.
 	NOTE: This option is set to the Vi default value when 'compatible' is
 	set and to the Vim default value when 'compatible' is reset.
@@ -5917,6 +5918,12 @@ A jump table for the options with a shor
 	time in msec between two mouse clicks for the second click to be
 	recognized as a multi click.
 
+						*'msghistory'* *'mhi'*
+'msghistory' 'mhi'	number	(default 500)
+			global
+	Determines how many entries are remembered in the |:messages| history.
+	The maximum value is 10000.
+
 						    *'mzquantum'* *'mzq'*
 'mzquantum' 'mzq'	number	(default 100)
 			global
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -501,6 +501,7 @@
 'mesg'	vi_diff.txt	/*'mesg'*
 'mfd'	options.txt	/*'mfd'*
 'mh'	options.txt	/*'mh'*
+'mhi'	options.txt	/*'mhi'*
 'mis'	options.txt	/*'mis'*
 'mkspellmem'	options.txt	/*'mkspellmem'*
 'ml'	options.txt	/*'ml'*
@@ -531,6 +532,7 @@
 'mousetime'	options.txt	/*'mousetime'*
 'mp'	options.txt	/*'mp'*
 'mps'	options.txt	/*'mps'*
+'msghistory'	options.txt	/*'msghistory'*
 'msm'	options.txt	/*'msm'*
 'mzq'	options.txt	/*'mzq'*
 'mzquantum'	options.txt	/*'mzquantum'*
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -1,4 +1,4 @@
-*version9.txt*  For Vim version 9.1.  Last change: 2024 Nov 11
+*version9.txt*  For Vim version 9.1.  Last change: 2024 Nov 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -41659,6 +41659,7 @@ Options: ~
 			popup
 'findfunc'		Vim function to obtain the results for a |:find|
 			command
+'msghistory'		Max number of messages to remember
 'winfixbuf'		Keep buffer focused in a window
 'tabclose'		Which tab page to focus after closing a tab page
 't_xo'			Terminal uses XON/XOFF handshaking (e.g. vt420)
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -749,6 +749,8 @@ call <SID>AddOption("terse", gettext("ad
 call <SID>BinOptionG("terse", &terse)
 call <SID>AddOption("shortmess", gettext("list of flags to make messages shorter"))
 call <SID>OptionG("shm", &shm)
+call <SID>AddOption("msghistory", gettext("how many messages are remembered"))
+call append("$", " \tset mhi=" . &mhi)
 call <SID>AddOption("showcmd", gettext("show (partial) command keys in location given by 'showcmdloc'"))
 let &sc = s:old_sc
 call <SID>BinOptionG("sc", &sc)
--- a/src/feature.h
+++ b/src/feature.h
@@ -138,11 +138,6 @@
  */
 
 /*
- * Message history is fixed at 200 messages.
- */
-#define MAX_MSG_HIST_LEN 200
-
-/*
  * +folding		Fold lines.
  */
 #ifdef FEAT_NORMAL
--- a/src/message.c
+++ b/src/message.c
@@ -1013,7 +1013,7 @@ add_msg_hist(
 	return;
 
     // Don't let the message history get too big
-    while (msg_hist_len > MAX_MSG_HIST_LEN)
+    while (msg_hist_len > p_mhi)
 	(void)delete_first_msg();
 
     // allocate an entry and add the message at the end of the history
--- a/src/option.c
+++ b/src/option.c
@@ -4914,6 +4914,16 @@ check_num_option_bounds(
 	errmsg = e_invalid_argument;
 	p_hi = 10000;
     }
+    if (p_mhi < 0)
+    {
+	errmsg = e_argument_must_be_positive;
+	p_mhi = 0;
+    }
+    else if (p_mhi > 10000)
+    {
+	errmsg = e_invalid_argument;
+	p_mhi = 10000;
+    }
     if (p_re < 0 || p_re > 2)
     {
 	errmsg = e_invalid_argument;
--- a/src/option.h
+++ b/src/option.h
@@ -794,6 +794,7 @@ EXTERN int	p_mousemev;	// 'mousemoveeven
 #endif
 EXTERN long	p_mouset;	// 'mousetime'
 EXTERN int	p_more;		// 'more'
+EXTERN long	p_mhi;		// 'msghistory'
 #ifdef FEAT_MZSCHEME
 EXTERN long	p_mzq;		// 'mzquantum
 # if defined(DYNAMIC_MZSCHEME)
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -1778,6 +1778,9 @@ static struct vimoption options[] =
     {"mousetime",   "mouset",	P_NUM|P_VI_DEF,
 			    (char_u *)&p_mouset, PV_NONE, NULL, NULL,
 			    {(char_u *)500L, (char_u *)0L} SCTX_INIT},
+    {"msghistory","mhi",    P_NUM|P_VI_DEF,
+			    (char_u *)&p_mhi, PV_NONE, NULL, NULL,
+			    {(char_u *)500L, (char_u *)0L} SCTX_INIT},
     {"mzquantum",  "mzq",   P_NUM,
 #ifdef FEAT_MZSCHEME
 			    (char_u *)&p_mzq, PV_NONE, did_set_mzquantum, NULL,
--- a/src/testdir/gen_opt_test.vim
+++ b/src/testdir/gen_opt_test.vim
@@ -85,6 +85,7 @@ let test_values = {
       \ 'imstyle': [[0, 1], [-1, 2, 999]],
       \ 'lines': [[2, 24, 1000], [-1, 0, 1]],
       \ 'linespace': [[-1, 0, 2, 4, 999], ['']],
+      \ 'msghistory': [[0, 1, 100, 10000], [-1, 10001]],
       \ 'numberwidth': [[1, 4, 8, 10, 11, 20], [-1, 0, 21]],
       \ 'regexpengine': [[0, 1, 2], [-1, 3, 999]],
       \ 'report': [[0, 1, 2, 9999], [-1]],
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -732,6 +732,7 @@ func Test_set_option_errors()
   call assert_fails('set backupcopy=', 'E474:')
   call assert_fails('set regexpengine=3', 'E474:')
   call assert_fails('set history=10001', 'E474:')
+  call assert_fails('set msghistory=10001', 'E474:')
   call assert_fails('set numberwidth=21', 'E474:')
   call assert_fails('set colorcolumn=-a', 'E474:')
   call assert_fails('set colorcolumn=a', 'E474:')
@@ -745,6 +746,7 @@ func Test_set_option_errors()
   endif
   call assert_fails('set helpheight=-1', 'E487:')
   call assert_fails('set history=-1', 'E487:')
+  call assert_fails('set msghistory=-1', 'E487:')
   call assert_fails('set report=-1', 'E487:')
   call assert_fails('set shiftwidth=-1', 'E487:')
   call assert_fails('set sidescroll=-1', 'E487:')
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    864,
+/**/
     863,
 /**/
     862,