Update runtime files
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 14756f0..fe41907 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -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 @@
-------------------- 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 @@
- 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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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)