Mercurial > vim
comparison runtime/doc/todo.txt @ 22328:75ff30a78189
Update runtime files.
Commit: https://github.com/vim/vim/commit/1d59aa1fdfb191d9872ff87eb94652acd374b293
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Sep 19 18:50:13 2020 +0200
Update runtime files.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 19 Sep 2020 19:00:04 +0200 |
parents | d4c7b3e9cd17 |
children | a3bb84cd0f59 |
comparison
equal
deleted
inserted
replaced
22327:701d200ab63c | 22328:75ff30a78189 |
---|---|
1 *todo.txt* For Vim version 8.2. Last change: 2020 Sep 07 | 1 *todo.txt* For Vim version 8.2. Last change: 2020 Sep 19 |
2 | 2 |
3 | 3 |
4 VIM REFERENCE MANUAL by Bram Moolenaar | 4 VIM REFERENCE MANUAL by Bram Moolenaar |
5 | 5 |
6 | 6 |
38 *known-bugs* | 38 *known-bugs* |
39 -------------------- Known bugs and current work ----------------------- | 39 -------------------- Known bugs and current work ----------------------- |
40 | 40 |
41 Why does Test_invalid_sid() not work in the GUI? | 41 Why does Test_invalid_sid() not work in the GUI? |
42 | 42 |
43 Add matchfuzzy() and matchfuzzypos() Yegappan, #6947 | |
44 should be ready now | |
45 | |
43 Making everything work: | 46 Making everything work: |
44 - Should :const work the same as in legacy script? | 47 - Fix memory leak in test_vim9_func (through compile_nested_function and |
45 Or should it work like in Typescript: only the variable is fixed, not the | 48 get_lambda_tv()) |
46 value itself. | 49 - Fix memory leaks in test_vim9_script |
47 Then use ":const!" to also fix/lock the value? | |
48 Typescript uses "as const", which is weird. | |
49 Alternative: const var = <const>value | |
50 looks quite strange quite verbose | |
51 But can be used in several places: | |
52 SomeFunc(<const>[1, 2, 3]) | |
53 In Vim this basically means "lock this value". | |
54 How about: | |
55 SomeFunc(<const>[[1], [2], [3]]) # are sub-lists immutable? | |
56 SomeFunc(<const>myList) # is myList mutable afterwards? | |
57 | |
58 - Run the same tests in :def and Vim9 script, like in Test_expr7_not() | |
59 - :put with a "=" register argument doesn't work, need to find the expression | |
60 and compile it. (#6397) | |
61 - At the Vim9 script level, keep script variables local to the block they are | 50 - At the Vim9 script level, keep script variables local to the block they are |
62 declared in, like in Javascript (using :let). | 51 declared in, like in Javascript (using :let). |
63 -> Need to remember what variables were declared and delete them when | 52 -> Need to remember what variables were declared and delete them when |
64 leaving the block. | 53 leaving the block. |
65 -> if a function is defined it may need to keep the block-locals | 54 -> if a function is defined it may need to keep the block-locals |
78 assert_true('did_catch') | 67 assert_true('did_catch') |
79 Add a new command, | 68 Add a new command, |
80 assertfail | 69 assertfail |
81 unknown | 70 unknown |
82 endassertfail E99:.*unknown | 71 endassertfail E99:.*unknown |
72 - Run the same tests in :def and Vim9 script, like in Test_expr7_not() | |
83 - In autocmd: use legacy syntax, not whatever the current script uses? | 73 - In autocmd: use legacy syntax, not whatever the current script uses? |
84 - need to check type when a declaration specifies a type: #6507 | 74 - need to check type when a declaration specifies a type: #6507 |
85 let nr: number = 'asdf' | 75 let nr: number = 'asdf' |
86 - Make sure that in vim9script a function call without namespace only finds | 76 - Make sure that in vim9script a function call without namespace only finds |
87 the script-local function, not a global one. | 77 the script-local function, not a global one. |
88 - Make sure that where a callback is expected a function can be used (without | 78 - Make sure that where a callback is expected a function can be used (without |
89 quotes). E.g. sort() and map(). Also at the script level. | 79 quotes). E.g. sort() and map(). Also at the script level. |
80 - assignment to more complex lval: list[1][2][3] = 8 | |
81 - ":put" with ISN_PUT does not handle range correctly, e.g. ":$-2put". | |
82 Add command to parse range at runtime? | |
90 - Make map() give an error if the resulting type is wrong. | 83 - Make map() give an error if the resulting type is wrong. |
91 Add mapnew() to create a new List/Dict for the result, which can have a | 84 Add mapnew() to create a new List/Dict for the result, which can have a |
92 different value type. | 85 different value type. |
93 - When defining an :autocmd or :command, how to specify using Vim9 syntax? | 86 - When defining an :autocmd or :command, how to specify using Vim9 syntax? |
94 - always do this when defined in a Vim9 script | 87 - always do this when defined in a Vim9 script |
106 - Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd | 99 - Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd |
107 - Expand `=expr` in :mkspell | 100 - Expand `=expr` in :mkspell |
108 - Test that a function defined inside a :def function is local to that | 101 - Test that a function defined inside a :def function is local to that |
109 function, g: functions can be defined and script-local functions cannot be | 102 function, g: functions can be defined and script-local functions cannot be |
110 defined. | 103 defined. |
104 - Does this work already: can use func as reference: | |
105 def SomeFunc() ... | |
106 map(list, SomeFunc) | |
111 - Support passing v:none to use the default argument value. (#6504) | 107 - Support passing v:none to use the default argument value. (#6504) |
112 - make 0 == 'string' fail on the script level, like inside :def. | 108 - make 0 == 'string' fail on the script level, like inside :def. |
113 - Check that when using a user function name without prefix, it does not find | 109 - Check that when using a user function name without prefix, it does not find |
114 a global function. Prefixing g: is required. | 110 a global function. Prefixing g: is required. |
115 - Compile: for [key, value] in items(map) | 111 - Compile: for [key, value] in items(map) |
121 - Using ".." at script level doesn't convert arguments to a string. | 117 - Using ".." at script level doesn't convert arguments to a string. |
122 - Compile replacement of :s command: s/pat/\=expr/ | 118 - Compile replacement of :s command: s/pat/\=expr/ |
123 - Compile redir to local variable: var_redir_start(). | 119 - Compile redir to local variable: var_redir_start(). |
124 - Compile builtin functions that access local variables: | 120 - Compile builtin functions that access local variables: |
125 islocked() | 121 islocked() |
126 - possible memory leak in test_vim9_func through compile_nested_function. | |
127 - memory leaks in test_vim9_expr | |
128 - memory leaks in test_vim9_script | |
129 - memory leaks in test_vim9_cmd | |
130 - When evaluating constants for script variables, some functions could work: | 122 - When evaluating constants for script variables, some functions could work: |
131 has('asdf'), len('string') | 123 has('asdf'), len('string') |
132 - Implement "as Name" in "import Item as Name from ..." | 124 - Implement "as Name" in "import Item as Name from ..." |
133 - Disallow unlet for local/script/imported vars | 125 - Disallow unlet for local/script/imported vars |
134 - Make "++nr" work. | 126 - Make "++nr" work. |
149 - better implementation for partial and tests for that. | 141 - better implementation for partial and tests for that. |
150 - Make "g:imported = Export.exported" work in Vim9 script. | 142 - Make "g:imported = Export.exported" work in Vim9 script. |
151 - Make Foo.Bar() work to call the dict function. (#5676) | 143 - Make Foo.Bar() work to call the dict function. (#5676) |
152 - Error in any command in "vim9script" aborts sourcing. | 144 - Error in any command in "vim9script" aborts sourcing. |
153 - Find a way to test expressions in legacy and Vim9 script without duplication | 145 - Find a way to test expressions in legacy and Vim9 script without duplication |
154 - Fix memory leaks for test_vim9_disassemble, test_vim9_expr, test_vim9_script | |
155 - Test each level of expressions properly, with type checking | 146 - Test each level of expressions properly, with type checking |
156 - Test try/catch and throw better, also nested. | 147 - Test try/catch and throw better, also nested. |
157 Test return inside try/finally jumps to finally and then returns. | 148 Test return inside try/finally jumps to finally and then returns. |
158 - can use func as reference: | |
159 def SomeFunc() ... | |
160 map(list, SomeFunc) | |
161 - Test: Function declared inside a :def function is local, disappears at the | 149 - Test: Function declared inside a :def function is local, disappears at the |
162 end of the function. Unless g: is used, just like with variables. | 150 end of the function. Unless g: is used, just like with variables. |
163 - implement :type | 151 - implement :type |
164 - import type declaration? | 152 - import type declaration? |
165 - implement class | 153 - Future work: See |vim9-classes| |
166 - implement interface | |
167 - predefined class: Promise<T> | |
168 - implement enum | 154 - implement enum |
169 - Make accessing varargs faster: arg[expr] | 155 - Make accessing varargs faster: arg[expr] |
170 EVAL expr | 156 EVAL expr |
171 LOADVARARG (varags idx) | 157 LOADVARARG (varags idx) |
158 - Make debugging work - at least per function. Need to recompile a function | |
159 to step through it line-by-line? Evaluate the stack and variables on the | |
160 stack? | |
161 - Make profiling work - Add ISN_PROFILE instructions after every line? | |
162 - List commands when 'verbose' is set or :verbose is used. | |
172 Further improvements: | 163 Further improvements: |
173 - compile options that are an expression, e.g. "expr:" in 'spellsuggest', | 164 - compile options that are an expression, e.g. "expr:" in 'spellsuggest', |
174 'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert', | 165 'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert', |
175 'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'. | 166 'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'. |
176 - Make inline function work, to be used as a funcref: | 167 - Make inline function work, to be used as a funcref: |
290 conversions. | 281 conversions. |
291 | 282 |
292 Error numbers available: E653 | 283 Error numbers available: E653 |
293 | 284 |
294 Patch to implement the vimtutor with a plugin: #6414 | 285 Patch to implement the vimtutor with a plugin: #6414 |
295 Was originally writtten by Felipe Morales. | 286 Was originally written by Felipe Morales. |
296 | 287 |
297 Remove SPACE_IN_FILENAME ? It is only used for completion. | 288 Remove SPACE_IN_FILENAME ? It is only used for completion. |
298 | 289 |
299 Patch to use collation based sorting. (Christian Brabandt, #6229) | 290 Patch to use collation based sorting. (Christian Brabandt, #6229) |
300 | 291 |
301 Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work | 292 Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work |
302 with 'termguicolors'. #1740 | 293 with 'termguicolors'. #1740 |
303 | 294 |
304 Patch for blockwise paste reporting changes: #6660. | 295 Patch for blockwise paste reporting changes: #6660. |
296 | |
297 Expanding <mods> should put the tab number from cmdmod.tab before "tab". | |
298 Any way to convert "$" back by using a special value? (#6901) | |
305 | 299 |
306 Can we detect true color support? https://gist.github.com/XVilka/8346728 | 300 Can we detect true color support? https://gist.github.com/XVilka/8346728 |
307 Try setting a color then request the current color, like using t_u7. | 301 Try setting a color then request the current color, like using t_u7. |
308 | 302 |
309 Check out PR #543 (Roland Puntaier). | 303 Check out PR #543 (Roland Puntaier). |
395 | 389 |
396 When 'fileignorecase' is set ":e testfile.c" works to edit TestFile.c, but | 390 When 'fileignorecase' is set ":e testfile.c" works to edit TestFile.c, but |
397 ":find testfile.c" does not ignore case. | 391 ":find testfile.c" does not ignore case. |
398 Might be related to #6088. | 392 Might be related to #6088. |
399 | 393 |
394 Error for reverse range when using :vimgrep in file "[id-01] file.txt". | |
395 (#6919) | |
396 | |
400 When changing the crypt key the buffer should be considered modified. | 397 When changing the crypt key the buffer should be considered modified. |
401 Like when changing 'fileformat'. Save the old key in save_file_ff(). | 398 Like when changing 'fileformat'. Save the old key in save_file_ff(). |
402 (Ninu-Ciprian Marginean) | 399 (Ninu-Ciprian Marginean) |
403 | 400 |
404 Strange sequence of BufWipeout and BufNew events while doing omni-complete. | 401 Strange sequence of BufWipeout and BufNew events while doing omni-complete. |
512 Better: use the "z" prefix. or ]t) and [t(. | 509 Better: use the "z" prefix. or ]t) and [t(. |
513 | 510 |
514 Modeless selection doesn't work in gvim. (#4783) | 511 Modeless selection doesn't work in gvim. (#4783) |
515 Caused by patch 8.1.1534. | 512 Caused by patch 8.1.1534. |
516 | 513 |
517 Visual highlight not removed when 'dipslay' is "lastline" and line doesn't | 514 Visual highlight not removed when 'display' is "lastline" and line doesn't |
518 fit. (Kevin Lawler, #4457) | 515 fit. (Kevin Lawler, #4457) |
519 | 516 |
520 Current position in the changelist should be local to the buffer. (#2173) | 517 Current position in the changelist should be local to the buffer. (#2173) |
521 | 518 |
522 Does not build with MinGW out of the box: | 519 Does not build with MinGW out of the box: |