Mercurial > vim
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)