Mercurial > vim
diff runtime/doc/vim9.txt @ 24387:5c98ea5f5d6e
Update runtime files
Commit: https://github.com/vim/vim/commit/130cbfc31235c6cb52ffe718ea0a5bb50fbbc9fd
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Apr 7 21:07:20 2021 +0200
Update runtime files
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 07 Apr 2021 21:15:05 +0200 |
parents | 4ab4ef0c48b1 |
children | 96e0b898d5b4 |
line wrap: on
line diff
--- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 8.2. Last change: 2021 Mar 30 +*vim9.txt* For Vim version 8.2. Last change: 2021 Apr 06 VIM REFERENCE MANUAL by Bram Moolenaar @@ -305,13 +305,21 @@ Variables, functions and function argume or imported variables and functions in the same script file. Variables may shadow Ex commands, rename the variable if needed. -Global variables and user defined functions must be prefixed with "g:", also -at the script level. > +Global variables must be prefixed with "g:", also at the script level. > vim9script var script_local = 'text' g:global = 'value' var Funcref = g:ThatFunction +Global functions must be prefixed with "g:" when defining them, but can be +called without "g:". > + vim9script + def g:GlobalFunc(): string + return 'text' + enddef + echo GlobalFunc() +The "g:" prefix is not needed for auto-load functions. + Since `&opt = value` is now assigning a value to option "opt", ":&" cannot be used to repeat a `:substitute` command. @@ -401,7 +409,7 @@ number of arguments and any return type. Lambda using => instead of -> ~ - + *vim9-lambda* In legacy script there can be confusion between using "->" for a method call and for a lambda. Also, when a "{" is found the parser needs to figure out if it is the start of a lambda or a dictionary, which is now more complicated @@ -425,12 +433,19 @@ But you can use a backslash to concatena filter(list, (k, \ v) \ => v > 0) - +< *inline-function* Additionally, a lambda can contain statements in {}: > var Lambda = (arg) => { g:was_called = 'yes' return expression } +This can be useful for a timer, for example: > + var count = 0 + var timer = timer_start(500, (_) => { + count += 1 + echom 'Handler called ' .. count + }, {repeat: 3}) + The ending "}" must be at the start of a line. It can be followed by other characters, e.g.: > @@ -836,7 +851,7 @@ Patterns are used like 'magic' is set, u The 'edcompatible' option value is not used. The 'gdefault' option value is not used. -You may also find this wiki useful. It was written by an early adoptor of +You may also find this wiki useful. It was written by an early adopter of Vim9 script: https://github.com/lacygoill/wiki/blob/master/vim/vim9.md ============================================================================== @@ -881,14 +896,14 @@ THIS IS STILL UNDER DEVELOPMENT - ANYTHI :enddef End of a function defined with `:def`. It should be on a line by its own. -You may also find this wiki useful. It was written by an early adoptor of +You may also find this wiki useful. It was written by an early adopter of Vim9 script: https://github.com/lacygoill/wiki/blob/master/vim/vim9.md If the script the function is defined in is Vim9 script, then script-local variables can be accessed without the "s:" prefix. They must be defined before the function is compiled. If the script the function is defined in is legacy script, then script-local variables must be accessed with the "s:" -prefix and they do not need to exist (they can be deleted any time). +prefix if they do not exist at the time of compiling. *:defc* *:defcompile* :defc[ompile] Compile functions defined in the current script that @@ -1073,12 +1088,15 @@ dictionary. If there is a mix of types, ['a', 'b', 'c'] list<string> [1, 'x', 3] list<any> +For script-local variables in Vim9 script the type is checked, also when the +variable was declared in a legacy function. + Stricter type checking ~ *type-checking* In legacy Vim script, where a number was expected, a string would be automatically converted to a number. This was convenient for an actual number -such as "123", but leads to unexpected problems (but no error message) if the +such as "123", but leads to unexpected problems (and no error message) if the string doesn't start with a number. Quite often this leads to hard-to-find bugs.