Mercurial > vim
comparison runtime/doc/todo.txt @ 23573:e2e2cc5d0856
Update runtime files.
Commit: https://github.com/vim/vim/commit/82be4849eed0b8fbee45bc8da99b685ec89af59a
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Jan 11 19:40:15 2021 +0100
Update runtime files.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 11 Jan 2021 19:45:05 +0100 |
parents | 15fa3923cc49 |
children | 96206643bd9f |
comparison
equal
deleted
inserted
replaced
23572:b35e568d74e6 | 23573:e2e2cc5d0856 |
---|---|
1 *todo.txt* For Vim version 8.2. Last change: 2021 Jan 02 | 1 *todo.txt* For Vim version 8.2. Last change: 2021 Jan 11 |
2 | 2 |
3 | 3 |
4 VIM REFERENCE MANUAL by Bram Moolenaar | 4 VIM REFERENCE MANUAL by Bram Moolenaar |
5 | 5 |
6 | 6 |
36 browser use: https://github.com/vim/vim/issues/1234 | 36 browser use: https://github.com/vim/vim/issues/1234 |
37 (replace 1234 with the issue/pull number) | 37 (replace 1234 with the issue/pull number) |
38 *known-bugs* | 38 *known-bugs* |
39 -------------------- Known bugs and current work ----------------------- | 39 -------------------- Known bugs and current work ----------------------- |
40 | 40 |
41 Reload: How to make sure type of script function hasn't changed? | 41 no error for: |
42 | 42 echo extend([0], ['a', true]) |
43 Valgrind: test_vim9_cmd: uses uninitialized var | 43 like it does for: |
44 echo extend([0], ['a']) | |
45 At script level this does not give an error: | |
46 echo map([0], (_, v) => []) | |
47 Or: | |
48 var l: list<number> = [0] | |
49 echo map(l, (_, v) => []) | |
44 | 50 |
45 Vim9 - Make everything work: | 51 Vim9 - Make everything work: |
52 - Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop | |
53 - Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd | |
54 - Expand `=expr` in :mkspell | |
55 - Unlet with range: "unlet list[a : b]" | |
46 - Implement "export {one, two three}". | 56 - Implement "export {one, two three}". |
47 - Use "null" for v:null, like true and false? #7495 | |
48 - ISN_CHECKTYPE could use check_argtype() | 57 - ISN_CHECKTYPE could use check_argtype() |
49 - Using a script variable inside a :def function doesn't work if the variable | 58 - Using a script variable inside a :def function doesn't work if the variable |
50 is inside a block, see Test_nested_function(). Should it work? | 59 is inside a block, see Test_nested_function(). Should it work? |
51 - give error for variable name: | 60 - give error for variable name: |
52 let p = function('NoSuchFunc') | 61 let p = function('NoSuchFunc') |
62 - Make closures work better: | |
63 - Create closure in a loop. Need to make a list of them. | |
53 - If a :def function is called with a function reference, compile it to get | 64 - If a :def function is called with a function reference, compile it to get |
54 the function type. | 65 the function type. |
55 def Filter(x: string, Cond: func(string): bool) | 66 def Filter(x: string, Cond: func(string): bool) |
56 Filter(x, (v) => v =~ '^b') | 67 Filter(x, (v) => v =~ '^b') |
57 - Make inline function work, to be used as a funcref: | 68 - Make inline function work, to be used as a funcref: |
61 } | 72 } |
62 let Ref = (arg: type) => { | 73 let Ref = (arg: type) => { |
63 statement | 74 statement |
64 statement | 75 statement |
65 } | 76 } |
66 - implement { cmd } compiled | |
67 - implement { cmd } at script level | |
68 - Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop | |
69 - Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd | |
70 - Expand `=expr` in :mkspell | |
71 - Does this work already: can use func as reference: | 77 - Does this work already: can use func as reference: |
72 def SomeFunc() ... | 78 def SomeFunc() ... |
73 map(list, SomeFunc) | 79 map(list, SomeFunc) |
74 - For builtin functions using tv_get_string*() use check_for_string() to be | 80 - For builtin functions using tv_get_string*() use check_for_string() to be |
75 more strict about the argument type. | 81 more strict about the argument type. |
82 - Possible memory leaks in test_vim9_func | |
76 - Implement :lockvar and :unlockvar. How about local variables? Perhaps only | 83 - Implement :lockvar and :unlockvar. How about local variables? Perhaps only |
77 allow this for global variables. Use :final or :const otherwise. | 84 allow this for global variables. Use :final or :const otherwise. |
78 - Allow function names that will be script-local to start with lower case | 85 - Allow function names that will be script-local to start with lower case |
79 letter? Or also require names with s: prefix to use upper case? | 86 letter? Or also require names with s: prefix to use upper case? |
80 Also apply this function references "var ref = SomeFunc" | 87 Also apply this function references "var ref = SomeFunc" |
81 - Support passing v:none to use the default argument value. (#6504) | 88 - Support passing v:none to use the default argument value. (#6504) |
82 - Make map() give an error if the resulting type of the first argument is | |
83 wrong. Only works if the type is known? Is this slow (need to go over all | |
84 items)? | |
85 - Run the same tests in :def and Vim9 script, like in Test_expr7_not() | 89 - Run the same tests in :def and Vim9 script, like in Test_expr7_not() |
86 - Check many more builtin function arguments at compile time. | 90 - Check many more builtin function arguments at compile time. |
87 - make 0 == 'string' fail on the script level, like inside :def. | 91 - make 0 == 'string' fail on the script level, like inside :def. |
88 - Check that when using a user function name without prefix, it does not find | 92 - Check that when using a user function name without prefix, it does not find |
89 a global function. Prefixing g: is required. | 93 a global function. Prefixing g: is required. |
103 - When evaluating constants for script variables, some functions could work: | 107 - When evaluating constants for script variables, some functions could work: |
104 has('asdf'), len('string') | 108 has('asdf'), len('string') |
105 - Implement "as Name" in "import Item as Name from ..." | 109 - Implement "as Name" in "import Item as Name from ..." |
106 - Implement using imported items at script level from "import * as X" in | 110 - Implement using imported items at script level from "import * as X" in |
107 eval_variable(). Should pass the ".xxx" that follows and return that. | 111 eval_variable(). Should pass the ".xxx" that follows and return that. |
108 - Disallow unlet for local/script/imported vars | |
109 - Make "++nr" work. "++g:count" doesn't work, thinks it is a range. | 112 - Make "++nr" work. "++g:count" doesn't work, thinks it is a range. |
110 - Make closures work: | 113 - Reload: How to make sure type of script function hasn't changed? |
111 - Create closure in a loop. Need to make a list of them. | |
112 - nested closure only uses one context, not all (#7150) | |
113 - expandcmd() with `=expr` in filename uses legacy expression. | 114 - expandcmd() with `=expr` in filename uses legacy expression. |
114 - eval_expr() in ex_cexpr() | 115 - eval_expr() in ex_cexpr() |
115 - eval_expr() call in dbg_parsearg() and debuggy_find() | 116 - eval_expr() call in dbg_parsearg() and debuggy_find() |
116 Improve error checking: | 117 - compile "skip" argument of searchpair() |
117 - "echo Func()" is an error if Func() does not return anything. | 118 - compile "expr" and "call" expression of a channel in channel_exe_cmd()? |
118 Before launch: | 119 - give an error for "echo Func()" if Func() does not return anything. |
120 | |
121 Once Vim9 is stable: | |
122 - Change the help to prefer Vim9 syntax where appropriate | |
123 - Use Vim9 for runtime files. | |
124 PR #7497 for autoload/ccomplete.vim | |
119 - Add all the error numbers in a good place in documentation. | 125 - Add all the error numbers in a good place in documentation. |
120 - In the generic eval docs, point out the Vim9 syntax where it differs. | 126 - In the generic eval docs, point out the Vim9 syntax where it differs. |
121 Also: | 127 |
122 - For range: make table of first ASCII character with flag to quickly check if | 128 Also for Vim9: |
123 it can be a Vim9 command. E.g. "+" can, but "." can't. | |
124 - better implementation for partial and tests for that. | 129 - better implementation for partial and tests for that. |
125 - Make "g:imported = Export.exported" work in Vim9 script. | 130 - Make "g:imported = Export.exported" work in Vim9 script. |
126 - Make Foo.Bar() work to call the dict function. (#5676) | 131 - Make Foo.Bar() work to call the dict function. (#5676) |
127 - Error in any command in "vim9script" aborts sourcing. | 132 - Error in any command in "vim9script" aborts sourcing. |
128 - Find a way to test expressions in legacy and Vim9 script without duplication | 133 - Find a way to test expressions in legacy and Vim9 script without duplication |
129 - Test each level of expressions properly, with type checking | |
130 - Test try/catch and throw better, also nested. | 134 - Test try/catch and throw better, also nested. |
131 Test return inside try/finally jumps to finally and then returns. | 135 Test that return inside try/finally jumps to finally and then returns. |
132 - Test that a function defined inside a :def function is local to that | 136 - Test that a function defined inside a :def function is local to that |
133 function, g: functions can be defined and script-local functions cannot be | 137 function, g: functions can be defined and script-local functions cannot be |
134 defined. | 138 defined. |
135 - implement :type | 139 - compile options that are an expression, e.g. "expr:" in 'spellsuggest', |
136 - import type declaration? | 140 'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert', |
141 'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'. | |
142 Give an error if compilation fails. (#7625) | |
143 Use the location where the option was set for deciding whether it's to be | |
144 evaluated in Vim9 script context. | |
145 - implement :type; import type declaration. | |
146 - implement enum; import enum. | |
137 - Future work: See |vim9-classes| | 147 - Future work: See |vim9-classes| |
138 - implement enum | 148 Define the keywords and commands to make sure it will be backwards |
139 - Make accessing varargs faster: arg[expr] | 149 compatible. |
140 EVAL expr | |
141 LOADVARARG (varargs idx) | |
142 - Make debugging work - at least per function. Need to recompile a function | 150 - Make debugging work - at least per function. Need to recompile a function |
143 to step through it line-by-line? Evaluate the stack and variables on the | 151 to step through it line-by-line? Evaluate the stack and variables on the |
144 stack? | 152 stack? |
145 - Make profiling work - Add ISN_PROFILE instructions after every line? | 153 - Make profiling work - Add ISN_PROFILE instructions after every line? |
146 - List commands when 'verbose' is set or :verbose is used. | 154 - List commands when 'verbose' is set or :verbose is used. |
147 Once Vim9 is stable: | 155 |
148 - Change the help to prefer Vim9 syntax where appropriate | 156 Further Vim9 improvements, possibly after launch: |
149 - Use Vim9 for runtime files. | 157 - For range: make table of first ASCII character with flag to quickly check if |
150 PR #7497 for autoload/ccomplete.vim | 158 it can be a Vim9 command. E.g. "+" can, but "." can't. |
151 Further improvements: | |
152 - compile options that are an expression, e.g. "expr:" in 'spellsuggest', | |
153 'foldexpr', 'foldtext', 'printexpr', 'diffexpr', 'patchexpr', 'charconvert', | |
154 'balloonexpr', 'includeexpr', 'indentexpr', 'formatexpr'. | |
155 - compile get_lambda_tv() in popup_add_timeout() | 159 - compile get_lambda_tv() in popup_add_timeout() |
156 - inline call to map() and filter() | 160 - inline call to map() and filter() |
157 - compile "skip" argument of searchpair() | 161 - Make accessing varargs faster: arg[expr] |
158 - compile "expr" and "call" expression of a channel in channel_exe_cmd()? | 162 EVAL expr |
163 LOADVARARG (varargs idx) | |
164 | |
159 | 165 |
160 Popup windows: | 166 Popup windows: |
161 - Add a flag to make a popup window focusable? | 167 - Add a flag to make a popup window focusable? |
162 CTRL-W P cycle over any preview window or focusable popup, end up back in | 168 CTRL-W P cycle over any preview window or focusable popup, end up back in |
163 current window. | 169 current window. |
306 Any way to convert "$" back by using a special value? (#6901) | 312 Any way to convert "$" back by using a special value? (#6901) |
307 | 313 |
308 Can we detect true color support? https://gist.github.com/XVilka/8346728 | 314 Can we detect true color support? https://gist.github.com/XVilka/8346728 |
309 Try setting a color then request the current color, like using t_u7. | 315 Try setting a color then request the current color, like using t_u7. |
310 | 316 |
317 Regexp to search for duplicate lines does not work correctly: | |
318 /\(^.*\n\)\1 (Chris Morgan, #6239) | |
319 | |
320 Changing a capturing group to non-capturing changes the result: #7607 | |
321 :echo matchstr('aaa bbb', '\(.\{-1,}\>\)\|.*') | |
322 aaa | |
323 :echo matchstr('aaa bbb', '\%(.\{-1,}\>\)\|.*') | |
324 aaa bbb | |
325 Should also work without any group: | |
326 :echo matchstr('aaa bbb', '.\{-1,}\>\|.*') | |
327 aaa bbb (should be aaa) | |
328 | |
311 Check out PR #543 (Roland Puntaier). | 329 Check out PR #543 (Roland Puntaier). |
312 Patch for multibyte characters in langmap and applying a mapping on them. | 330 Patch for multibyte characters in langmap and applying a mapping on them. |
313 (Christian Brabandt, 2015 Jun 12, update July 25) | 331 (Christian Brabandt, 2015 Jun 12, update July 25) |
314 Is this the right solution? Need to cleanup langmap behavior: | 332 Is this the right solution? Need to cleanup langmap behavior: |
315 - in vgetorpeek() apply langmap to the typeahead buffer and put the result in | 333 - in vgetorpeek() apply langmap to the typeahead buffer and put the result in |
390 After recovering from a swap file the undofile should not be used, it causes | 408 After recovering from a swap file the undofile should not be used, it causes |
391 corruption. (#6631) | 409 corruption. (#6631) |
392 | 410 |
393 When 'lazyredraw' is set sometimes the title is not updated. | 411 When 'lazyredraw' is set sometimes the title is not updated. |
394 (Jason Franklin, 2020 Feb 3) Looks like a race condition. | 412 (Jason Franklin, 2020 Feb 3) Looks like a race condition. |
395 | |
396 Regexp to search for duplicate lines does not work correctly: | |
397 /\(^.*\n\)\1 (Chris Morgan, #6239) | |
398 | 413 |
399 With bash ":make" does not set v:shell_error. Possible solution: set | 414 With bash ":make" does not set v:shell_error. Possible solution: set |
400 'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}" #5994 | 415 'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}" #5994 |
401 | 416 |
402 Using mode() when "/pat" is used in Visual mode returns "v" instead of "c", | 417 Using mode() when "/pat" is used in Visual mode returns "v" instead of "c", |
1150 | 1165 |
1151 Overlong utf-8 sequence is displayed wrong. (Harm te Hennepe, 2017 Sep 14, | 1166 Overlong utf-8 sequence is displayed wrong. (Harm te Hennepe, 2017 Sep 14, |
1152 #2089) Patch with possible solution by Björn Linse. | 1167 #2089) Patch with possible solution by Björn Linse. |
1153 | 1168 |
1154 The change list index is local to a buffer, but it doesn't make sense using it | 1169 The change list index is local to a buffer, but it doesn't make sense using it |
1155 for another buffer. (lacygolil) Copy w_changelistidx to wininfo_S and back. | 1170 for another buffer. (lacygoill) Copy w_changelistidx to wininfo_S and back. |
1156 | 1171 |
1157 X11: Putting more than about 262040 characters of text on the clipboard and | 1172 X11: Putting more than about 262040 characters of text on the clipboard and |
1158 pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23) | 1173 pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23) |
1159 clip_x11_request_selection_cb() is called with zero value and length. | 1174 clip_x11_request_selection_cb() is called with zero value and length. |
1160 Also: Get an error message from free() in the process that owns the selection. | 1175 Also: Get an error message from free() in the process that owns the selection. |
5472 8 Add a flag to ":abbrev" to eat the character that triggers the | 5487 8 Add a flag to ":abbrev" to eat the character that triggers the |
5473 abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and | 5488 abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and |
5474 not the <Space>. | 5489 not the <Space>. |
5475 8 Give a warning when using CTRL-C in the lhs of a mapping. It will never | 5490 8 Give a warning when using CTRL-C in the lhs of a mapping. It will never |
5476 (?) work. | 5491 (?) work. |
5477 7 Add <0x8f> (hex), <033> (octal) and <123> (decimal) to <> notation? | 5492 7 Add <0x8f> (hex), <0o33> (octal) and <123> (decimal) to <> notation? |
5478 7 When someone tries to unmap with a trailing space, and it fails, try | 5493 7 When someone tries to unmap with a trailing space, and it fails, try |
5479 unmapping without the trailing space. Helps for ":unmap xx | unmap yy". | 5494 unmapping without the trailing space. Helps for ":unmap xx | unmap yy". |
5480 6 Context-sensitive abbreviations: Specify syntax group(s) in which the | 5495 6 Context-sensitive abbreviations: Specify syntax group(s) in which the |
5481 abbreviations are to be used. | 5496 abbreviations are to be used. |
5482 - Add mappings that take arguments. Could work like the ":s" command. For | 5497 - Add mappings that take arguments. Could work like the ":s" command. For |