diff options
33 files changed, 804 insertions, 353 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 212205f950..6aea29a68f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -51,6 +51,7 @@ runtime/compiler/sass.vim @tpope runtime/compiler/se.vim @dkearns runtime/compiler/shellcheck.vim @dkearns runtime/compiler/sml.vim @dkearns +runtime/compiler/spectral.vim @romainl runtime/compiler/stylelint.vim @dkearns runtime/compiler/tcl.vim @dkearns runtime/compiler/tidy.vim @dkearns @@ -59,6 +60,7 @@ runtime/compiler/tsc.vim @dkearns runtime/compiler/typedoc.vim @dkearns runtime/compiler/xmllint.vim @dkearns runtime/compiler/xo.vim @dkearns +runtime/compiler/yamllint.vim @romainl runtime/compiler/zsh.vim @dkearns runtime/doc/pi_getscript.txt @cecamp runtime/doc/pi_logipat.txt @cecamp diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b821e822b1..7d84fca6d0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -366,7 +366,7 @@ jobs: features: NORMAL steps: - - name: Initalize + - name: Initialize id: init shell: bash run: | diff --git a/README_VIM9.md b/README_VIM9.md index 96fab69ed7..e4d2914f4d 100644 --- a/README_VIM9.md +++ b/README_VIM9.md @@ -45,14 +45,16 @@ full code is below): | Vim old | 5.018541 | | Python | 0.369598 | | Lua | 0.078817 | +| LuaJit | 0.004245 | | Vim new | 0.073595 | That looks very promising! It's just one example, but it shows how much we can gain, and also that Vim script can be faster than builtin interfaces. -In practice the script would not do something useless as counting but change -the text. For example, reindent all the lines: +LuaJit is much faster at Lua-only instructions. In practice the script would +not do something useless as counting but change the text. For example, +reindent all the lines: ``` vim let totallen = 0 @@ -64,13 +66,17 @@ the text. For example, reindent all the lines: | how | time in sec | | --------| -------- | -| Vim old | 0.853752 | -| Python | 0.304584 | -| Lua | 0.286573 | -| Vim new | 0.190276 | +| Vim old | 0.578598 | +| Python | 0.152040 | +| Lua | 0.164917 | +| LuaJit | 0.128400 | +| Vim new | 0.079692 | + +[These times were measured on a different system by Dominique Pelle] The differences are smaller, but Vim 9 script is clearly the fastest. -Using LuaJIT gives 0.25, only a little bit faster than plain Lua. +Using LuaJIT is only a little bit faster than plain Lua here, clearly the call +back to the Vim code is costly. How does Vim9 script work? The function is first compiled into a sequence of instructions. Each instruction has one or two parameters and a stack is diff --git a/runtime/compiler/spectral.vim b/runtime/compiler/spectral.vim new file mode 100644 index 0000000000..bd13c51f43 --- /dev/null +++ b/runtime/compiler/spectral.vim @@ -0,0 +1,17 @@ +" Vim compiler file +" Compiler: Spectral for YAML +" Maintainer: Romain Lafourcade <romainlafourcade@gmail.com> +" Last Change: 2021 July 21 + +if exists("current_compiler") + finish +endif +let current_compiler = "spectral" + +if exists(":CompilerSet") != 2 + command -nargs=* CompilerSet setlocal <args> +endif + +CompilerSet makeprg=spectral\ lint\ %\ -f\ text +CompilerSet errorformat=%f:%l:%c\ %t%.%\\{-}\ %m + diff --git a/runtime/compiler/yamllint.vim b/runtime/compiler/yamllint.vim new file mode 100644 index 0000000000..889b04b63c --- /dev/null +++ b/runtime/compiler/yamllint.vim @@ -0,0 +1,16 @@ +" Vim compiler file +" Compiler: Yamllint for YAML +" Maintainer: Romain Lafourcade <romainlafourcade@gmail.com> +" Last Change: 2021 July 21 + +if exists("current_compiler") + finish +endif +let current_compiler = "yamllint" + +if exists(":CompilerSet") != 2 + command -nargs=* CompilerSet setlocal <args> +endif + +CompilerSet makeprg=yamllint\ -f\ parsable + diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index 5e1f61e88a..7614e8bd73 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 8.2. Last change: 2021 Jul 02 +*autocmd.txt* For Vim version 8.2. Last change: 2021 Jul 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -679,7 +679,8 @@ CursorHoldI Just like CursorHold, but in Insert mode. CursorMoved After the cursor was moved in Normal or Visual mode. Also when the text of the cursor line has been changed, e.g., with "x", "rx" or "p". - Not triggered when there is typeahead, when + Not triggered when there is typeahead, while + executing commands in a script file, when an operator is pending or when moving to another window while remaining at the same cursor position. diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt index bfcf1350bc..0801e3af15 100644 --- a/runtime/doc/digraph.txt +++ b/runtime/doc/digraph.txt @@ -1,4 +1,4 @@ -*digraph.txt* For Vim version 8.2. Last change: 2020 Jul 16 +*digraph.txt* For Vim version 8.2. Last change: 2021 Jul 19 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt index 6bc245abcb..92710d882a 100644 --- a/runtime/doc/editing.txt +++ b/runtime/doc/editing.txt @@ -1,4 +1,4 @@ -*editing.txt* For Vim version 8.2. Last change: 2021 May 27 +*editing.txt* For Vim version 8.2. Last change: 2021 Jul 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1469,8 +1469,11 @@ be readable again. If you use a wrong key, it will be a mess. :X Prompt for an encryption key. The typing is done without showing the actual text, so that someone looking at the display won't see it. The typed key is stored in the 'key' option, which is used to encrypt - the file when it is written. The file will remain unchanged until you - write it. See also |-x|. + the file when it is written. + The file will remain unchanged until you write it. Note that commands + such as `:xit` and `ZZ` will NOT write the file unless there are other + changes. + See also |-x|. The value of the 'key' options is used when text is written. When the option is not empty, the written file will be encrypted, using the value as the diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index d99c398a72..5054904db0 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.2. Last change: 2021 Jul 01 +*eval.txt* For Vim version 8.2. Last change: 2021 Jul 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3177,6 +3177,7 @@ append({lnum}, {text}) *append()* the current buffer. Any type of item is accepted and converted to a String. {lnum} can be zero to insert a line before the first one. + {lnum} is used like with |getline()|. Returns 1 for failure ({lnum} out of range or out of memory), 0 for success. Example: > :let failed = append(line('$'), "# THE END") @@ -3446,8 +3447,9 @@ bufloaded({expr}) *bufloaded()* let loaded = 'somename'->bufloaded() bufname([{expr}]) *bufname()* - The result is the name of a buffer, as it is displayed by the - ":ls" command. + The result is the name of a buffer. Mostly as it is displayed + by the `:ls` command, but not using special names such as + "[No Name]". If {expr} is omitted the current buffer is used. If {expr} is a Number, that buffer number's name is given. Number zero is the alternate buffer for the current window. @@ -3482,7 +3484,7 @@ bufname([{expr}]) *bufname()* *bufnr()* bufnr([{expr} [, {create}]]) The result is the number of a buffer, as it is displayed by - the ":ls" command. For the use of {expr}, see |bufname()| + the `:ls` command. For the use of {expr}, see |bufname()| above. If the buffer doesn't exist, -1 is returned. Or, if the @@ -3677,10 +3679,10 @@ charidx({string}, {idx} [, {countcc}]) The index of the first character is zero. If there are no multibyte characters the returned value is equal to {idx}. - When {countcc} is omitted or zero, then composing characters - are not counted separately, their byte length is added to the - preceding base character. - When {countcc} is set to 1, then composing characters are + When {countcc} is omitted or |FALSE|, then composing characters + are not counted separately, their byte length is + added to the preceding base character. + When {countcc} is |TRUE|, then composing characters are counted as separate characters. Returns -1 if the arguments are invalid or if {idx} is greater than the index of the last byte in {string}. An error is @@ -3852,7 +3854,9 @@ complete_info([{what}]) See |complete-items|. selected Selected item index. First index is zero. Index is -1 if no item is selected (showing - typed text only) + typed text only, or the last completion after + no item is selected when using the <Up> or + <Down> keys) inserted Inserted string. [NOT IMPLEMENT YET] *complete_info_mode* @@ -4067,6 +4071,7 @@ cursor({list}) |setcursorcharpos()|. Does not change the jumplist. + {lnum} is used like with |getline()|. If {lnum} is greater than the number of lines in the buffer, the cursor will be positioned at the last line in the buffer. If {lnum} is zero, the cursor will stay in the current line. @@ -4437,6 +4442,8 @@ exepath({expr}) *exepath()* *exists()* exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined, zero otherwise. + Note: In a compiled |:def| function local variables and + arguments are not visible to `exists()`. For checking for a supported feature use |has()|. For checking if a file exists use |filereadable()|. @@ -4459,9 +4466,11 @@ exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined, varname internal variable (see |internal-variables|). Also works for |curly-braces-names|, |Dictionary| - entries, |List| items, etc. Beware - that evaluating an index may cause an - error message for an invalid + entries, |List| items, etc. + Does not work for local variables in a + compiled `:def` function. + Beware that evaluating an index may + cause an error message for an invalid expression. E.g.: > :let l = [1, 2, 3] :echo exists("l[5]") @@ -4774,15 +4783,18 @@ filewritable({file}) *filewritable()* filter({expr1}, {expr2}) *filter()* - {expr1} must be a |List| or a |Dictionary|. + {expr1} must be a |List|, |Blob| or |Dictionary|. For each item in {expr1} evaluate {expr2} and when the result - is zero remove the item from the |List| or |Dictionary|. + is zero remove the item from the |List| or |Dictionary|. For a + |Blob| each byte is removed. + {expr2} must be a |string| or |Funcref|. If {expr2} is a |string|, inside {expr2} |v:val| has the value of the current item. For a |Dictionary| |v:key| has the key of the current item and for a |List| |v:key| has the index of - the current item. + the current item. For a |Blob| |v:key| has the index of the + current byte. Examples: > call filter(mylist, 'v:val !~ "OLD"') < Removes the items where "OLD" appears. > @@ -4813,11 +4825,11 @@ filter({expr1}, {expr2}) *filter()* |Dictionary| to remain unmodified make a copy first: > :let l = filter(copy(mylist), 'v:val =~ "KEEP"') -< Returns {expr1}, the |List| or |Dictionary| that was filtered. - When an error is encountered while evaluating {expr2} no - further items in {expr1} are processed. When {expr2} is a - Funcref errors inside a function are ignored, unless it was - defined with the "abort" flag. +< Returns {expr1}, the |List| , |Blob| or |Dictionary| that was + filtered. When an error is encountered while evaluating + {expr2} no further items in {expr1} are processed. When + {expr2} is a Funcref errors inside a function are ignored, + unless it was defined with the "abort" flag. Can also be used as a |method|: > mylist->filter(expr2) @@ -7138,9 +7150,9 @@ line2byte({lnum}) *line2byte()* below the last line: > line2byte(line("$") + 1) < This is the buffer size plus one. If 'fileencoding' is empty - it is the file size plus one. - When {lnum} is invalid, or the |+byte_offset| feature has been - disabled at compile time, -1 is returned. + it is the file size plus one. {lnum} is used like with + |getline()|. When {lnum} is invalid, or the |+byte_offset| + feature has been disabled at compile time, -1 is returned. Also see |byte2line()|, |go| and |:goto|. Can also be used as a |method|: > @@ -7313,6 +7325,8 @@ luaeval({expr} [, {expr}]) *luaeval()* as-is. Other objects are returned as zero without any errors. See |lua-luaeval| for more details. + Note that in a `:def` function local variables are not visible + to {expr}. Can also be used as a |method|: > GetExpr()->luaeval() @@ -7332,7 +7346,8 @@ map({expr1}, {expr2}) *map()* If {expr2} is a |string|, inside {expr2} |v:val| has the value of the current item. For a |Dictionary| |v:key| has the key of the current item and for a |List| |v:key| has the index of - the current item. + the current item. For a |Blob| |v:key| has the index of the + current byte. Example: > :call map(mylist, '"> " . v:val . " <"') < This puts "> " before and " <" after each item in "mylist". @@ -8023,6 +8038,9 @@ mzeval({expr}) *mzeval()* :echo mzeval("l") :echo mzeval("h") < + Note that in a `:def` function local variables are not visible + to {expr}. + Can also be used as a |method|: > GetExpr()->mzeval() < @@ -8034,6 +8052,7 @@ nextnonblank({lnum}) *nextnonblank()* if getline(nextnonblank(1)) =~ "Java" < When {lnum} is invalid or there is no non-blank line at or below it, zero is returned. + {lnum} is used like with |getline()|. See also |prevnonblank()|. Can also be used as a |method|: > @@ -8095,6 +8114,9 @@ perleval({expr}) *perleval()* :echo perleval('[1 .. 4]') < [1, 2, 3, 4] + Note that in a `:def` function local variables are not visible + to {expr}. + Can also be used as a |method|: > GetExpr()->perleval() @@ -8126,6 +8148,7 @@ prevnonblank({lnum}) *prevnonblank()* let ind = indent(prevnonblank(v:lnum - 1)) < When {lnum} is invalid or there is no non-blank line at or above it, zero is returned. + {lnum} is used like with |getline()|. Also see |nextnonblank()|. Can also be used as a |method|: > @@ -8433,6 +8456,8 @@ py3eval({expr}) *py3eval()* Lists are represented as Vim |List| type. Dictionaries are represented as Vim |Dictionary| type with keys converted to strings. + Note that in a `:def` function local variables are not visible + to {expr}. Can also be used as a |method|: > GetExpr()->py3eval() @@ -8448,6 +8473,8 @@ pyeval({expr}) *pyeval()* Lists are represented as Vim |List| type. Dictionaries are represented as Vim |Dictionary| type, non-string keys result in error. + Note that in a `:def` function local variables are not visible + to {expr}. Can also be used as a |method|: > GetExpr()->pyeval() @@ -8707,7 +8734,8 @@ reltime([{start} [, {end}]]) *reltime()* and {end}. The {start} and {end} arguments must be values returned by - reltime(). + reltime(). If there is an error zero is returned in legacy + script, in Vim9 script an error is given. Can also be used as a |method|: > GetStart()->reltime() @@ -8722,6 +8750,8 @@ reltimefloat({time}) *reltimefloat()* let seconds = reltimefloat(reltime(start)) < See the note of reltimestr() about overhead. Also see |profiling|. + If there is an error 0.0 is returned in legacy script, in Vim9 + script an error is given. Can also be used as a |method|: > reltime(start)->reltimefloat() @@ -8741,6 +8771,8 @@ reltimestr({time}) *reltimestr()* can use split() to remove it. > echo split(reltimestr(reltime(start)))[0] < Also see |profiling|. + If there is an error an empty string is returned in legacy + script, in Vim9 script an error is given. Can also be used as a |method|: > reltime(start)->reltimestr() @@ -8974,6 +9006,8 @@ rubyeval({expr}) *rubyeval()* Hashes are represented as Vim |Dictionary| type. Other objects are represented as strings resulted from their "Object#to_s" method. + Note that in a `:def` function local variables are not visible + to {expr}. Can also be used as a |method|: > GetRubyExpr()->rubyeval() @@ -10850,7 +10884,7 @@ synID({lnum}, {col}, {trans}) *synID()* line. 'synmaxcol' applies, in a longer line zero is returned. Note that when the position is after the last character, that's where the cursor can be in Insert mode, synID() returns - zero. + zero. {lnum} is used like with |getline()|. When {trans} is |TRUE|, transparent items are reduced to the item that they reveal. This is useful when wanting to know @@ -10918,7 +10952,7 @@ synconcealed({lnum}, {col}) *synconcealed()* The result is a |List| with currently three items: 1. The first item in the list is 0 if the character at the position {lnum} and {col} is not part of a concealable - region, 1 if it is. + region, 1 if it is. {lnum} is used like with |getline()|. 2. The second item in the list is a string. If the first item is 1, the second item contains the text which will be displayed in place of the concealed text, depending on the @@ -10942,8 +10976,9 @@ synconcealed({lnum}, {col}) *synconcealed()* synstack({lnum}, {col}) *synstack()* Return a |List|, which is the stack of syntax items at the - position {lnum} and {col} in the current window. Each item in - the List is an ID like what |synID()| returns. + position {lnum} and {col} in the current window. {lnum} is + used like with |getline()|. Each item in the List is an ID + like what |synID()| returns. The first item in the List is the outer region, following are items contained in that one. The last one is what |synID()| returns, unless not the whole item is highlighted or it is a @@ -11670,7 +11705,7 @@ win_screenpos({nr}) *win_screenpos()* [1, 1], unless there is a tabline, then it is [2, 1]. {nr} can be the window number or the |window-ID|. Use zero for the current window. - Return [0, 0] if the window cannot be found in the current + Returns [0, 0] if the window cannot be found in the current tabpage. Can also be used as a |method|: > @@ -14388,7 +14423,7 @@ displayed. *except-several-errors* When several errors appear in a single command, the first error message is -usually the most specific one and therefor converted to the error exception. +usually the most specific one and therefore converted to the error exception. Example: > echo novar causes > diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt index 7def757829..274e472a5d 100644 --- a/runtime/doc/fold.txt +++ b/runtime/doc/fold.txt @@ -1,4 +1,4 @@ -*fold.txt* For Vim version 8.2. Last change: 2019 Jun 02 +*fold.txt* For Vim version 8.2. Last change: 2021 Jul 13 VIM REFERENCE MANUAL by Bram Moolenaar @@ -541,6 +541,8 @@ nest, the nested fold is one character right of the fold it's contained in. A closed fold is indicated with a '+'. +These characters can be changed with the 'fillchars' option. + Where the fold column is too narrow to display all nested folds, digits are shown to indicate the nesting level. diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index 8d5caf43a9..505f815224 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 8.2. Last change: 2021 May 16 +*map.txt* For Vim version 8.2. Last change: 2021 Jul 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1580,7 +1580,8 @@ Example: > echo 'hello' g:calledMyCommand = true } -No nesting is supported. +No nesting is supported. Using `:normal` directly does not work, you can use +it indirectly with `:execute`. The replacement text {repl} for a user defined command is scanned for special escape sequences, using <...> notation. Escape sequences are replaced with diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index e0c14a8263..5c925dff22 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 8.2. Last change: 2021 Jun 20 +*options.txt* For Vim version 8.2. Last change: 2021 Jul 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -8669,6 +8669,7 @@ A jump table for the options with a short description can be found at |Q_op|. The `g$` command will move to the end of the screen line. It doesn't make sense to combine "all" with "onemore", but you will not get a warning for it. + When combined with other words, "none" is ignored. NOTE: This option is set to "" when 'compatible' is set. *'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep* diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt index 962882765e..c52708e455 100644 --- a/runtime/doc/pattern.txt +++ b/runtime/doc/pattern.txt @@ -1,4 +1,4 @@ -*pattern.txt* For Vim version 8.2. Last change: 2021 May 02 +*pattern.txt* For Vim version 8.2. Last change: 2021 Jul 16 VIM REFERENCE MANUAL by Bram Moolenaar @@ -936,7 +936,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on): can be any line number. The first line is 1. WARNING: When inserting or deleting lines Vim does not automatically update the matches. This means Syntax highlighting quickly becomes - wrong. Also when refering to the cursor position (".") and + wrong. Also when referring to the cursor position (".") and the cursor moves the display isn't updated for this change. An update is done when using the |CTRL-L| command (the whole screen is updated). Example, to highlight the line where the cursor currently is: > @@ -959,7 +959,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on): for multibyte characters). WARNING: When inserting or deleting text Vim does not automatically update the matches. This means Syntax highlighting quickly becomes - wrong. Also when refering to the cursor position (".") and + wrong. Also when referring to the cursor position (".") and the cursor moves the display isn't updated for this change. An update is done when using the |CTRL-L| command (the whole screen is updated). @@ -989,7 +989,7 @@ $ At end of pattern or in front of "\|", "\)" or "\n" ('magic' on): one screen character. WARNING: When inserting or deleting text Vim does not automatically update highlighted matches. This means Syntax highlighting quickly - becomes wrong. Also when refering to the cursor position (".") and + becomes wrong. Also when referring to the cursor position (".") and the cursor moves the display isn't updated for this change. An update is done when using the |CTRL-L| command (the whole screen is updated). Example, to highlight all the characters after virtual column 72: > @@ -1472,7 +1472,8 @@ criteria: - The number of characters (distance) between two consecutive matching characters. - Matches at the beginning of a word - - Matches after a camel case character or a path separator or a hyphen. + - Matches at a camel case character (e.g. Case in CamelCase) + - Matches after a path separator or a hyphen. - The number of unmatched characters in a string. The matching string with the highest score is returned first. diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index e8ff255a7a..e781f99bc9 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -923,7 +923,7 @@ For Visual Basic use: > BAAN *baan.vim* *baan-syntax* -The baan.vim gives syntax support for BaanC of release BaanIV upto SSA ERP LN +The baan.vim gives syntax support for BaanC of release BaanIV up to SSA ERP LN for both 3 GL and 4 GL programming. Large number of standard defines/constants are supported. diff --git a/runtime/doc/tags b/runtime/doc/tags index 9c99429b81..322a222aae 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -3978,7 +3978,9 @@ E12 message.txt /*E12* E120 eval.txt /*E120* E1200 options.txt /*E1200* E1201 options.txt /*E1201* +E1205 eval.txt /*E1205* E121 eval.txt /*E121* +E1214 eval.txt /*E1214* E122 eval.txt /*E122* E123 eval.txt /*E123* E124 eval.txt /*E124* @@ -6161,6 +6163,10 @@ digraph-encoding digraph.txt /*digraph-encoding* digraph-table digraph.txt /*digraph-table* digraph-table-mbyte digraph.txt /*digraph-table-mbyte* digraph.txt digraph.txt /*digraph.txt* +digraph_get() eval.txt /*digraph_get()* +digraph_getlist() eval.txt /*digraph_getlist()* +digraph_set() eval.txt /*digraph_set()* +digraph_setlist() eval.txt /*digraph_setlist()* digraphs digraph.txt /*digraphs* digraphs-changed version6.txt /*digraphs-changed* digraphs-default digraph.txt /*digraphs-default* @@ -10160,6 +10166,7 @@ vim-8.2 version8.txt /*vim-8.2* vim-additions vi_diff.txt /*vim-additions* vim-announce intro.txt /*vim-announce* vim-arguments starting.txt /*vim-arguments* +vim-changelog version8.txt /*vim-changelog* vim-default-editor gui_w32.txt /*vim-default-editor* vim-dev intro.txt /*vim-dev* vim-mac intro.txt /*vim-mac* @@ -10305,6 +10312,7 @@ win32-faq os_win32.txt /*win32-faq* win32-gettext mlang.txt /*win32-gettext* win32-gui gui_w32.txt /*win32-gui* win32-hidden-menus gui.txt /*win32-hidden-menus* +win32-installer os_win32.txt /*win32-installer* win32-mouse os_win32.txt /*win32-mouse* win32-open-with-menu gui_w32.txt /*win32-open-with-menu* win32-popup-menu gui_w32.txt /*win32-popup-menu* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 655b74a401..05508abdc7 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 8.2. Last change: 2021 Jul 05 +*todo.txt* For Vim version 8.2. Last change: 2021 Jul 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -38,11 +38,14 @@ browser use: https://github.com/vim/vim/issues/1234 *known-bugs* -------------------- Known bugs and current work ----------------------- +Try out callgrind with kcachegrind. + Vim9 - Make everything work: -- possible leak in test_vim9_builtin ? -- Make "for _ in range()" work, do not store the value in a var. +- Check TODO items in vim9compile.c and vim9execute.c - use CheckLegacyAndVim9Success(lines) in many more places -- compile get_lambda_tv() in popup_add_timeout() + This doesn't work - Test_list_assign(): + var l = [0] + l[:] = [1, 2] - For builtin functions using tv_get_string*() use check_for_string() to be more strict about the argument type (not a bool). done: balloon_() @@ -214,10 +217,13 @@ Terminal emulator window: Include patch #6290: recognize shell directory change. -MS-Windows GUI: default 'encoding' to "utf-8" ? (#8221) - Add #ifdef MSWIN before enc_locale() in set_init_1(). - Or just always for MS-Windows? Conversion to 'termencoding' should always - work? +When using 'cryptmethod' xchaha20 the undo file is not encrypted. +Need to handle extra bytes. + +Test_communicate_ipv6(): is flaky on many systems +Fails in line 64 of Ch_communicate, no exception is thrown. + +Rename getdigraphlist -> digraph_getlist() etc. Valgrind reports memory leaks in test_options. Valgrind reports overlapping memcpy in @@ -242,6 +248,8 @@ Memory leaks in test_channel? (or is it because of fork()) initialization to figure out the default value from 'shell'. Add a test for this. +MS-Windows: did path modifier :p:8 stop working? #8600 + test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows. Mapping with partial match not executed properly in GTK. (Ingo Karkat, #7082) @@ -269,6 +277,9 @@ Remove SPACE_IN_FILENAME ? It is only used for completion. Searching for \%'> does not find anything when using line Visual selection. Probably because it's using MAXCOL. #8238 +Make "g>" and "g<" in Visual mode move the text right or left. +Also for a block selection. #8558 + Add optional argument to virtcol() that specifies "start", "cursor" or "end" to tell which value from getvvcol() should be used. (#7964) Value returned by virtcol() changes depending on how lines wrap. This is @@ -280,10 +291,12 @@ Scroll doesn't work correctly, why? glob() and globfile() do not always honor 'wildignorecase'. #8350 globpath() does not use 'wildignorecase' at all? +":find" incorrectly searches parent directory of path (#8533) + Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work with 'termguicolors'. #1740 -Patch for blockwise paste reporting changes: #6660. +Patch for blockwise paste reporting changes: #6660. Asked for a PR. Patch to make fillchars global-local. (#5206) @@ -3069,7 +3082,7 @@ Awaiting updated patches: 7 When 'rightleft' is set, the search pattern should be displayed right to left as well? See patch of Dec 26. (Nadim Shaikli) 8 Option to lock all used memory so that it doesn't get swapped to disk - (uncrypted). Patch by Jason Holt, 2003 May 23. Uses mlock. + (unencrypted). Patch by Jason Holt, 2003 May 23. Uses mlock. 7 Add ! register, for shell commands. (patch from Grenie) 8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's done for filetype detection. Patch from Walter Briscoe, 2003 Jul 1. diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 2651bb8a17..7765bea166 100644 --- a/runtime/doc/usr_41. |