summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-01-21 21:42:31 +0100
committerBram Moolenaar <Bram@vim.org>2021-01-21 21:42:31 +0100
commit57d5a01cb45d6edb16c3835a49b42d6d8fc0163e (patch)
tree114ec9c7507b14f7a4de6495a89310183e7f04da
parente32e516dfa46e9c5965d278f96aaf57573de8ac4 (diff)
downloadvim-git-8.2.2388.tar.gz
patch 8.2.2388: no easy way to get the maximum or mininum number valuev8.2.2388
Problem: No easy way to get the maximum or mininum number value. Solution: Add v:numbermax and v:numbermin.
-rw-r--r--runtime/doc/eval.txt8
-rw-r--r--src/evalvars.c4
-rw-r--r--src/testdir/test_eval_stuff.vim9
-rw-r--r--src/version.c2
-rw-r--r--src/vim.h54
5 files changed, 47 insertions, 30 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 217e69dc0..dd5bc939d 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 8.2. Last change: 2021 Jan 17
+*eval.txt* For Vim version 8.2. Last change: 2021 Jan 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2082,6 +2082,12 @@ v:null An empty String. Used to put "null" in JSON. See
That is so that eval() can parse the string back to the same
value. Read-only.
+ *v:numbermax* *numbermax-variable*
+v:numbermax Maximum value of a number.
+
+ *v:numbermix* *numbermix-variable*
+v:numbermin Minimum value of a number (negative)
+
*v:numbersize* *numbersize-variable*
v:numbersize Number of bits in a Number. This is normally 64, but on some
systems it may be 32.
diff --git a/src/evalvars.c b/src/evalvars.c
index 179953178..dfc8e63f5 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -122,6 +122,8 @@ static struct vimvar
{VV_NAME("true", VAR_BOOL), VV_RO},
{VV_NAME("none", VAR_SPECIAL), VV_RO},
{VV_NAME("null", VAR_SPECIAL), VV_RO},
+ {VV_NAME("numbermax", VAR_NUMBER), VV_RO},
+ {VV_NAME("numbermin", VAR_NUMBER), VV_RO},
{VV_NAME("numbersize", VAR_NUMBER), VV_RO},
{VV_NAME("vim_did_enter", VAR_NUMBER), VV_RO},
{VV_NAME("testing", VAR_NUMBER), 0},
@@ -228,6 +230,8 @@ evalvars_init(void)
set_vim_var_nr(VV_TRUE, VVAL_TRUE);
set_vim_var_nr(VV_NONE, VVAL_NONE);
set_vim_var_nr(VV_NULL, VVAL_NULL);
+ set_vim_var_nr(VV_NUMBERMAX, VARNUM_MAX);
+ set_vim_var_nr(VV_NUMBERMIN, VARNUM_MIN);
set_vim_var_nr(VV_NUMBERSIZE, sizeof(varnumber_T) * 8);
set_vim_var_nr(VV_TYPE_NUMBER, VAR_TYPE_NUMBER);
diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim
index e5f521c85..52e8df924 100644
--- a/src/testdir/test_eval_stuff.vim
+++ b/src/testdir/test_eval_stuff.vim
@@ -256,10 +256,13 @@ func Test_execute_cmd_with_null()
endif
endfunc
-func Test_numbersize()
- " This will fail on systems without 64 bit int support or when not configured
- " correctly.
+func Test_number_max_min_size()
+ " This will fail on systems without 64 bit number support or when not
+ " configured correctly.
call assert_equal(64, v:numbersize)
+
+ call assert_true(v:numbermin < -9999999)
+ call assert_true(v:numbermax > 9999999)
endfunc
func Assert_reg(name, type, value, valuestr, expr, exprstr)
diff --git a/src/version.c b/src/version.c
index c911ed460..6d99990cd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2388,
+/**/
2387,
/**/
2386,
diff --git a/src/vim.h b/src/vim.h
index 7ba728a37..de2482e8b 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1975,32 +1975,34 @@ typedef int sock_T;
#define VV_TRUE 69
#define VV_NONE 70
#define VV_NULL 71
-#define VV_NUMBERSIZE 72
-#define VV_VIM_DID_ENTER 73
-#define VV_TESTING 74
-#define VV_TYPE_NUMBER 75
-#define VV_TYPE_STRING 76
-#define VV_TYPE_FUNC 77
-#define VV_TYPE_LIST 78
-#define VV_TYPE_DICT 79
-#define VV_TYPE_FLOAT 80
-#define VV_TYPE_BOOL 81
-#define VV_TYPE_NONE 82
-#define VV_TYPE_JOB 83
-#define VV_TYPE_CHANNEL 84
-#define VV_TYPE_BLOB 85
-#define VV_TERMRFGRESP 86
-#define VV_TERMRBGRESP 87
-#define VV_TERMU7RESP 88
-#define VV_TERMSTYLERESP 89
-#define VV_TERMBLINKRESP 90
-#define VV_EVENT 91
-#define VV_VERSIONLONG 92
-#define VV_ECHOSPACE 93
-#define VV_ARGV 94
-#define VV_COLLATE 95
-#define VV_EXITING 96
-#define VV_LEN 97 // number of v: vars
+#define VV_NUMBERMAX 72
+#define VV_NUMBERMIN 73
+#define VV_NUMBERSIZE 74
+#define VV_VIM_DID_ENTER 75
+#define VV_TESTING 76
+#define VV_TYPE_NUMBER 77
+#define VV_TYPE_STRING 78
+#define VV_TYPE_FUNC 79
+#define VV_TYPE_LIST 80
+#define VV_TYPE_DICT 81
+#define VV_TYPE_FLOAT 82
+#define VV_TYPE_BOOL 83
+#define VV_TYPE_NONE 84
+#define VV_TYPE_JOB 85
+#define VV_TYPE_CHANNEL 86
+#define VV_TYPE_BLOB 87
+#define VV_TERMRFGRESP 88
+#define VV_TERMRBGRESP 89
+#define VV_TERMU7RESP 90
+#define VV_TERMSTYLERESP 91
+#define VV_TERMBLINKRESP 92
+#define VV_EVENT 93
+#define VV_VERSIONLONG 94
+#define VV_ECHOSPACE 95
+#define VV_ARGV 96
+#define VV_COLLATE 97
+#define VV_EXITING 98
+#define VV_LEN 99 // number of v: vars
// used for v_number in VAR_BOOL and VAR_SPECIAL
#define VVAL_FALSE 0L // VAR_BOOL