Update runtime files

This commit is contained in:
Bram Moolenaar
2020-05-01 16:07:38 +02:00
parent b84a381c75
commit 7ceefb35c8
22 changed files with 296 additions and 182 deletions

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.2. Last change: 2020 Apr 20
*todo.txt* For Vim version 8.2. Last change: 2020 Apr 30
VIM REFERENCE MANUAL by Bram Moolenaar
@ -39,38 +39,59 @@ browser use: https://github.com/vim/vim/issues/1234
-------------------- Known bugs and current work -----------------------
Vim9 script:
more tests for # comments:
check all calls to ends_excmd() and test that space before # is needed.
next: ex_findpat()
func and partial types:
- Calling unknown user function does not give proper error message:
assert_equal('123text', RefDef2Arg()) typo for "RetDef2Arg"
- "func" inside "vim9script" doesn't work? (Ben Jackson, #5670)
- :func inside vim9script must still use a:arg
- define function and create funcref in one step:
let ref = def(arg: type): rettype
body
enddef
Big changes, need design:
- Make closures work:
Grab the part of the stack that has the arguments and local vars.
Pass a pointer and offset to the closure where this stack fragment is (frame
pointer).
When a closure disappears at end of the function - nothing to do.
When a closure remains at end of the function: copy frame, attach to closure.
- At the vim9 script level: Allow using a function that is defined later.
Requires compiling functions only when the whole script has been sourced.
Like Javascript "hoisting", but only at the script level:
1. Discovery phase: Read the file to find all functions, variable
declarations and imports If a variable has a constant expression we get
the type, otherwise it will be "any". Follow imports recursively.
2. Compilation phase: compile :def function bodies, using declared types
3. Execution phase: Execute imports when encountered. (skip over functions)
- When sourcing a script again, also delete script-local variables.
Making everything work:
- Test that a script-local function in Vim9 script cannot be deleted.
- 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.
Also:
- When wildcards are expanded, find `=expr` and evaluate it before invoking
the command. For example: :edit `=filename`
- Check that when using a user function name without prefix, it does not find
a global function. Prefixing g: is required.
- Compile let [var, var] = expr
- Compile replacement of :s command: s/pat/\=expr/
- Compile redir to local variable: var_redir_start().
- Compile builtin functions that access local variables:
islocked()
- Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
- Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
- Expand `=expr` in :mkspell
- Support type for ":let"/":const" at script level for Vim9 script.
(Ben Jackson, #5671)
Can we share the code from ex_let_const() between direct execution and
compiling?
- Disallow unlet for local/script/imported vars
- Make "++nr" work.
- expandcmd() with `=expr` in filename uses legacy expression.
- eval_expr() in ex_cexpr()
- eval_expr() call in dbg_parsearg() and debuggy_find()
New syntax and functionality:
- define function and create funcref in one step:
let ref = def(arg: type): rettype
body
enddef
Improve error checking:
- "echo Func()" is an error if Func() does not return anything.
- Check all Ex commands, give error if they use an expression and should be
compiled.
Also:
- 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.
- 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)
- Support type for ":let"/":const" at script level for Vim9 script.
(Ben Jackson, #5671)
Can we share the code for :let between direct execution and compiling?
- Disallow unlet for local/script/imported vars
- Make "++nr" work.
- Check that import in legacy script works and puts item in s:
- Error in any command in "vim9script" aborts sourcing.
- Find a way to test expressions in legacy and Vim9 script without duplication
@ -93,6 +114,13 @@ Also:
- Make accessing varargs faster: arg[expr]
EVAL expr
LOADVARARG (varags idx)
Further improvements:
- compile options that are an expression, e.g. "expr:" in 'spellsuggest',
'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert',
'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'.
- compile get_lambda_tv() in popup_add_timeout()
- compile "skip" argument of searchpair()
- compile "expr" and "call" expression of a channel in channel_exe_cmd()?
Popup windows:
- With some sequence get get hidden finished terminal buffer. (#5768)
@ -198,7 +226,7 @@ Terminal emulator window:
conversions.
Error numbers available:
E453, E454, E460, E489, E491, E565, E578, E610, E611, E653,
E453, E454, E460, E489, E491, E610, E611, E653,
E856, E857, E861, E900
Buffer autocommands are a bit inconsistent. Add a separate set of
@ -222,8 +250,13 @@ Ready to include.
Patch to add "-d" to xxd. (#5616)
Patch for the Haiku port: #5961
Patch to add Turkish manual. (Emir Sarı, #5641)
Patch to support different color for undercurl in cterm.
(Timur Celik, #6011)
Patch to support cindent option to handle pragmas differently.
(Max Rumpf, #5468)
@ -234,6 +267,9 @@ manager. Problem with Motif? Now test_gui crashes in submenu_change().
Athena is OK.
Motif: Build on Ubuntu can't enter any text in dialog text fields.
:map output does not clear the reset of the command line.
(#5623, also see #5962)
Patch to properly break CJK lines: Anton Kochkov, #3875
Flag in 'formatoptions' is not used in the tests.
@ -248,7 +284,10 @@ Ready to include? Review the code.
When 'lazyredraw' is set sometimes the title is not updated.
(Jason Franklin, 2020 Feb 3) Looks like a race condition.
Patch to delete BeOS code. (#5817)
Patch to delete BeOS code. (#5817) Anyone who wants to keep it?
With bash ":make" does not set v:shell_error. Possible solution: set
'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}" #5994
Strange sequence of BufWipeout and BufNew events while doing omni-complete.
(Paul Jolly, #5656)
@ -317,6 +356,8 @@ unlisted. (#4478)
Patch to include reduce() function. (#5481)
When SIGTSTP is ignored, don't let CTRL-Z suspend Vim? (Kurtis Rader, #5990)
Statusline highlighting error, off by one. (#5599)
Enable 'termbidi' if $VTE_VERSION >= 5703 ?
@ -331,11 +372,6 @@ Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
The :syntax cchar value can only be a single character. It would be useful to
support combining characters. (Charles Campbell) Also #4687
Include Haiku port. (Adrien Destugues, Siarzhuk Zharski, 2013 Oct 24)
It can replace the BeOS code, which is likely not used anymore.
Now on github: #1856. Updated Oct 2017
Got permission to include this under the Vim license.
"--cleanFOO" does not result in an error. (#5537)
Add "t" action to settagstack(): truncate and add new entries. (#5405)