1
0
forked from aniani/vim

patch 8.1.1554: docs and tests for :const can be improved

Problem:    Docs and tests for :const can be improved.
Solution:   Improve documentation, add a few more tests. (Ryuichi Hayashida,
            closes #4551)
This commit is contained in:
Bram Moolenaar
2019-06-16 15:41:58 +02:00
parent dc2ce58b5a
commit 1c196e7b17
3 changed files with 34 additions and 3 deletions

View File

@@ -11619,10 +11619,9 @@ text...
If the system does not support deleting an environment If the system does not support deleting an environment
variable, it is made empty. variable, it is made empty.
*:cons* *:const* *E996* *:cons* *:const*
:cons[t] {var-name} = {expr1} :cons[t] {var-name} = {expr1}
:cons[t] [{name1}, {name2}, ...] = {expr1} :cons[t] [{name1}, {name2}, ...] = {expr1}
:cons[t] [{name1}, {name2}, ...] .= {expr1}
:cons[t] [{name}, ..., ; {lastname}] = {expr1} :cons[t] [{name}, ..., ; {lastname}] = {expr1}
:cons[t] {var-name} =<< [trim] {marker} :cons[t] {var-name} =<< [trim] {marker}
text... text...
@@ -11641,7 +11640,11 @@ text...
|:const| does not allow to for changing a variable. > |:const| does not allow to for changing a variable. >
:let x = 1 :let x = 1
:const x = 2 " Error! :const x = 2 " Error!
< < *E996*
Note that environment variables, option values and
register values cannot be used here, since they cannot
be locked.
:lockv[ar][!] [depth] {name} ... *:lockvar* *:lockv* :lockv[ar][!] [depth] {name} ... *:lockvar* *:lockv*
Lock the internal variable {name}. Locking means that Lock the internal variable {name}. Locking means that
it can no longer be changed (until it is unlocked). it can no longer be changed (until it is unlocked).

View File

@@ -21,6 +21,21 @@ func Test_define_var_with_lock()
hello hello
EOS EOS
call assert_true(exists('i'))
call assert_true(exists('f'))
call assert_true(exists('s'))
call assert_true(exists('F'))
call assert_true(exists('l'))
call assert_true(exists('d'))
if has('channel')
call assert_true(exists('j'))
call assert_true(exists('c'))
endif
call assert_true(exists('b'))
call assert_true(exists('n'))
call assert_true(exists('bl'))
call assert_true(exists('here'))
call assert_fails('let i = 1', 'E741:') call assert_fails('let i = 1', 'E741:')
call assert_fails('let f = 1.1', 'E741:') call assert_fails('let f = 1.1', 'E741:')
call assert_fails('let s = "vim"', 'E741:') call assert_fails('let s = "vim"', 'E741:')
@@ -218,6 +233,17 @@ func Test_const_with_special_variables()
call assert_fails('const &g:encoding = "utf-8"', 'E996:') call assert_fails('const &g:encoding = "utf-8"', 'E996:')
endfunc endfunc
func Test_const_with_eval_name()
let s = 'foo'
" eval name with :const should work
const abc_{s} = 1
const {s}{s} = 1
let s2 = 'abc_foo'
call assert_fails('const {s2} = "bar"', 'E995:')
endfunc
func Test_lock_depth_is_1() func Test_lock_depth_is_1()
const l = [1, 2, 3] const l = [1, 2, 3]
const d = {'foo': 10} const d = {'foo': 10}

View File

@@ -777,6 +777,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1554,
/**/ /**/
1553, 1553,
/**/ /**/