# HG changeset patch # User Bram Moolenaar # Date 1645878604 -3600 # Node ID d19b7aee192545a1ad7ae61e595223ef984765a3 # Parent 8481c8908b5eda278b62edbcea14ded97607b73d Update runtime files. Commit: https://github.com/vim/vim/commit/c51cf0329809c7ae946c59d6f56699227efc9d1b Author: Bram Moolenaar Date: Sat Feb 26 12:25:45 2022 +0000 Update runtime files. diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -3,7 +3,7 @@ vim9script # Vim functions for file type detection # # Maintainer: Bram Moolenaar -# Last Change: 2022 Feb 05 +# Last Change: 2022 Feb 22 # These functions are moved here from runtime/filetype.vim to make startup # faster. diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile --- a/runtime/doc/Makefile +++ b/runtime/doc/Makefile @@ -153,6 +153,7 @@ DOCS = \ version6.txt \ version7.txt \ version8.txt \ + version9.txt \ vi_diff.txt \ vim9.txt \ visual.txt \ @@ -298,6 +299,7 @@ HTMLS = \ version6.html \ version7.html \ version8.html \ + version9.html \ vi_diff.html \ vimindex.html \ vim9.html \ diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1639,7 +1639,7 @@ Examples for reading and writing compres : autocmd BufReadPre,FileReadPre *.gz set bin : autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip : autocmd BufReadPost,FileReadPost *.gz set nobin - : autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " . expand("%:r") + : autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " .. expand("%:r") : autocmd BufWritePost,FileWritePost *.gz !mv :r : autocmd BufWritePost,FileWritePost *.gz !gzip :r @@ -1738,7 +1738,7 @@ To insert the current date and time in a : else : let l = line("$") : endif - : exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " . + : exe "1," .. l .. "g/Last modified: /s/Last modified: .*/Last modified: " .. : \ strftime("%Y %b %d") :endfun diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,4 +1,4 @@ -*builtin.txt* For Vim version 8.2. Last change: 2022 Feb 18 +*builtin.txt* For Vim version 8.2. Last change: 2022 Feb 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -854,7 +854,7 @@ argv([{nr} [, {winid}]]) :let i = 0 :while i < argc() : let f = escape(fnameescape(argv(i)), '.') - : exe 'amenu Arg.' . f . ' :e ' . f . '' + : exe 'amenu Arg.' .. f .. ' :e ' .. f .. '' : let i = i + 1 :endwhile < Without the {nr} argument, or when {nr} is -1, a |List| with @@ -1134,7 +1134,7 @@ bufwinid({buf}) *bufwinid()* see |bufname()| above. If buffer {buf} doesn't exist or there is no such window, -1 is returned. Example: > - echo "A window containing buffer 1 is " . (bufwinid(1)) + echo "A window containing buffer 1 is " .. (bufwinid(1)) < Only deals with the current tab page. @@ -1147,7 +1147,7 @@ bufwinnr({buf}) *bufwinnr()* If buffer {buf} doesn't exist or there is no such window, -1 is returned. Example: > - echo "A window containing buffer 1 is " . (bufwinnr(1)) + echo "A window containing buffer 1 is " .. (bufwinnr(1)) < The number can be used with |CTRL-W_w| and ":wincmd w" |:wincmd|. @@ -1197,7 +1197,7 @@ byteidx({expr}, {nr}) *byteidx()* byteidxcomp({expr}, {nr}) *byteidxcomp()* Like byteidx(), except that a composing character is counted as a separate character. Example: > - let s = 'e' . nr2char(0x301) + let s = 'e' .. nr2char(0x301) echo byteidx(s, 1) echo byteidxcomp(s, 1) echo byteidxcomp(s, 2) @@ -1392,7 +1392,7 @@ col({expr}) The result is a Number, whic col(".") column of cursor col("$") length of cursor line plus one col("'t") column of mark t - col("'" . markname) column of mark markname + col("'" .. markname) column of mark markname < The first column is 1. 0 is returned for an error. For an uppercase mark the column may actually be in another buffer. @@ -1401,7 +1401,7 @@ col({expr}) The result is a Number, whic line. This can be used to obtain the column in Insert mode: > :imap :let save_ve = &ve \:set ve=all - \:echo col(".") . "\n" + \:echo col(".") .. "\n" \let &ve = save_ve < Can also be used as a |method|: > @@ -2247,12 +2247,12 @@ expand({string} [, {nosuf} [, {list}]]) :e extension only Example: > - :let &tags = expand("%:p:h") . "/tags" + :let &tags = expand("%:p:h") .. "/tags" < Note that when expanding a string that starts with '%', '#' or '<', any following text is ignored. This does NOT work: > :let doesntwork = expand("%:h.bak") < Use this: > - :let doeswork = expand("%:h") . ".bak" + :let doeswork = expand("%:h") .. ".bak" < Also note that expanding "" and others only returns the referenced file name without further expansion. If "" is "~/.cshrc", you need to do another expand() to have the @@ -2633,7 +2633,7 @@ fnameescape({string}) *fnameescape() and |:write|). And a "-" by itself (special after |:cd|). Example: > :let fname = '+some str%nge|name' - :exe "edit " . fnameescape(fname) + :exe "edit " .. fnameescape(fname) < results in executing: > edit \+some\ str\%nge\|name < @@ -2814,7 +2814,7 @@ function({name} [, {arglist}] [, {dict}] < The Dictionary is only useful when calling a "dict" function. In that case the {dict} is passed in as "self". Example: > function Callback() dict - echo "called for " . self.name + echo "called for " .. self.name endfunction ... let context = {"name": "example"} @@ -3013,7 +3013,7 @@ getbufvar({buf}, {varname} [, {def}]) string is returned, there is no error message. Examples: > :let bufmodified = getbufvar(1, "&mod") - :echo "todo myvar = " . getbufvar("todo", "myvar") + :echo "todo myvar = " .. getbufvar("todo", "myvar") < Can also be used as a |method|: > GetBufnr()->getbufvar(varname) @@ -3074,9 +3074,9 @@ getchar([expr]) *getchar()* This example positions the mouse as it would normally happen: > let c = getchar() if c == "\" && v:mouse_win > 0 - exe v:mouse_win . "wincmd w" + exe v:mouse_win .. "wincmd w" exe v:mouse_lnum - exe "normal " . v:mouse_col . "|" + exe "normal " .. v:mouse_col .. "|" endif < When using bracketed paste only the first character is @@ -3873,7 +3873,7 @@ gettabwinvar({tabnr}, {winnr}, {varname} empty string is returned, there is no error message. Examples: > :let list_is_on = gettabwinvar(1, 2, '&list') - :echo "myvar = " . gettabwinvar(3, 1, 'myvar') + :echo "myvar = " .. gettabwinvar(3, 1, 'myvar') < To obtain all window-local variables use: > gettabwinvar({tabnr}, {winnr}, '&') @@ -4006,7 +4006,7 @@ getwinvar({winnr}, {varname} [, {def}]) Like |gettabwinvar()| for the current tabpage. Examples: > :let list_is_on = getwinvar(2, '&list') - :echo "myvar = " . getwinvar(1, 'myvar') + :echo "myvar = " .. getwinvar(1, 'myvar') < Can also be used as a |method|: > GetWinnr()->getwinvar(varname) @@ -4261,7 +4261,7 @@ histdel({history} [, {item}]) *histde The following three are equivalent: > :call histdel("search", histnr("search")) :call histdel("search", -1) - :call histdel("search", '^'.histget("search", -1).'$') + :call histdel("search", '^' .. histget("search", -1) .. '$') < To delete the last search pattern and use the last-but-one for the "n" command and 'hlsearch': > @@ -4280,7 +4280,7 @@ histget({history} [, {index}]) *histg Examples: Redo the second last search from history. > - :execute '/' . histget("search", -2) + :execute '/' .. histget("search", -2) < Define an Ex command ":H {num}" that supports re-execution of the {num}th entry from the output of |:history|. > @@ -4526,7 +4526,7 @@ input({prompt} [, {text} [, {completion} |:execute| or |:normal|. Example with a mapping: > - :nmap \x :call GetFoo():exe "/" . Foo + :nmap \x :call GetFoo():exe "/" .. Foo :function GetFoo() : call inputsave() : let g:Foo = input("enter search pattern: ") @@ -4700,7 +4700,7 @@ items({dict}) *items()* order. Also see |keys()| and |values()|. Example: > for [key, value] in items(mydict) - echo key . ': ' . value + echo key .. ': ' .. value endfor < Can also be used as a |method|: > @@ -4715,7 +4715,7 @@ join({list} [, {sep}]) *join()* {sep} is omitted a single space is used. Note that {sep} is not added at the end. You might want to add it there too: > - let lines = join(mylist, "\n") . "\n" + let lines = join(mylist, "\n") .. "\n" < String items are used as-is. |Lists| and |Dictionaries| are converted into a string like with |string()|. The opposite function is |split()|. @@ -4927,7 +4927,7 @@ line({expr} [, {winid}]) *line()* line(".") line number of the cursor line(".", winid) idem, in window "winid" line("'t") line number of mark t - line("'" . marker) line number of mark marker + line("'" .. marker) line number of mark marker < To jump to the last known position when opening a file see |last-position-jump|. @@ -5161,7 +5161,7 @@ map({expr1}, {expr2}) *map()* current byte. For a |String| |v:key| has the index of the current character. Example: > - :call map(mylist, '"> " . v:val . " <"') + :call map(mylist, '"> " .. v:val .. " <"') < This puts "> " before and " <" after each item in "mylist". Note that {expr2} is the result of an expression and is then @@ -5175,19 +5175,19 @@ map({expr1}, {expr2}) *map()* The function must return the new value of the item. Example that changes each value by "key-value": > func KeyValue(key, val) - return a:key . '-' . a:val + return a:key .. '-' .. a:val endfunc call map(myDict, function('KeyValue')) < It is shorter when using a |lambda|: > - call map(myDict, {key, val -> key . '-' . val}) + call map(myDict, {key, val -> key .. '-' .. val}) < If you do not use "val" you can leave it out: > - call map(myDict, {key -> 'item: ' . key}) + call map(myDict, {key -> 'item: ' .. key}) < If you do not use "key" you can use a short name: > - call map(myDict, {_, val -> 'item: ' . val}) + call map(myDict, {_, val -> 'item: ' .. val}) < The operation is done in-place for a |List| and |Dictionary|. If you want it to remain unmodified make a copy first: > - :let tlist = map(copy(mylist), ' v:val . "\t"') + :let tlist = map(copy(mylist), ' v:val .. "\t"') < Returns {expr1}, the |List| or |Dictionary| that was filtered, or a new |Blob| or |String|. @@ -5263,7 +5263,7 @@ maparg({name} [, {mode} [, {abbr} [, {di then the global mappings. This function can be used to map a key even when it's already mapped, and have it do the original mapping too. Sketch: > - exe 'nnoremap ==' . maparg('', 'n') + exe 'nnoremap ==' .. maparg('', 'n') < Can also be used as a |method|: > GetKey()->maparg('n') @@ -5786,7 +5786,7 @@ mkdir({name} [, {path} [, {prot}]]) {name}. Thus if you create /tmp/foo/bar then /tmp/foo will be created with 0o755. Example: > - :call mkdir($HOME . "/tmp/foo/bar", "p", 0o700) + :call mkdir($HOME .. "/tmp/foo/bar", "p", 0o700) < This function is not available in the |sandbox|. @@ -6227,7 +6227,7 @@ prompt_setcallback({buf}, {expr}) *pro stopinsert close else - call append(line('$') - 1, 'Entered: "' . a:text . '"') + call append(line('$') - 1, 'Entered: "' .. a:text .. '"') " Reset 'modified' to allow the buffer to be closed. set nomodified endif @@ -6424,7 +6424,7 @@ readdir({directory} [, {expr} [, {dict}] function! s:tree(dir) return {a:dir : map(readdir(a:dir), \ {_, x -> isdirectory(x) ? - \ {x : s:tree(a:dir . '/' . x)} : x})} + \ {x : s:tree(a:dir .. '/' .. x)} : x})} endfunction echo s:tree(".") < @@ -6686,7 +6686,7 @@ remote_peek({serverid} [, {retvar}]) *r {only available when compiled with the |+clientserver| feature} Examples: > :let repl = "" - :echo "PEEK: ".remote_peek(id, "repl").": ".repl + :echo "PEEK: " .. remote_peek(id, "repl") .. ": " .. repl < Can also be used as a |method|: > ServerId()->remote_peek() @@ -6724,12 +6724,12 @@ remote_send({server}, {string} [, {idvar Note: Any errors will be reported in the server and may mess up the display. Examples: > - :echo remote_send("gvim", ":DropAndReply ".file, "serverid"). + :echo remote_send("gvim", ":DropAndReply " .. file, "serverid") .. \ remote_read(serverid) :autocmd NONE RemoteReply * \ echo remote_read(expand("")) - :echo remote_send("gvim", ":sleep 10 | echo ". + :echo remote_send("gvim", ":sleep 10 | echo " .. \ 'server2client(expand(""), "HELLO")') < Can also be used as a |method|: > @@ -6754,7 +6754,7 @@ remove({list}, {idx} [, {end}]) *remo points to an item before {idx} this is an error. See |list-index| for possible values of {idx} and {end}. Example: > - :echo "last item: " . remove(mylist, -1) + :echo "last item: " .. remove(mylist, -1) :call remove(mylist, 0, 9) < Use |delete()| to remove a file. @@ -6770,13 +6770,13 @@ remove({blob}, {idx} [, {end}]) byte as {end} a |Blob| with one byte is returned. When {end} points to a byte before {idx} this is an error. Example: > - :echo "last byte: " . remove(myblob, -1) + :echo "last byte: " .. remove(myblob, -1) :call remove(mylist, 0, 9) remove({dict}, {key}) Remove the entry from {dict} with key {key} and return it. Example: > - :echo "removed " . remove(dict, "one") + :echo "removed " .. remove(dict, "one") < If there is no {key} in {dict} this is an error. rename({from}, {to}) *rename()* @@ -6907,7 +6907,7 @@ screencol() *screencol()* column inside the command line, which is 1 when the command is executed. To get the cursor position in the file use one of the following mappings: > - nnoremap GG ":echom ".screencol()."\n" + nnoremap GG ":echom " .. screencol() .. "\n" nnoremap GG :echom screencol() nnoremap GG echom screencol() < @@ -7031,7 +7031,7 @@ search({pattern} [, {flags} [, {stopline Example (goes over all files in the argument list): > :let n = 1 :while n <= argc() " loop over all files in arglist - : exe "argument " . n + : exe "argument " .. n : " start at the last char in the file and wrap for the : " first search to find match at start of file : normal G$ @@ -7115,11 +7115,11 @@ searchcount([{options}]) *searchcoun return printf(' /%s [%d/%d]', @/, \ result.current, result.total) endfunction - let &statusline .= '%{LastSearchCount()}' + let &statusline ..= '%{LastSearchCount()}' " Or if you want to show the count only when " 'hlsearch' was on - " let &statusline .= + " let &statusline ..= " \ '%{v:hlsearch ? LastSearchCount() : ""}' < You can also update the search count, which can be useful in a @@ -7943,10 +7943,10 @@ shellescape({string} [, {special}]) *s character inside single quotes. Example of use with a |:!| command: > - :exe '!dir ' . shellescape(expand(''), 1) + :exe '!dir ' .. shellescape(expand(''), 1) < This results in a directory listing for the file under the cursor. Example of use with |system()|: > - :call system("chmod +w -- " . shellescape(expand("%"))) + :call system("chmod +w -- " .. shellescape(expand("%"))) < See also |::S|. Can also be used as a |method|: > @@ -8719,7 +8719,7 @@ substitute({string}, {pat}, {sub}, {flag When {sub} starts with "\=", the remainder is interpreted as an expression. See |sub-replace-expression|. Example: > :echo substitute(s, '%\(\x\x\)', - \ '\=nr2char("0x" . submatch(1))', 'g') + \ '\=nr2char("0x" .. submatch(1))', 'g') < When {sub} is a Funcref that function is called, with one optional argument. Example: > @@ -8727,7 +8727,7 @@ substitute({string}, {pat}, {sub}, {flag < The optional argument is a list which contains the whole matched string and up to nine submatches, like what |submatch()| returns. Example: > - :echo substitute(s, '%\(\x\x\)', {m -> '0x' . m[1]}, 'g') + :echo substitute(s, '%\(\x\x\)', {m -> '0x' .. m[1]}, 'g') < Can also be used as a |method|: > GetString()->substitute(pat, sub, flags) @@ -8916,8 +8916,8 @@ system({expr} [, {input}]) *system()* This is not to be used for interactive commands. The result is a String. Example: > - :let files = system("ls " . shellescape(expand('%:h'))) - :let files = system('ls ' . expand('%:h:S')) + :let files = system('ls ' .. shellescape(expand('%:h'))) + :let files = system('ls ' .. expand('%:h:S')) < To make the result more system-independent, the shell output is filtered to replace with for Macintosh, and @@ -9098,7 +9098,7 @@ tempname() *tempname()* *temp-file-n doesn't exist. It can be used for a temporary file. The name is different for at least 26 consecutive calls. Example: > :let tmpfile = tempname() - :exe "redir > " . tmpfile + :exe "redir > " .. tmpfile < For Unix, the file will be in a private directory |tempfile|. For MS-Windows forward slashes are used when the 'shellslash' option is set, or when 'shellcmdflag' starts with '-' and @@ -9295,7 +9295,7 @@ trim({text} [, {mask} [, {dir}]]) *tr Examples: > echo trim(" some text ") < returns "some text" > - echo trim(" \r\t\t\r RESERVE \t\n\x0B\xA0") . "_TAIL" + echo trim(" \r\t\t\r RESERVE \t\n\x0B\xA0") .. "_TAIL" < returns "RESERVE_TAIL" > echo trim("rmX>rrm", "rm<>") < returns "Xrm<>X" (characters in the middle are not removed) > @@ -9486,7 +9486,7 @@ visualmode([{expr}]) *visualmode()* character-wise, line-wise, or block-wise Visual mode respectively. Example: > - :exe "normal " . visualmode() + :exe "normal " .. visualmode() < This enters the same Visual mode as before. It is also useful in scripts if you wish to act differently depending on the Visual mode that was used. @@ -9690,7 +9690,7 @@ winheight({nr}) *winheight()* An existing window always has a height of zero or more. This excludes any window toolbar line. Examples: > - :echo "The current window has " . winheight(0) . " lines." + :echo "The current window has " .. winheight(0) .. " lines." < Can also be used as a |method|: > GetWinid()->winheight() @@ -9831,7 +9831,7 @@ winwidth({nr}) *winwidth()* returned. When window {nr} doesn't exist, -1 is returned. An existing window always has a width of zero or more. Examples: > - :echo "The current window has " . winwidth(0) . " columns." + :echo "The current window has " .. winwidth(0) .. " columns." :if winwidth(0) <= 50 : 50 wincmd | :endif diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -946,7 +946,7 @@ Consider using a character like "@" or " of the expression contains the separation character. Examples: > - :s@\n@\="\r" . expand("$HOME") . "\r"@ + :s@\n@\="\r" .. expand("$HOME") .. "\r"@ This replaces an end-of-line with a new line containing the value of $HOME. > s/E/\="\"/g @@ -1123,7 +1123,7 @@ 5. Copying and moving text *copy-move the command. You need to escape the '|' and '"' characters to prevent them from terminating the command. Example: > - :put ='path' . \",/test\" + :put ='path' .. \",/test\" < If there is no expression after '=', Vim uses the previous expression. You can see it with ":dis =". diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt --- a/runtime/doc/channel.txt +++ b/runtime/doc/channel.txt @@ -91,7 +91,7 @@ And you should see the message in Vim. Y To handle asynchronous communication a callback needs to be used: > func MyHandler(channel, msg) - echo "from the handler: " . a:msg + echo "from the handler: " .. a:msg endfunc call ch_sendexpr(channel, 'hello!', {'callback': "MyHandler"}) Vim will not wait for a response. Now the server can send the response later @@ -136,7 +136,7 @@ When using an IPv6 address, enclose it w gets two arguments: the channel and the received message. Example: > func Handle(channel, msg) - echo 'Received: ' . a:msg + echo 'Received: ' .. a:msg endfunc let channel = ch_open("localhost:8765", {"callback": "Handle"}) < @@ -1296,7 +1296,7 @@ prompt. > " Function handling output from the shell: Added above the prompt. func GotOutput(channel, msg) - call append(line("$") - 1, "- " . a:msg) + call append(line("$") - 1, "- " .. a:msg) endfunc " Function handling the shell exist: close the window. diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -227,7 +227,7 @@ CTRL-\ e {expr} *c_CTRL-\_e* Example: > :cmap eAppendSome() :func AppendSome() - :let cmd = getcmdline() . " Some()" + :let cmd = getcmdline() .. " Some()" :" place the cursor on the ) :call setcmdpos(strlen(cmd)) :return cmd diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt --- a/runtime/doc/diff.txt +++ b/runtime/doc/diff.txt @@ -382,13 +382,13 @@ Example (this does almost the same as 'd function MyDiff() let opt = "" if &diffopt =~ "icase" - let opt = opt . "-i " + let opt = opt .. "-i " endif if &diffopt =~ "iwhite" - let opt = opt . "-b " + let opt = opt .. "-b " endif - silent execute "!diff -a --binary " . opt . v:fname_in . " " . v:fname_new . - \ " > " . v:fname_out + silent execute "!diff -a --binary " .. opt .. v:fname_in .. " " .. v:fname_new .. + \ " > " .. v:fname_out redraw! endfunction @@ -445,8 +445,8 @@ Example (this does the same as 'patchexp set patchexpr=MyPatch() function MyPatch() - :call system("patch -o " . v:fname_out . " " . v:fname_in . - \ " < " . v:fname_diff) + :call system("patch -o " .. v:fname_out .. " " .. v:fname_in .. + \ " < " .. v:fname_diff) endfunction Make sure that using the "patch" program doesn't have unwanted side effects. diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt --- a/runtime/doc/editing.txt +++ b/runtime/doc/editing.txt @@ -444,9 +444,9 @@ does apply like to other wildcards. Environment variables in the expression are expanded when evaluating the expression, thus this works: > - :e `=$HOME . '/.vimrc'` + :e `=$HOME .. '/.vimrc'` This does not work, $HOME is inside a string and used literally: > - :e `='$HOME' . '/.vimrc'` + :e `='$HOME' .. '/.vimrc'` If the expression returns a string then names are to be separated with line breaks. When the result is a |List| then each item is used as a name. Line diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.2. Last change: 2022 Feb 20 +*eval.txt* For Vim version 8.2. Last change: 2022 Feb 21 VIM REFERENCE MANUAL by Bram Moolenaar @@ -470,7 +470,7 @@ It is also possible to put remaining ite :for [i, j; rest] in listlist : call Doit(i, j) : if !empty(rest) - : echo "remainder: " . string(rest) + : echo "remainder: " .. string(rest) : endif :endfor @@ -498,11 +498,11 @@ Functions that are useful with a List: > :let list = split("a b c") " create list from items in a string :let string = join(list, ', ') " create string from list items :let s = string(list) " String representation of list - :call map(list, '">> " . v:val') " prepend ">> " to each item + :call map(list, '">> " .. v:val') " prepend ">> " to each item Don't forget that a combination of features can make things simple. For example, to add up all the numbers in a list: > - :exe 'let sum = ' . join(nrlist, '+') + :exe 'let sum = ' .. join(nrlist, '+') 1.4 Dictionaries ~ @@ -568,7 +568,7 @@ turn the Dictionary into a List and pass Most often you want to loop over the keys, using the |keys()| function: > :for key in keys(mydict) - : echo key . ': ' . mydict[key] + : echo key .. ': ' .. mydict[key] :endfor The List of keys is unsorted. You may want to sort them first: > @@ -576,13 +576,13 @@ The List of keys is unsorted. You may w To loop over the values use the |values()| function: > :for v in values(mydict) - : echo "value: " . v + : echo "value: " .. v :endfor If you want both the key and the value use the |items()| function. It returns a List in which each item is a List with two items, the key and the value: > :for [key, value] in items(mydict) - : echo key . ': ' . value + : echo key .. ': ' .. value :endfor @@ -677,7 +677,7 @@ Functions that can be used with a Dictio :let small = min(dict) " minimum value in dict :let xs = count(dict, 'x') " count nr of times 'x' appears in dict :let s = string(dict) " String representation of dict - :call map(dict, '">> " . v:val') " prepend ">> " to each item + :call map(dict, '">> " .. v:val') " prepend ">> " to each item 1.5 Blobs ~ @@ -921,13 +921,13 @@ Expression nesting is limited to 1000 le to avoid running out of stack and crashing. *E1169* -expr1 *expr1* *trinary* *falsy-operator* *??* *E109* +expr1 *expr1* *ternary* *falsy-operator* *??* *E109* ----- -The trinary operator: expr2 ? expr1 : expr1 +The ternary operator: expr2 ? expr1 : expr1 The falsy operator: expr2 ?? expr1 -Trinary operator ~ +Ternary operator ~ In legacy script the expression before the '?' is evaluated to a number. If it evaluates to |TRUE|, the result is the value of the expression between the @@ -1530,7 +1530,7 @@ option *expr-option* *E112* *E113* &l:option local option value Examples: > - echo "tabstop is " . &tabstop + echo "tabstop is " .. &tabstop if &insertmode Any option name can be used here. See |options|. When using the local value @@ -1820,7 +1820,7 @@ maintain a counter: > echo "script executed for the first time" else let s:counter = s:counter + 1 - echo "script executed " . s:counter . " times now" + echo "script executed " .. s:counter .. " times now" endif Note that this means that filetype plugins don't get a different set of script @@ -1955,7 +1955,7 @@ v:completed_item *v:count* *count-variable* v:count The count given for the last Normal mode command. Can be used to get the count before a mapping. Read-only. Example: > - :map _x :echo "the count is " . v:count + :map _x :echo "the count is " .. v:count < Note: The is required to remove the line range that you get when typing ':' after a count. When there are two counts, as in "3d2w", they are multiplied, @@ -2829,9 +2829,9 @@ Example: > : echohl Title : echo a:title : echohl None - : echo a:0 . " items:" + : echo a:0 .. " items:" : for s in a:000 - : echon ' ' . s + : echon ' ' .. s : endfor :endfunction @@ -2874,7 +2874,7 @@ This function can then be called with: > this works: *function-range-example* > :function Mynumber(arg) - : echo line(".") . " " . a:arg + : echo line(".") .. " " .. a:arg :endfunction :1,5call Mynumber(getline(".")) < @@ -2885,7 +2885,7 @@ This function can then be called with: > Example of a function that handles the range itself: > :function Cont() range - : execute (a:firstline + 1) . "," . a:lastline . 's/^/\t\\ ' + : execute (a:firstline + 1) .. "," .. a:lastline .. 's/^/\t\\ ' :endfunction :4,8call Cont() < @@ -3077,7 +3077,7 @@ declarations and assignments do not use This cannot be used to add an item to a |List|. This cannot be used to set a byte in a String. You can do that like this: > - :let var = var[0:2] . 'X' . var[4:] + :let var = var[0:2] .. 'X' .. var[4:] < When {var-name} is a |Blob| then {idx} can be the length of the blob, in which case one byte is appended. @@ -3147,7 +3147,7 @@ declarations and assignments do not use is just like using the |:set| command: both the local value and the global value are changed. Example: > - :let &path = &path . ',/usr/local/include' + :let &path = &path .. ',/usr/local/include' < This also works for terminal codes in the form t_xx. But only for alphanumerical names. Example: > :let &t_k1 = "\[234;" @@ -3425,6 +3425,8 @@ text... :if {expr1} *:if* *:end* *:endif* *:en* *E171* *E579* *E580* :en[dif] Execute the commands until the next matching ":else" or ":endif" if {expr1} evaluates to non-zero. + Although the short forms work, it is recommended to + always use `:endif` to avoid confusion. From Vim version 4.5 until 5.0, every Ex command in between the ":if" and ":endif" is ignored. These two @@ -4028,7 +4030,7 @@ exception most recently caught as long i :function! Caught() : if v:exception != "" - : echo 'Caught "' . v:exception . '" in ' . v:throwpoint + : echo 'Caught "' . v:exception .. '" in ' .. v:throwpoint : else : echo 'Nothing caught' : endif @@ -4431,8 +4433,8 @@ a script in order to catch unexpected th :catch /^Vim:Interrupt$/ : echo "Script interrupted" :catch /.*/ - : echo "Internal error (" . v:exception . ")" - : echo " - occurred at " . v:throwpoint + : echo "Internal error (" .. v:exception .. ")" + : echo " - occurred at " .. v:throwpoint :endtry :" end of script @@ -4628,7 +4630,7 @@ parentheses can be cut out from |v:excep :function! CheckRange(a, func) : if a:a < 0 - : throw "EXCEPT:MATHERR:RANGE(" . a:func . ")" + : throw "EXCEPT:MATHERR:RANGE(" .. a:func .. ")" : endif :endfunction : @@ -4655,7 +4657,7 @@ parentheses can be cut out from |v:excep : try : execute "write" fnameescape(a:file) : catch /^Vim(write):/ - : throw "EXCEPT:IO(" . getcwd() . ", " . a:file . "):WRITEERR" + : throw "EXCEPT:IO(" .. getcwd() .. ", " .. a:file .. "):WRITEERR" : endtry :endfunction : @@ -4674,9 +4676,9 @@ parentheses can be cut out from |v:excep : let dir = substitute(v:exception, '.*(\(.\+\),\s*.\+).*', '\1', "") : let file = substitute(v:exception, '.*(.\+,\s*\(.\+\)).*', '\1', "") : if file !~ '^/' - : let file = dir . "/" . file + : let file = dir .. "/" .. file : endif - : echo 'I/O error for "' . file . '"' + : echo 'I/O error for "' .. file .. '"' : :catch /^EXCEPT/ : echo "Unspecified error" @@ -4744,7 +4746,7 @@ clauses, however, is executed. : echo "inner finally" : endtry :catch - : echo 'outer catch-all caught "' . v:exception . '"' + : echo 'outer catch-all caught "' .. v:exception .. '"' : finally : echo "outer finally" :endtry @@ -4806,7 +4808,7 @@ Printing in Binary ~ : let n = a:nr : let r = "" : while n - : let r = '01'[n % 2] . r + : let r = '01'[n % 2] .. r : let n = n / 2 : endwhile : return r @@ -4817,7 +4819,7 @@ Printing in Binary ~ :func String2Bin(str) : let out = '' : for ix in range(strlen(a:str)) - : let out = out . '-' . Nr2Bin(char2nr(a:str[ix])) + : let out = out .. '-' .. Nr2Bin(char2nr(a:str[ix])) : endfor : return out[1:] :endfunc diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt --- a/runtime/doc/fold.txt +++ b/runtime/doc/fold.txt @@ -507,7 +507,7 @@ Note the use of backslashes to avoid som :function MyFoldText() : let line = getline(v:foldstart) : let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g') - : return v:folddashes . sub + : return v:folddashes .. sub :endfunction Evaluating 'foldtext' is done in the |sandbox|. The current window is set to diff --git a/runtime/doc/ft_raku.txt b/runtime/doc/ft_raku.txt --- a/runtime/doc/ft_raku.txt +++ b/runtime/doc/ft_raku.txt @@ -47,20 +47,20 @@ Numbers, subscripts and superscripts are But some don't come defined by default. Those are digraph definitions you can add in your ~/.vimrc file. > - exec 'digraph \\ '.char2nr('∖') - exec 'digraph \< '.char2nr('≼') - exec 'digraph \> '.char2nr('≽') - exec 'digraph (L '.char2nr('⊈') - exec 'digraph )L '.char2nr('⊉') - exec 'digraph (/ '.char2nr('⊄') - exec 'digraph )/ '.char2nr('⊅') - exec 'digraph )/ '.char2nr('⊅') - exec 'digraph U+ '.char2nr('⊎') - exec 'digraph 0- '.char2nr('⊖') + exec 'digraph \\ ' .. char2nr('∖') + exec 'digraph \< ' .. char2nr('≼') + exec 'digraph \> ' .. char2nr('≽') + exec 'digraph (L ' .. char2nr('⊈') + exec 'digraph )L ' .. char2nr('⊉') + exec 'digraph (/ ' .. char2nr('⊄') + exec 'digraph )/ ' .. char2nr('⊅') + exec 'digraph )/ ' .. char2nr('⊅') + exec 'digraph U+ ' .. char2nr('⊎') + exec 'digraph 0- ' .. char2nr('⊖') " Euler's constant - exec 'digraph ne '.char2nr('𝑒') + exec 'digraph ne ' .. char2nr('𝑒') " Raku's atomic operations marker - exec 'digraph @@ '.char2nr('⚛') + exec 'digraph @@ ' .. char2nr('⚛') Alternatively, you can write Insert mode abbreviations that convert ASCII- based operators into their single-character Unicode equivalent. > diff --git a/runtime/doc/ft_rust.txt b/runtime/doc/ft_rust.txt --- a/runtime/doc/ft_rust.txt +++ b/runtime/doc/ft_rust.txt @@ -26,7 +26,7 @@ behavior of the plugin. g:rustc_path~ Set this option to the path to rustc for use in the |:RustRun| and |:RustExpand| commands. If unset, "rustc" will be located in $PATH: > - let g:rustc_path = $HOME."/bin/rustc" + let g:rustc_path = $HOME .. "/bin/rustc" < *g:rustc_makeprg_no_percent* @@ -87,7 +87,7 @@ g:rust_bang_comment_leader~ g:ftplugin_rust_source_path~ Set this option to a path that should be prepended to 'path' for Rust source files: > - let g:ftplugin_rust_source_path = $HOME.'/dev/rust' + let g:ftplugin_rust_source_path = $HOME .. '/dev/rust' < *g:rustfmt_command* diff --git a/runtime/doc/ft_sql.txt b/runtime/doc/ft_sql.txt --- a/runtime/doc/ft_sql.txt +++ b/runtime/doc/ft_sql.txt @@ -109,8 +109,8 @@ must be configurable. The filetype plug standard objects, plus many additional ones. In order to make this as flexible as possible, you can override the list of objects from within your |vimrc| with the following: > - let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' . - \ ',schema,service,publication,database,datatype,domain' . + let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' .. + \ ',schema,service,publication,database,datatype,domain' .. \ ',index,subscription,synchronization,view,variable' The following |Normal| mode and |Visual| mode maps have been created which use @@ -131,10 +131,10 @@ Repeatedly pressing ]} will cycle throug create index i1 on t1 (c1); The default setting for g:ftplugin_sql_objects is: > - let g:ftplugin_sql_objects = 'function,procedure,event,' . - \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' . - \ 'table,trigger' . - \ ',schema,service,publication,database,datatype,domain' . + let g:ftplugin_sql_objects = 'function,procedure,event,' .. + \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' .. + \ 'table,trigger' .. + \ ',schema,service,publication,database,datatype,domain' .. \ ',index,subscription,synchronization,view,variable' The above will also handle these cases: > diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt --- a/runtime/doc/gui.txt +++ b/runtime/doc/gui.txt @@ -155,8 +155,8 @@ If you are running the X Window System, window Vim is running in with these commands: > :!xwininfo -id $WINDOWID :!xprop -id $WINDOWID - :execute '!xwininfo -id ' . v:windowid - :execute '!xprop -id ' . v:windowid + :execute '!xwininfo -id ' .. v:windowid + :execute '!xprop -id ' .. v:windowid < *gui-IME* *iBus* Input methods for international characters in X that rely on the XIM diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 8.2. Last change: 2021 Dec 27 +*help.txt* For Vim version 8.2. Last change: 2022 Feb 26 VIM - main help file k @@ -197,6 +197,7 @@ Versions ~ |version6.txt| Differences between Vim version 5.7 and 6.x |version7.txt| Differences between Vim version 6.4 and 7.x |version8.txt| Differences between Vim version 7.4 and 8.x +|version9.txt| Differences between Vim version 8.2 and 9.0 *sys-file-list* Remarks about specific systems ~ |os_390.txt| OS/390 Unix diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt --- a/runtime/doc/if_pyth.txt +++ b/runtime/doc/if_pyth.txt @@ -1,4 +1,4 @@ -*if_pyth.txt* For Vim version 8.2. Last change: 2022 Feb 07 +*if_pyth.txt* For Vim version 8.2. Last change: 2022 Feb 22 VIM REFERENCE MANUAL by Paul Moore @@ -25,6 +25,10 @@ The Python 3 interface is available only |+python3| feature. Both can be available at the same time, but read |python-2-and-3|. +NOTE: Python 2 is old and no longer being developed. Using Python 3 is highly +recommended. Python 2 support will be dropped when it does not work properly +anymore. + ============================================================================== 1. Commands *python-commands* @@ -923,7 +927,7 @@ The `:pyxdo` command works similar to `: *has-pythonx* You can test if pyx* commands are available with: > if has('pythonx') - echo 'pyx* commands are available. (Python ' . &pyx . ')' + echo 'pyx* commands are available. (Python ' .. &pyx .. ')' endif When compiled with only one of |+python| or |+python3|, the has() returns 1. diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -879,9 +879,9 @@ Groß): > endif let res = [] let h = '' - for l in systemlist('aiksaurus '.shellescape(a:base)) + for l in systemlist('aiksaurus ' .. shellescape(a:base)) if l[:3] == '=== ' - let h = '('.substitute(l[4:], ' =*$', ')', '') + let h = '(' .. substitute(l[4:], ' =*$', ')', '') elseif l ==# 'Alphabetically similar known words are: ' let h = "\U0001f52e" elseif l[0] =~ '\a' || (h ==# "\U0001f52e" && l[0] ==# "\t") @@ -1266,7 +1266,7 @@ An example that completes the names of t " find months matching with "a:base" let res = [] for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec") - if m =~ '^' . a:base + if m =~ '^' .. a:base call add(res, m) endif endfor @@ -1288,7 +1288,7 @@ The same, but now pretending searching f else " find months matching with "a:base" for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec") - if m =~ '^' . a:base + if m =~ '^' .. a:base call complete_add(m) endif sleep 300m " simulate searching for next match diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -314,7 +314,7 @@ Here is an example that inserts a list n func ListItem() let g:counter += 1 - return g:counter . '. ' + return g:counter .. '. ' endfunc func ListReset() @@ -1697,12 +1697,12 @@ The valid escape sequences are Examples: > command! -nargs=+ -complete=file MyEdit \ for f in expand(, 0, 1) | - \ exe ' split ' . f | + \ exe ' split ' .. f | \ endfor function! SpecialEdit(files, mods) for f in expand(a:files, 0, 1) - exe a:mods . ' split ' . f + exe a:mods .. ' split ' .. f endfor endfunction command! -nargs=+ -complete=file Sedit @@ -1778,7 +1778,7 @@ This will invoke: > : let i = 0 : while i < argc() : if filereadable(argv(i)) - : execute "e " . argv(i) + : execute "e " .. argv(i) : execute a:command : endif : let i = i + 1 diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -1019,7 +1019,7 @@ These commands are not marks themselves, :let lnum = line(".") :keepjumps normal gg :call SetLastChange() - :keepjumps exe "normal " . lnum . "G" + :keepjumps exe "normal " .. lnum .. "G" < Note that ":keepjumps" must be used for every command. When invoking a function the commands in that function diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1142,7 +1142,7 @@ A jump table for the options with a shor If you like to keep a lot of backups, you could use a BufWritePre autocommand to change 'backupext' just before writing the file to include a timestamp. > - :au BufWritePre * let &bex = '-' . strftime("%Y%b%d%X") . '~' + :au BufWritePre * let &bex = '-' .. strftime("%Y%b%d%X") .. '~' < Use 'backupdir' to put the backup in a different directory. *'backupskip'* *'bsk'* @@ -1167,7 +1167,7 @@ A jump table for the options with a shor Note that environment variables are not expanded. If you want to use $HOME you must expand it explicitly, e.g.: > - :let &backupskip = escape(expand('$HOME'), '\') . '/tmp/*' + :let &backupskip = escape(expand('$HOME'), '\') .. '/tmp/*' < Note that the default also makes sure that "crontab -e" works (when a backup would be made by renaming the original file crontab won't see @@ -1218,10 +1218,10 @@ A jump table for the options with a shor The evaluation of the expression must not have side effects! Example: > function MyBalloonExpr() - return 'Cursor is at line ' . v:beval_lnum . - \', column ' . v:beval_col . - \ ' of file ' . bufname(v:beval_bufnr) . - \ ' on word "' . v:beval_text . '"' + return 'Cursor is at line ' .. v:beval_lnum .. + \ ', column ' .. v:beval_col .. + \ ' of file ' .. bufname(v:beval_bufnr) .. + \ ' on word "' .. v:beval_text .. '"' endfunction set bexpr=MyBalloonExpr() set ballooneval @@ -1537,7 +1537,7 @@ A jump table for the options with a shor If the default value taken from $CDPATH is not what you want, include a modified version of the following command in your vimrc file to override it: > - :let &cdpath = ',' . substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g') + :let &cdpath = ',' .. substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g') < This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. (parts of 'cdpath' can be passed to the shell to expand file names). @@ -1582,8 +1582,8 @@ A jump table for the options with a shor set charconvert=CharConvert() fun CharConvert() system("recode " - \ . v:charconvert_from . ".." . v:charconvert_to - \ . " <" . v:fname_in . " >" v:fname_out) + \ .. v:charconvert_from .. ".." .. v:charconvert_to + \ .. " <" .. v:fname_in .. " >" .. v:fname_out) return v:shell_error endfun < The related Vim variables are: @@ -4887,7 +4887,7 @@ A jump table for the options with a shor |+multi_lang| features} Language to use for menu translation. Tells which file is loaded from the "lang" directory in 'runtimepath': > - "lang/menu_" . &langmenu . ".vim" + "lang/menu_" .. &langmenu .. ".vim" < (without the spaces). For example, to always use the Dutch menus, no matter what $LANG is set to: > :set langmenu=nl_NL.ISO_8859-1 @@ -5901,7 +5901,7 @@ A jump table for the options with a shor < To use an environment variable, you probably need to replace the separator. Here is an example to append $INCL, in which directory names are separated with a semi-colon: > - :let &path = &path . "," . substitute($INCL, ';', ',', 'g') + :let &path = &path .. "," .. substitute($INCL, ';', ',', 'g') < Replace the ';' with a ':' or whatever separator is used. Note that this doesn't work when $INCL contains a comma or white space. @@ -8318,7 +8318,7 @@ A jump table for the options with a shor This option cannot be set in a modeline when 'modelineexpr' is off. Example: > - :auto BufEnter * let &titlestring = hostname() . "/" . expand("%:p") + :auto BufEnter * let &titlestring = hostname() .. "/" .. expand("%:p") :set title titlestring=%<%F%=%l/%L-%P titlelen=70 < The value of 'titlelen' is used to align items in the middle or right of the available space. diff --git a/runtime/doc/os_vms.txt b/runtime/doc/os_vms.txt --- a/runtime/doc/os_vms.txt +++ b/runtime/doc/os_vms.txt @@ -603,13 +603,13 @@ program to the new diff on VMS. Add thi function MyDiff() let opt = "" if &diffopt =~ "icase" - let opt = opt . "-i " + let opt = opt .. "-i " endif if &diffopt =~ "iwhite" - let opt = opt . "-b " + let opt = opt .. "-b " endif - silent execute "!mc GNU:diff.exe -a " . opt . v:fname_in . " " . v:fname_new . - \ " > " . v:fname_out + silent execute "!mc GNU:diff.exe -a " .. opt .. v:fname_in .. " " .. v:fname_new .. + \ " > " .. v:fname_out endfunction endif diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt --- a/runtime/doc/pattern.txt +++ b/runtime/doc/pattern.txt @@ -963,7 +963,7 @@ An ordinary atom can be: 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 column where the cursor currently is: > - :exe '/\%' . col(".") . 'c' + :exe '/\%' .. col(".") .. 'c' < Alternatively use: > /\%.c < When 'hlsearch' is set and you move the cursor around and make changes diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt --- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -968,7 +968,7 @@ itself: fun! NetReadFixup(method, line1, line2) if method == 3 " ftp (no <.netrc>) let fourblanklines= line2 - 3 - silent fourblanklines.",".line2."g/^\s*/d" + silent fourblanklines .. "," .. line2 .. "g/^\s*/d" endif endfunction endif @@ -1975,7 +1975,7 @@ To use this function, simply assign its Example: let g:netrw_list_hide= netrw_gitignore#Hide('my_gitignore_file') Function can take additional files with git-ignore patterns. - Example: g:netrw_list_hide= netrw_gitignore#Hide() . '.*\.swp$' + Example: let g:netrw_list_hide= netrw_gitignore#Hide() .. '.*\.swp$' Combining 'netrw_gitignore#Hide' with custom patterns. < @@ -2825,7 +2825,7 @@ your browsing preferences. (see also: | Examples: let g:netrw_list_hide= '.*\.swp$' - let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$' + let g:netrw_list_hide= netrw_gitignore#Hide() .. '.*\.swp$' default: "" *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt --- a/runtime/doc/print.txt +++ b/runtime/doc/print.txt @@ -139,28 +139,28 @@ If there is no error, return zero or an The default for non MS-Windows or VMS systems is to simply use "lpr" to print the file: > - system('lpr' . (&printdevice == '' ? '' : ' -P' . &printdevice) - . ' ' . v:fname_in) . delete(v:fname_in) + v:shell_error + system('lpr' .. (&printdevice == '' ? '' : ' -P' .. &printdevice) + .. ' ' .. v:fname_in) .. delete(v:fname_in) + v:shell_error On MS-Windows machines the default is to copy the file to the currently specified printdevice: > - system('copy' . ' ' . v:fname_in . (&printdevice == '' - ? ' LPT1:' : (' \"' . &printdevice . '\"'))) - . delete(v:fname_in) + system('copy' .. ' ' .. v:fname_in .. (&printdevice == '' + ? ' LPT1:' : (' \"' .. &printdevice .. '\"'))) + .. delete(v:fname_in) On VMS machines the default is to send the file to either the default or currently specified printdevice: > - system('print' . (&printdevice == '' ? '' : ' /queue=' . - &printdevice) . ' ' . v:fname_in) . delete(v:fname_in) + system('print' .. (&printdevice == '' ? '' : ' /queue=' .. + &printdevice) .. ' ' .. v:fname_in) .. delete(v:fname_in) If you change this option, using a function is an easy way to avoid having to escape all the spaces. Example: > :set printexpr=PrintFile(v:fname_in) :function PrintFile(fname) - : call system("ghostview " . a:fname) + : call system("ghostview " .. a:fname) : call delete(a:fname) : return v:shell_error :endfunc diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 8.2. Last change: 2022 Feb 08 +*quickfix.txt* For Vim version 8.2. Last change: 2022 Feb 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -353,7 +353,7 @@ processing a quickfix or location list c cursor position will not be changed. See |:cexpr| for more information. Example: > - :g/mypattern/caddexpr expand("%") . ":" . line(".") . ":" . getline(".") + :g/mypattern/caddexpr expand("%") .. ":" .. line(".") .. ":" .. getline(".") < *:lad* *:addd* *:laddexpr* :lad[dexpr] {expr} Same as ":caddexpr", except the location list for the @@ -654,6 +654,24 @@ quickfix window. If there already is a instead. If the buffer in the used window has changed, and the error is in another file, jumping to the error will fail. You will first have to make sure the window contains a buffer which can be abandoned. + +The following steps are used to find a window to open the file selected from +the quickfix window: +1. If 'switchbuf' contains "usetab", then find a window in any tabpage + (starting with the first tabpage) that has the selected file and jump to + it. +2. Otherwise find a window displaying the selected file in the current tab + page (starting with the window before the quickfix window) and use it. +3. Otherwise find a window displaying a normal buffer ('buftype' is empty) + starting with the window before the quickfix window. If a window is found, + open the file in that window. +4. If a usable window is not found and 'switchbuf' contains "uselast", then + open the file in the last used window. +5. Otherwise open the file in the window before the quickfix window. If there + is no previous window, then open the file in the next window. +6. If a usable window is not found in the above steps, then create a new + horizontally split window above the quickfix window and open the file. + *CTRL-W_* *CTRL-W_* You can use CTRL-W to open a new window and jump to the error there. @@ -663,7 +681,7 @@ FileType event (also see |qf.vim|). The using "quickfix" for the buffer name. This can be used to perform some action on the listed errors. Example: > au BufReadPost quickfix setlocal modifiable - \ | silent exe 'g/^/s//\=line(".")." "/' + \ | silent exe 'g/^/s//\=line(".") .. " "/' \ | setlocal nomodifiable This prepends the line number to each line. Note the use of "\=" in the substitute string of the ":s" command, which is used to evaluate an diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt --- a/runtime/doc/sign.txt +++ b/runtime/doc/sign.txt @@ -101,7 +101,7 @@ 2. Commands *sign-commands* *:sig* * Here is an example that places a sign "piet", displayed with the text ">>", in line 23 of the current file: > :sign define piet text=>> texthl=Search - :exe ":sign place 2 line=23 name=piet file=" . expand("%:p") + :exe ":sign place 2 line=23 name=piet file=" .. expand("%:p") And here is the command to delete it again: > :sign unplace 2 diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt --- a/runtime/doc/spell.txt +++ b/runtime/doc/spell.txt @@ -131,8 +131,8 @@ zuG Undo |zW| and |zG|, remove the wor rare as this is a fairly uncommon command and all intuitive commands for this are already taken. If you want you can add mappings with e.g.: > - nnoremap z? :exe ':spellrare ' . expand('') - nnoremap z/ :exe ':spellrare! ' . expand('') + nnoremap z? :exe ':spellrare ' .. expand('') + nnoremap z/ :exe ':spellrare! ' .. expand('') < |:spellundo|, |zuw|, or |zuW| can be used to undo this. :spellr[rare]! {word} Add {word} as a rare word to the internal word diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt --- a/runtime/doc/starting.txt +++ b/runtime/doc/starting.txt @@ -1378,7 +1378,7 @@ 10. If a file exists with the same name After restoring the Session, the full filename of your current Session is available in the internal variable "v:this_session" |this_session-variable|. An example mapping: > - :nmap :waexe "mksession! " . v:this_session:so ~/sessions/ + :nmap :waexe "mksession! " .. v:this_session:so ~/sessions/ This saves the current Session, and starts off the command to load another. A session includes all tab pages, unless "tabpages" was removed from diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -653,7 +653,7 @@ evaluate to get a unique string to appen so that the full IDs will be unique even when combined with other content in a larger HTML document. Example, to append _ and the buffer number to each ID: > - :let g:html_id_expr = '"_".bufnr("%")' + :let g:html_id_expr = '"_" .. bufnr("%")' < To append a string "_mystring" to the end of each ID: > @@ -3607,8 +3607,8 @@ Do you want to draw with the mouse? Try :function! GetPixel() : let c = getline(".")[col(".") - 1] : echo c - : exe "noremap r".c - : exe "noremap r".c + : exe "noremap r" .. c + : exe "noremap r" .. c :endfunction :noremap :call GetPixel() :set guicursor=n:hor20 " to see the color beneath the cursor @@ -5567,9 +5567,9 @@ types.vim: *.[ch] And put these lines in your .vimrc: > " load the types.vim highlighting file, if it exists - autocmd BufRead,BufNewFile *.[ch] let fname = expand(':p:h') . '/types.vim' + autocmd BufRead,BufNewFile *.[ch] let fname = expand(':p:h') .. '/types.vim' autocmd BufRead,BufNewFile *.[ch] if filereadable(fname) - autocmd BufRead,BufNewFile *.[ch] exe 'so ' . fname + autocmd BufRead,BufNewFile *.[ch] exe 'so ' .. fname autocmd BufRead,BufNewFile *.[ch] endif ============================================================================== diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt --- a/runtime/doc/tabpage.txt +++ b/runtime/doc/tabpage.txt @@ -381,24 +381,24 @@ pages and define labels for them. Then for i in range(tabpagenr('$')) " select the highlighting if i + 1 == tabpagenr() - let s .= '%#TabLineSel#' + let s ..= '%#TabLineSel#' else - let s .= '%#TabLine#' + let s ..= '%#TabLine#' endif " set the tab page number (for mouse clicks) - let s .= '%' . (i + 1) . 'T' + let s ..= '%' .. (i + 1) .. 'T' " the label is made by MyTabLabel() - let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' + let s ..= ' %{MyTabLabel(' .. (i + 1) .. ')} ' endfor " after the last tab fill with TabLineFill and reset tab page nr - let s .= '%#TabLineFill#%T' + let s ..= '%#TabLineFill#%T' " right-align the label to close the current tab page if tabpagenr('$') > 1 - let s .= '%=%#TabLine#%999Xclose' + let s ..= '%=%#TabLine#%999Xclose' endif return s @@ -461,14 +461,14 @@ windows in the tab page and a '+' if the " Append the number of windows in the tab page if more than one let wincount = tabpagewinnr(v:lnum, '$') if wincount > 1 - let label .= wincount + let label ..= wincount endif if label != '' - let label .= ' ' + let label ..= ' ' endif " Append the buffer name - return label . bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) + return label .. bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) endfunction set guitablabel=%{GuiTabLabel()} diff --git a/runtime/doc/tags b/runtime/doc/tags --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -1355,6 +1355,7 @@ +mouse various.txt /*+mouse* +mouse_dec various.txt /*+mouse_dec* +mouse_gpm various.txt /*+mouse_gpm* ++mouse_gpm/dyn various.txt /*+mouse_gpm\/dyn* +mouse_jsbterm various.txt /*+mouse_jsbterm* +mouse_netterm various.txt /*+mouse_netterm* +mouse_pterm various.txt /*+mouse_pterm* @@ -5861,6 +5862,7 @@ bug-fixes-5 version5.txt /*bug-fixes-5* bug-fixes-6 version6.txt /*bug-fixes-6* bug-fixes-7 version7.txt /*bug-fixes-7* bug-fixes-8 version8.txt /*bug-fixes-8* +bug-fixes-9 version9.txt /*bug-fixes-9* bug-reports intro.txt /*bug-reports* bugreport.vim intro.txt /*bugreport.vim* bugs intro.txt /*bugs* @@ -6171,6 +6173,7 @@ compile-changes-5 version5.txt /*compile compile-changes-6 version6.txt /*compile-changes-6* compile-changes-7 version7.txt /*compile-changes-7* compile-changes-8 version8.txt /*compile-changes-8* +compile-changes-9 version9.txt /*compile-changes-9* compiler-compaqada ft_ada.txt /*compiler-compaqada* compiler-decada ft_ada.txt /*compiler-decada* compiler-gcc quickfix.txt /*compiler-gcc* @@ -7820,6 +7823,7 @@ improvements-5 version5.txt /*improvemen improvements-6 version6.txt /*improvements-6* improvements-7 version7.txt /*improvements-7* improvements-8 version8.txt /*improvements-8* +improvements-9 version9.txt /*improvements-9* in_bot channel.txt /*in_bot* in_buf channel.txt /*in_buf* in_io-buffer channel.txt /*in_io-buffer* @@ -7835,6 +7839,7 @@ incompatible-5 version5.txt /*incompatib incompatible-6 version6.txt /*incompatible-6* incompatible-7 version7.txt /*incompatible-7* incompatible-8 version8.txt /*incompatible-8* +incompatible-9 version9.txt /*incompatible-9* indent() builtin.txt /*indent()* indent-expression indent.txt /*indent-expression* indent.txt indent.txt /*indent.txt* @@ -8543,6 +8548,7 @@ new-5 version5.txt /*new-5* new-6 version6.txt /*new-6* new-7 version7.txt /*new-7* new-8 version8.txt /*new-8* +new-9 version9.txt /*new-9* new-GTK-GUI version5.txt /*new-GTK-GUI* new-MzScheme version7.txt /*new-MzScheme* new-Select-mode version5.txt /*new-Select-mode* @@ -8576,6 +8582,7 @@ new-indent-flex version6.txt /*new-inden new-items-6 version6.txt /*new-items-6* new-items-7 version7.txt /*new-items-7* new-items-8 version8.txt /*new-items-8* +new-items-9 version9.txt /*new-items-9* new-line-continuation version5.txt /*new-line-continuation* new-location-list version7.txt /*new-location-list* new-lua version7.txt /*new-lua* @@ -8625,6 +8632,7 @@ new-utf-8 version6.txt /*new-utf-8* new-vertsplit version6.txt /*new-vertsplit* new-vim-script version7.txt /*new-vim-script* new-vim-script-8 version8.txt /*new-vim-script-8* +new-vim-script-9 version9.txt /*new-vim-script-9* new-vim-server version6.txt /*new-vim-server* new-vimgrep version7.txt /*new-vimgrep* new-vimscript-8.2 version8.txt /*new-vimscript-8.2* @@ -8743,7 +8751,8 @@ pascal.vim syntax.txt /*pascal.vim* patches-8 version8.txt /*patches-8* patches-8.1 version8.txt /*patches-8.1* patches-8.2 version8.txt /*patches-8.2* -patches-after-8.2 version8.txt /*patches-after-8.2* +patches-9 version9.txt /*patches-9* +patches-after-8.2 version9.txt /*patches-after-8.2* pathshorten() builtin.txt /*pathshorten()* pattern pattern.txt /*pattern* pattern-atoms pattern.txt /*pattern-atoms* @@ -10011,6 +10020,7 @@ terminal.txt terminal.txt /*terminal.txt terminalprops() builtin.txt /*terminalprops()* terminfo term.txt /*terminfo* termresponse-variable eval.txt /*termresponse-variable* +ternary eval.txt /*ternary* test-functions usr_41.txt /*test-functions* test-functions-details testing.txt /*test-functions-details* test_alloc_fail() testing.txt /*test_alloc_fail()* @@ -10102,7 +10112,6 @@ tooltips gui.txt /*tooltips* toupper() builtin.txt /*toupper()* tr() builtin.txt /*tr()* trim() builtin.txt /*trim()* -trinary eval.txt /*trinary* trojan-horse starting.txt /*trojan-horse* true vim9.txt /*true* true-variable eval.txt /*true-variable* @@ -10457,6 +10466,7 @@ version-7.4 version7.txt /*version-7.4* version-8.0 version8.txt /*version-8.0* version-8.1 version8.txt /*version-8.1* version-8.2 version8.txt /*version-8.2* +version-9.0 version9.txt /*version-9.0* version-variable eval.txt /*version-variable* version4.txt version4.txt /*version4.txt* version5.txt version5.txt /*version5.txt* @@ -10471,6 +10481,8 @@ version8.0 version8.txt /*version8.0* version8.1 version8.txt /*version8.1* version8.2 version8.txt /*version8.2* version8.txt version8.txt /*version8.txt* +version9.0 version9.txt /*version9.0* +version9.txt version9.txt /*version9.txt* versionlong-variable eval.txt /*versionlong-variable* vi intro.txt /*vi* vi-differences vi_diff.txt /*vi-differences* @@ -10486,6 +10498,8 @@ vim-7.4 version7.txt /*vim-7.4* vim-8 version8.txt /*vim-8* vim-8.1 version8.txt /*vim-8.1* vim-8.2 version8.txt /*vim-8.2* +vim-9 version9.txt /*vim-9* +vim-9.0 version9.txt /*vim-9.0* vim-additions vi_diff.txt /*vim-additions* vim-announce intro.txt /*vim-announce* vim-arguments starting.txt /*vim-arguments* diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt --- a/runtime/doc/tagsrch.txt +++ b/runtime/doc/tagsrch.txt @@ -724,7 +724,7 @@ matches the pattern "^# *define" it is n If you want to list matches, and then select one to jump to, you could use a mapping to do that for you. Here is an example: > - :map [I:let nr = input("Which one: ")exe "normal " . nr ."[\t" + :map [I:let nr = input("Which one: ")exe "normal " .. nr .. "[\t" < *[i* [i Display the first line that contains the keyword diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt --- a/runtime/doc/term.txt +++ b/runtime/doc/term.txt @@ -984,7 +984,7 @@ an #if/#else/#endif block, the selection For MS-Windows and xterm the time for double clicking can be set with the 'mousetime' option. For the other systems this time is defined outside of Vim. An example, for using a double click to jump to the tag under the cursor: > - :map <2-LeftMouse> :exe "tag ". expand("") + :map <2-LeftMouse> :exe "tag " .. expand("") Dragging the mouse with a double click (button-down, button-up, button-down and then drag) will result in whole words to be selected. This continues diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -979,8 +979,8 @@ Currently supported commands: < Calls a function defined like this: > function Tapi_Impression(bufnum, arglist) if len(a:arglist) == 2 - echomsg "impression " . a:arglist[0] - echomsg "count " . a:arglist[1] + echomsg "impression " .. a:arglist[0] + echomsg "count " .. a:arglist[1] endif endfunc < Output from `:echo` may be erased by a redraw, use `:echomsg` diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt --- a/runtime/doc/tips.txt +++ b/runtime/doc/tips.txt @@ -101,14 +101,14 @@ What you need: create it with the shell command "mkid file1 file2 ..". Put this in your .vimrc: > - map _u :call ID_search()execute "/\\<" . g:word . "\\>" - map _n :nexecute "/\\<" . g:word . "\\>" + map _u :call ID_search()execute "/\\<" .. g:word .. "\\>" + map _n :nexecute "/\\<" .. g:word .. "\\>" function! ID_search() let g:word = expand("") - let x = system("lid --key=none ". g:word) + let x = system("lid --key=none " .. g:word) let x = substitute(x, "\n", " ", "g") - execute "next " . x + execute "next " .. x endfun To use it, place the cursor on a word, type "_u" and vim will load the file @@ -356,13 +356,13 @@ This mapping will format any bullet list line above and below each list entry. The expression commands are used to be able to give comments to the parts of the mapping. > - :let m = ":map _f :set ai" " need 'autoindent' set - :let m = m . "{O" " add empty line above item - :let m = m . "}{)^W" " move to text after bullet - :let m = m . "i " " add space for indent - :let m = m . "gq}" " format text after the bullet - :let m = m . "{dd" " remove the empty line - :let m = m . "5lDJ" " put text after bullet + :let m = ":map _f :set ai" " need 'autoindent' set + :let m ..= "{O" " add empty line above item + :let m ..= "}{)^W" " move to text after bullet + :let m ..= "i " " add space for indent + :let m ..= "gq}" " format text after the bullet + :let m ..= "{dd" " remove the empty line + :let m ..= "5lDJ" " put text after bullet :execute m |" define the mapping (<> notation |<>|. Note that this is all typed literally. ^W is "^" "W", not @@ -514,15 +514,15 @@ A slightly more advanced version is used let c = '\[' let c2 = '\]' endif - let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' . + let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .. \ '=~? "string\\|comment"' execute 'if' s_skip '| let s_skip = 0 | endif' let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip) if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') - exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col . - \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/' + exe 'match Search /\(\%' .. c_lnum .. 'l\%' .. c_col .. + \ 'c\)\|\(\%' .. m_lnum .. 'l\%' .. m_col .. 'c\)/' let s:paren_hl_on = 1 endif endfunction diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt --- a/runtime/doc/undo.txt +++ b/runtime/doc/undo.txt @@ -286,12 +286,12 @@ history file. E.g.: > au BufReadPost * call ReadUndo() au BufWritePost * call WriteUndo() func ReadUndo() - if filereadable(expand('%:h'). '/UNDO/' . expand('%:t')) + if filereadable(expand('%:h') .. '/UNDO/' .. expand('%:t')) rundo %:h/UNDO/%:t endif endfunc func WriteUndo() - let dirname = expand('%:h') . '/UNDO' + let dirname = expand('%:h') .. '/UNDO' if !isdirectory(dirname) call mkdir(dirname) endif diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt --- a/runtime/doc/usr_05.txt +++ b/runtime/doc/usr_05.txt @@ -270,7 +270,7 @@ line break. Revert with ":iunmap " Enable using the mouse if available. See 'mouse'. > - vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h" + vnoremap _g y:exe "grep /" .. escape(@", '\\/') .. "/ *.c *.h" This mapping yanks the visually selected text and searches for it in C files. You can see that a mapping can be used to do quite complicated things. Still, diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt --- a/runtime/doc/various.txt +++ b/runtime/doc/various.txt @@ -267,7 +267,7 @@ 8g8 Find an illegal UTF-8 byte sequenc name does not contain a single quote: > :!ls '%' < This should always work, but it's more typing: > - :exe "!ls " . shellescape(expand("%")) + :exe "!ls " .. shellescape(expand("%")) < To get a literal "%" or "#" prepend it with a backslash. For example, to list all files starting with "%": > @@ -650,7 +650,7 @@ N *+X11* Unix only: can restore window used. In this example |:silent| is used to avoid the message about reading the file and |:unsilent| to be able to list the first line of each file. > - :silent argdo unsilent echo expand('%') . ": " . getline(1) + :silent argdo unsilent echo expand('%') .. ": " .. getline(1) < *:verb* *:verbose* diff --git a/runtime/doc/version8.txt b/runtime/doc/version8.txt --- a/runtime/doc/version8.txt +++ b/runtime/doc/version8.txt @@ -1,4 +1,4 @@ -*version8.txt* For Vim version 8.2. Last change: 2022 Feb 03 +*version8.txt* For Vim version 8.2. Last change: 2022 Feb 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41144,8508 +41144,7 @@ Files: src/os_win32.c ============================================================================== -Patches *patches-after-8.2* -------- - -These patches were applied after the 8.2 release. - -Patch 8.2.0001 -Problem: #endif comments do not reflect corresponding #ifdef. -Solution: Update the comments. (Rene Nyffenegger, closes #5351) -Files: src/ui.c - -Patch 8.2.0002 -Problem: "dj" only deletes first line of closed fold. -Solution: Adjust last line of operator for linewise motion. (closes #5354) -Files: src/ops.c, src/testdir/test_fold.vim - -Patch 8.2.0003 -Problem: Build file dependencies are incomplete. -Solution: Fix the dependencies. (Ken Takata, closes #5356) -Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Make_vms.mms, - src/Makefile - -Patch 8.2.0004 -Problem: Get E685 and E931 if buffer reload is interrupted. -Solution: Do not abort deleting a dummy buffer. (closes #5361) -Files: src/buffer.c, src/proto/buffer.pro, src/testdir/test_trycatch.vim, - src/ex_cmds.c, src/ex_getln.c, src/misc2.c, src/quickfix.c, - src/window.c, src/vim.h - -Patch 8.2.0005 -Problem: Duplication in version info. -Solution: Use preprocessor string concatenation. (Ken Takata, closes #5357) -Files: src/version.h - -Patch 8.2.0006 -Problem: Test using long file name may fail. (Vladimir Lomov) -Solution: Limit the name length. (Christian Brabandt, closes #5358) -Files: src/testdir/test_display.vim - -Patch 8.2.0007 -Problem: Popup menu positioned wrong with folding in two tabs. -Solution: Update the cursor line height. (closes #5353) -Files: src/move.c, src/proto/move.pro, src/popupmenu.c, - src/testdir/test_ins_complete.vim, - src/testdir/dumps/Test_pum_with_folds_two_tabs.dump - -Patch 8.2.0008 -Problem: Test72 is old style. -Solution: Convert to new style test. (Yegappan Lakshmanan, closes #5362) -Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, - src/testdir/test72.in, src/testdir/test72.ok, - src/testdir/test_undo.vim - -Patch 8.2.0009 -Problem: VMS: terminal version doesn't build. -Solution: Move MIN definition. Adjust #ifdefs. (Zoltan Arpadffy) -Files: src/bufwrite.c, src/fileio.c, src/ui.c, src/xxd/Make_vms.mms - -Patch 8.2.0010 -Problem: Test64 is old style. -Solution: Convert to new style test. (Yegappan Lakshmanan, closes #5363) -Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, - src/testdir/test64.in, src/testdir/test64.ok, - src/testdir/test95.in, src/testdir/test_regexp_latin.vim - -Patch 8.2.0011 -Problem: Screen updating wrong when opening preview window. -Solution: Redraw the window when the preview window opens. -Files: src/popupmenu.c, src/testdir/test_ins_complete.vim, - src/testdir/dumps/Test_pum_with_preview_win.dump - -Patch 8.2.0012 -Problem: Some undo functionality is not tested. -Solution: Add a few more test cases. (Dominique Pellé, closes #5364) -Files: src/testdir/test_undo.vim - -Patch 8.2.0013 -Problem: Not using a typedef for condstack. -Solution: Add a typedef. -Files: src/structs.h, src/ex_docmd.c, src/ex_eval.c, src/userfunc.c, - src/ex_cmds.h, src/proto/ex_eval.pro - -Patch 8.2.0014 -Problem: Test69 and test95 are old style. -Solution: Convert to new style tests. (Yegappan Lakshmanan, closes #5365) -Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, - src/testdir/test69.in, src/testdir/test69.ok, - src/testdir/test95.in, src/testdir/test95.ok, - src/testdir/test_regexp_utf8.vim, src/testdir/test_textformat.vim - -Patch 8.2.0015 -Problem: Not all modeline variants are tested. -Solution: Add modeline tests. (Dominique Pellé, closes #5369) -Files: src/testdir/test_modeline.vim - -Patch 8.2.0016 -Problem: Test name used twice, option not restored properly. -Solution: Rename function, restore option with "&". -Files: src/testdir/test_textformat.vim - -Patch 8.2.0017 -Problem: OS/2 and MS-DOS are still mentioned, even though support was - removed long ago. -Solution: Update documentation. (Yegappan Lakshmanan, closes #5368) -Files: runtime/doc/autocmd.txt, runtime/doc/change.txt, - runtime/doc/cmdline.txt, runtime/doc/editing.txt, - runtime/doc/eval.txt, runtime/doc/gui.txt, runtime/doc/insert.txt, - runtime/doc/options.txt, runtime/doc/print.txt, - runtime/doc/quickfix.txt, runtime/doc/repeat.txt, - runtime/doc/starting.txt, runtime/doc/usr_01.txt, - runtime/doc/usr_05.txt, runtime/doc/usr_41.txt, - runtime/doc/vi_diff.txt, runtime/gvimrc_example.vim, - runtime/tools/README.txt, runtime/vimrc_example.vim, src/feature.h - -Patch 8.2.0018 -Problem: :join does not add white space where it should. (Zdenek Dohnal) -Solution: Handle joining multiple lines properly. -Files: src/ops.c, src/testdir/test_join.vim - -Patch 8.2.0019 -Problem: Cannot get number of lines of another buffer. -Solution: Add "linecount" to getbufinfo(). (Yasuhiro Matsumoto, - closes #5370) -Files: src/evalbuffer.c, src/testdir/test_bufwintabinfo.vim, - runtime/doc/eval.txt - -Patch 8.2.0020 -Problem: Mouse clicks in the command line not tested. -Solution: Add tests. (Dominique Pellé, closes #5366) -Files: src/testdir/test_termcodes.vim - -Patch 8.2.0021 -Problem: Timer test fails too often on Travis with MacOS. -Solution: Be less strict with the time. -Files: src/testdir/test_timers.vim - -Patch 8.2.0022 -Problem: Click in popup window doesn't close it in the GUI. (Sergey Vlasov) -Solution: When processing the selection also send a button release event. - (closes #5367) -Files: src/gui.c - -Patch 8.2.0023 -Problem: Command line editing not sufficiently tested. -Solution: Add more tests. (Dominique Pellé, closes #5374) -Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim, - src/testdir/test_cmdline.vim, src/testdir/test_ex_mode.vim - -Patch 8.2.0024 -Problem: Filetype Rego not recognized. -Solution: Add *.rego. (Matt Dunford, closes #5376) -Files: runtime/filetype.vim, src/testdir/test_filetype.vim - -Patch 8.2.0025 -Problem: Repeated word in comment. -Solution: Remove one. (Rene Nyffenegger, closes #5384) -Files: src/structs.h - -Patch 8.2.0026 -Problem: Still some /* */ comments. -Solution: Convert to // comments. -Files: src/message.c, src/message_test.c, src/misc1.c, src/misc2.c, - src/move.c - -Patch 8.2.0027 -Problem: Still some /* */ comments. -Solution: Convert to // comments. -Files: src/iid_ole.c, src/indent.c, src/insexpand.c, src/iscygpty.c, - src/version.c - -Patch 8.2.0028 -Problem: Searchpairpos() is not tested. -Solution: Add tests. Also improve searchpair() testing. (Dominique Pellé, - closes #5388) -Files: src/testdir/test_search.vim - -Patch 8.2.0029 -Problem: MS-Windows: crash with empty job command. -Solution: Check for NULL result. (Yasuhiro Matsumoto, closes #5390) -Files: src/channel.c, src/testdir/test_channel.vim - -Patch 8.2.0030 -Problem: "gF" does not work on output of "verbose command". -Solution: Recognize " line " and translations. (closes #5391) -Files: src/globals.h, src/eval.c, src/findfile.c, src/testdir/test_gf.vim - -Patch 8.2.0031 (after 8.2.0029) -Problem: MS-Windows: test for empty job fails -Solution: Check for error message, make it also fail on Unix. -Files: src/channel.c, src/testdir/test_channel.vim - -Patch 8.2.0032 (after 8.2.0031) -Problem: MS-Windows: test for blank job fails -Solution: Check before escaping. -Files: src/channel.c, src/testdir/test_channel.vim - -Patch 8.2.0033 -Problem: Crash when make_extmatch() runs out of memory. -Solution: Check for NULL. (Dominique Pellé, closes #5392) -Files: src/regexp_bt.c, src/regexp_nfa.c - -Patch 8.2.0034 -Problem: Missing check for out of memory. -Solution: Check for NULL after vim_strsave(). (Dominique Pellé, - closes #5393) -Files: src/filepath.c - -Patch 8.2.0035 -Problem: Saving and restoring called_emsg is clumsy. -Solution: Count the number of error messages. -Files: src/message.c, src/buffer.c, src/channel.c, src/drawscreen.c, - src/ex_cmds2.c, src/gui.c, src/highlight.c, src/main.c, - src/regexp.c, src/search.c, src/testing.c, src/globals.h - -Patch 8.2.0036 -Problem: Not enough test coverage for match functions. -Solution: Add a few more test cases. (Dominique Pellé, closes #5394) - Add error number. -Files: src/testdir/test_match.vim - -Patch 8.2.0037 -Problem: Missing renamed message. -Solution: Now really add the error number. -Files: src/highlight.c - -Patch 8.2.0038 -Problem: Spell suggestions insufficiently tested. -Solution: Add spell suggestion tests. (Dominique Pellé, closes #5398) -Files: src/testdir/test_spell.vim - -Patch 8.2.0039 -Problem: Memory access error when "z=" has no suggestions. -Solution: Check for negative index. -Files: src/testdir/test_spell.vim, src/spellsuggest.c - -Patch 8.2.0040 -Problem: Timers test is still flaky on Travis for Mac. -Solution: Run separately instead of as part of test_alot. -Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim - -Patch 8.2.0041 -Problem: Leaking memory when selecting spell suggestion. -Solution: Free previous value at the right time. -Files: src/spellsuggest.c - -Patch 8.2.0042 -Problem: Clearing funccal values twice. -Solution: Remove clearing individual fields. -Files: src/userfunc.c - -Patch 8.2.0043 -Problem: Timers test is still flaky on Travis for Mac. -Solution: Increase maximum expected time. -Files: src/testdir/test_timers.vim - -Patch 8.2.0044 -Problem: Expression type is used inconsistently. -Solution: Add "ETYPE_IS" and "ETYPE_ISNOT" as separate enum values. Rename - "TYPE_" to "ETYPE_" to avoid confusion. -Files: src/structs.h, src/eval.c, src/proto/eval.pro, src/debugger.c - -Patch 8.2.0045 (after 8.2.0044) -Problem: Script test fails. -Solution: For numbers "is" and "isnot" work like "==" and "!=". -Files: src/eval.c - -Patch 8.2.0046 -Problem: Tests for spell suggestions are slow. -Solution: Use shorter words. Test with latin1 and utf-8 to cover more code. - (Dominique Pellé, closes #5399) -Files: src/testdir/test_spell.vim - -Patch 8.2.0047 -Problem: Cannot skip tests for specific MS-Windows platform. -Solution: Add windowsversion(). -Files: src/os_win32.c, src/globals.h, src/evalfunc.c, - runtime/doc/eval.txt, src/testdir/gen_opt_test.vim, - src/testdir/test_options.vim - -Patch 8.2.0048 -Problem: Another timers test is flaky on Travis for Mac. -Solution: Increase maximum expected time. -Files: src/testdir/test_timers.vim - -Patch 8.2.0049 -Problem: Command line completion not fully tested. -Solution: Add more test cases. Make help sorting stable. (Dominique Pellé, - closes #5402) -Files: src/ex_cmds.c, src/testdir/test_cd.vim, - src/testdir/test_cmdline.vim, src/testdir/test_help.vim, - src/testdir/test_menu.vim, src/testdir/test_options.vim, - src/testdir/test_syntax.vim - -Patch 8.2.0050 -Problem: After deleting a file mark it is still in viminfo. -Solution: When a file mark was deleted more recently than the mark in the - merged viminfo file was updated, do not store the mark. (Pavol - Juhas, closes #5401, closes #1339) -Files: src/mark.c, src/testdir/test_marks.vim, - src/testdir/test_viminfo.vim, src/viminfo.c - -Patch 8.2.0051 (after 8.2.0049) -Problem: Command line completion test skipped. (Christian Brabandt) -Solution: Invert condition. -Files: src/testdir/test_cmdline.vim - -Patch 8.2.0052 -Problem: More-prompt not properly tested. -Solution: Add a test case. (Dominique Pellé, closes #5404) -Files: src/testdir/test_messages.vim - -Patch 8.2.0053 -Problem: windowsversion() does not always return the right value. -Solution: Add a compatibility section in the manifest. (Ken Takata, - closes #5407) -Files: src/gvim.exe.mnf - -Patch 8.2.0054 -Problem: :diffget and :diffput don't have good completion. -Solution: Add proper completion. (Dominique Pellé, closes #5409) -Files: runtime/doc/eval.txt, src/buffer.c, src/cmdexpand.c, - src/testdir/test_diffmode.vim, src/usercmd.c, src/vim.h - -Patch 8.2.0055 -Problem: Cannot use ":gui" in vimrc with VIMDLL enabled. -Solution: Change the logic, check "gui.starting". (Ken Takata, closes #5408) -Files: src/gui.c - -Patch 8.2.0056 -Problem: Execution stack is incomplete and inefficient. -Solution: Introduce a proper execution stack and use it instead of - sourcing_name/sourcing_lnum. Create a string only when used. -Files: src/structs.h, src/globals.h, src/autocmd.c, src/buffer.c - src/debugger.c, src/ex_docmd.c, src/ex_eval.c, src/highlight.c, - src/main.c, src/map.c, src/message.c, src/proto/scriptfile.pro, - src/scriptfile.c, src/option.c, src/profiler.c, src/spellfile.c, - src/term.c, src/testing.c, src/usercmd.c, src/userfunc.c, - src/kword_test.c, src/testdir/test_debugger.vim - -Patch 8.2.0057 (after 8.2.0056) -Problem: Cannot build with small features. -Solution: Add #ifdefs. -Files: src/scriptfile.c - -Patch 8.2.0058 -Problem: Running tests changes ~/.viminfo. -Solution: Make 'viminfo' empty when summarizing tests results. (closes #5414) -Files: src/testdir/summarize.vim - -Patch 8.2.0059 -Problem: Compiler warnings for unused variables in small build. (Tony - Mechelynck) -Solution: Add #ifdef. -Files: src/scriptfile.c - -Patch 8.2.0060 -Problem: Message test only runs with one encoding. (Dominique Pellé) -Solution: Run the test with "utf-8" and "latin1". Fix underflow. (related - to #5410) -Files: src/message_test.c, src/message.c - -Patch 8.2.0061 -Problem: The execute stack can grow big and never shrinks. -Solution: Reduce the size in garbage collect. -Files: src/eval.c - -Patch 8.2.0062 -Problem: Memory test is flaky on FreeBSD. -Solution: Add a short sleep before getting the first size. -Files: src/testdir/test_memory_usage.vim - -Patch 8.2.0063 -Problem: Wrong size argument to vim_snprintf(). (Dominique Pellé) -Solution: Reduce the size by the length. (related to #5410) -Files: src/ops.c - -Patch 8.2.0064 -Problem: Diffmode completion doesn't use per-window setting. -Solution: Check if a window is in diff mode. (Dominique Pellé, closes #5419) -Files: src/buffer.c, src/testdir/test_diffmode.vim - -Patch 8.2.0065 -Problem: Amiga and alikes: autoopen only used on Amiga OS4. -Solution: Adjust #ifdefs. (Ola Söder, closes #5413) -Files: src/os_amiga.c - -Patch 8.2.0066 -Problem: Some corners of vim_snprintf() are not tested. -Solution: Add a test in C. (Dominique Pellé, closes #5422) -Files: src/message_test.c - -Patch 8.2.0067 -Problem: ERROR_UNKNOWN clashes on some systems. -Solution: Rename ERROR_ to FCERR_. (Ola Söder, closes #5415) -Files: src/evalfunc.c, src/userfunc.c, src/vim.h - -Patch 8.2.0068 -Problem: Crash when using Python 3 with "utf32" encoding. (Dominique Pellé) -Solution: Use "utf-8" whenever enc_utf8 is set. (closes #5423) -Files: src/testdir/test_python3.vim, src/if_py_both.h - -Patch 8.2.0069 -Problem: ETYPE_ is used for two different enums. -Solution: Rename one to use EXPR_. -Files: src/structs.h, src/eval.c, src/debugger.c - -Patch 8.2.0070 -Problem: Crash when using Python 3 with "debug" encoding. (Dominique Pellé) -Solution: Use "euc-jp" whenever enc_dbcs is set. -Files: src/testdir/test_python3.vim, src/if_py_both.h - -Patch 8.2.0071 -Problem: Memory test often fails on Cirrus CI. -Solution: Allow for more tolerance in the upper limit. Remove sleep. -Files: src/testdir/test_memory_usage.vim - -Patch 8.2.0072 (after 8.2.0071) -Problem: Memory test still fails on Cirrus CI. -Solution: Allow for a tiny bit more tolerance in the upper limit. -Files: src/testdir/test_memory_usage.vim - -Patch 8.2.0073 -Problem: Initializing globals with COMMA is clumsy. -Solution: Use INIT2(), INIT3(), etc. -Files: src/vim.h, src/globals.h - -Patch 8.2.0074 -Problem: Python 3 unicode test sometimes fails. -Solution: Make 'termencoding' empty. Correct number of error message. -Files: src/change.c, runtime/doc/options.txt, runtime/doc/message.txt, - src/testdir/test_python3.vim - -Patch 8.2.0075 -Problem: Python 3 unicode test still sometimes fails. -Solution: Skip the test when 'termencoding' is not empty. -Files: src/testdir/test_python3.vim - -Patch 8.2.0076 -Problem: Python 3 unicode test fails on MS-Windows. -Solution: Do not set 'encoding' to "debug" on MS-Windows. -Files: src/testdir/test_python3.vim - -Patch 8.2.0077 -Problem: settagstack() cannot truncate at current index. -Solution: Add the "t" action. (Yegappan Lakshmanan, closes #5417) -Files: runtime/doc/eval.txt, src/evalfunc.c, src/tag.c, - src/testdir/test_tagjump.vim - -Patch 8.2.0078 -Problem: Expanding works differently the second time. -Solution: Keep the expanded name when redefining a function. (closes #5425) -Files: src/testdir/test_vimscript.vim, src/userfunc.c - -Patch 8.2.0079 -Problem: Python 3 unicode test still fails on MS-Windows. -Solution: Do not set 'encoding' to "euc-tw" on MS-Windows. -Files: src/testdir/test_python3.vim - -Patch 8.2.0080 -Problem: Globals using INIT4() are not in the tags file. -Solution: Adjust the tags command. -Files: src/configure.ac, src/auto/configure - -Patch 8.2.0081 -Problem: MS-Windows also need the change to support INIT4(). -Solution: Add the ctags arguments. (Ken Takata) -Files: src/Make_cyg_ming.mak, src/Make_mvc.mak - -Patch 8.2.0082 -Problem: When reusing a buffer listeners are not cleared. (Axel Forsman) -Solution: Clear listeners when reusing a buffer. (closes #5431) -Files: src/testdir/test_listener.vim, src/buffer.c - -Patch 8.2.0083 -Problem: Text properties wrong when tabs and spaces are exchanged. -Solution: Take text properties into account. (Nobuhiro Takasaki, - closes #5427) -Files: src/edit.c, src/testdir/test_textprop.vim - -Patch 8.2.0084 -Problem: Complete item "user_data" can only be a string. -Solution: Accept any type of variable. (closes #5412) -Files: src/testdir/test_ins_complete.vim, src/insexpand.c, src/dict.c, - src/proto/dict.pro, src/eval.c, runtime/doc/insert.txt - -Patch 8.2.0085 -Problem: Dead code in builtin functions. -Solution: Clean up the code. -Files: src/evalvars.c, src/sound.c, src/textprop.c - -Patch 8.2.0086 (after 8.2.0084) -Problem: Build error for small version. (Tony Mechelynck) -Solution: Only use "user_data" with the +eval feature. Remove unused - variable. -Files: src/insexpand.c, src/dict.c - -Patch 8.2.0087 -Problem: Crash in command line expansion when out of memory. -Solution: Check for NULL pointer. Also make ExpandGeneric() static. - (Dominique Pellé, closes #5437) -Files: src/cmdexpand.c, src/proto/cmdexpand.pro - -Patch 8.2.0088 -Problem: Insufficient tests for tags; bug in using extra tag field when - using an ex command to position the cursor. -Solution: Fix the bug, add more tests. (Yegappan Lakshmanan, closes #5439) -Files: runtime/doc/tagsrch.txt, src/tag.c, - src/testdir/test_ins_complete.vim, src/testdir/test_tagfunc.vim, - src/testdir/test_tagjump.vim, src/testdir/test_taglist.vim - -Patch 8.2.0089 -Problem: Crash when running out of memory in :setfiletype completion. -Solution: Do not allocate memory. (Dominique Pellé, closes #5438) -Files: src/cmdexpand.c - -Patch 8.2.0090 -Problem: Generated files show up in git status. -Solution: Ignore a few more files. -Files: .gitignore - -Patch 8.2.0091 -Problem: Compiler warnings for size_t / int types. -Solution: Change type to size_t. (Mike Williams) -Files: src/scriptfile.c - -Patch 8.2.0092 -Problem: Tags functionality insufficiently tested. -Solution: Add more tags tests. (Yegappan Lakshmanan, closes #5446) -Files: src/testdir/test_tagjump.vim - -Patch 8.2.0093 -Problem: win_splitmove() can make Vim hang. -Solution: Check windows exists in the current tab page. (closes #5444) -Files: src/testdir/test_window_cmd.vim, src/evalwindow.c - -Patch 8.2.0094 -Problem: MS-Windows: cannot build with Strawberry Perl 5.30. -Solution: Define __builtin_expect() as a workaround. (Ken Takata, - closes #5267) -Files: src/if_perl.xs - -Patch 8.2.0095 -Problem: Cannot specify exit code for :cquit. -Solution: Add optional argument. (Thinca, Yegappan Lakshmanan, closes #5442) -Files: runtime/doc/quickfix.txt, src/ex_cmds.h, src/ex_docmd.c, - src/testdir/test_quickfix.vim - -Patch 8.2.0096 -Problem: Cannot create tiny popup window in last column. (Daniel Steinberg) -Solution: Remove position limit. (closes #5447) -Files: src/popupwin.c, src/testdir/test_popupwin.vim, - src/testdir/dumps/Test_popupwin_20.dump, - src/testdir/dumps/Test_popupwin_21.dump - -Patch 8.2.0097 -Problem: Crash with autocommand and spellfile. (Tim Pope) -Solution: Do not pop exestack when not pushed. (closes #5450) -Files: src/testdir/test_autocmd.vim, src/spellfile.c - -Patch 8.2.0098 -Problem: Exe stack length can be wrong without being detected. -Solution: Add a check when ABORT_ON_INTERNAL_ERROR is defined. -Files: src/macros.h, src/autocmd.c, src/buffer.c, src/ex_docmd.c, - src/main.c, src/map.c, src/scriptfile.c, src/spellfile.c, - src/userfunc.c - -Patch 8.2.0099 -Problem: Use of NULL pointer when out of memory. -Solution: Check for NULL pointer. (Dominique Pellé, closes #5449) -Files: src/cmdexpand.c - -Patch 8.2.0100 -Problem: Macros for Ruby are too complicated. -Solution: Do not use DYNAMIC_RUBY_VER, use RUBY_VERSION. (Ken Takata, - closes #5452) -Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/auto/configure, - src/configure.ac, src/if_ruby.c - -Patch 8.2.0101 -Problem: Crash when passing null object to ":echomsg". -Solution: Check for NULL pointer. (Yasuhiro Matsumoto, closes #5460) -Files: src/eval.c, src/testdir/test_messages.vim - -Patch 8.2.0102 -Problem: Messages test fails in small version. -Solution: Only use test_null_job() when available. -Files: src/testdir/test_messages.vim - -Patch 8.2.0103 -Problem: Using null object with execute() has strange effects. -Solution: Give an error message for Job and Channel. -Files: src/testdir/test_execute_func.vim, src/globals.h, src/eval.c, - src/evalfunc.c - -Patch 8.2.0104 -Problem: Using channel or job with ":execute" has strange effects. -Solution: Give an error message for Job and Channel. -Files: src/testdir/test_eval_stuff.vim, src/eval.c - -Patch 8.2.0105 -Problem: Vim license not easy to find on github. -Solution: Add a separate LICENCE file. (closes #5458) -Files: LICENSE, Filelist - -Patch 8.2.0106 -Problem: Printf formats are not exactly right. -Solution: Adjust signed/unsigned conversions. (Frazer Clews, closes #5456) -Files: runtime/tools/ccfilter.c, src/libvterm/src/parser.c, - src/libvterm/src/pen.c, src/ui.c - -Patch 8.2.0107 -Problem: Hgignore is out of sync from gitignore. -Solution: Add lines to hgignore. (Ken Takata) -Files: .hgigmore - -Patch 8.2.0108 -Problem: When sign text is changed a manual redraw is needed. (Pontus - Lietzler) -Solution: Redraw automatically. (closes #5455) -Files: src/testdir/test_signs.vim, src/sign.c, - src/testdir/dumps/Test_sign_cursor_1.dump, - src/testdir/dumps/Test_sign_cursor_2.dump, - src/testdir/dumps/Test_sign_cursor_3.dump, - src/testdir/dumps/Test_sign_cursor_01.dump, - src/testdir/dumps/Test_sign_cursor_02.dump - -Patch 8.2.0109 -Problem: Corrupted text properties when expanding spaces. -Solution: Reallocate the line. (Nobuhiro Takasaki, closes #5457) -Files: src/edit.c, src/testdir/test_textprop.vim - -Patch 8.2.0110 -Problem: prop_find() is not implemented. -Solution: Implement prop_find(). (Ryan Hackett, closes #5421, closes #4970) -Files: src/evalfunc.c, src/proto/textprop.pro, - src/testdir/test_textprop.vim, src/textprop.c, - runtime/doc/textprop.txt - -Patch 8.2.0111 -Problem: VAR_SPECIAL is also used for booleans. -Solution: Add VAR_BOOL for better type checking. -Files: src/structs.h, src/dict.c, src/eval.c, src/evalfunc.c, - src/evalvars.c, src/if_lua.c, src/if_mzsch.c, src/if_py_both.h, - src/if_ruby.c, src/json.c, src/popupmenu.c, src/proto/dict.pro, - src/testing.c, src/vim.h, src/viminfo.c - -Patch 8.2.0112 -Problem: Illegal memory access when using 'cindent'. -Solution: Check for NUL byte. (Dominique Pellé, closes #5470) -Files: src/cindent.c, src/testdir/test_cindent.vim - -Patch 8.2.0113 (after 8.2.0095) -Problem: "make cmdidxs" fails. -Solution: Allow address for ":cquit". Add --not-a-term to avoid a delay. -Files: src/ex_cmds.h, src/Makefile, src/Make_cyg_ming.mak, - src/Make_mvc.mak - -Patch 8.2.0114 -Problem: Info about sourced scripts is scattered. -Solution: Use scriptitem_T for info about a script, including s: variables. - Drop ga_scripts. -Files: src/structs.h, src/evalvars.c, src/scriptfile.c, src/eval.c - -Patch 8.2.0115 -Problem: Byte2line() does not work correctly with text properties. (Billie - Cleek) -Solution: Take the bytes of the text properties into account. - (closes #5334) -Files: src/testdir/test_textprop.vim, src/memline.c - -Patch 8.2.0116 -Problem: BufEnter autocmd not triggered on ":tab drop". (Andy Stewart) -Solution: Decrement autocmd_no_enter for the last file. (closes #1660, - closes #5473) -Files: src/arglist.c, src/testdir/test_tabpage.vim - -Patch 8.2.0117 -Problem: Crash when using gettabwinvar() with invalid arguments. (Yilin - Yang) -Solution: Use "curtab" if "tp" is NULL. (closes #5475) -Files: src/evalwindow.c, src/testdir/test_getvar.vim - -Patch 8.2.0118 -Problem: Crash when cycling to buffers involving popup window . -Solution: Do not decrement buffer reference count. -Files: src/popupwin.c, src/testdir/test_popupwin.vim, - src/testdir/dumps/Test_popupwin_infopopup_7.dump - -Patch 8.2.0119 -Problem: Message test fails on some platforms. (Elimar Riesebieter) -Solution: Add type cast to vim_snprintf() argument. (Dominique Pellé) -Files: src/message_test.c - -Patch 8.2.0120 -Problem: virtcol() does not check arguments to be valid, which may lead to - a crash. -Solution: Check the column to be valid. Do not decrement MAXCOL. - (closes #5480) -Files: src/evalfunc.c, src/testdir/test_marks.vim - -Patch 8.2.0121 -Problem: filter() and map() on blob don't work. -Solution: Correct the code. (closes #5483) -Files: src/list.c, src/testdir/test_blob.vim - -Patch 8.2.0122 -Problem: Readme files still mention MS-DOS. -Solution: Update readme files. (Ken Takata, closes #5486) -Files: README.md, README.txt, READMEdir/README_dos.txt, - READMEdir/README_srcdos.txt, READMEdir/README_w32s.txt, - runtime/doc/os_win32.txt - -Patch 8.2.0123 -Problem: complete_info() does not work when CompleteDone is triggered. -Solution: Trigger CompleteDone before clearing the info. -Files: src/insexpand.c, runtime/doc/autocmd.txt, - src/testdir/test_ins_complete.vim - -Patch 8.2.0124 -Problem: Compiler warnings for variable types. -Solution: Change type, add type cast. (Mike Williams) -Files: src/memline.c - -Patch 8.2.0125 -Problem: :mode no longer works for any system. -Solution: Always give an error message. -Files: src/ex_docmd.c, runtime/doc/quickref.txt, src/os_amiga.c, - src/proto/os_amiga.pro, src/os_mswin.c, src/proto/os_mswin.pro, - src/os_unix.c, src/proto/os_unix.pro - -Patch 8.2.0126 (after 8.2.0124) -Problem: Textprop test fails. -Solution: Fix sign in computation. -Files: src/memline.c - -Patch 8.2.0127 -Problem: Some buffer commands work in a popup window. -Solution: Disallow :bnext, :bprev, etc. (Naruhiko Nishino, closes #5494) -Files: src/ex_docmd.c, src/testdir/test_popupwin.vim - -Patch 8.2.0128 -Problem: Cannot list options one per line. -Solution: Use ":set!" to list one option per line. -Files: src/ex_docmd.c, src/option.c, src/proto/option.pro, src/vim.h, - src/ex_cmds.h, src/optiondefs.h, src/testdir/test_options.vim, - runtime/doc/options.txt - -Patch 8.2.0129 -Problem: MS-Windows installer doesn't use Turkish translations. -Solution: Enable the Turkish translations and fix a few. (Emir Sarı, - closes #5493) -Files: nsis/gvim.nsi, nsis/lang/turkish.nsi - -Patch 8.2.0130 -Problem: Python3 ranges are not tested. -Solution: Add test. (Dominique Pellé, closes #5498) -Files: src/testdir/test_python3.vim - -Patch 8.2.0131 -Problem: Command line is not cleared when switching tabs and the command - line height differs. -Solution: Set the "clear_cmdline" flag when needed. (Naruhiko Nishino, - closes #5495) -Files: src/testdir/dumps/Test_cmdlineclear_tabenter.dump, - src/testdir/test_cmdline.vim, src/window.c - -Patch 8.2.0132 -Problem: Script may be re-used when deleting and creating a new one. -Solution: When the inode matches, also check the file name. -Files: src/scriptfile.c, src/testdir/test_source.vim - -Patch 8.2.0133 -Problem: Invalid memory access with search command. -Solution: When :normal runs out of characters in bracketed paste mode break - out of the loop.(closes #5511) -Files: src/testdir/test_search.vim, src/edit.c - -Patch 8.2.0134 -Problem: Some map functionality not covered by tests. -Solution: Add tests. (Yegappan Lakshmanan, closes #5504) -Files: src/testdir/test_maparg.vim, src/testdir/test_mapping.vim - -Patch 8.2.0135 (after 8.2.0133) -Problem: Bracketed paste can still cause invalid memory access. (Dominique - Pellé) -Solution: Check for NULL pointer. -Files: src/edit.c, src/testdir/test_search.vim - -Patch 8.2.0136 -Problem: Stray ch_logfile() call. -Solution: Remove it. (closes #5503) -Files: src/testdir/test_source.vim - -Patch 8.2.0137 -Problem: Crash when using win_execute() from a new tab. -Solution: Set the tp_*win pointers. (Ozaki Kiichi, closes #5512) -Files: src/testdir/test_winbuf_close.vim, src/window.c - -Patch 8.2.0138 -Problem: Memory leak when starting a job fails. -Solution: Free the list of arguments. (Ozaki Kiichi, closes #5510) -Files: src/channel.c, src/testdir/test_channel.vim - -Patch 8.2.0139 -Problem: MS-Windows: default for IME is inconsistent. -Solution: Also make IME default enabled with MVC. (Ken Takata, closes #5508) -Files: src/Make_mvc.mak - -Patch 8.2.0140 -Problem: CI does not test building doc tags. -Solution: Add the vimtags/gcc build. Cleanup showing version. (Ozaki Kiichi, - closes #5513) -Files: .travis.yml, Filelist, ci/if_ver-1.vim, ci/if_ver-2.vim, - ci/if_ver-cmd.vim, runtime/doc/Makefile, runtime/doc/doctags.vim, - src/testdir/if_ver-1.vim, src/testdir/if_ver-2.vim - -Patch 8.2.0141 -Problem: No swift filetype detection. -Solution: Add swift, swiftgyb and sil. (Emir Sarı, closes #5517) -Files: runtime/filetype.vim, src/testdir/test_filetype.vim - -Patch 8.2.0142 -Problem: Possible to enter popup window with CTRL-W p. (John Devin) -Solution: Check entered window is not a popup window. (closes #5515) -Files: src/window.c, src/popupwin.c, src/testdir/test_popupwin.vim, - src/testdir/dumps/Test_popupwin_previewpopup_9.dump, - src/testdir/dumps/Test_popupwin_previewpopup_10.dump - -Patch 8.2.0143 -Problem: Coverity warning for possible use of NULL pointer. -Solution: Check argv is not NULL. -Files: src/channel.c - -Patch 8.2.0144 -Problem: Some mapping code is not fully tested. -Solution: Add more test cases. (Yegappan Lakshmanan, closes #5519) -Files: src/testdir/test_langmap.vim, src/testdir/test_maparg.vim, - src/testdir/test_mapping.vim - -Patch 8.2.0145 -Problem: Using #error for compilation errors should be OK now. -Solution: Use #error. (Ken Takata, closes #5299) -Files: src/blowfish.c, src/vim.h - -Patch 8.2.0146 -Problem: Wrong indent when 'showbreak' and 'breakindent' are set and - 'briopt' includes "sbr". -Solution: Reset "need_showbreak" where needed. (Ken Takata, closes #5523) -Files: src/drawline.c, src/testdir/test_breakindent.vim - -Patch 8.2.0147 -Problem: Block Visual mode operators not correct when 'linebreak' set. -Solution: Set w_p_lbr to lbr_saved more often. (Ken Takata, closes #5524) -Files: src/ops.c, src/testdir/test_listlbr.vim - -Patch 8.2.0148 -Problem: Mapping related function in wrong source file. -Solution: Move the function. Add a few more test cases. (Yegappan - Lakshmanan, closes #5528) -Files: src/map.c, src/proto/term.pro, src/term.c, - src/testdir/test_mapping.vim - -Patch 8.2.0149 -Problem: Maintaining a Vim9 branch separately is more work. -Solution: Merge the Vim9 script changes. -Files: README.md, README_VIM9.md, runtime/doc/Makefile, - runtime/doc/eval.txt, runtime/doc/options.txt, runtime/doc/tags, - runtime/doc/vim9.txt, runtime/ftplugin/vim.vim, - runtime/indent/vim.vim, runtime/syntax/vim.vim, - src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Makefile, src/blob.c, - src/channel.c, src/dict.c, src/eval.c, src/evalbuffer.c, - src/evalfunc.c, src/evalvars.c, src/ex_cmdidxs.h, src/ex_cmds.h, - src/ex_docmd.c, src/ex_eval.c, src/filepath.c, src/globals.h, - src/gui.c, src/if_lua.c, src/if_py_both.h, src/insexpand.c, - src/json.c, src/list.c, src/macros.h, src/main.c, src/message.c, - src/misc1.c, src/proto.h, src/proto/blob.pro, src/proto/eval.pro, - src/proto/evalfunc.pro, src/proto/evalvars.pro, - src/proto/ex_docmd.pro, src/proto/ex_eval.pro, src/proto/list.pro, - src/proto/message.pro, src/proto/scriptfile.pro, - src/proto/userfunc.pro, src/proto/vim9compile.pro, - src/proto/vim9execute.pro, src/proto/vim9script.pro, - src/scriptfile.c, src/session.c, src/structs.h, src/syntax.c, - src/testdir/Make_all.mak, src/testdir/test_vim9_expr.vim, - src/testdir/test_vim9_script.vim, src/testing.c, src/userfunc.c, - src/vim.h, src/vim9.h, src/vim9compile.c, src/vim9execute.c, - src/vim9script.c, src/viminfo.c - -Patch 8.2.0150 -Problem: Cannot define python function when using :execute. (Yasuhiro - Matsumoto) -Solution: Do not recognize "def" inside "function. -Files: src/testdir/test_vim9_script.vim, src/userfunc.c - -Patch 8.2.0151 -Problem: Detecting a script was already sourced is unreliable. -Solution: Do not use the inode number. -Files: src/scriptfile.c, src/structs.h, src/testdir/test_vim9_script.vim - -Patch 8.2.0152 -Problem: Restoring ctrl_x_mode is not needed. -Solution: Remove restoring the old value, it's changed again soon. -Files: src/insexpand.c - -Patch 8.2.0153 -Problem: Warning shows when listing version info. -Solution: Use "-u NONE". (Ozaki Kiichi, closes #5534) -Files: .travis.yml - -Patch 8.2.0154 -Problem: Reallocating the list of scripts is inefficient. -Solution: Instead of using a growarray of scriptitem_T, store pointers and - allocate each scriptitem_T separately. Also avoids that the - growarray pointers change when sourcing a new script. -Files: src/globals.h, src/eval.c, src/evalvars.c, src/ex_docmd.c, - src/profiler.c, src/scriptfile.c, src/vim9compile.c, - src/vim9execute.c, src/vim9script.c - -Patch 8.2.0155 -Problem: Warnings from MinGW compiler. (John Marriott) Json test fails when - building without +float feature. -Solution: Init variables. Fix Json parsing. Skip a few tests that require - the +float feature. -Files: src/vim9script.c, src/vim9compile.c, src/vim9execute.c, - src/if_py_both.h, src/json.c, src/testdir/test_method.vim - -Patch 8.2.0156 -Problem: Various typos in source files and tests. -Solution: Fix the typos. (Emir Sarı, closes #5532) -Files: Makefile, src/INSTALLvms.txt, src/Make_vms.mms, src/beval.h, - src/buffer.c, src/charset.c, src/evalvars.c, src/ex_cmds.c, - src/ex_docmd.c, src/getchar.c, src/gui.c, src/gui_mac.c, - src/gui_photon.c, src/if_perl.xs, - src/libvterm/t/11state_movecursor.test, - src/libvterm/t/41screen_unicode.test, src/mbyte.c, src/memline.c, - src/normal.c, src/ops.c, src/option.c, src/option.h, - src/os_unix.c, src/os_win32.c, src/quickfix.c, src/register.c, - src/spell.c, src/tag.c, src/term.c, - src/testdir/test_breakindent.vim, src/testdir/test_channel.vim, - src/testdir/test_cindent.vim, src/testdir/test_digraph.vim, - src/testdir/test_edit.vim, src/testdir/test_netbeans.vim, - src/testdir/test_quickfix.vim, src/testdir/test_registers.vim, - src/testdir/test_stat.vim, src/ui.c, src/xxd/xxd.c - -Patch 8.2.0157 -Problem: Vim9 script files not in list of distributed files. -Solution: Add the entries. -Files: Filelist - -Patch 8.2.0158 (after 8.2.0123) -Problem: Triggering CompleteDone earlier is not backwards compatible. - (Daniel Hahler) -Solution: Add CompleteDonePre instead. -Files: src/insexpand.c, runtime/doc/autocmd.txt, src/autocmd.c, - src/vim.h, src/testdir/test_ins_complete.vim - -Patch 8.2.0159 -Problem: Non-materialized range() list causes problems. (Fujiwara Takuya) -Solution: Materialize the list where needed. -Files: src/testdir/test_functions.vim, src/testdir/test_python3.vim, - src/userfunc.c, src/evalfunc.c, src/highlight.c, src/evalvars.c, - src/popupmenu.c, src/insexpand.c, src/json.c, src/channel.c, - src/eval.c - -Patch 8.2.0160 (after 8.2.0159) -Problem: Range test fails. -Solution: Include change in list code. (#5541) -Files: src/list.c - -Patch 8.2.0161 -Problem: Not recognizing .gv file as dot filetype. -Solution: Add *.gv to dot pattern. (closes #5544) -Files: runtime/filetype.vim, src/testdir/test_filetype.vim - -Patch 8.2.0162 -Problem: Balloon test fails in the GUI. -Solution: Skip test in the GUI. -Files: src/testdir/test_functions.vim - -Patch 8.2.0163 -Problem: Test hangs on MS-Windows console. -Solution: use feedkeys() instead of test_feedinput(). (Ken Takata) -Files: src/testdir/test_functions.vim, src/testing.c - -Patch 8.2.0164 -Problem: Test_alot takes too long. -Solution: Run several tests individually. -Files: src/testdir/test_alot.vim, src/testdir/Make_all.mak - -Patch 8.2.0165 -Problem: Coverity warning for using NULL pointer. -Solution: Add missing "else". -Files: src/vim9compile.c - -Patch 8.2.0166 -Problem: Coverity warning for using uninitialized variable. -Solution: Check for failure. -Files: src/vim9execute.c - -Patch 8.2.0167 -Problem: Coverity warning for ignoring return value. -Solution: Check the return value and jump if failed. -Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim - -Patch 8.2.0168 -Problem: Coverity warning for assigning NULL to an option. -Solution: Use empty string instead of NULL. -Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim - -Patch 8.2.0169 -Problem: Coverity warning for dead code. -Solution: Check if inside try-finally. -Files: src/vim9execute.c - -Patch 8.2.0170 -Problem: Coverity warning for ignoring return value. -Solution: Check the return value and return if failed. -Files: src/vim9compile.c - -Patch 8.2.0171 -Problem: Coverity warning for using uninitialized buffer. -Solution: Check the skip flag. -Files: src/userfunc.c - -Patch 8.2.0172 -Problem: Coverity warning for not restoring character. -Solution: Restore the character also in case of failure. -Files: src/vim9script.c - -Patch 8.2.0173 -Problem: Build fails with old compiler. -Solution: Do not use anonymous unions. (John Marriott) -Files: src/vim9compile.c, src/evalvars.c, src/list.c, src/structs.h, - src/evalfunc.c, src/channel.c, src/if_mzsch.c, src/if_py_both.h - -Patch 8.2.0174 -Problem: Various commands not completely tested. -Solution: Add more test cases. (Yegappan Lakshmanan, closes #5551) -Files: src/testdir/test_excmd.vim, src/testdir/test_fnameescape.vim, - src/testdir/test_ga.vim, src/testdir/test_global.vim, - src/testdir/test_move.vim, src/testdir/test_options.vim, - src/testdir/test_packadd.vim, src/testdir/test_sort.vim, - src/testdir/test_substitute.vim, src/testdir/test_textformat.vim, - src/testdir/test_writefile.vim - -Patch 8.2.0175 -Problem: Crash when removing list element in map(). -Solution: Lock the list. (closes #2652) -Files: src/testdir/test_filter_map.vim, src/list.c - -Patch 8.2.0176 -Problem: Generating os headers does not work for Swedish. -Solution: Set the locale to C. (Christian Brabandt, closes #5258) -Files: src/osdef.sh - -Patch 8.2.0177 -Problem: Memory leak in get_tags(). -Solution: Free matches when finding a pseudo-tag line. (Dominique Pellé, - closes #5553) -Files: src/tag.c - -Patch 8.2.0178 -Problem: With VTP the screen may not be restored properly. -Solution: Add another set of saved RGB values. (Nobuhiro Takasaki, - closes #5548) -Files: src/os_win32.c - -Patch 8.2.0179 -Problem: Still a few places where range() does not work. -Solution: Fix using range() causing problems. -Files: src/terminal.c, src/testdir/test_functions.vim, - src/testdir/test_popupwin.vim, src/popupwin.c, src/tag.c, - src/testdir/dumps/Test_popupwin_20.dump, - src/testdir/dumps/Test_popupwin_21.dump, - src/testdir/dumps/Test_popup_settext_07.dump, src/globals.h - -Patch 8.2.0180 -Problem: Test for wrapmargin fails if terminal is not 80 columns. -Solution: Vertical split the window. (Ken Takata, closes #5554) -Files: src/testdir/test_textformat.vim - -Patch 8.2.0181 -Problem: Problems parsing :term arguments. -Solution: Improve parsing, fix memory leak, add tests. (Ozaki Kiichi, - closes #5536) -Files: src/channel.c, src/proto/channel.pro, src/structs.h, - src/terminal.c, src/testdir/test_terminal.vim - -Patch 8.2.0182 -Problem: Min() and max() materialize a range() list. -Solution: Compute the result without materializing the list. (#5541) -Files: src/evalfunc.c - -Patch 8.2.0183 -Problem: Tests fail when the float feature is disabled. -Solution: Skip tests that don't work without float support. -Files: src/testdir/shared.vim, src/testdir/test_blob.vim, - src/testdir/test_channel.vim, src/testdir/test_cscope.vim, - src/testdir/test_execute_func.vim, src/testdir/test_expr.vim, - src/testdir/test_functions.vim, src/testdir/test_lambda.vim, - src/testdir/test_listdict.vim, src/testdir/test_lua.vim, - src/testdir/test_options.vim, src/testdir/test_partial.vim, - src/testdir/test_ruby.vim, src/testdir/test_sort.vim, - src/testdir/test_timers.vim, src/testdir/test_true_false.vim, - src/testdir/test_user_func.vim, src/testdir/test_vim9_expr.vim, - src/testdir/test_vimscript.vim, src/testdir/test_regexp_latin.vim, - src/testdir/test_glob2regpat.vim - -Patch 8.2.0184 -Problem: Blob test fails. -Solution: Check for different error when float feature is missing. -Files: src/testdir/test_blob.vim - -Patch 8.2.0185 -Problem: Vim9 script: cannot use "if has()" to skip lines. -Solution: Evaluate constant expression at runtime. -Files: src/vim9compile.c, src/evalfunc.c, src/proto/evalfunc.pro, - src/userfunc.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0186 -Problem: A couple of tests may fail when features are missing. -Solution: Check for features. (Dominique Pellé, closes #5561) -Files: src/testdir/test_functions.vim, src/testdir/test_highlight.vim - -Patch 8.2.0187 -Problem: Redundant code. -Solution: Remove unused assignments. (Dominique Pellé, closes #5557) -Files: src/vim9compile.c - -Patch 8.2.0188 -Problem: Check commands don't work well with Vim9 script. -Solution: Improve constant expression handling. -Files: src/vim9compile.c, src/testdir/check.vim, - src/testdir/test_vim9_expr.vim - -Patch 8.2.0189 -Problem: cd() with NULL argument crashes. -Solution: Check for NULL. (Ken Takata, closes #5558) -Files: src/testdir/test_cd.vim, src/ex_docmd.c - -Patch 8.2.0190 -Problem: Kotlin files are not recognized. -Solution: Detect Kotlin files. (Alkeryn, closes #5560) -Files: runtime/filetype.vim, src/testdir/test_filetype.vim - -Patch 8.2.0191 -Problem: Cannot put a terminal in a popup window. -Solution: Allow opening a terminal in a popup window. It will always have - keyboard focus until closed. -Files: src/popupwin.c, src/proto/popupwin.pro, src/terminal.c, - src/proto/terminal.pro, src/macros.h, src/mouse.c, - src/highlight.c, src/drawline.c, src/optionstr.c, src/window.c, - src/testdir/test_terminal.vim, - src/testdir/dumps/Test_terminal_popup_1.dump, - src/testdir/dumps/Test_terminal_popup_2.dump, - src/testdir/dumps/Test_terminal_popup_3.dump - -Patch 8.2.0192 (after 8.2.0191) -Problem: Build failure without +terminal feature. -Solution: Add #ifdefs. -Files: src/popupwin.c - -Patch 8.2.0193 (after 8.2.0191) -Problem: Still build failure without +terminal feature. -Solution: Add more #ifdefs. -Files: src/macros.h - -Patch 8.2.0194 (after 8.2.0193) -Problem: Some commands can cause problems in terminal popup. -Solution: Disallow more commands. -Files: src/macros.h, src/popupwin.c, src/proto/popupwin.pro, - src/arglist.c, src/ex_docmd.c, src/window.c, - src/testdir/test_terminal.vim - -Patch 8.2.0195 -Problem: Some tests fail when run in the GUI. -Solution: Make sure the window width is enough. In the GUI run terminal Vim - in the terminal, if possible. -Files: src/testdir/test_highlight.vim, src/testdir/check.vim, - src/testdir/test_terminal.vim - -Patch 8.2.0196 -Problem: Blocking commands for a finished job in a popup window. -Solution: Do not block commands if the job has finished. Adjust test. -Files: src/popupwin.c, src/testdir/test_popupwin.vim, src/window.c, - src/terminal.c, src/proto/terminal.pro - -Patch 8.2.0197 -Problem: Some Ex commands not sufficiently tested. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5565) -Files: src/testdir/test_global.vim, src/testdir/test_help.vim, - src/testdir/test_help_tagjump.vim, src/testdir/test_options.vim, - src/testdir/test_substitute.vim, src/testdir/test_textformat.vim, - src/testdir/test_writefile.vim - -Patch 8.2.0198 -Problem: No tests for y/n prompt. -Solution: Add tests. (Dominique Pellé, closes #5564) -Files: src/testdir/test_messages.vim - -Patch 8.2.0199 -Problem: Vim9 script commands not sufficiently tested. -Solution: Add more tests. Fix script-local function use. -Files: src/vim9execute.c, src/testdir/test_vim9_script.vim, - src/userfunc.c - -Patch 8.2.0200 -Problem: Vim9 script commands not sufficiently tested. -Solution: Add more tests. Fix storing global variable. Make script - variables work. -Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, src/evalvars.c, - src/proto/evalvars.pro, src/testdir/test_vim9_script.vim, - src/misc1.c, src/proto/misc1.pro - -Patch 8.2.0201 -Problem: Cannot assign to an imported variable. -Solution: Make it work. -Files: src/evalvars.c, src/vim9compile.c, src/proto/vim9compile.pro, - src/userfunc.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0202 -Problem: When 'lazyredraw' is set the window title may not be updated. -Solution: Set "do_redraw" before entering the main loop. (Jason Franklin) -Files: src/main.c - -Patch 8.2.0203 -Problem: :helptags and some other functionality not tested. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5567) -Files: src/testdir/test_compiler.vim, src/testdir/test_ex_mode.vim, - src/testdir/test_excmd.vim, src/testdir/test_filechanged.vim, - src/testdir/test_help.vim, src/testdir/test_help_tagjump.vim, - src/testdir/test_timers.vim, src/testdir/test_window_cmd.vim - -Patch 8.2.0204 -Problem: Crash when using winnr('j') in a popup window. -Solution: Do not search for neighbors in a popup window. (closes #5568) -Files: src/window.c, src/testdir/test_popupwin.vim, src/evalwindow.c - -Patch 8.2.0205 -Problem: Error code E899 used twice. -Solution: Use E863 for the terminal in popup error. -Files: src/popupwin.c - -Patch 8.2.0206 -Problem: Calling Vim9 function using default argument fails. -Solution: Give an appropriate error. (closes #5572) -Files: src/testdir/test_vim9_script.vim, src/vim9compile.c, - src/vim9execute.c - -Patch 8.2.0207 -Problem: Crash when missing member type on list argument. -Solution: Check for invalid type. (closes #5572) -Files: src/userfunc.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0208 -Problem: Fnamemodify() does not apply ":~" when followed by ":.". -Solution: Don't let a failing ":." cause the ":~" to be skipped. (Yasuhiro - Matsumoto, closes #5577) -Files: runtime/doc/cmdline.txt, src/filepath.c, - src/testdir/test_fnamemodify.vim - -Patch 8.2.0209 -Problem: Function a bit far away from where it's used. -Solution: Move function close to where it's used. (Ken Takata, closes #5569) -Files: src/fileio.c, src/filepath.c - -Patch 8.2.0210 -Problem: Coverity complains about uninitialized field. -Solution: Initialize the field. -Files: src/vim9compile.c - -Patch 8.2.0211 -Problem: Test for ANSI colors fails without an "ls" command. -Solution: Use "dir". (Ken Takata, closes #5582) -Files: src/testdir/test_functions.vim - -Patch 8.2.0212 -Problem: Missing search/substitute pattern hardly tested. -Solution: Add test_clear_search_pat() and tests. (Yegappan Lakshmanan, - closes #5579) -Files: runtime/doc/eval.txt, runtime/doc/testing.txt, - runtime/doc/usr_41.txt, src/evalfunc.c, src/proto/regexp.pro, - src/proto/search.pro, src/proto/testing.pro, src/regexp.c, - src/search.c, src/testdir/test_quickfix.vim, - src/testdir/test_search.vim, src/testdir/test_sort.vim, - src/testdir/test_substitute.vim, src/testing.c - -Patch 8.2.0213 -Problem: Configure does not recognize gcc 10.0 and later. -Solution: Adjust the pattern matching the version number. (Sergei - Trofimovich, closes #5580) -Files: src/configure.ac, src/auto/configure - -Patch 8.2.0214 -Problem: A popup window with a terminal can be made hidden. -Solution: Disallow hiding a terminal popup. -Files: src/testdir/test_terminal.vim, src/popupwin.c, - src/testdir/dumps/Test_terminal_popup_4.dump - -Patch 8.2.0215 (after 8.2.0208) -Problem: Wrong file name shortening. (Ingo Karkat) -Solution: Better check for path separator. (Yasuhiro Matsumoto, - closes #5583, closes #5584) -Files: src/filepath.c, src/testdir/test_fnamemodify.vim - -Patch 8.2.0216 -Problem: Several Vim9 instructions are not tested. -Solution: Add more tests. Fix :disassemble output. Make catch with pattern - work. -Files: src/testdir/test_vim9_script.vim, src/vim9execute.c, - src/vim9compile.c - -Patch 8.2.0217 (after 8.2.0214) -Problem: Terminal test fails on Mac. -Solution: Add a short wait. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0218 -Problem: Several Vim9 instructions are not tested. -Solution: Add more tests. -Files: src/testdir/test_vim9_script.vim - -Patch 8.2.0219 (after 8.2.0217) -Problem: Terminal test still fails on Mac. -Solution: Skip part of the test on Mac. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0220 -Problem: Terminal test did pass on Mac. -Solution: Remove the skip again. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0221 -Problem: No test for Vim9 += and ..=. -Solution: Add tests. -Files: src/testdir/test_vim9_script.vim - -Patch 8.2.0222 -Problem: Vim9: optional function arguments don't work yet. -Solution: Implement optional function arguments. -Files: src/userfunc.c, src/vim9compile.c, src/vim9execute.c, - src/structs.h, src/testdir/test_vim9_script.vim - -Patch 8.2.0223 -Problem: Some instructions not yet tested. -Solution: Disassemble more instructions. Move tests to a new file. Compile - call to s:function(). -Files: src/testdir/test_vim9_script.vim, src/testdir/Make_all.mak, - src/testdir/test_vim9_disassemble.vim, src/vim9compile.c, - src/userfunc.c, src/proto/userfunc.pro, src/vim.h - -Patch 8.2.0224 -Problem: compiling :elseif not tested yet. -Solution: Add test for :elseif. Fix generating jumps. -Files: src/testdir/test_vim9_script.vim, src/vim9compile.c, - src/testdir/test_vim9_disassemble.vim - -Patch 8.2.0225 -Problem: compiling lambda not tested yet. -Solution: Add test for lambda and funcref. Drop unused instruction arg. -Files: src/testdir/test_vim9_disassemble.vim, src/vim9.h, - src/vim9execute.c - -Patch 8.2.0226 -Problem: Compiling for loop not tested. -Solution: Add a test. Make variable initialization work for more types. -Files: src/testdir/test_vim9_disassemble.vim, src/vim9compile.c - -Patch 8.2.0227 -Problem: Compiling a few instructions not tested. -Solution: Add more test cases. -Files: src/testdir/test_vim9_disassemble.vim - -Patch 8.2.0228 -Problem: Configure does not recognize gcc version on BSD. -Solution: Do not use "\+" in the pattern matching the version number. (Ozaki - Kiichi, closes #5590) -Files: src/configure.ac, src/auto/configure - -Patch 8.2.0229 -Problem: Compare instructions not tested. -Solution: Add test cases. Fix disassemble with line continuation. -Files: src/testdir/test_vim9_disassemble.vim, src/vim9execute.c, - src/vim9compile.c - -Patch 8.2.0230 -Problem: Terminal popup test is flaky. -Solution: Increase wait time a bit. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0231 -Problem: Silent system command may clear the screen. -Solution: Do not clear the screen in t_te. -Files: src/term.c - -Patch 8.2.0232 -Problem: The :compiler command causes a crash. (Daniel Steinberg) -Solution: Do not use the script index if it isn't set. -Files: src/ex_docmd.c, src/testdir/test_compiler.vim - -Patch 8.2.0233 -Problem: Crash when using garbagecollect() in between rand(). -Solution: Redesign the rand() and srand() implementation. (Yasuhiro - Matsumoto, closes #5587, closes #5588) -Files: src/evalfunc.c, src/testdir/test_random.vim, - runtime/doc/testing.txt, runtime/doc/eval.txt - -Patch 8.2.0234 -Problem: Message test fails on SunOS. -Solution: Adjust expectation for printf "%p". (Ozaki Kiichi, closes #5595) -Files: src/message_test.c - -Patch 8.2.0235 -Problem: Draw error when an empty group is removed from 'statusline'. -Solution: Do not use highlighting from a removed group. -Files: src/buffer.c, src/testdir/test_statusline.vim, - src/testdir/dumps/Test_statusline_1.dump - -Patch 8.2.0236 -Problem: MS-Windows uninstall doesn't delete vimtutor.bat. -Solution: Change directory before deletion. (Ken Takata, closes #5603) -Files: src/uninstall.c - -Patch 8.2.0237 -Problem: Crash when setting 'wincolor' on finished terminal window. - (Bakudankun) -Solution: Check that the vterm is not NULL. (Yasuhiro Matsumoto, closes - #5607, closes #5610) -Files: src/terminal.c, src/testdir/test_terminal.vim - -Patch 8.2.0238 -Problem: MS-Windows: job_stop() results in exit value zero. -Solution: Call TerminateJobObject() with -1 instead of 0. (Yasuhiro - Matsumoto, closes #5150, closes #5614) -Files: src/os_win32.c, src/testdir/test_channel.vim - -Patch 8.2.0239 -Problem: MS-Windows: 'env' job option does not override existing - environment variables. (Tim Pope) -Solution: Set the environment variables later. (Yasuhiro Matsumoto, - closes #5485, closes #5608) -Files: src/os_win32.c, src/testdir/test_channel.vim - -Patch 8.2.0240 -Problem: Using memory after it was freed. (Dominique Pellé) -Solution: Do not mix conversion buffer with other buffer. -Files: src/viminfo.c, src/vim.h - -Patch 8.2.0241 -Problem: Crash when setting 'buftype' to "quickfix". -Solution: Check that error list is not NULL. (closes #5613) -Files: src/quickfix.c, src/testdir/test_quickfix.vim - -Patch 8.2.0242 -Problem: Preview popup window test fails with long directory name. (Jakub - Kądziołka) -Solution: Use "silent cd". (closes #5615) -Files: src/testdir/test_popupwin.vim - -Patch 8.2.0243 -Problem: Insufficient code coverage for ex_docmd.c functions. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5618) -Files: src/testdir/Make_all.mak, src/testdir/test_arglist.vim, - src/testdir/test_buffer.vim, src/testdir/test_cd.vim, - src/testdir/test_cmdline.vim, src/testdir/test_ex_mode.vim, - src/testdir/test_excmd.vim, src/testdir/test_mapping.vim, - src/testdir/test_quickfix.vim, src/testdir/test_search.vim, - src/testdir/test_sort.vim, src/testdir/test_source.vim, - src/testdir/test_substitute.vim, src/testdir/test_undo.vim, - src/testdir/test_vimscript.vim, src/testdir/test_window_cmd.vim, - src/testdir/test_writefile.vim - -Patch 8.2.0244 -Problem: Compiler warning in Lua interface. -Solution: Add type cast. (Ken Takata, closes #5621) -Files: src/if_lua.c - -Patch 8.2.0245 -Problem: MSVC: error message if the auto directory already exists. -Solution: Add "if not exists". (Ken Takata, closes #5620) -Files: src/Make_mvc.mak - -Patch 8.2.0246 -Problem: MSVC: deprecation warnings with Ruby. -Solution: Move _CRT_SECURE_NO_DEPRECATE to build file. (Ken Takata, - closes #5622) -Files: src/Make_mvc.mak, src/if_ruby.c, src/os_win32.h, src/vim.h, - src/vimio.h - -Patch 8.2.0247 -Problem: Misleading comment in NSIS installer script. -Solution: Negate the meaning of the comment. (Ken Takata, closes #5627) -Files: nsis/gvim.nsi - -Patch 8.2.0248 -Problem: MS-Windows: dealing with deprecation is too complicated. -Solution: Use io.h directly. Move _CRT_SECURE_NO_DEPRECATE to the build - file. Suppress C4091 warning by setting "_WIN32_WINNT". (Ken - Takata, closes #5626) -Files: src/Make_mvc.mak, src/dosinst.h, src/vim.h, src/vimio.h, - src/winclip.c, Filelist - -Patch 8.2.0249 -Problem: MS-Windows: various warnings. -Solution: Set the charset to utf-8. Add _WIN32_WINNT and _USING_V110_SDK71_. - (Ken Takata, closes #5625) -Files: src/GvimExt/Makefile, src/Make_mvc.mak - -Patch 8.2.0250 -Problem: test_clear_search_pat() is unused. -Solution: Remove the function. (Yegappan Lakshmanan, closes #5624) -Files: runtime/doc/eval.txt, runtime/doc/testing.txt, - runtime/doc/usr_41.txt, src/evalfunc.c, src/proto/regexp.pro, - src/proto/search.pro, src/proto/testing.pro, src/regexp.c, - src/search.c, src/testdir/test_writefile.vim, src/testing.c - -Patch 8.2.0251 -Problem: A couple of function return types can be more specific. -Solution: Use a better return type. (Ken Takata, closes #5629) -Files: src/evalfunc.c, src/globals.h - -Patch 8.2.0252 -Problem: Windows compiler warns for using size_t. -Solution: Change to int. (Mike Williams) -Files: src/vim9compile.c - -Patch 8.2.0253 -Problem: Crash when using :disassemble without argument. (Dhiraj Mishra) -Solution: Check for missing argument. (Dominique Pellé, closes #5635, - closes #5637) -Files: src/vim9execute.c, src/testdir/test_vim9_disassemble.vim, - src/ex_cmds.h - -Patch 8.2.0254 -Problem: Compiler warning for checking size_t to be negative. -Solution: Only check for zero. (Zoltan Arpadffy) -Files: src/vim9compile.c - -Patch 8.2.0255 -Problem: VMS: missing files in build. -Solution: Add the files. (Zoltan Arpadffy) -Files: src/Make_vms.mms - -Patch 8.2.0256 -Problem: Time and timer related code is spread out. -Solution: Move time and timer related code to a new file. (Yegappan - Lakshmanan, closes #5604) -Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, - src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, - src/evalfunc.c, src/ex_cmds.c, src/ex_cmds2.c, src/main.c, - src/memline.c, src/misc1.c, src/misc2.c, src/proto.h, - src/proto/ex_cmds.pro, src/proto/ex_cmds2.pro, src/proto/main.pro, - src/proto/memline.pro, src/proto/misc1.pro, src/proto/misc2.pro, - src/proto/time.pro, src/time.c - -Patch 8.2.0257 -Problem: Cannot recognize a terminal in a popup window. -Solution: Add the win_gettype() function. -Files: runtime/doc/eval.txt, src/evalfunc.c, src/evalwindow.c, - src/proto/evalwindow.pro, src/testdir/test_cmdline.vim, - src/testdir/test_terminal.vim, - src/testdir/dumps/Test_terminal_popup_1.dump - -Patch 8.2.0258 -Problem: ModifyOtherKeys cannot be temporarily disabled. -Solution: Add echoraw() with an example for modifyOtherKeys. -Files: runtime/doc/eval.txt, src/evalfunc.c, - src/testdir/test_functions.vim, - src/testdir/dumps/Test_functions_echoraw.dump - -Patch 8.2.0259 -Problem: Terminal in popup test sometimes fails. -Solution: Clear the command line. -Files: src/testdir/test_terminal.vim, - src/testdir/dumps/Test_terminal_popup_1.dump - -Patch 8.2.0260 -Problem: Several lines of code are duplicated. -Solution: Move duplicated code to a function. (Yegappan Lakshmanan, - closes #5330) -Files: src/option.c, src/os_unix.c, src/os_win32.c, src/proto/term.pro, - src/quickfix.c, src/regexp.c, src/regexp_bt.c, src/regexp_nfa.c, - src/term.c - -Patch 8.2.0261 -Problem: Some code not covered by tests. -Solution: Add test cases. (Yegappan Lakshmanan, closes #5645) -Files: src/testdir/test_buffer.vim, src/testdir/test_cmdline.vim, - src/testdir/test_exists.vim, src/testdir/test_filechanged.vim, - src/testdir/test_fileformat.vim, src/testdir/test_mapping.vim, - src/testdir/test_marks.vim, src/testdir/test_normal.vim, - src/testdir/test_plus_arg_edit.vim, src/testdir/test_quickfix.vim, - src/testdir/test_tabpage.vim, src/testdir/test_visual.vim, - src/testdir/test_window_cmd.vim, src/testdir/test_writefile.vim - -Patch 8.2.0262 (after 8.2.0261) -Problem: Fileformat test fails on MS-Windows. -Solution: Set fileformat of buffer. -Files: src/testdir/test_fileformat.vim - -Patch 8.2.0263 -Problem: A few new Vim9 messages are not localized. -Solution: Add the gettext wrapper. (Dominique Pellé, closes #5647) -Files: src/vim9compile.c, src/vim9execute.c - -Patch 8.2.0264 (after 8.2.0262) -Problem: Fileformat test still fails on MS-Windows. -Solution: Set fileformat of buffer in the right place. -Files: src/testdir/test_fileformat.vim - -Patch 8.2.0265 -Problem: "eval" after "if 0" doesn't check for following command. -Solution: Add "eval" to list of commands that check for a following command. - (closes #5640) -Files: src/ex_docmd.c, src/testdir/test_expr.vim - -Patch 8.2.0266 -Problem: Terminal in popup test sometimes fails on Mac. -Solution: Add a short delay. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0267 -Problem: No check for a following command when calling a function fails. -Solution: Also check for a following command when inside a try block. - (closes #5642) -Files: src/userfunc.c, src/testdir/test_user_func.vim - -Patch 8.2.0268 (after 8.2.0267) -Problem: Trycatch test fails. -Solution: When calling function fails only check for following command, do - not give another error. -Files: src/userfunc.c - -Patch 8.2.0269 -Problem: Vim9: operator after list index does not work. (Yasuhiro - Matsumoto) -Solution: After indexing a list change the type to the list member type. - (closes #5651) -Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim - -Patch 8.2.0270 -Problem: Some code not covered by tests. -Solution: Add test cases. (Yegappan Lakshmanan, closes #5649) -Files: src/testdir/test_autocmd.vim, src/testdir/test_buffer.vim, - src/testdir/test_edit.vim, src/testdir/test_ex_mode.vim, - src/testdir/test_excmd.vim, src/testdir/test_expand.vim, - src/testdir/test_filetype.vim, src/testdir/test_findfile.vim, - src/testdir/test_join.vim, src/testdir/test_move.vim, - src/testdir/test_normal.vim, src/testdir/test_registers.vim, - src/testdir/test_source.vim, src/testdir/test_tabpage.vim, - src/testdir/test_tagjump.vim, src/testdir/test_vimscript.vim, - src/testdir/test_visual.vim, src/testdir/test_window_cmd.vim, - src/testdir/test_writefile.vim - -Patch 8.2.0271 -Problem: The "num64" feature is available everywhere and building without - it causes problems. -Solution: Graduate the "num64" feature. (James McCoy, closes #5650) -Files: src/evalfunc.c, src/feature.h, src/message.c, src/structs.h, - src/testdir/test_expr.vim, src/testdir/test_largefile.vim, - src/testdir/test_sort.vim, src/testdir/test_vimscript.vim, - src/version.c - -Patch 8.2.0272 -Problem: ":helptags ALL" gives error for directories without write - permission. (Matěj Cepl) -Solution: Ignore errors for ":helptags ALL". (Ken Takata, closes #5026, - closes #5652) -Files: src/ex_cmds.c, src/testdir/test_help.vim - -Patch 8.2.0273 -Problem: MS-Windows uninstall may delete wrong batch file. -Solution: Add specific marker in the generated batch file. (Ken Takata, - closes #5654) -Files: src/Make_mvc.mak, src/dosinst.c, src/dosinst.h, src/uninstall.c - -Patch 8.2.0274 -Problem: Hang with combination of feedkeys(), Ex mode and :global. - (Yegappan Lakshmanan) -Solution: Add the pending_exmode_active flag. -Files: src/ex_docmd.c, src/globals.h, src/getchar.c, - src/testdir/test_ex_mode.vim - -Patch 8.2.0275 -Problem: Some Ex code not covered by tests. -Solution: Add test cases. (Yegappan Lakshmanan, closes #5659) -Files: src/testdir/test_arglist.vim, src/testdir/test_autocmd.vim, - src/testdir/test_excmd.vim, src/testdir/test_quickfix.vim, - src/testdir/test_search.vim, src/testdir/test_swap.vim, - src/testdir/test_window_cmd.vim - -Patch 8.2.0276 -Problem: Vim9: not allowing space before ")" in function call is too - restrictive. (Ben Jackson) -Solution: Skip space before the ")". Adjust other space checks. -Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim - -Patch 8.2.0277 -Problem: Vim9: not all instructions covered by tests. -Solution: Add more test cases. -Files: src/testdir/test_vim9_disassemble.vim - -Patch 8.2.0278 -Problem: Channel test is flaky on Mac. -Solution: Reset variable before sending message. -Files: src/testdir/test_channel.vim - -Patch 8.2.0279 -Problem: Vim9: no test for deleted :def function. -Solution: Add a test. Clear uf_cleared flag when redefining a function. -Files: src/userfunc.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0280 -Problem: Vim9: throw in :def function not caught higher up. -Solution: Set "need_rethrow". -Files: src/vim9execute.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0281 -Problem: Two placed signs in the same line are not combined. E.g. in the - terminal debugger a breakpoint and the PC cannot be both be - displayed. -Solution: Combine the sign column and line highlight attributes. -Files: src/sign.c, src/testdir/test_signs.vim, - src/testdir/dumps/Test_sign_cursor_3.dump, - src/testdir/dumps/Test_sign_cursor_4.dump - -Patch 8.2.0282 -Problem: Vim9: setting number option not tested. -Solution: Add more tests. Fix assigning to global variable. -Files: src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim, - src/vim9execute.c - -Patch 8.2.0283 -Problem: Vim9: failing to load script var not tested. -Solution: Add more tests. Fix using s: in old script. -Files: src/testdir/test_vim9_expr.vim, src/vim9compile.c, - src/testdir/test_vim9_script.vim - -Patch 8.2.0284 -Problem: Vim9: assignment test fails. -Solution: Avoid duplicating "s:". -Files: src/vim9compile.c - -Patch 8.2.0285 -Problem: Unused error message. Cannot create s:var. -Solution: Remove the error message. Make assignment to s:var work. -Files: src/vim9compile.c, src/vim9execute.c, - src/testdir/test_vim9_script.vim - -Patch 8.2.0286 -Problem: Cannot use popup_close() for a terminal popup. -Solution: Allow using popup_close(). (closes #5666) -Files: src/popupwin.c, runtime/doc/popup.txt, - src/testdir/test_terminal.vim, - src/testdir/dumps/Test_terminal_popup_5.dump, - src/testdir/dumps/Test_terminal_popup_6.dump - -Patch 8.2.0287 -Problem: Vim9: return in try block not tested; catch with pattern not - tested. -Solution: Add tests. Make it work. -Files: src/vim9execute.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0288 -Problem: Vim9: some float and blob operators not tested. -Solution: Add float and blob tests. Fix addition. -Files: src/testdir/test_vim9_expr.vim, src/vim9compile.c - -Patch 8.2.0289 -Problem: Vim9: :echo did not clear the rest of the line. -Solution: Call msg_clr_eos(). (Ken Takata, closes #5668) -Files: src/vim9execute.c - -Patch 8.2.0290 -Problem: Running individual test differs from all tests. -Solution: Pass on environment variables. (Yee Cheng Chin, closes #5672) -Files: src/testdir/Makefile, src/testdir/README.txt - -Patch 8.2.0291 -Problem: Vim9: assigning [] to list doesn't work. -Solution: Use void for empty list and dict. (Ken Takata, closes #5669) -Files: src/vim9compile.c, src/globals.h, src/testdir/test_vim9_script.vim - -Patch 8.2.0292 -Problem: Vim9: CHECKNR and CHECKTYPE instructions not tested. -Solution: Add tests. -Files: src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim - -Patch 8.2.0293 -Problem: Various Ex commands not sufficiently tested. -Solution: Add more test cases. (Yegappan Lakshmanan, closes #5673) -Files: src/testdir/test_arglist.vim, src/testdir/test_cmdline.vim, - src/testdir/test_ex_mode.vim, src/testdir/test_excmd.vim, - src/testdir/test_expand.vim, src/testdir/test_filetype.vim, - src/testdir/test_filter_cmd.vim, src/testdir/test_global.vim, - src/testdir/test_normal.vim, src/testdir/test_plus_arg_edit.vim, - src/testdir/test_quickfix.vim, src/testdir/test_trycatch.vim, - src/testdir/test_vimscript.vim - -Patch 8.2.0294 -Problem: Cannot use Ex command that is also a function name. -Solution: Recognize an Ex command by a colon prefix. -Files: src/vim9compile.c, src/testdir/test_vim9_script.vim, - runtime/doc/vim9.txt - -Patch 8.2.0295 -Problem: Highlighting for :s wrong when using different separator. -Solution: Use separate argument for search direction and separator. (Rob - Pilling, closes #5665) -Files: src/ex_docmd.c, src/ex_getln.c, src/gui.c, src/normal.c, - src/proto/search.pro, src/quickfix.c, src/search.c, src/spell.c, - src/tag.c, src/testdir/dumps/Test_incsearch_substitute_15.dump, - src/testdir/test_search.vim - -Patch 8.2.0296 -Problem: Mixing up "long long" and __int64 may cause problems. (John - Marriott) -Solution: Pass varnumber_T to vim_snprintf(). Add v:numbersize. -Files: src/message.c, src/eval.c, src/fileio.c, src/json.c, src/ops.c, - src/vim.h, src/structs.h, src/evalvars.c, runtime/doc/eval.txt, - runtime/doc/various.txt, src/testdir/test_eval_stuff.vim - -Patch 8.2.0297 -Problem: Compiler warnings for the Ruby interface. -Solution: Undefine a few macros, fix initialization. (Ozaki Kiichi, - closes #5677) -Files: src/if_ruby.c - -Patch 8.2.0298 -Problem: Vim9 script: cannot start command with a string constant. -Solution: Recognize expression starting with '('. -Files: src/ex_docmd.c, src/vim9compile.c, - src/testdir/test_vim9_script.vim, runtime/doc/vim9.txt - -Patch 8.2.0299 -Problem: Vim9: ISN_STORE with argument not tested. Some cases in tv2bool() - not tested. -Solution: Add tests. Add test_unknown() and test_void(). -Files: src/testing.c, src/proto/testing.pro, src/evalfunc.c, - src/testdir/test_vim9_disassemble.vim, - src/testdir/test_vim9_expr.vim, runtime/doc/eval.txt, - runtime/doc/testing.txt - -Patch 8.2.0300 -Problem: Vim9: expression test fails without channel support. -Solution: Add has('channel') check. -Files: src/testdir/test_vim9_expr.vim - -Patch 8.2.0301 -Problem: Insufficient testing for exception handling and the "attention" - prompt. -Solution: Add test cases. (Yegappan Lakshmanan, closes #5681) -Files: src/testdir/test_swap.vim, src/testdir/test_trycatch.vim - -Patch 8.2.0302 -Problem: Setting 'term' may cause error in TermChanged autocommand. -Solution: Use aucmd_prepbuf() to switch to the buffer where the autocommand - is to be executed. (closes #5682) -Files: src/term.c, src/testdir/test_autocmd.vim - -Patch 8.2.0303 -Problem: TermChanged test fails in the GUI. -Solution: Skip the test when running the GUI. -Files: src/testdir/test_autocmd.vim - -Patch 8.2.0304 -Problem: Terminal test if failing on some systems. -Solution: Wait for the job to finish. (James McCoy) -Files: src/testdir/test_terminal.vim - -Patch 8.2.0305 -Problem: Relativenumber test fails on some systems. (James McCoy) -Solution: Clear the command line. -Files: src/testdir/test_number.vim, - src/testdir/dumps/Test_relnr_colors_2.dump, - src/testdir/dumps/Test_relnr_colors_3.dump - -Patch 8.2.0306 -Problem: Vim9: :substitute(pat(repl does not work in Vim9 script. -Solution: Remember starting with a colon. (closes #5676) -Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0307 -Problem: Python 3 vim.eval not well tested. -Solution: Add a test. (Dominique Pellé, closes #5680) -Files: src/testdir/test_python3.vim - -Patch 8.2.0308 -Problem: 'showbreak' does not work for a very long line. (John Little) -Solution: Check whether 'briopt' contains "sbr". (Ken Takata, closes #5523, - closes #5684) -Files: src/drawline.c, src/testdir/test_breakindent.vim - -Patch 8.2.0309 -Problem: Window-local values have confusing name. -Solution: Rename w_p_bri* to w_briopt_*. -Files: src/structs.h, src/indent.c, src/drawline.c - -Patch 8.2.0310 -Problem: Autocmd test fails on a slow system. -Solution: Adjust the expectations. (James McCoy, closes #5685) -Files: src/testdir/test_autocmd.vim - -Patch 8.2.0311 -Problem: Vim9: insufficient script tests. -Solution: Add tests. Free imports when re-using a script. -Files: src/testdir/test_vim9_script.vim, src/scriptfile.c - -Patch 8.2.0312 -Problem: Vim9: insufficient script tests. -Solution: Add more tests. Make "import * as Name" work. -Files: src/testdir/test_vim9_script.vim, src/vim9script.c, - src/proto/vim9script.pro, src/vim9compile.c - -Patch 8.2.0313 -Problem: Vim9: insufficient script tests. -Solution: Add tests. Make import of alphanumeric name work. -Files: src/testdir/test_vim9_script.vim, src/vim9script.c - -Patch 8.2.0314 -Problem: Short name not set for terminal buffer. -Solution: Set the short name. (closes #5687) -Files: src/terminal.c, src/testdir/test_terminal.vim - -Patch 8.2.0315 -Problem: Build failure on HP-UX system. -Solution: Use LONG_LONG_MIN instead of LLONG_MIN. Add type casts for switch - statement. (John Marriott) -Files: src/structs.h, src/json.c - -Patch 8.2.0316 -Problem: ex_getln.c code has insufficient test coverage. -Solution: Add more tests. Fix a problem. (Yegappan Lakshmanan, closes #5693) -Files: src/cmdhist.c, src/testdir/test_cmdline.vim, - src/testdir/test_functions.vim, src/testdir/test_history.vim, - src/testdir/test_menu.vim - -Patch 8.2.0317 -Problem: MSVC: _CRT_SECURE_NO_DEPRECATE not defined on DEBUG build. -Solution: Move where CFLAGS is updated. (Ken Takata, closes #5692) -Files: src/Make_mvc.mak - -Patch 8.2.0318 -Problem: Vim9: types not sufficiently tested. -Solution: Add tests with more types. -Files: src/globals.h, src/vim9compile.c, - src/testdir/test_vim9_script.vim, src/testdir/test_vim9_expr.vim - -Patch 8.2.0319 -Problem: File missing in distribution, comments outdated. -Solution: Correct path of README file. Update comments. -Files: Filelist, src/evalvars.c, src/register.c, src/if_python3.c - -Patch 8.2.0320 -Problem: No Haiku support. -Solution: Add support for Haiku. (Emir Sarı, closes #5605) -Files: Filelist, runtime/doc/Makefile, runtime/doc/eval.txt, - runtime/doc/gui.txt, runtime/doc/help.txt, - runtime/doc/options.txt, runtime/doc/os_haiku.txt, - runtime/doc/starting.txt, runtime/doc/tags, - runtime/gvimrc_example.vim, runtime/vimrc_example.vim, - src/INSTALL, src/Makefile, src/auto/configure, src/configure.ac, - src/evalfunc.c, src/feature.h, src/fileio.c, src/globals.h, - src/gui.c, src/gui.h, src/gui_haiku.cc, src/gui_haiku.h, - src/mbyte.c, src/menu.c, src/misc1.c, src/mouse.c, src/option.h, - src/os_haiku.h, src/os_haiku.rdef, src/os_unix.c, src/os_unix.h, - src/osdef1.h.in, src/proto.h, src/proto/gui_haiku.pro, src/pty.c, - src/screen.c, src/structs.h, src/term.c, src/version.c, src/vim.h - -Patch 8.2.0321 -Problem: Vim9: ":execute" does not work yet. -Solution: Add ISN_EXECUTE. (closes #5699) Also make :echo work with more - than one argument. -Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, - src/testdir/test_vim9_disassemble.vim, - src/testdir/test_vim9_script.vim - -Patch 8.2.0322 -Problem: Vim9: error checks not tested. -Solution: Add more test cases. Avoid error for function loaded later. -Files: src/vim9compile.c, src/evalvars.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0323 -Problem: Vim9: calling a function that is defined later is slow. -Solution: Once the function is found update the instruction so it can be - called directly. -Files: src/vim9execute.c, src/testdir/test_vim9_script.vim, - src/testdir/test_vim9_disassemble.vim - -Patch 8.2.0324 -Problem: Text property not updated correctly when inserting/deleting. -Solution: Use the right column when deleting. Make zero-width text - properties respect start_incl and end_incl. (Axel Forsman, - closes #5696, closes #5679) -Files: src/change.c, src/textprop.c, src/testdir/test_listener.vim, - src/testdir/test_textprop.vim - -Patch 8.2.0325 -Problem: Ex_getln.c code not covered by tests. -Solution: Add a few more tests. (Yegappan Lakshmanan, closes #5702) -Files: src/testdir/test_cmdline.vim, src/testdir/test_ex_mode.vim, - src/testdir/test_functions.vim, src/testdir/test_history.vim, - src/testdir/test_options.vim - -Patch 8.2.0326 -Problem: Compiler warning for using uninitialized variable. (Yegappan - Lakshmanan) -Solution: Do not jump to failed but return. -Files: src/vim9execute.c - -Patch 8.2.0327 -Problem: Crash when opening and closing two popup terminal windows. -Solution: Check that prevwin is valid. (closes #5707) -Files: src/popupwin.c, src/testdir/test_terminal.vim - -Patch 8.2.0328 -Problem: No redraw when leaving terminal-normal mode in a terminal popup - window. -Solution: Redraw the popup window. (closes #5708) -Files: src/macros.h, src/vim.h, src/terminal.c, src/drawscreen.c, - src/move.c, src/popupwin.c, src/testdir/test_terminal.vim, - src/testdir/dumps/Test_terminal_popup_7.dump, - src/testdir/dumps/Test_terminal_popup_8.dump - -Patch 8.2.0329 -Problem: Popup filter converts 0x80 bytes. -Solution: Keep 0x80 bytes as-is. (Ozaki Kiichi, closes #5706) -Files: src/popupwin.c, src/testdir/test_popupwin.vim - -Patch 8.2.0330 -Problem: Build error with popup window but without terminal. -Solution: Add #ifdef. -Files: src/popupwin.c - -Patch 8.2.0331 -Problem: Internal error when using test_void() and test_unknown(). - (Dominique Pellé) -Solution: Give a normal error. -Files: src/evalfunc.c, src/testdir/test_functions.vim, - src/testdir/test_vimscript.vim - -Patch 8.2.0332 -Problem: Some code in ex_getln.c not covered by tests. -Solution: Add a few more tests. (Yegappan Lakshmanan, closes #5710) -Files: src/testdir/test_arabic.vim, src/testdir/test_cmdline.vim - -Patch 8.2.0333 -Problem: Terminal in popup test is flaky. -Solution: Make sure redraw is done before opening the popup. -Files: src/testdir/test_terminal.vim, - src/testdir/dumps/Test_terminal_popup_1.dump - -Patch 8.2.0334 -Problem: Abort called when using test_void(). (Dominique Pellé) -Solution: Only give an error, don't abort. -Files: src/message.c, src/proto/message.pro, src/evalfunc.c, - src/eval.c, src/json.c, src/testdir/test_functions.vim - -Patch 8.2.0335 -Problem: No completion for :disassemble. -Solution: Make completion work. Also complete script-local functions if the - name starts with "s:". -Files: src/cmdexpand.c, src/testdir/test_cmdline.vim, - runtime/doc/vim9.txt - -Patch 8.2.0336 -Problem: Vim9: insufficient test coverage for compiling. -Solution: Add more tests. -Files: src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim, - src/vim9.h, src/vim9compile.c, src/vim9execute.c - -Patch 8.2.0337 -Problem: Build fails on a few systems. -Solution: Use vim_snprintf() instead of snprintf(). -Files: src/cmdexpand.c - -Patch 8.2.0338 -Problem: Build failure without the channel feature. -Solution: Add #ifdef -Files: src/vim9compile.c - -Patch 8.2.0339 -Problem: Vim9: function return type may depend on arguments. -Solution: Instead of a fixed return type use a function to figure out the - return type. -Files: src/evalfunc.c, src/proto/evalfunc.pro, src/vim9compile.c, - src/evalbuffer.c, src/proto/evalbuffer.pro, - src/testdir/test_vim9_script.vim - -Patch 8.2.0340 -Problem: Vim9: function and partial types not tested. -Solution: Support more for partial, add tests. -Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, - src/testdir/test_vim9_script.vim - -Patch 8.2.0341 -Problem: Using ":for" in Vim9 script gives an error. -Solution: Pass the LET_NO_COMMAND flag. (closes #5715) -Files: src/eval.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0342 -Problem: Some code in ex_getln.c not covered by tests. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5717) -Files: src/testdir/test_cmdline.vim, src/testdir/test_ex_mode.vim, - src/testdir/test_history.vim, src/testdir/test_iminsert.vim - -Patch 8.2.0343 -Problem: Vim9: using wrong instruction, limited test coverage. -Solution: Use ISN_PUSHJOB. Add a few more tests. -Files: src/vim9compile.c, src/vim9execute.c, - src/testdir/test_vim9_script.vim, - src/testdir/test_vim9_disassemble.vim - -Patch 8.2.0344 -Problem: ":def" not skipped properly. -Solution: Add CMD_def to list of commands the require evaluation even when - not being executed. -Files: src/ex_docmd.c - -Patch 8.2.0345 -Problem: Compiler warning when building without the float feature. -Solution: Add #ifdef. (John Marriott) -Files: src/evalfunc.c - -Patch 8.2.0346 -Problem: Vim9: finding common list type not tested. -Solution: Add more tests. Fix listing function. Fix overwriting type. -Files: src/vim9compile.c, src/userfunc.c, - src/testdir/test_vim9_script.vim, src/testdir/runtest.vim, - src/testdir/test_vim9_disassemble.vim - -Patch 8.2.0347 -Problem: Various code not covered by tests. -Solution: Add more test coverage. (Yegappan Lakshmanan, closes #5720) -Files: src/testdir/gen_opt_test.vim, src/testdir/test86.in, - src/testdir/test_cmdline.vim, src/testdir/test_digraph.vim, - src/testdir/test_ex_mode.vim, src/testdir/test_history.vim - -Patch 8.2.0348 -Problem: Vim9: not all code tested. -Solution: Add a few more tests. fix using "b:" in literal dictionary. -Files: src/testdir/test_vim9_expr.vim, src/vim9compile.c, - src/proto/vim9compile.pro, src/testdir/test_vim9_script.vim - -Patch 8.2.0349 -Problem: Vim9: constant expression not well tested. -Solution: Add tests for "if" with constant expression. -Files: src/testdir/test_vim9_script.vim - -Patch 8.2.0350 -Problem: Vim9: expression tests don't use recognized constants. -Solution: Recognize "true" and "false" as constants. Make skipping work for - assignment and expression evaluation. -Files: src/vim9compile.c - -Patch 8.2.0351 -Problem: Terminal in popup test is still a bit flaky. -Solution: Clear and redraw before opening the popup. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0352 -Problem: FreeBSD: test for sourcing utf-8 is skipped. -Solution: Run the matchadd_conceal test separately to avoid that setting - 'term' to "ansi" causes problems for other tests. (Ozaki Kiichi, - closes #5721) -Files: src/testdir/Make_all.mak, src/testdir/test_alot_utf8.vim, - src/testdir/test_source_utf8.vim - -Patch 8.2.0353 -Problem: Vim9: while loop not tested. -Solution: Add test with "while", "break" and "continue" -Files: src/testdir/test_vim9_script.vim - -Patch 8.2.0354 -Problem: Python 3.9 does not define _Py_DEC_REFTOTAL. (Zdenek Dohnal) -Solution: Remove it, it was only for debugging. -Files: src/if_python3.c - -Patch 8.2.0355 -Problem: Vim9: str_val is confusing, it's a number -Solution: Rename to stnr_val. -Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c - -Patch 8.2.0356 -Problem: MS-Windows: feedkeys() with VIMDLL cannot handle CSI correctly. -Solution: Modify mch_inchar() to encode CSI bytes. (Ozaki Kiichi, Ken - Takata, closes #5726) -Files: src/getchar.c, src/os_win32.c, src/testdir/test_popupwin.vim - -Patch 8.2.0357 -Problem: Cannot delete a text property matching both id and type. (Axel - Forsman) -Solution: Add the "both" argument. -Files: src/textprop.c, runtime/doc/textprop.txt, - src/testdir/test_textprop.vim - -Patch 8.2.0358 -Problem: Insufficient testing for indent.c. -Solution: Add indent tests. (Yegappan Lakshmanan, closes #5736) -Files: src/testdir/Make_all.mak, src/testdir/test_ex_mode.vim, - src/testdir/test_expand_func.vim, src/testdir/test_indent.vim, - src/testdir/test_lispwords.vim, src/testdir/test_smartindent.vim, - src/testdir/test_vartabs.vim - -Patch 8.2.0359 -Problem: popup_atcursor() may hang. (Yasuhiro Matsumoto) -Solution: Take the decoration into account. (closes #5728) -Files: src/popupwin.c, src/testdir/test_popupwin.vim - -Patch 8.2.0360 -Problem: Yaml files are only recognized by the file extension. -Solution: Check for a line starting with "%YAML". (Jason Franklin) -Files: runtime/scripts.vim, src/testdir/test_filetype.vim - -Patch 8.2.0361 -Problem: Internal error when using "0" for a callback. -Solution: Give a normal error. (closes #5743) -Files: src/evalvars.c, src/testdir/test_timers.vim - -Patch 8.2.0362 -Problem: MS-Windows: channel test fails if grep is not available. -Solution: Use another command. (Ken Takata, closes #5739) -Files: src/testdir/test_channel.vim - -Patch 8.2.0363 -Problem: Some Normal mode commands not tested. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5746) -Files: src/testdir/test_cindent.vim, src/testdir/test_cmdline.vim, - src/testdir/test_edit.vim, src/testdir/test_indent.vim, - src/testdir/test_normal.vim, src/testdir/test_prompt_buffer.vim, - src/testdir/test_virtualedit.vim, src/testdir/test_visual.vim - -Patch 8.2.0364 -Problem: Printf test failing on Haiku. -Solution: Make a difference between int and short. (Dominique Pellé, - closes #5749) -Files: src/message.c - -Patch 8.2.0365 -Problem: Tag kind can't be a multibyte character. (Marcin Szamotulski) -Solution: Recognize multibyte character. (closes #5724) -Files: src/tag.c, src/testdir/test_taglist.vim - -Patch 8.2.0366 -Problem: Hardcopy command not tested enough. -Solution: Add tests for printing. (Dominique Pellé, closes #5748) -Files: src/testdir/test_hardcopy.vim - -Patch 8.2.0367 -Problem: Can use :pedit in a popup window. -Solution: Disallow it. -Files: src/ex_docmd.c, src/testdir/test_popuwin.vim - -Patch 8.2.0368 -Problem: Vim9: import that redefines local variable does not fail. -Solution: Check for already defined symbols. -Files: src/vim9script.c, src/proto/vim9script.pro, src/vim9compile.c, - src/proto/vim9compile.pro, src/testdir/test_vim9_script.vim - -Patch 8.2.0369 -Problem: Various Normal mode commands not fully tested. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5751) -Files: src/testdir/test_arglist.vim, src/testdir/test_changelist.vim, - src/testdir/test_charsearch.vim, src/testdir/test_cmdline.vim, - src/testdir/test_edit.vim, src/testdir/test_ex_mode.vim, - src/testdir/test_excmd.vim, src/testdir/test_gf.vim, - src/testdir/test_iminsert.vim, src/testdir/test_increment.vim, - src/testdir/test_marks.vim, src/testdir/test_normal.vim, - src/testdir/test_prompt_buffer.vim, src/testdir/test_put.vim, - src/testdir/test_registers.vim, src/testdir/test_tagjump.vim, - src/testdir/test_visual.vim - -Patch 8.2.0370 -Problem: The typebuf_was_filled flag is sometimes not reset, which may - cause a hang. -Solution: Make sure typebuf_was_filled is reset when the typeahead buffer is - empty. -Files: src/edit.c, src/getchar.c, - -Patch 8.2.0371 -Problem: Crash with combination of terminal popup and autocmd. -Solution: Disallow closing a popup that is the current window. Add a check - that the current buffer is valid. (closes #5754) -Files: src/macros.h, src/buffer.c, src/popupwin.c, src/terminal.c, - src/testdir/test_terminal.vim - -Patch 8.2.0372 -Problem: Prop_find() may not find text property at start of the line. -Solution: Adjust the loop to find properties. (Axel Forsman, closes #5761, - closes #5663) -Files: src/testprop.c, src/testdir/test_textprop.vim - -Patch 8.2.0373 -Problem: Type of term_sendkeys() is unknown. -Solution: Just return zero. (closes #5762) -Files: src/terminal.c, src/testdir/test_terminal.vim - -Patch 8.2.0374 -Problem: Using wrong printf directive for jump location. -Solution: Change "%lld" to "%d". (James McCoy, closes #5773) -Files: src/vim9execute.c - -Patch 8.2.0375 -Problem: Coverity warning for not using return value. -Solution: Move error message to separate function. -Files: src/popupwin.c - -Patch 8.2.0376 -Problem: Nasty callback test fails on some systems. -Solution: Increase the sleep time. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0377 -Problem: No CI test for a big-endian system. -Solution: Test with s390x. (James McCoy, closes #5772) -Files: .travis.yml - -Patch 8.2.0378 -Problem: prop_find() does not find all props. -Solution: Check being in the start line. (Axel Forsman, closes #5776) -Files: src/textprop.c, src/testdir/test_textprop.vim - -Patch 8.2.0379 -Problem: Gcc warns for ambiguous else. -Solution: Add braces. (Dominique Pellé, closes #5778) -Files: src/textprop.c - -Patch 8.2.0380 -Problem: Tiny popup when creating a terminal popup without minwidth. -Solution: Use a default minimum size of 5 lines of 20 characters. -Files: src/popupwin.c, src/testdir/test_terminal.vim, - src/testdir/dumps/Test_terminal_popup_m1.dump - -Patch 8.2.0381 -Problem: Using freed memory with :lvimgrep and autocommand. (extracted from - POC by Dominique Pellé) -Solution: Avoid deleting a dummy buffer used in a window. (closes #5777) -Files: src/quickfix.c, src/testdir/test_quickfix.vim - -Patch 8.2.0382 -Problem: Some tests fail when run under valgrind. -Solution: Increase timeouts. -Files: src/testdir/test_autocmd.vim, src/testdir/test_debugger.vim, - src/testdir/test_channel.vim, src/testdir/test_ins_complete.vim, - src/testdir/test_terminal.vim, - src/testdir/dumps/Test_terminal_popup_1.dump, - src/testdir/dumps/Test_terminal_popup_2.dump, - src/testdir/dumps/Test_terminal_popup_3.dump, - src/testdir/dumps/Test_terminal_popup_5.dump, - src/testdir/dumps/Test_terminal_popup_6.dump, - src/testdir/dumps/Test_terminal_popup_7.dump, - src/testdir/dumps/Test_terminal_popup_8.dump, - src/testdir/dumps/Test_terminal_popup_m1.dump - -Patch 8.2.0383 -Problem: Wrong feature check causes test not to be run. -Solution: Use CheckFunction instead of CheckFeature. (Ozaki Kiichi, - closes #5781) -Files: src/testdir/test_channel.vim - -Patch 8.2.0384 -Problem: Travis CI has warnings. -Solution: Avoid warnings, clean up the config. (Ozaki Kiichi, closes #5779) -Files: .travis.yml - -Patch 8.2.0385 -Problem: Menu functionality insufficiently tested. -Solution: Add tests. Add menu_info(). (Yegappan Lakshmanan, closes #5760) -Files: runtime/doc/eval.txt, runtime/doc/gui.txt, runtime/doc/usr_41.txt, - src/evalfunc.c, src/menu.c, src/proto/menu.pro, - src/testdir/test_menu.vim, src/testdir/test_popup.vim, - src/testdir/test_termcodes.vim - -Patch 8.2.0386 (after 8.2.0385) -Problem: Part from unfinished patch got included. -Solution: Undo that part. -Files: src/evalfunc.c - -Patch 8.2.0387 -Problem: Error for possible NULL argument to qsort(). -Solution: Don't call qsort() when there is nothing to sort. (Dominique - Pellé, closes #5780) -Files: src/spellsuggest.c - -Patch 8.2.0388 -Problem: Printmbcharset option not tested. -Solution: Add a test. Enable PostScript for AppVeyor build. (Dominique - Pellé, closes #5783) -Files: appveyor.yml, src/testdir/test_hardcopy.vim - -Patch 8.2.0389 -Problem: Delayed redraw when shifting text from Insert mode. -Solution: Use msg_attr_keep() instead of msg(). (closes #5782) -Files: src/ops.c - -Patch 8.2.0390 -Problem: Terminal postponed scrollback test is flaky. -Solution: Add delay in between sending keys. Rename dump files. -Files: src/testdir/test_terminal.vim, - src/testdir/dumps/Test_terminal_01.dump, - src/testdir/dumps/Test_terminal_02.dump, - src/testdir/dumps/Test_terminal_03.dump, - src/testdir/dumps/Test_terminal_scrollback_1.dump, - src/testdir/dumps/Test_terminal_scrollback_2.dump, - src/testdir/dumps/Test_terminal_scrollback_3.dump - -Patch 8.2.0391 (after 8.2.0377) -Problem: CI test coverage dropped. -Solution: Set $DISPLAY also for non-GUI builds. (James McCoy, closes #5788) -Files: .travis.yml - -Patch 8.2.0392 -Problem: Coverity warns for using array index out of range. -Solution: Add extra "if" to avoid warning. -Files: src/menu.c - -Patch 8.2.0393 -Problem: Coverity warns for not using return value. -Solution: Add (void). -Files: src/popupmenu.c - -Patch 8.2.0394 -Problem: Coverity complains about using NULL pointer. -Solution: Use empty string when option value is NULL. -Files: src/optionstr.c - -Patch 8.2.0395 -Problem: Build fails with FEAT_EVAL but without FEAT_MENU. -Solution: Add #ifdef. (John Marriott) -Files: src/evalfunc.c - -Patch 8.2.0396 -Problem: Cmdexpand.c insufficiently tested. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5789) -Files: src/testdir/test_cmdline.vim, src/testdir/test_taglist.vim, - src/testdir/test_terminal.vim, src/testdir/test_usercommands.vim - -Patch 8.2.0397 -Problem: Delayed screen update when using undo from Insert mode. -Solution: Update w_topline and cursor shape before sleeping. (closes #5790) -Files: src/normal.c - -Patch 8.2.0398 -Problem: Profile test fails when two functions take same time. -Solution: Add a short sleep in once function. (closes #5797) -Files: src/testdir/test_profile.vim - -Patch 8.2.0399 -Problem: Various memory leaks. -Solution: Avoid the leaks. (Ozaki Kiichi, closes #5803) -Files: src/ex_docmd.c, src/ex_getln.c, src/menu.c, src/message.c, - src/scriptfile.c, src/userfunc.c - -Patch 8.2.0400 -Problem: Not all tests using a terminal are in the list of flaky tests. -Solution: Introduce the test_is_flaky flag. -Files: src/testdir/runtest.vim, src/testdir/term_util.vim, - src/testdir/screendump.vim, src/testdir/test_autocmd.vim - -Patch 8.2.0401 -Problem: Not enough test coverage for evalvars.c. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5804) -Files: src/testdir/test_cmdline.vim, src/testdir/test_const.vim, - src/testdir/test_diffmode.vim, src/testdir/test_excmd.vim, - src/testdir/test_functions.vim, src/testdir/test_let.vim, - src/testdir/test_listdict.vim, src/testdir/test_spell.vim, - src/testdir/test_unlet.vim, src/testdir/test_user_func.vim, - src/testdir/test_vimscript.vim - -Patch 8.2.0402 (after 8.2.0401) -Problem: Setting local instead of global flag. -Solution: Prepend "g:" to "test_is_flaky". -Files: src/testdir/term_util.vim, src/testdir/screendump.vim, - src/testdir/test_autocmd.vim - -Patch 8.2.0403 -Problem: When 'buftype' is "nofile" there is no overwrite check. -Solution: Also check for existing file when 'buftype' is set. - (closes #5807) -Files: src/ex_cmds.c, src/testdir/test_options.vim - -Patch 8.2.0404 -Problem: Writefile() error does not give a hint. -Solution: Add remark about first argument. -Files: src/filepath.c, src/testdir/test_writefile.vim - -Patch 8.2.0405 -Problem: MSVC: build fails with some combination of features. -Solution: Enable CHANNEL if TERMINAL is enabled. (Mike Williams) -Files: src/Make_mvc.mak - -Patch 8.2.0406 -Problem: FileReadCmd event not well tested. -Solution: Add a test. -Files: src/testdir/test_autocmd.vim - -Patch 8.2.0407 -Problem: No early check if :find and :sfind have an argument. -Solution: Add EX_NEEDARG. -Files: src/ex_cmds.h, src/testdir/test_findfile.vim, - src/testdir/test_find_complete.vim - -Patch 8.2.0408 -Problem: Delete() commented out for testing. -Solution: Undo commenting-out. -Files: src/testdir/test_vim9_disassemble.vim - -Patch 8.2.0409 -Problem: Search test leaves file behind. -Solution: Delete the file. Also use Check commands. -Files: src/testdir/test_search.vim - -Patch 8.2.0410 -Problem: Channel test fails too often on slow Mac. -Solution: Increase waiting time to 10 seconds. -Files: src/testdir/test_channel.vim - -Patch 8.2.0411 -Problem: Mac: breakcheck is using a value from the stone ages. -Solution: Delete BREAKCHECK_SKIP from the Mac header file. (Ben Jackson) -Files: src/os_mac.h - -Patch 8.2.0412 -Problem: MS-Windows: cannot use vimtutor from the start menu. -Solution: Better check for writable directory. Use the right path for the - executable. (Wu Yongwei, closes #5774, closes #5756) -Files: vimtutor.bat - -Patch 8.2.0413 -Problem: Buffer menu does not handle special buffers properly. -Solution: Keep a dictionary with buffer names to reliably keep track of - entries. - Also trigger BufFilePre and BufFilePost for command-line and - terminal buffers when the name changes. -Files: src/testdir/test_alot.vim, src/testdir/Make_all.mak, - runtime/menu.vim, src/ex_getln.c, src/terminal.c, - src/testdir/test_menu.vim - -Patch 8.2.0414 -Problem: Channel connect_waittime() test is flaky. -Solution: Set the test_is_flaky flag. Use test_is_flaky for more tests. -Files: src/testdir/test_channel.vim, src/testdir/test_terminal.vim, - src/testdir/runtest.vim - -Patch 8.2.0415 -Problem: Bsdl filetype is not detected. -Solution: Add an entry in the filetype list. (Daniel Kho, closes #5810) -Files: runtime/filetype.vim, src/testdir/test_filetype.vim - -Patch 8.2.0416 -Problem: Test leaves file behind. -Solution: Delete the file. -Files: src/testdir/test_indent.vim - -Patch 8.2.0417 -Problem: Travis CI config can be improved. -Solution: Remove COVERAGE variable. Add load-snd-dummy script. add "-i NONE" - to avoid messages about viminfo. (Ozaki Kiichi, closes #5813) -Files: .travis.yml, ci/load-snd-dummy.sh - -Patch 8.2.0418 -Problem: Code in eval.c not sufficiently covered by tests. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5815) -Files: src/testdir/test_blob.vim, src/testdir/test_channel.vim, - src/testdir/test_cmdline.vim, src/testdir/test_eval_stuff.vim, - src/testdir/test_expr.vim, src/testdir/test_functions.vim, - src/testdir/test_job_fails.vim, src/testdir/test_lambda.vim, - src/testdir/test_let.vim, src/testdir/test_listdict.vim, - src/testdir/test_marks.vim, src/testdir/test_method.vim, - src/testdir/test_normal.vim, src/testdir/test_unlet.vim, - src/testdir/test_usercommands.vim, src/testdir/test_vimscript.vim, - src/testdir/test_window_cmd.vim - -Patch 8.2.0419 -Problem: Various memory leaks in Vim9 script code. -Solution: Fix the leaks. (Ozaki Kiichi, closes #5814) -Files: src/proto/vim9compile.pro, src/scriptfile.c, src/structs.h, - src/testdir/test_vim9_script.vim, src/vim9.h, src/vim9compile.c, - src/vim9execute.c, src/vim9script.c - -Patch 8.2.0420 -Problem: Vim9: cannot interrupt a loop with CTRL-C. -Solution: Check for CTRL-C once in a while. Doesn't fully work yet. -Files: src/misc1.c, src/proto/misc1.pro, - src/testdir/test_vim9_script.vim - -Patch 8.2.0421 -Problem: Interrupting with CTRL-C does not always work. -Solution: Recognize CTRL-C while modifyOtherKeys is set. -Files: src/ui.c, src/testdir/test_vim9_script.vim, src/evalfunc.c - -Patch 8.2.0422 -Problem: Crash when passing popup window to win_splitmove(). (john Devin) -Solution: Disallow moving a popup window. (closes #5816) -Files: src/testdir/test_popupwin.vim, src/evalwindow.c - -Patch 8.2.0423 -Problem: In some environments a few tests are expected to fail. -Solution: Add $TEST_MAY_FAIL to list tests that should not cause make to - fail. -Files: src/testdir/runtest.vim - -Patch 8.2.0424 -Problem: Checking for wrong return value. (Tom) -Solution: Invert the check and fix the test. -Files: src/vim9execute.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0425 -Problem: Code for modeless selection not sufficiently tested. -Solution: Add tests. Move mouse code functionality to a common script file. - (Yegappan Lakshmanan, closes #5821) -Files: src/testdir/Make_all.mak, src/testdir/gen_opt_test.vim, - src/testdir/mouse.vim, src/testdir/test_edit.vim, - src/testdir/test_global.vim, src/testdir/test_modeless.vim, - src/testdir/test_normal.vim, src/testdir/test_selectmode.vim, - src/testdir/test_termcodes.vim, src/testdir/test_visual.vim, - src/ui.c - -Patch 8.2.0426 -Problem: Some errors were not tested for. -Solution: Add tests. (Dominique Pellé, closes #5824) -Files: src/testdir/test_buffer.vim, src/testdir/test_options.vim, - src/testdir/test_tcl.vim, src/testdir/test_terminal.vim, - src/testdir/test_window_cmd.vim - -Patch 8.2.0427 -Problem: It is not possible to check for a typo in a feature name. -Solution: Add an extra argument to has(). -Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/check.vim, - src/testdir/test_functions.vim - -Patch 8.2.0428 -Problem: Buffer name may leak. -Solution: Free the buffer name before overwriting it. -Files: src/terminal.c - -Patch 8.2.0429 -Problem: No warning when test checks for option that never exists. -Solution: In tests check that the option can exist. -Files: src/testdir/check.vim - -Patch 8.2.0430 -Problem: Window creation failure not properly tested. -Solution: Improve the test. (Yegappan Lakshmanan, closes #5826) -Files: src/testdir/test_cmdline.vim, src/testdir/test_window_cmd.vim - -Patch 8.2.0431 -Problem: Some compilers don't support using \e for Esc. (Yegappan - Lakshmanan) -Solution: use \033 instead. -Files: src/ui.c - -Patch 8.2.0432 -Problem: A few tests fail in a huge terminal. -Solution: Make the tests pass. (Dominique Pellé, closes #5829) -Files: src/testdir/test_autocmd.vim, src/testdir/test_options.vim, - src/testdir/test_termcodes.vim, src/testdir/test_terminal.vim, - src/testdir/test_window_cmd.vim - -Patch 8.2.0433 -Problem: INT signal not properly tested. -Solution: Add a test. Also clean up some unnecessary lines. (Dominique - Pellé, closes #5828) -Files: src/testdir/test_display.vim, src/testdir/test_ex_mode.vim, - src/testdir/test_excmd.vim, src/testdir/test_messages.vim, - src/testdir/test_signals.vim - -Patch 8.2.0434 -Problem: MS-Windows with VTP: Normal color not working. -Solution: After changing the Normal color update the VTP console color. - (Nobuhiro Takasaki, closes #5836) -Files: src/highlight.c - -Patch 8.2.0435 -Problem: Channel contents might be freed twice. -Solution: Call either channel_free_channel() or channel_free(), not both. - (Nobuhiro Takasaki, closes #5835) -Files: src/channel.c - -Patch 8.2.0436 -Problem: No warnings for incorrect printf arguments. -Solution: Fix attribute in declaration. Fix uncovered mistakes. (Dominique - Pellé, closes #5834) -Files: src/proto.h, src/eval.c, src/ops.c, src/spellfile.c, - src/vim9compile.c, src/vim9execute.c, src/viminfo.c, src/gui.c - -Patch 8.2.0437 -Problem: MS-Windows installer contains old stuff. -Solution: Rely on Windows NT. (Ken Takata, closes #5832) -Files: src/dosinst.c - -Patch 8.2.0438 -Problem: Terminal noblock test is very flaky on BSD. -Solution: Change WaitFor() to WaitForAssert() to be able to see why it - failed. Add a short wait in between sending keys. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0439 -Problem: :disassemble has minor flaws. -Solution: Format the code. Use (int) instead of (char) for %c. - (also by James McCoy, closes #5831) -Files: src/vim9execute.c - -Patch 8.2.0440 -Problem: Terminal noblock test is still very flaky on BSD. -Solution: Increase the waiting time. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0441 -Problem: Terminal noblock test is still failing on BSD. -Solution: Reduce the amount of text. -Files: src/testdir/test_terminal.vim - -Patch 8.2.0442 -Problem: Channel contents might be used after being freed. -Solution: Reset the job channel before freeing the channel. -Files: src/channel.c - -Patch 8.2.0443 -Problem: Clipboard code is spread out. -Solution: Move clipboard code to its own file. (Yegappan Lakshmanan, - closes #5827) -Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, - src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, - src/clipboard.c, src/ops.c, src/proto.h, src/proto/clipboard.pro, - src/proto/ops.pro, src/proto/register.pro, src/proto/ui.pro, - src/register.c, src/ui.c - -Patch 8.2.0444 -Problem: Swap file test fails on some systems. -Solution: Preserve the swap file. Send NL terminated keys. -Files: src/testdir/test_swap.vim - -Patch 8.2.0445 -Problem: Png and xpm files not in MS-Windows zip file. -Solution: Move files to shared between Unix and Windows target. -Files: Filelist - -Patch 8.2.0446 -Problem: Listener with undo of deleting all lines not tested. -Solution: Add a test. -Files: src/testdir/test_listener.vim - -Patch 8.2.0447 -Problem: Terminal scroll tests fails on some systems. -Solution: Remove the fixed 100msec wait for Win32. Add a loop to wait until - scrolling has finished. (James McCoy, closes #5842) -Files: src/testdir/test_terminal.vim - -Patch 8.2.0448 -Problem: Various functions not properly tested. -Solution: Add more tests, especially for failures. (Yegappan Lakshmanan, - closes #5843) -Files: runtime/doc/eval.txt, src/testdir/test_blob.vim, - src/testdir/test_breakindent.vim, src/testdir/test_charsearch.vim, - src/testdir/test_clientserver.vim, src/testdir/test_cmdline.vim, - src/testdir/test_exists.vim, src/testdir/test_expand_func.vim, - src/testdir/test_expr.vim, src/testdir/test_file_perm.vim, - src/testdir/test_functions.vim, src/testdir/test_gui.vim, - src/testdir/test_listdict.vim, src/testdir/test_marks.vim, - src/testdir/test_partial.vim, src/testdir/test_registers.vim, - src/testdir/test_search.vim, src/testdir/test_spell.vim, - src/testdir/test_substitute.vim, src/testdir/test_syn_attr.vim, - src/testdir/test_syntax.vim, src/testdir/test_taglist.vim, - src/testdir/test_utf8.vim, src/testdir/test_vartabs.vim, - src/testdir/test_window_cmd.vim - -Patch 8.2.0449 -Problem: Vim9: crash if return type is invalid. (Yegappan Lakshmanan) -Solution: Always return some type, not NULL. -Files: src/vim9compile.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0450 -Problem: Not enough testing for restricted mode and function calls. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5847) -Files: src/testdir/test_method.vim, src/testdir/test_restricted.vim, - src/testdir/test_vim9_script.vim - -Patch 8.2.0451 -Problem: Win32: double-width character displayed incorrectly. -Solution: First move the cursor to the first column. (Nobuhiro Takasaki, - closes #5848) -Files: src/os_win32.c - -Patch 8.2.0452 -Problem: channel_parse_messages() fails when called recursively. -Solution: Return for a recursive call. (closes #5835) -Files: src/channel.c - -Patch 8.2.0453 -Problem: Trailing space in job_start() command causes empty argument. -Solution: Ignore trailing space. (closes #5851) -Files: src/misc2.c, src/testdir/test_channel.vim - -Patch 8.2.0454 -Problem: Some tests fail when the system is slow. -Solution: Make the run number global, use in the test to increase the - waiting time. (closes #5841) -Files: src/testdir/runtest.vim, src/testdir/test_functions.vim - -Patch 8.2.0455 -Problem: Cannot set the highlight group for a specific terminal. -Solution: Add the "highlight" option to term_start(). (closes #5818) -Files: src/terminal.c, src/structs.h, src/channel.c, - src/testdir/test_terminal.vim, runtime/doc/terminal.txt, - src/testdir/dumps/Test_terminal_popup_Terminal.dump, - src/testdir/dumps/Test_terminal_popup_MyTermCol.dump - -Patch 8.2.0456 -Problem: Test_confirm_cmd is flaky. -Solution: Add a term_wait() call. (closes #5854) -Files: src/testdir/test_excmd.vim - -Patch 8.2.0457 -Problem: Test_quotestar() often fails when run under valgrind. -Solution: Wait longer for the GUI to start. -Files: src/testdir/test_quotestar.vim - -Patch 8.2.0458 -Problem: Missing feature check in test function. -Solution: Add check commands. -Files: src/testdir/test_excmd.vim - -Patch 8.2.0459 -Problem: Cannot check if a function name is correct. -Solution: Add "?funcname" to exists(). -Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_exists.vim, - src/testdir/check.vim - -Patch 8.2.0460 (after 8.2.0459) -Problem: Build failure because of wrong feature name. -Solution: Correct feature name. -Files: src/evalfunc.c - -Patch 8.2.0461 -Problem: Confirm test fails on amd64 system. (Alimar Riesebieter) -Solution: Add an extra WaitForAssert(). (Dominique Pellé) -Files: src/testdir/test_excmd.vim - -Patch 8.2.0462 -Problem: Previewwindow test fails on some systems. (James McCoy) -Solution: Wait a bit after sending the "o". (closes #5849) -Files: src/testdir/test_popup.vim, - src/testdir/dumps/Test_popup_and_previewwindow_01.dump - -Patch 8.2.0463 -Problem: Build error without float and channel feature. (John Marriott) -Solution: Define return types always. -Files: src/globals.h, src/evalfunc.c - -Patch 8.2.0464 -Problem: Typos and other small problems. -Solution: Fix the typos. Add missing files to the distribution. -Files: Filelist, src/buffer.c, src/drawline.c, src/gui_gtk_x11.c, - src/os_unixx.h, src/proto/popupwin.pro - -Patch 8.2.0465 -Problem: Vim9: dead code and wrong return type. -Solution: Remove dead code. Fix return type. Add more tests. -Files: src/vim9compile.c, src/testdir/test_vim9_script.vim - -Patch 8.2.0466 (after 8.2.0452) -Problem: Not parsing messages recursively breaks the govim plugin. -Solution: When called recursively do handle messages but do not close - channels. -Files: src/channel.c - -Patch 8.2.0467 -Problem: Vim9: some errors are not tested -Solution: Add more tests. Fix that Vim9 script flag is not reset. -Files: src/vim9compile.c, src/scriptfile.c, src/dict.c, - src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim - -Patch 8.2.0468 -Problem: GUI: pixel dust with some fonts and characters. -Solution: Always redraw the character before the cursor. (Nir Lichtman, - closes #5549, closes #5856) -Files: src/gui.c, src/proto/gui.pro, src/screen.c - -Patch 8.2.0469 -Problem: Vim9: no error for missing ] after list. -Solution: Add error message. Add more tests. -Files: src/globals.h, src/list.c, src/userfunc.c, - src/testdir/test_vim9_expr.vim, src/testdir/test_lambda.vim - -Patch 8.2.0470 -Problem: Test_confirm_cmd_cancel() can fail on a slow system. -Solution: Use WaitForAssert(). (Ozaki Kiichi, closes #5861) -Files: src/testdir/test_excmd.vim - -Patch 8.2.0471 -Problem: Missing change to compile_list(). -Solution: Add error message. -Files: src/vim9compile.c - -Patch 8.2.0472 -Problem: Terminal highlight name is set twice, leaking memory. -Solution: Delete one. -Files: src/terminal.c - -Patch 8.2.0473 -Problem: Variables declared in an outer scope. -Solution: Declare variables only in the scope where they are used. -Files: src/evalvars.c - -Patch 8.2.0474 (after 8.2.0403) -Problem: Cannot use :write when using a plugin with BufWriteCmd. -Solution: Reset BF_NOTEDITED after BufWriteCmd. (closes #5807) -Files: src/fileio.c, src/testdir/test_autocmd.vim - -Patch 8.2.0475 -Problem: Channel out_cb test still fails sometimes on Mac. -Solution: Use an even longer timeout. -Files: src/testdir/test_channel.vim - -Patch 8.2.0476 -Problem: Terminal nasty callback test fails sometimes. -Solution: use term_wait() instead of a sleep. (Yee Cheng Chin, closes #5865) -Files: src/testdir/test_terminal.vim - -Patch 8.2.0477 -Problem: Vim9: error messages not tested. -Solution: Add more tests. -Files: src/testdir/test_vim9_expr.vim, src/vim9execute.c - -Patch 8.2.0478 -Problem: New buffers are not added to the Buffers menu. -Solution: Turn number into string. (Yee Cheng Chin, closes #5864) -Files: runtime/menu.vim, src/testdir/test_menu.vim - -Patch 8.2.0479 -Problem: Unloading shared libraries on exit has no purpose. -Solution: Do not unload shared libraries on exit. -Files: src/if_lua.c, src/if_perl.xs, src/if_python.c, src/if_python3.c, - src/if_ruby.c, src/if_tcl.c - -Patch 8.2.0480 -Problem: Vim9: some code is not tested. -Solution: Add more tests. -Files: src/testdir/test_vim9_expr.vim, src/vim9compile.c - -Patch 8.2.0481 -Problem: Travis is still using trusty. -Solution: Adjust config to use bionic. (Ozaki Kiichi, closes #5868) -Files: .travis.yml, src/testdir/lsan-suppress.txt - -Patch 8.2.0482 -Problem: Channel and sandbox code not sufficiently tested. -Solution: Add more tests. (Yegappan Lakshmanan, closes #5855) -Files: src/option.h, src/testdir/test_channel.vim, - src/testdir/test_clientserver.vim, src/testdir/test_cmdline.vim, - src/testdir/test_edit.vim, src/testdir/test_excmd.vim, - src/testdir/test_normal.vim, src/testdir/test_prompt_buffer.vim, - src/testdir/test_restricted.vim, src/testdir/test_smartindent.vim, - src/testdir/test_substitute.vim, src/testdir/test_terminal.vim, - src/testdir/test_textformat.vim, src/testdir/test_visual.vim - -Patch 8.2.0483 -Problem: Vim9: "let x = x + 1" does not give an error. -Solution: Hide the variable when compiling the expression. -Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim - -Patch 8.2.0484 -Problem: Vim9: some error messages not tested. -Solution: Add more tests. -Files: src/testdir/test_vim9_expr.vim - -Patch 8.2.0485 (after 8.2.0483) -Problem: Vim9 script test fails. -Solution: Stricter condition for adding new local variable. -Files: Stricter condition for adding new local variable. - -Patch 8.2.0486 -Problem: Vim9: some code and error messages not tested. -Solution: Add more tests. -Files: src/vim9compile.c, src/evalvars.c, src/testdir/test_vim9_expr.vim, - src/testdir/test_vim9_script.vim - -Patch 8.2.0487 -Problem: Vim9: compiling not sufficiently tested. -Solution: Add more tests. Fix bug with PCALL. -Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, - src/testdir/test_vim9_script.vim, - src/testdir/test_vim9_disassemble.vim - -Patch 8.2.0488 -Problem: Vim9: Compiling can break when using a lambda inside :def. -Solution: Do not keep a pointer to the dfunc_T for longer time. -Files: src/vim9compile.c, src/vim9.h - -Patch 8.2.0489 -Problem: Vim9: memory leaks. -Solution: Free memory in the right place. Add hints for using asan. -Files: src/vim9compile.c, src/testdir/lsan-suppress.txt, src/Makefile - -Patch 8.2.0490 -Problem: Win32: VTP doesn't respect 'restorescreen'. -Solution: Use escape codes to switch to alternate screen. (Nobuhiro - Takasaki, closes #5872) -Files: src/os_win32.c - -Patch 8.2.0491 -Problem: Cannot recognize a