diff runtime/doc/todo.txt @ 20241:56265f711890

Update runtime files Commit: https://github.com/vim/vim/commit/7ceefb35c8110d87ced884275ddbe63d024a014f Author: Bram Moolenaar <Bram@vim.org> Date: Fri May 1 16:07:38 2020 +0200 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Fri, 01 May 2020 16:15:05 +0200
parents bd021eb62e73
children 2334bf788e8a
line wrap: on
line diff
--- 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 @@ browser use: https://github.com/vim/vim/
 -------------------- 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
+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.
+- 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
-- 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.
+Improve error checking:
+- "echo Func()" is an error if Func() does not return anything.
 Also:
-- When wildcards are expanded, find `=expr` and evaluate it before invoking
-  the command. For example:  :edit `=filename`
-- "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.
 - 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_g
 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 Hadji
 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)