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