Mercurial > vim
diff runtime/doc/eval.txt @ 27459:5825405e4e2c
Update runtime files
Commit: https://github.com/vim/vim/commit/f10911e5db16f1fe6ab519c5d091ad0c1df0d063
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jan 29 22:20:48 2022 +0000
Update runtime files
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 29 Jan 2022 23:30:04 +0100 |
parents | 3649b5a6b1b6 |
children | 063952f68595 |
line wrap: on
line diff
--- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.2. Last change: 2022 Jan 21 +*eval.txt* For Vim version 8.2. Last change: 2022 Jan 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -44,7 +44,8 @@ Profiling is documented at |profiling|. 1. Variables *variables* 1.1 Variable types ~ - *E712* *E896* *E897* *E899* + *E712* *E896* *E897* *E899* *E1098* + *E1107* *E1135* *E1138* There are ten types of variables: *Number* *Integer* @@ -180,7 +181,7 @@ You will not get an error if you try to 1.2 Function references ~ - *Funcref* *E695* *E718* + *Funcref* *E695* *E718* *E1086* A Funcref variable is obtained with the |function()| function, the |funcref()| function or created with the lambda expression |expr-lambda|. It can be used in an expression in the place of a function name, before the parenthesis @@ -835,7 +836,7 @@ In legacy script it is possible to form ============================================================================== 2. Expression syntax *expression-syntax* - + *E1143* Expression syntax summary, from least to most significant: |expr1| expr2 @@ -916,6 +917,9 @@ Example: > All expressions within one level are parsed from left to right. +Expression nesting is limited to 1000 levels deep (300 when build with MSVC) +to avoid running out of stack and crashing. *E1169* + expr1 *expr1* *trinary* *falsy-operator* *??* *E109* ----- @@ -1339,7 +1343,7 @@ Note that the dot is also used for Strin always put spaces around the dot for String concatenation. -expr9(expr1, ...) |Funcref| function call +expr9(expr1, ...) |Funcref| function call *E1085* When expr9 is a |Funcref| type variable, invoke the function it refers to. @@ -1577,7 +1581,7 @@ The first one probably doesn't echo anyt variable (if your shell supports it). -internal variable *expr-variable* *E1015* +internal variable *expr-variable* *E1015* *E1089* ----------------- variable internal variable See below |internal-variables|. @@ -2709,7 +2713,7 @@ See |:verbose-cmd| for more information. command, use line breaks instead of |:bar|: > :exe "func Foo()\necho 'foo'\nendfunc" < - *:delf* *:delfunction* *E131* *E933* + *:delf* *:delfunction* *E131* *E933* *E1084* :delf[unction][!] {name} Delete function {name}. {name} can also be a |Dictionary| entry that is a @@ -2726,8 +2730,11 @@ See |:verbose-cmd| for more information. If "[expr]" is not given, the number 0 is returned. When a function ends without an explicit ":return", the number 0 is returned. - Note that there is no check for unreachable lines, - thus there is no warning if commands follow ":return". + In a :def function *E1095* is given if unreachable + code follows after the `:return`. + In legacy script there is no check for unreachable + lines, thus there is no warning if commands follow + `:return`. If the ":return" is used after a |:try| but before the matching |:finally| (if present), the commands @@ -2746,7 +2753,7 @@ may optionally be following. In the fun as "a:1", "a:2", etc. "a:0" is set to the number of extra arguments (which can be 0). "a:000" is set to a |List| that contains these arguments. Note that "a:1" is the same as "a:000[0]". - *E742* + *E742* *E1090* The a: scope and the variables in it cannot be changed, they are fixed. However, if a composite type is used, such as |List| or |Dictionary| , you can change their contents. Thus you can pass a |List| to a function and have the @@ -3054,7 +3061,7 @@ declarations and assignments do not use from the {expr}. If {var-name} didn't exist yet, it is created. -:let {var-name}[{idx}] = {expr1} *E689* +:let {var-name}[{idx}] = {expr1} *E689* *E1141* Set a list item to the result of the expression {expr1}. {var-name} must refer to a list and {idx} must be a valid index in that list. For nested list @@ -3161,7 +3168,7 @@ declarations and assignments do not use :let &g:{option-name} -= {expr1} Like above, but only set the global value of an option (if there is one). Works like |:setglobal|. - + *E1093* :let [{name1}, {name2}, ...] = {expr1} *:let-unpack* *E687* *E688* {expr1} must evaluate to a |List|. The first item in the list is assigned to {name1}, the second item to @@ -3202,7 +3209,7 @@ declarations and assignments do not use |List| item. *:let=<<* *:let-heredoc* - *E990* *E991* *E172* *E221* + *E990* *E991* *E172* *E221* *E1145* :let {var-name} =<< [trim] {endmarker} text... text... @@ -3355,7 +3362,7 @@ text... :lockvar v :let v = 'asdf' " fails! :unlet v " works -< *E741* *E940* +< *E741* *E940* *E1118* *E1119* *E1120* *E1121* *E1122* If you try to change a locked variable you get an error message: "E741: Value is locked: {name}". If you try to lock or unlock a built-in variable you @@ -3498,7 +3505,7 @@ text... |Blob| does not affect the iteration. :for [{var1}, {var2}, ...] in {listlist} -:endfo[r] +:endfo[r] *E1140* Like ":for" above, but each item in {listlist} must be a list, of which each item is assigned to {var1}, {var2}, etc. Example: > @@ -3601,7 +3608,7 @@ text... |:break|, |:finish|, or |:return|, or by an error or interrupt or exception (see |:throw|). - *:th* *:throw* *E608* + *:th* *:throw* *E608* *E1129* :th[row] {expr1} The {expr1} is evaluated and thrown as an exception. If the ":throw" is used after a |:try| but before the first corresponding |:catch|, commands are skipped