diff options
Diffstat (limited to 'runtime/doc')
-rw-r--r-- | runtime/doc/autocmd.txt | 11 | ||||
-rw-r--r-- | runtime/doc/eval.txt | 7 | ||||
-rw-r--r-- | runtime/doc/gui.txt | 7 | ||||
-rw-r--r-- | runtime/doc/index.txt | 2 | ||||
-rw-r--r-- | runtime/doc/map.txt | 11 | ||||
-rw-r--r-- | runtime/doc/options.txt | 5 | ||||
-rw-r--r-- | runtime/doc/quickfix.txt | 25 | ||||
-rw-r--r-- | runtime/doc/tags | 4 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 51 | ||||
-rw-r--r-- | runtime/doc/usr_02.txt | 4 | ||||
-rw-r--r-- | runtime/doc/vim9.txt | 93 |
11 files changed, 128 insertions, 92 deletions
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index 328d6ff6a5..ee2dc562b2 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 8.2. Last change: 2021 Mar 13 +*autocmd.txt* For Vim version 8.2. Last change: 2021 Apr 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1522,7 +1522,14 @@ option will not cause any commands to be executed. loaded buffer. The current buffer is done last. Note that [fname] is used to select the autocommands, - not the buffers to which they are applied. + not the buffers to which they are applied. Example: > + augroup mine + autocmd! + autocmd FileType * echo expand('<amatch>') + augroup END + doautoall mine FileType Loaded-Buffer +< Sourcing this script, you'll see as many + "Loaded-Buffer" echoed as there are loaded buffers. Careful: Don't use this for autocommands that delete a buffer, change to another buffer or change the diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 798f58da54..920ee10b22 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 Apr 07 +*eval.txt* For Vim version 8.2. Last change: 2021 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1962,6 +1962,9 @@ v:fcs_choice What should happen after a |FileChangedShell| event was The default is empty. If another (invalid) value is used then Vim behaves like it is empty, there is no warning message. + *v:fname* *fname-variable* +v:fname The file name set by 'includeexpr'. Empty otherwise. + *v:fname_in* *fname_in-variable* v:fname_in The name of the input file. Valid while evaluating: option used for ~ @@ -5775,7 +5778,6 @@ getmousepos() *getmousepos()* If the mouse is over a popup window then that window is used. - When using |getchar()| the Vim variables |v:mouse_lnum|, |v:mouse_col| and |v:mouse_winid| also provide these values. @@ -6721,6 +6723,7 @@ islocked({expr}) *islocked()* *E786* < When {expr} is a variable that does not exist you get an error message. Use |exists()| to check for existence. + In Vim9 script it does not work for local variables. Can also be used as a |method|: > GetName()->islocked() diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt index ac8febebee..c93a050480 100644 --- a/runtime/doc/gui.txt +++ b/runtime/doc/gui.txt @@ -1,4 +1,4 @@ -*gui.txt* For Vim version 8.2. Last change: 2020 Sep 28 +*gui.txt* For Vim version 8.2. Last change: 2021 May 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -620,6 +620,11 @@ expression register: > :amenu Insert.foobar "='foobar'<CR>P +The special text <Cmd> begins a "command menu", it executes the command +directly without changing modes. Where you might use ":...<CR>" you can +instead use "<Cmd>...<CR>". See |<Cmd>| for more info. Example: > + anoremenu File.Next <Cmd>next<CR> + Note that the '<' and 'k' flags in 'cpoptions' also apply here (when included they make the <> form and raw key codes not being recognized). diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index f0e8f30fae..57493097b1 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 8.2. Last change: 2021 Mar 22 +*index.txt* For Vim version 8.2. Last change: 2021 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index 47e706bc22..13b2c2efca 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 8.2. Last change: 2021 Mar 17 +*map.txt* For Vim version 8.2. Last change: 2021 Apr 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -244,9 +244,12 @@ have a look at |maparg()|. If the first argument to one of these commands is "<expr>" and it is used to define a new mapping or abbreviation, the argument is an expression. The expression is evaluated to obtain the {rhs} that is used. Example: > - :inoremap <expr> . InsertDot() -The result of the InsertDot() function will be inserted. It could check the + :inoremap <expr> . <SID>InsertDot() +The result of the s:InsertDot() function will be inserted. It could check the text before the cursor and start omni completion when some condition is met. +Using a script-local function is preferred, to avoid polluting the global +namespace. Use <SID> in the RHS so that the script that the mapping was +defined in can be found. For abbreviations |v:char| is set to the character that was typed to trigger the abbreviation. You can use this to decide how to expand the {lhs}. You @@ -261,7 +264,7 @@ input. Example: > call popup_create(... arguments ...) return "\<Ignore>" endfunc - nnoremap <expr> <F3> <Sid>OpenPopup() + nnoremap <expr> <F3> <SID>OpenPopup() Also, keep in mind that the expression may be evaluated when looking for typeahead, before the previous command has been executed. For example: > diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 266ab46e3f..84969b23f6 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 8.2. Last change: 2021 Apr 17 +*options.txt* For Vim version 8.2. Last change: 2021 Apr 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -4564,7 +4564,8 @@ A jump table for the options with a short description can be found at |Q_op|. Keywords are used in searching and recognizing with many commands: "w", "*", "[i", etc. It is also used for "\k" in a |pattern|. See 'isfname' for a description of the format of this option. For '@' - characters above 255 check the "word" character class. + characters above 255 check the "word" character class (any character + that is not white space or punctuation). For C programs you could use "a-z,A-Z,48-57,_,.,-,>". For a help file it is set to all non-blank printable characters except '*', '"' and '|' (so that CTRL-] on a command finds the help for that diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index ae29987940..fcade001ae 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 8.2. Last change: 2021 Feb 05 +*quickfix.txt* For Vim version 8.2. Last change: 2021 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1013,8 +1013,6 @@ commands can be combined to create a NewGrep command: > the error list to the matches. Files matching 'wildignore' are ignored; files in 'suffixes' are searched last. - Without the 'g' flag each line is added only once. - With 'g' every match is added. {pattern} is a Vim search pattern. Instead of enclosing it in / any non-ID character (see @@ -1026,6 +1024,22 @@ commands can be combined to create a NewGrep command: > If {pattern} is empty (e.g. // is specified), the last used search pattern is used. |last-pattern| + Flags: + 'g' Without the 'g' flag each line is added only + once. With 'g' every match is added. + + 'j' Without the 'j' flag Vim jumps to the first + match. With 'j' only the quickfix list is + updated. With the [!] any changes in the current + buffer are abandoned. + + 'f' When the 'f' flag is specified, fuzzy string + matching is used to find matching lines. In this + case, {pattern} is treated as a literal string + instead of a regular expression. See + |matchfuzzy()| for more info about fuzzy + matching. + |QuickFixCmdPre| and |QuickFixCmdPost| are triggered. A file that is opened for matching may use a buffer number, but it is reused if possible to avoid @@ -1038,11 +1052,6 @@ commands can be combined to create a NewGrep command: > Useful if you only want to check if there is a match and quit quickly when it's found. - Without the 'j' flag Vim jumps to the first match. - With 'j' only the quickfix list is updated. - With the [!] any changes in the current buffer are - abandoned. - Every second or so the searched file name is displayed to give you an idea of the progress made. Examples: > diff --git a/runtime/doc/tags b/runtime/doc/tags index 2af7217cc1..cdaa66417a 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -2630,6 +2630,8 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* :left change.txt /*:left* :lefta windows.txt /*:lefta* :leftabove windows.txt /*:leftabove* +:leg vim9.txt /*:leg* +:legacy vim9.txt /*:legacy* :let eval.txt /*:let* :let%= eval.txt /*:let%=* :let+= eval.txt /*:let+=* @@ -6439,6 +6441,7 @@ floating-point-format eval.txt /*floating-point-format* floating-point-precision eval.txt /*floating-point-precision* floor() eval.txt /*floor()* fmod() eval.txt /*fmod()* +fname-variable eval.txt /*fname-variable* fname_diff-variable eval.txt /*fname_diff-variable* fname_in-variable eval.txt /*fname_in-variable* fname_new-variable eval.txt /*fname_new-variable* @@ -9875,6 +9878,7 @@ v:exiting eval.txt /*v:exiting* v:false eval.txt /*v:false* v:fcs_choice eval.txt /*v:fcs_choice* v:fcs_reason eval.txt /*v:fcs_reason* +v:fname eval.txt /*v:fname* v:fname_diff eval.txt /*v:fname_diff* v:fname_in eval.txt /*v:fname_in* v:fname_new eval.txt /*v:fname_new* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 612e28c89e..955c3f6d9a 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 8.2. Last change: 2021 Apr 21 +*todo.txt* For Vim version 8.2. Last change: 2021 Apr 29 VIM REFERENCE MANUAL by Bram Moolenaar @@ -39,13 +39,6 @@ browser use: https://github.com/vim/vim/issues/1234 -------------------- Known bugs and current work ----------------------- Vim9 - Make everything work: -- Compile builtin functions that access local variables: - islocked() -- When evaluating constants for script variables, some functions could work: - has('asdf'), len('string') - eval_variable(). Should pass the ".xxx" that follows and return that. -- Make "++nr" work. "++g:count" doesn't work, thinks it is a range. -- Reload: How to make sure type of script function hasn't changed? - expandcmd() with `=expr` in filename uses legacy expression. - eval_expr() in ex_cexpr() - eval_expr() call in dbg_parsearg() and debuggy_find() @@ -64,6 +57,17 @@ Vim9 - Make everything work: the type of the list or dict member. (#8092) - Allow for using an autoload function name without quotes. It is then loaded (and compiled) right away. #8124 +- Test more expressions in legacy and Vim9 script, using + CheckLegacyAndVim9Success() +- Test try/catch and throw better, also nested. + Test that return inside try/finally jumps to finally and then returns. +- Test that a function defined inside a :def function is local to that + function, g: functions can be defined and script-local functions cannot be + defined. +- Make debugging work - at least per function. Need to recompile a function + to step through it line-by-line? Evaluate the stack and variables on the + stack? +- Reserve command for future use: :type, :class, :enum Once Vim9 is stable: - Change the help to prefer Vim9 syntax where appropriate @@ -73,34 +77,17 @@ Once Vim9 is stable: - Use Vim9 for runtime files. PR #7497 for autoload/ccomplete.vim -Also for Vim9: +Further Vim9 improvements, possibly after launch: - better implementation for partial and tests for that. -- Make "g:imported = Export.exported" work in Vim9 script. -- Make Foo.Bar() work to call the dict function. (#5676) -- Error in any command in "vim9script" aborts sourcing. -- Find a way to test expressions in legacy and Vim9 script without duplication -- Test try/catch and throw better, also nested. - Test that return inside try/finally jumps to finally and then returns. -- Test that a function defined inside a :def function is local to that - function, g: functions can be defined and script-local functions cannot be - defined. -- compile options that are an expression, e.g. "expr:" in 'spellsuggest', +- Compile options that are an expression, e.g. "expr:" in 'spellsuggest', 'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert', 'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'. Give an error if compilation fails. (#7625) Use the location where the option was set for deciding whether it's to be evaluated in Vim9 script context. -- implement :type; import type declaration. -- implement enum; import enum. +- implement :type, import type declaration. +- implement enum, import enum. - Future work: See |vim9-classes| - Define the keywords and commands to make sure it will be backwards - compatible. -- Make debugging work - at least per function. Need to recompile a function - to step through it line-by-line? Evaluate the stack and variables on the - stack? -- List commands when 'verbose' is set or :verbose is used. - -Further Vim9 improvements, possibly after launch: - For range: make table of first ASCII character with flag to quickly check if it can be a Vim9 command. E.g. "+" can, but "." can't. - compile get_lambda_tv() in popup_add_timeout() @@ -108,6 +95,9 @@ Further Vim9 improvements, possibly after launch: - Make accessing varargs faster: arg[expr] EVAL expr LOADVARARG (varargs idx) +- When evaluating constants for script variables, some functions could work: + has(featureName), len(someString) +- Implement as part of an expression: ++expr, --expr, expr++, expr--. Popup windows: @@ -1404,9 +1394,6 @@ Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10) Add ":read :command", to insert the output of an Ex command? Can already do it with ":$put =execute('command')". -When repeating the 'confirm' dialog one needs to press Enter. (ds26gte, 2016 -Apr 17) #762 - exists(":tearoff") does not tell you if the command is implemented. (Tony Mechelynck) Perhaps use exists("::tearoff") to check? diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt index 53d6cb5485..be77da7848 100644 --- a/runtime/doc/usr_02.txt +++ b/runtime/doc/usr_02.txt @@ -1,4 +1,4 @@ -*usr_02.txt* For Vim version 8.2. Last change: 2019 Nov 21 +*usr_02.txt* For Vim version 8.2. Last change: 2021 Apr 24 VIM USER MANUAL - by Bram Moolenaar @@ -532,7 +532,7 @@ Summary: *help-summary* > < for the corresponding flag of the 'cpoptions' settings, substitute <letter> by a specific flag, e.g.: > :help cpo-; -< And for the guioption flags: > +< And for the 'guioptions' flags: > :help go-<letter> 4) Normal mode commands do not have a prefix. To go to the help page for the diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt index 0a2ea62952..a368af0a5e 100644 --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 8.2. Last change: 2021 Apr 11 +*vim9.txt* For Vim version 8.2. Last change: 2021 Apr 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -157,6 +157,11 @@ Compilation is done when any of these is encountered: *E1091* If compilation fails it is not tried again on the next call, instead this error is given: "E1091: Function is not compiled: {name}". +Compilation will fail when encountering a user command that has not been +created yet. In this case you can call `execute()` to invoke it at runtime. > + def MyFunc() + execute('DefinedLater') + enddef `:def` has no options like `:function` does: "range", "abort", "dict" or "closure". A `:def` function always aborts on an error (unless `:silent!` was @@ -605,6 +610,44 @@ Notes: echo [1, 2] [3, 4] + +White space ~ + +Vim9 script enforces proper use of white space. This is no longer allowed: > + var name=234 # Error! + var name= 234 # Error! + var name =234 # Error! +There must be white space before and after the "=": > + var name = 234 # OK +White space must also be put before the # that starts a comment after a +command: > + var name = 234# Error! + var name = 234 # OK + +White space is required around most operators. + +White space is required in a sublist (list slice) around the ":", except at +the start and end: > + otherlist = mylist[v : count] # v:count has a different meaning + otherlist = mylist[:] # make a copy of the List + otherlist = mylist[v :] + otherlist = mylist[: v] + +White space is not allowed: +- Between a function name and the "(": > + Func (arg) # Error! + Func + \ (arg) # Error! + Func + (arg) # Error! + Func(arg) # OK + Func( + arg) # OK + Func( + arg # OK + ) + + No curly braces expansion ~ |curly-braces-names| cannot be used. @@ -656,6 +699,17 @@ Comparators ~ The 'ignorecase' option is not used for comparators that use strings. +Abort after error ~ + +In legacy script, when an error is encountered, Vim continues to execute +following lines. This can lead to a long sequence of errors and need to type +CTRL-C to stop it. In Vim9 script execution of commands stops at the first +error. Example: > + vim9script + var x = does-not-exist + echo 'not executed' + + For loop ~ Legacy Vim script has some tricks to make a for loop over a list handle @@ -679,43 +733,6 @@ Generally, you should not change the list that is iterated over. Make a copy first if needed. -White space ~ - -Vim9 script enforces proper use of white space. This is no longer allowed: > - var name=234 # Error! - var name= 234 # Error! - var name =234 # Error! -There must be white space before and after the "=": > - var name = 234 # OK -White space must also be put before the # that starts a comment after a -command: > - var name = 234# Error! - var name = 234 # OK - -White space is required around most operators. - -White space is required in a sublist (list slice) around the ":", except at -the start and end: > - otherlist = mylist[v : count] # v:count has a different meaning - otherlist = mylist[:] # make a copy of the List - otherlist = mylist[v :] - otherlist = mylist[: v] - -White space is not allowed: -- Between a function name and the "(": > - Func (arg) # Error! - Func - \ (arg) # Error! - Func - (arg) # Error! - Func(arg) # OK - Func( - arg) # OK - Func( - arg # OK - ) - - Conditions and expressions ~ Conditions and expressions are mostly working like they do in other languages. |