# Vim functions for file type detection
#
# Maintainer: Bram Moolenaar <Bram@vim.org>
-# Last Change: 2022 Feb 22
+# Last Change: 2022 Mar 05
# These functions are moved here from runtime/filetype.vim to make startup
# faster.
" Vim compiler file
" Compiler: Jest
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2018 May 15
+" Last Change: 2021 Nov 20
if exists("current_compiler")
finish
let s:cpo_save = &cpo
set cpo&vim
-" CompilerSet makeprg=npx\ jest\ --no-colors
+" CompilerSet makeprg=npx\ --no-install\ jest\ --no-colors
CompilerSet makeprg=jest\ --no-colors
-CompilerSet errorformat=%E\ \ ●\ %m,
+CompilerSet errorformat=%-A\ \ ●\ Console,
+ \%E\ \ ●\ %m,
\%Z\ %\\{4}%.%#Error:\ %f:\ %m\ (%l:%c):%\\=,
\%Z\ %\\{6}at\ %\\S%#\ (%f:%l:%c),
+ \%Z\ %\\{6}at\ %\\S%#\ %f:%l:%c,
\%+C\ %\\{4}%\\w%.%#,
\%+C\ %\\{4}%[-+]%.%#,
\%-C%.%#,
" Vim compiler file
" Compiler: SML/NJ Compiler
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2020 Feb 10
+" Last Change: 2022 Feb 09
if exists("current_compiler")
finish
set cpo&vim
CompilerSet makeprg=sml
-CompilerSet errorformat=%f:%l.%c-%\\d%\\+.%\\d%\\+\ %trror:\ %m,
+CompilerSet errorformat=%f:%l.%c-%e.%k\ %trror:\ %m,
\%f:%l.%c\ %trror:\ %m,
- \%trror:\ %m
- \%f:%l.%c-%\\d%\\+.%\\d%\\+\ %tarning:\ %m,
+ \%trror:\ %m,
+ \%f:%l.%c-%e.%k\ %tarning:\ %m,
\%f:%l.%c\ %tarning:\ %m,
\%tarning:\ %m,
\%-G%.%#
" The default vimrc file.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last change: 2021 Nov 17
+" Last change: 2022 Mar 03
"
" This is loaded if no vimrc file was found.
" Except when Vim is run with "-u NONE" or "-C".
set guioptions-=t
endif
-" Don't use Ex mode, use Q for formatting.
+" Don't use Q for Ex mode, use it for formatting. Except for Select mode.
" Revert with ":unmap Q".
map Q gq
+sunmap Q
" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
-*autocmd.txt* For Vim version 8.2. Last change: 2022 Feb 09
+*autocmd.txt* For Vim version 8.2. Last change: 2022 Mar 04
VIM REFERENCE MANUAL by Bram Moolenaar
they were given.
See |autocmd-nested| for [++nested]. "nested"
(without the ++) can also be used, for backwards
- compatibility.
+ compatibility, but not in |Vim9| script. *E1078*
*autocmd-once*
If [++once] is supplied the command is executed once,
then removed ("one shot").
|InsertEnter| starting Insert mode
|InsertChange| when typing <Insert> while in Insert or Replace mode
|InsertLeave| when leaving Insert mode
+|InsertLeavePre| just before leaving Insert mode
|InsertCharPre| when a character was typed in Insert mode, before
inserting it
-*builtin.txt* For Vim version 8.2. Last change: 2022 Feb 23
+*builtin.txt* For Vim version 8.2. Last change: 2022 Mar 08
VIM REFERENCE MANUAL by Bram Moolenaar
empty list is returned. If length of {str} is greater than
256, then returns an empty list.
- Refer to |fuzzy-match| for more information about fuzzy
+ Refer to |fuzzy-matching| for more information about fuzzy
matching strings.
Example: >
< Can also be used as a |method|: >
GetSoundPath()->sound_playfile()
-< There is no error *E538* , but can listen to 538.nl.
- {only available when compiled with the |+sound| feature}
+< {only available when compiled with the |+sound| feature}
sound_stop({id}) *sound_stop()*
-*change.txt* For Vim version 8.2. Last change: 2022 Feb 04
+*change.txt* For Vim version 8.2. Last change: 2022 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar
out then. Example: >
:%s/TESTING
This deletes "TESTING" from all lines, but only one per line.
-
-For compatibility with Vi these two exceptions are allowed:
+ *E1270*
+For compatibility with Vi these two exceptions are allowed in legacy script:
"\/{string}/" and "\?{string}?" do the same as "//{string}/r".
"\&{string}&" does the same as "//{string}/".
*pattern-delimiter* *E146* *E1241* *E1242*
-*channel.txt* For Vim version 8.2. Last change: 2021 Nov 28
+*channel.txt* For Vim version 8.2. Last change: 2022 Feb 27
VIM REFERENCE MANUAL by Bram Moolenaar
" Create a channel log so we can see what happens.
call ch_logfile('logfile', 'w')
- " Function handling a line of text has been typed.
+ " Function handling a line of text that has been typed.
func TextEntered(text)
" Send the text to a shell with Enter appended.
call ch_sendraw(g:shell_job, a:text .. "\n")
endfunc
- " Function handling output from the shell: Added above the prompt.
+ " Function handling output from the shell: Add it above the prompt.
func GotOutput(channel, msg)
call append(line("$") - 1, "- " .. a:msg)
endfunc
- " Function handling the shell exist: close the window.
+ " Function handling the shell exits: close the window.
func JobExit(job, status)
quit!
endfunc
\ err_cb: function('GotOutput'),
\ exit_cb: function('JobExit'),
\ })
- let shell_ch = job_getchannel(shell_job)
new
set buftype=prompt
" start accepting shell commands
startinsert
<
+The same in |Vim9| script: >
+
+ vim9script
+
+ # Create a channel log so we can see what happens.
+ ch_logfile('logfile', 'w')
+
+ var shell_job: job
+
+ # Function handling a line of text that has been typed.
+ def TextEntered(text: string)
+ # Send the text to a shell with Enter appended.
+ ch_sendraw(shell_job, text .. "\n")
+ enddef
+
+ # Function handling output from the shell: Add it above the prompt.
+ def GotOutput(channel: channel, msg: string)
+ append(line("$") - 1, "- " .. msg)
+ enddef
+
+ # Function handling the shell exits: close the window.
+ def JobExit(job: job, status: number)
+ quit!
+ enddef
+
+ # Start a shell in the background.
+ shell_job = job_start(["/bin/sh"], {
+ out_cb: GotOutput,
+ err_cb: GotOutput,
+ exit_cb: JobExit,
+ })
+
+ new
+ set buftype=prompt
+ var buf = bufnr('')
+ prompt_setcallback(buf, TextEntered)
+ prompt_setprompt(buf, "shell command: ")
+
+ # start accepting shell commands
+ startinsert
vim:tw=78:ts=8:noet:ft=help:norl:
-*eval.txt* For Vim version 8.2. Last change: 2022 Feb 21
+*eval.txt* For Vim version 8.2. Last change: 2022 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar
*v:argv* *argv-variable*
v:argv The command line arguments Vim was invoked with. This is a
list of strings. The first item is the Vim command.
+ See |v:progpath| for the command with full path.
*v:beval_col* *beval_col-variable*
v:beval_col The number of the column, over which the mouse pointer is.
< v:none ~
That is so that eval() can parse the string back to the same
value. Read-only.
+ Note that using `== v:none` and `!= v:none` will often give
+ an error. Instead, use `is v:none` and `isnot v:none` .
*v:null* *null-variable*
v:null An empty String. Used to put "null" in JSON. See
< v:null ~
That is so that eval() can parse the string back to the same
value. Read-only.
- In |Vim9| script "null" can be used without "v:".
+ In |Vim9| script `null` can be used without "v:".
+ In some places `v:null` and `null` can be used for a List,
+ Dict, Job, etc. that is not set. That is slightly different
+ than an empty List, Dict, etc.
*v:numbermax* *numbermax-variable*
v:numbermax Maximum value of a number.
opposite of |:lockvar|.
: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.
+: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.
+ always use `:endif` to avoid confusion and to make
+ auto-indenting work properly.
From Vim version 4.5 until 5.0, every Ex command in
- between the ":if" and ":endif" is ignored. These two
+ between the `:if` and `:endif` is ignored. These two
commands were just to allow for future expansions in a
backward compatible way. Nesting was allowed. Note
- that any ":else" or ":elseif" was ignored, the "else"
+ that any `:else` or `:elseif` was ignored, the `else`
part was not executed either.
You can use this to remain compatible with older
: version-5-specific-commands
:endif
< The commands still need to be parsed to find the
- "endif". Sometimes an older Vim has a problem with a
- new command. For example, ":silent" is recognized as
- a ":substitute" command. In that case ":execute" can
+ `endif`. Sometimes an older Vim has a problem with a
+ new command. For example, `:silent` is recognized as
+ a `:substitute` command. In that case `:execute` can
avoid problems: >
:if version >= 600
: execute "silent 1,$delete"
:endif
<
- NOTE: The ":append" and ":insert" commands don't work
- properly in between ":if" and ":endif".
+ In |Vim9| script `:endif` cannot be shortened, to
+ improve script readability.
+ NOTE: The `:append` and `:insert` commands don't work
+ properly in between `:if` and `:endif`.
*:else* *:el* *E581* *E583*
-:el[se] Execute the commands until the next matching ":else"
- or ":endif" if they previously were not being
+:el[se] Execute the commands until the next matching `:else`
+ or `:endif` if they previously were not being
executed.
+ In |Vim9| script `:else` cannot be shortened, to
+ improve script readability.
*:elseif* *:elsei* *E582* *E584*
-:elsei[f] {expr1} Short for ":else" ":if", with the addition that there
- is no extra ":endif".
+:elsei[f] {expr1} Short for `:else` `:if`, with the addition that there
+ is no extra `:endif`.
+ In |Vim9| script `:elseif` cannot be shortened, to
+ improve script readability.
:wh[ile] {expr1} *:while* *:endwhile* *:wh* *:endw*
*E170* *E585* *E588* *E733*
-:endw[hile] Repeat the commands between ":while" and ":endwhile",
+:endw[hile] Repeat the commands between `:while` and `:endwhile`,
as long as {expr1} evaluates to non-zero.
When an error is detected from a command inside the
- loop, execution continues after the "endwhile".
+ loop, execution continues after the `endwhile`.
Example: >
:let lnum = 1
:while lnum <= line("$")
:let lnum = lnum + 1
:endwhile
<
- NOTE: The ":append" and ":insert" commands don't work
- properly inside a ":while" and ":for" loop.
+ In |Vim9| script `:while` and `:endwhile` cannot be
+ shortened, to improve script readability.
+ NOTE: The `:append` and `:insert` commands don't work
+ properly inside a `:while` and `:for` loop.
:for {var} in {object} *:for* *E690* *E732*
:endfo[r] *:endfo* *:endfor*
- Repeat the commands between ":for" and ":endfor" for
+ Repeat the commands between `:for` and `:endfor` for
each item in {object}. {object} can be a |List| or
a |Blob|. *E1177*
global/window/tab/buffer variable.
When an error is detected for a command inside the
- loop, execution continues after the "endfor".
+ loop, execution continues after the `endfor`.
Changing {object} inside the loop affects what items
are used. Make a copy if this is unwanted: >
:for item in copy(mylist)
iterate over. Unlike with |List|, modifying the
|Blob| does not affect the iteration.
+ In |Vim9| script `:endfor` cannot be shortened, to
+ improve script readability.
+
:for [{var1}, {var2}, ...] in {listlist}
:endfo[r] *E1140*
- Like ":for" above, but each item in {listlist} must be
+ Like `:for` above, but each item in {listlist} must be
a list, of which each item is assigned to {var1},
{var2}, etc. Example: >
:for [lnum, col] in [[1, 3], [2, 5], [3, 8]]
:endfor
<
*:continue* *:con* *E586*
-:con[tinue] When used inside a ":while" or ":for" loop, jumps back
+:con[tinue] When used inside a `:while` or `:for` loop, jumps back
to the start of the loop.
- If it is used after a |:try| inside the loop but
- before the matching |:finally| (if present), the
- commands following the ":finally" up to the matching
- |:endtry| are executed first. This process applies to
- all nested ":try"s inside the loop. The outermost
- ":endtry" then jumps back to the start of the loop.
-
+ If it is used after a `:try` inside the loop but
+ before the matching `:finally` (if present), the
+ commands following the `:finally` up to the matching
+ `:endtry` are executed first. This process applies to
+ all nested `:try`s inside the loop. The outermost
+ `:endtry` then jumps back to the start of the loop.
+
+ In |Vim9| script `:cont` is the shortest form, to
+ improve script readability.
*:break* *:brea* *E587*
-:brea[k] When used inside a ":while" or ":for" loop, skips to
- the command after the matching ":endwhile" or
- ":endfor".
- If it is used after a |:try| inside the loop but
- before the matching |:finally| (if present), the
- commands following the ":finally" up to the matching
- |:endtry| are executed first. This process applies to
- all nested ":try"s inside the loop. The outermost
- ":endtry" then jumps to the command after the loop.
+:brea[k] When used inside a `:while` or `:for` loop, skips to
+ the command after the matching `:endwhile` or
+ `:endfor`.
+ If it is used after a `:try` inside the loop but
+ before the matching `:finally` (if present), the
+ commands following the `:finally` up to the matching
+ `:endtry` are executed first. This process applies to
+ all nested `:try`s inside the loop. The outermost
+ `:endtry` then jumps to the command after the loop.
+
+ In |Vim9| script `:break` cannot be shortened, to
+ improve script readability.
:try *:try* *:endt* *:endtry*
*E600* *E601* *E602* *E1032*
:endt[ry] Change the error handling for the commands between
- ":try" and ":endtry" including everything being
- executed across ":source" commands, function calls,
+ `:try` and `:endtry` including everything being
+ executed across `:source` commands, function calls,
or autocommand invocations.
When an error or interrupt is detected and there is
- a |:finally| command following, execution continues
- after the ":finally". Otherwise, or when the
- ":endtry" is reached thereafter, the next
- (dynamically) surrounding ":try" is checked for
- a corresponding ":finally" etc. Then the script
+ a `:finally` command following, execution continues
+ after the `:finally`. Otherwise, or when the
+ `:endtry` is reached thereafter, the next
+ (dynamically) surrounding `:try` is checked for
+ a corresponding `:finally` etc. Then the script
processing is terminated. Whether a function
definition has an "abort" argument does not matter.
Example: >
echomsg "not reached"
<
Moreover, an error or interrupt (dynamically) inside
- ":try" and ":endtry" is converted to an exception. It
- can be caught as if it were thrown by a |:throw|
- command (see |:catch|). In this case, the script
+ `:try` and `:endtry` is converted to an exception. It
+ can be caught as if it were thrown by a `:throw`
+ command (see `:catch`). In this case, the script
processing is not terminated.
The value "Vim:Interrupt" is used for an interrupt
try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
<
+ In |Vim9| script `:endtry` cannot be shortened, to
+ improve script readability.
+
*:cat* *:catch*
*E603* *E604* *E605* *E654* *E1033*
-:cat[ch] /{pattern}/ The following commands until the next |:catch|,
- |:finally|, or |:endtry| that belongs to the same
- |:try| as the ":catch" are executed when an exception
+:cat[ch] /{pattern}/ The following commands until the next `:catch`,
+ `:finally`, or `:endtry` that belongs to the same
+ `:try` as the `:catch` are executed when an exception
matching {pattern} is being thrown and has not yet
- been caught by a previous ":catch". Otherwise, these
+ been caught by a previous `:catch`. Otherwise, these
commands are skipped.
When {pattern} is omitted all errors are caught.
Examples: >
NOTE: It is not reliable to ":catch" the TEXT of
an error message because it may vary in different
locales.
+ In |Vim9| script `:catch` cannot be shortened, to
+ improve script readability.
*:fina* *:finally* *E606* *E607*
-:fina[lly] The following commands until the matching |:endtry|
+:fina[lly] The following commands until the matching `:endtry`
are executed whenever the part between the matching
- |:try| and the ":finally" is left: either by falling
- through to the ":finally" or by a |:continue|,
- |:break|, |:finish|, or |:return|, or by an error or
- interrupt or exception (see |:throw|).
+ `:try` and the `:finally` is left: either by falling
+ through to the `:finally` or by a `:continue`,
+ `:break`, `:finish`, or `:return`, or by an error or
+ interrupt or exception (see `:throw`).
+
+ In |Vim9| script `:finally` cannot be shortened, to
+ improve script readability and avoid confusion with
+ `:final`.
*:th* *:throw* *E608* *E1129*
:th[row] {expr1} The {expr1} is evaluated and thrown as an exception.
- If the ":throw" is used after a |:try| but before the
- first corresponding |:catch|, commands are skipped
- until the first ":catch" matching {expr1} is reached.
- If there is no such ":catch" or if the ":throw" is
- used after a ":catch" but before the |:finally|, the
- commands following the ":finally" (if present) up to
- the matching |:endtry| are executed. If the ":throw"
- is after the ":finally", commands up to the ":endtry"
+ If the ":throw" is used after a `:try` but before the
+ first corresponding `:catch`, commands are skipped
+ until the first `:catch` matching {expr1} is reached.
+ If there is no such `:catch` or if the ":throw" is
+ used after a `:catch` but before the `:finally`, the
+ commands following the `:finally` (if present) up to
+ the matching `:endtry` are executed. If the `:throw`
+ is after the `:finally`, commands up to the `:endtry`
are skipped. At the ":endtry", this process applies
- again for the next dynamically surrounding ":try"
+ again for the next dynamically surrounding `:try`
(which may be found in a calling function or sourcing
- script), until a matching ":catch" has been found.
+ script), until a matching `:catch` has been found.
If the exception is not caught, the command processing
is terminated.
Example: >
for when an error causes the parsing to skip the whole
line and not see the "|" that separates the commands.
+ In |Vim9| script `:throw` cannot be shortened, to
+ improve script readability.
+
*:ec* *:echo*
:ec[ho] {expr1} .. Echoes each {expr1}, with a space in between. The
first {expr1} starts on a new line.
Also see |:comment|.
Use "\n" to start a new line. Use "\r" to move the
cursor to the first column.
- Uses the highlighting set by the |:echohl| command.
+ Uses the highlighting set by the `:echohl` command.
Cannot be followed by a comment.
Example: >
:echo "the value of 'shell' is" &shell
And since Vim mostly postpones redrawing until it's
finished with a sequence of commands this happens
quite often. To avoid that a command from before the
- ":echo" causes a redraw afterwards (redraws are often
+ `:echo` causes a redraw afterwards (redraws are often
postponed until you type something), force a redraw
- with the |:redraw| command. Example: >
+ with the `:redraw` command. Example: >
:new | redraw | echo "there is a new window"
<
*:echon*
:echon {expr1} .. Echoes each {expr1}, without anything added. Also see
|:comment|.
- Uses the highlighting set by the |:echohl| command.
+ Uses the highlighting set by the `:echohl` command.
Cannot be followed by a comment.
Example: >
:echon "the value of 'shell' is " &shell
<
- Note the difference between using ":echo", which is a
- Vim command, and ":!echo", which is an external shell
+ Note the difference between using `:echo`, which is a
+ Vim command, and `:!echo`, which is an external shell
command: >
:!echo % --> filename
< The arguments of ":!" are expanded, see |:_%|. >
*:echoh* *:echohl*
:echoh[l] {name} Use the highlight group {name} for the following
- |:echo|, |:echon| and |:echomsg| commands. Also used
- for the |input()| prompt. Example: >
+ `:echo`, `:echon` and `:echomsg` commands. Also used
+ for the `input()` prompt. Example: >
:echohl WarningMsg | echo "Don't panic!" | echohl None
< Don't forget to set the group back to "None",
otherwise all following echo's will be highlighted.
:echom[sg] {expr1} .. Echo the expression(s) as a true message, saving the
message in the |message-history|.
Spaces are placed between the arguments as with the
- |:echo| command. But unprintable characters are
+ `:echo` command. But unprintable characters are
displayed, not interpreted.
- The parsing works slightly different from |:echo|,
- more like |:execute|. All the expressions are first
+ The parsing works slightly different from `:echo`,
+ more like `:execute`. All the expressions are first
evaluated and concatenated before echoing anything.
If expressions does not evaluate to a Number or
String, string() is used to turn it into a string.
- Uses the highlighting set by the |:echohl| command.
+ Uses the highlighting set by the `:echohl` command.
Example: >
:echomsg "It's a Zizzer Zazzer Zuzz, as you can plainly see."
< See |:echo-redraw| to avoid the message disappearing
message in the |message-history|. When used in a
script or function the line number will be added.
Spaces are placed between the arguments as with the
- |:echomsg| command. When used inside a try conditional,
+ `:echomsg` command. When used inside a try conditional,
the message is raised as an error exception instead
(see |try-echoerr|).
Example: >
:echoerr "This script just failed!"
-< If you just want a highlighted message use |:echohl|.
+< If you just want a highlighted message use `:echohl`.
And to get a beep: >
:exe "normal \<Esc>"
-*gui.txt* For Vim version 8.2. Last change: 2021 Jun 27
+*gui.txt* For Vim version 8.2. Last change: 2022 Mar 02
VIM REFERENCE MANUAL by Bram Moolenaar
*:win* *:winsize* *E465*
:win[size] {width} {height}
Set the window height to {width} by {height} characters.
- Obsolete, use ":set lines=11 columns=22".
+ It is recommended to use `:set lines=11 columns=22` instead,
+ since it's easy to see what the numbers mean.
If you get less lines than expected, check the 'guiheadroom'
option.
-*index.txt* For Vim version 8.2. Last change: 2022 Feb 09
+*index.txt* For Vim version 8.2. Last change: 2022 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar
be remapped
|:args| :ar[gs] print the argument list
|:argadd| :arga[dd] add items to the argument list
-:argdedupe :argdedupe remove duplicates from the argument list
+|:argdedupe| :argded[upe] remove duplicates from the argument list
|:argdelete| :argd[elete] delete items from the argument list
|:argedit| :arge[dit] add item to the argument list and edit it
|:argdo| :argdo do a command on all items in the argument list
-*insert.txt* For Vim version 8.2. Last change: 2021 Dec 29
+*insert.txt* For Vim version 8.2. Last change: 2022 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
When 'backspace' is empty, Vi compatible backspacing is used. You cannot
backspace over autoindent, before column 1 or before where insert started.
-For backwards compatibility the values "0", "1" and "2" are also allowed, see
-|'backspace'|.
+For backwards compatibility the values "0", "1", "2" and "3" are also allowed,
+see |'backspace'|.
If the 'backspace' option does contain "eol" and the cursor is in column 1
when one of the three keys is used, the current line is joined with the
the 'dictionary' option is empty.
For suggestions where to find a list of words, see the
'dictionary' option.
+ 'ignorecase', 'smartcase' and 'infercase' apply.
CTRL-K or
CTRL-N Search forward for next matching keyword. This
-*intro.txt* For Vim version 8.2. Last change: 2021 Sep 29
+*intro.txt* For Vim version 8.2. Last change: 2022 Mar 03
VIM REFERENCE MANUAL by Bram Moolenaar
Use the ":vi" command |:visual| to exit "Ex" mode.
Note: In older versions of Vim "Q" formatted text,
that is now done with |gq|. But if you use the
- |vimrc_example.vim| script "Q" works like "gq".
+ |vimrc_example.vim| script or |defaults.vim|, "Q"
+ works like "gq". Except for Select mode.
*gQ*
gQ Switch to "Ex" mode like with "Q", but really behave
-*map.txt* For Vim version 8.2. Last change: 2022 Jan 23
+*map.txt* For Vim version 8.2. Last change: 2022 Mar 03
VIM REFERENCE MANUAL by Bram Moolenaar
1.3 MAPPING AND MODES *:map-modes*
*mapmode-nvo* *mapmode-n* *mapmode-v* *mapmode-o*
-There are six sets of mappings
+There are seven sets of mappings
- For Normal mode: When typing commands.
- For Visual mode: When typing commands while the Visual area is highlighted.
- For Select mode: like Visual mode but typing text replaces the selection.
etc.). See below: |omap-info|.
- For Insert mode. These are also used in Replace mode.
- For Command-line mode: When entering a ":" or "/" command.
+- For Terminal mode: When typing in a |:terminal| buffer.
Special case: While typing a count for a command in Normal mode, mapping zero
is disabled. This makes it possible to map zero without making it impossible
Command attributes ~
-
+ *command-attributes*
User-defined commands are treated by Vim just like any other Ex commands. They
can have arguments, or have a range specified. Arguments are subject to
completion as filenames, buffers, etc. Exactly how this works depends upon the
The function may use these for determining context. For the "custom"
argument, it is not necessary to filter candidates against the (implicit
pattern in) ArgLead. Vim will filter the candidates with its regexp engine
-after function return, and this is probably more efficient in most cases. For
-the "customlist" argument, Vim will not filter the returned completion
-candidates and the user supplied function should filter the candidates.
+after function return, and this is probably more efficient in most cases. If
+'wildoptions' contains "fuzzy", then the candidates will be filtered using
+|fuzzy-matching|. For the "customlist" argument, Vim will not
+filter the returned completion candidates and the user supplied function
+should filter the candidates.
The following example lists user names to a Finger command >
:com -complete=custom,ListUsers -nargs=1 Finger !finger <args>
feature}
A list of words that change how |cmdline-completion| is done.
The following values are supported:
- fuzzy Use fuzzy matching to find completion matches. When
+ fuzzy Use |fuzzy-matching| to find completion matches. When
this value is specified, wildcard expansion will not
be used for completion. The matches will be sorted by
the "best match" rather than alphabetically sorted.
-*pattern.txt* For Vim version 8.2. Last change: 2022 Feb 04
+*pattern.txt* For Vim version 8.2. Last change: 2022 Mar 04
VIM REFERENCE MANUAL by Bram Moolenaar
8. Composing characters |patterns-composing|
9. Compare with Perl patterns |perl-patterns|
10. Highlighting matches |match-highlight|
-11. Fuzzy matching |fuzzy-match|
+11. Fuzzy matching |fuzzy-matching|
==============================================================================
1. Search commands *search-commands*
Note: the count does not take offset into account.
When no match is found you get the error: *E486* Pattern not found
-Note that for the |:global| command this behaves like a normal message, for Vi
-compatibility. For the |:s| command the "e" flag can be used to avoid the
-error message |:s_flags|.
+Note that for the `:global` command, when used in legacy script, you get a
+normal message "Pattern not found", for Vi compatibility.
+In |Vim9| script you get E486 for "pattern not found" or *E538* when the pattern
+matches in every line with `:vglobal`.
+For the |:s| command the "e" flag can be used to avoid the error message
+|:s_flags|.
*search-offset* *{offset}*
These commands search for the specified pattern. With "/" and "?" an
":2match" for another plugin.
==============================================================================
-11. Fuzzy matching *fuzzy-match*
+11. Fuzzy matching *fuzzy-matching*
Fuzzy matching refers to matching strings using a non-exact search string.
Fuzzy matching will match a string, if all the characters in the search string
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.
+When you select a file from the quickfix window, the following steps are used
+to find a window to edit the file:
+
+1. If a window displaying the selected file is present in the current tabpage
+ (starting with the window before the quickfix window), then that window is
+ used.
+2. If the above step fails and if 'switchbuf' contains "usetab" and a window
+ displaying the selected file is present in any one of the tabpages
+ (starting with the first tabpage) then that window is used.
+3. If the above step fails then a window in the current tabpage displaying a
+ buffer with 'buftype' not set (starting with the window before the quickfix
+ window) is used.
+4. If the above step fails and if 'switchbuf' contains "uselast", then the
+ previously accessed window is used.
+5. If the above step fails then the window before the quickfix window is used.
+ If there is no previous window, then the window after the quickfix window
+ is used.
+6. If the above step fails, then a new horizontally split window above the
+ quickfix window is used.
*CTRL-W_<Enter>* *CTRL-W_<CR>*
You can use CTRL-W <Enter> to open a new window and jump to the error there.
When you select a file from the location list window, the following steps are
used to find a window to edit the file:
-1. If a window with the location list displayed in the location list window is
- present, then the file is opened in that window.
-2. If the above step fails and if the file is already opened in another
- window, then that window is used.
-3. If the above step fails then an existing window showing a buffer with
- 'buftype' not set is used.
-4. If the above step fails, then the file is edited in a new window.
+1. If a non-quickfix window associated with the location list is present in
+ the current tabpage, then that window is used.
+2. If the above step fails and if the file is already opened in another window
+ in the current tabpage, then that window is used.
+3. If the above step fails and 'switchbuf' contains "usetab" and if the file
+ is opened in a window in any one of the tabpages, then that window is used.
+4. If the above step fails then a window in the current tabpage showing a
+ buffer with 'buftype' not set is used.
+5. If the above step fails, then the file is edited in a new window.
In all of the above cases, if the location list for the selected window is not
yet set, then it is set to the location list displayed in the location list
matching is used to find matching lines. In this
case, {pattern} is treated as a literal string
instead of a regular expression. See
- |fuzzy-match| for more information about fuzzy
+ |fuzzy-matching| for more information about fuzzy
matching strings.
|QuickFixCmdPre| and |QuickFixCmdPost| are triggered.
-*syntax.txt* For Vim version 8.2. Last change: 2022 Feb 06
+*syntax.txt* For Vim version 8.2. Last change: 2022 Mar 02
VIM REFERENCE MANUAL by Bram Moolenaar
Note: This is an obsolete feature, only included for backwards compatibility
with previous Vim versions. It's now recommended to use the |/\@<=| construct
-in the pattern.
+in the pattern. You can also often use |/\zs|.
The "lc" offset specifies leading context -- a part of the pattern that must
be present, but is not considered part of the match. An offset of "lc=n" will
:abclear map.txt /*:abclear*
:abo windows.txt /*:abo*
:aboveleft windows.txt /*:aboveleft*
+:abstract vim9.txt /*:abstract*
:addd quickfix.txt /*:addd*
:al windows.txt /*:al*
:all windows.txt /*:all*
:chistory quickfix.txt /*:chistory*
:cl quickfix.txt /*:cl*
:cla quickfix.txt /*:cla*
+:class vim9.txt /*:class*
:clast quickfix.txt /*:clast*
:cle motion.txt /*:cle*
:clearjumps motion.txt /*:clearjumps*
:emenu gui.txt /*:emenu*
:en eval.txt /*:en*
:end eval.txt /*:end*
+:endclass vim9.txt /*:endclass*
:enddef vim9.txt /*:enddef*
+:endenum vim9.txt /*:endenum*
:endf eval.txt /*:endf*
:endfo eval.txt /*:endfo*
:endfor eval.txt /*:endfor*
:endfunction eval.txt /*:endfunction*
:endif eval.txt /*:endif*
+:endinterface vim9.txt /*:endinterface*
:endt eval.txt /*:endt*
:endtry eval.txt /*:endtry*
:endw eval.txt /*:endw*
:ene! editing.txt /*:ene!*
:enew editing.txt /*:enew*
:enew! editing.txt /*:enew!*
+:enum vim9.txt /*:enum*
:eval eval.txt /*:eval*
:ex editing.txt /*:ex*
:exe eval.txt /*:exe*
:inoreme gui.txt /*:inoreme*
:inoremenu gui.txt /*:inoremenu*
:insert insert.txt /*:insert*
+:interface vim9.txt /*:interface*
:intro starting.txt /*:intro*
:is tagsrch.txt /*:is*
:isearch tagsrch.txt /*:isearch*
:startgreplace insert.txt /*:startgreplace*
:startinsert insert.txt /*:startinsert*
:startreplace insert.txt /*:startreplace*
+:static vim9.txt /*:static*
:stj tagsrch.txt /*:stj*
:stjump tagsrch.txt /*:stjump*
:stop starting.txt /*:stop*
:tunma map.txt /*:tunma*
:tunmap map.txt /*:tunmap*
:tunmenu gui.txt /*:tunmenu*
+:type vim9.txt /*:type*
:u undo.txt /*:u*
:un undo.txt /*:un*
:una map.txt /*:una*
E1062 eval.txt /*E1062*
E1063 eval.txt /*E1063*
E1064 autocmd.txt /*E1064*
+E1065 vim9.txt /*E1065*
E1066 vim9.txt /*E1066*
E1067 eval.txt /*E1067*
E1068 vim9.txt /*E1068*
E1075 vim9.txt /*E1075*
E1076 eval.txt /*E1076*
E1077 vim9.txt /*E1077*
+E1078 autocmd.txt /*E1078*
+E1079 vim9.txt /*E1079*
E108 eval.txt /*E108*
E1080 vim9.txt /*E1080*
E1081 eval.txt /*E1081*
E1265 eval.txt /*E1265*
E1266 if_pyth.txt /*E1266*
E127 eval.txt /*E127*
+E1270 change.txt /*E1270*
E128 eval.txt /*E128*
E129 eval.txt /*E129*
E13 message.txt /*E13*
E535 options.txt /*E535*
E536 options.txt /*E536*
E537 options.txt /*E537*
-E538 builtin.txt /*E538*
+E538 pattern.txt /*E538*
E539 options.txt /*E539*
E54 pattern.txt /*E54*
E540 options.txt /*E540*
E836 if_pyth.txt /*E836*
E837 if_pyth.txt /*E837*
E838 netbeans.txt /*E838*
+E839 vim9.txt /*E839*
E84 windows.txt /*E84*
E840 insert.txt /*E840*
E841 map.txt /*E841*
color-xterm syntax.txt /*color-xterm*
coloring syntax.txt /*coloring*
colortest.vim syntax.txt /*colortest.vim*
+command-attributes map.txt /*command-attributes*
command-block vim9.txt /*command-block*
command-line-functions usr_41.txt /*command-line-functions*
command-line-window cmdline.txt /*command-line-window*
function-search-undo eval.txt /*function-search-undo*
function_key intro.txt /*function_key*
functions eval.txt /*functions*
-fuzzy-match pattern.txt /*fuzzy-match*
+fuzzy-matching pattern.txt /*fuzzy-matching*
fvwm.vim syntax.txt /*fvwm.vim*
fvwm2rc syntax.txt /*fvwm2rc*
fvwmrc syntax.txt /*fvwmrc*
-*term.txt* For Vim version 8.2. Last change: 2021 Dec 21
+*term.txt* For Vim version 8.2. Last change: 2022 Mar 04
VIM REFERENCE MANUAL by Bram Moolenaar
correct values.
One command can be used to set the screen size:
-
*:mod* *:mode* *E359*
:mod[e] [mode]
Without argument this only detects the screen size and redraws the screen.
-[mode] was used on MS-DOS, but it doesn't work anymore.
+[mode] was used on MS-DOS, but it doesn't work anymore. In |Vim9| this
+command is not supported.
==============================================================================
4. Slow and fast terminals *slow-fast-terminal*
-*todo.txt* For Vim version 8.2. Last change: 2022 Feb 16
+*todo.txt* For Vim version 8.2. Last change: 2022 Mar 08
VIM REFERENCE MANUAL by Bram Moolenaar
*known-bugs*
-------------------- Known bugs and current work -----------------------
+Allow for assigning v:null to job/channel/funcref etc.
+- Check that the declared type is not lost.
+- Check: var d: dict<func> = {a: function('tr'), b: null}
+
+Fix that with s being an empty string, this returns TRUE:
+ echo s is null_string
+
+Make sure null types work to:
+- assign to a variable
+- use as an argument
+- use as default value of optional argument
+- use as return value
+- use in a list/dict constant, type is correct
+- revert comparing with null?
+
+TODO item in eval.c
+
+Really drop the Athena GUI? And NeXtaw?
+
Once Vim9 is stable:
- Use Vim9 for runtime files.
- Check code coverage, add more tests if needed.
- vim9execute.c
+ vim9execute.c line 1900
vim9expr.c
vim9instr.c
vim9script.c
Some prompts are not translated: #9495
+Improvement in terminal configuration mess: Request the terminfo entry from
+the terminal itself. The $TERM value then is only relevant for whether this
+feature is supported or not. Replaces the xterm mechanism to request each
+entry separately. #6609
+Multiplexers (screen, tmux) can request it to the underlaying terminal, and
+pass it on with modifications.
+
Test_communicate_ipv6(): is flaky on many systems
Fails in line 64 of Ch_communicate, no exception is thrown.
Make "g>" and "g<" in Visual mode move the text right or left.
Also for a block selection. #8558
+When using dictionary insert completion with 'ignorecase', the leading capital
+in a word should be preserved.
+
Add optional argument to virtcol() that specifies "start", "cursor" or "end"
to tell which value from getvvcol() should be used. (#7964)
Value returned by virtcol() changes depending on how lines wrap. This is
-*uganda.txt* For Vim version 8.2. Last change: 2022 Feb 05
+*uganda.txt* For Vim version 8.2. Last change: 2022 Mar 02
VIM REFERENCE MANUAL by Bram Moolenaar
Kibaale Children's Centre (KCC) is located in Kibaale, a small town in the
south of Uganda, near Tanzania, in East Africa. The area is known as Rakai
District. The population is mostly farmers. Although people are poor, there
-is enough food. But this district is suffering from AIDS more than any other
-part of the world. Some say that it started there. Estimations are that 10
-to 30% of the Ugandans are infected with HIV. Because parents die, there are
-many orphans. In this district about 60,000 children have lost one or both
-parents, out of a population of 350,000. And this is still continuing.
+usually is enough food. But this district is suffering from AIDS more than
+any other part of the world. Some say that it started there. Estimations are
+that in the past 10 to 30% of the Ugandans are infected with HIV. Because
+parents die, there are many orphans. In this district about 60,000 children
+have lost one or both parents, out of a population of 350,000. Although AIDS
+is now mostly under control, the problems are still continuing.
The children need a lot of help. The KCC is working hard to provide the needy
with food, medical care and education. Food and medical care to keep them
-*various.txt* For Vim version 8.2. Last change: 2022 Feb 03
+*various.txt* For Vim version 8.2. Last change: 2022 Mar 04
VIM REFERENCE MANUAL by Bram Moolenaar
:[range]P[rint] [count] [flags]
Just as ":print". Was apparently added to Vi for
people that keep the shift key pressed too long...
+ This command is not supported in |Vim9| script.
Note: A user command can overrule this command.
See |ex-flags| for [flags].
Files: src/configure.in, src/auto/configure
Patch 7.3.806
-Problem: Compiler warnings in Perl code when building with Visual studio
+Problem: Compiler warnings in Perl code when building with Visual Studio
2012. (skeept)
Solution: Add type casts. (Christian Brabandt, 2013 Jan 30)
Files: src/if_perl.xs
Files: src/channel.c
Patch 7.4.1240
-Problem: Visual studio tools are noisy.
+Problem: Visual Studio tools are noisy.
Solution: Suppress startup info. (Mike Williams)
Files: src/GvimExt/Makefile, src/Make_mvc.mak, src/tee/Make_mvc.mak
src/testdir/test_virtualedit.vim, src/testdir/test_alot.vim
Patch 8.0.0963
-Problem: Terminal test fails on MacOS. (chdiza)
+Problem: Terminal test fails on macOS. (chdiza)
Solution: Wait for the shell to echo the characters. (closes #1991)
Files: src/testdir/test_terminal.vim
src/gui_w32.c, src/gui_photon.c, src/gui_x11.c
Patch 8.1.0841
-Problem: Travis config to get Lua on MacOS is too complicated.
+Problem: Travis config to get Lua on macOS is too complicated.
Solution: Use an addons entry. (Ozaki Kiichi, closes #3876)
Files: .travis.yml
Files: src/testdir/runtest.vim
Patch 8.1.2152
-Problem: Problems navigating tags file on MacOS Catalina.
+Problem: Problems navigating tags file on macOS Catalina.
Solution: Use fseek instead of lseek. (John Lamb, fixes #5061)
Files: src/tag.c
Files: src/edit.c, src/ex_getln.c, src/testdir/test_termcodes.vim
Patch 8.1.2347 (after 8.1.2344)
-Problem: MacOS: build fails.
+Problem: macOS: build fails.
Solution: Don't define _XOPEN_SOURCE for Mac.
Files: src/vim.h
-*version9.txt* For Vim version 8.2. Last change: 2022 Feb 26
+*version9.txt* For Vim version 8.2. Last change: 2022 Mar 08
VIM REFERENCE MANUAL by Bram Moolenaar
Various new items *new-items-9*
-----------------
-TODO
+TODO: Visual/Insert/Cmdline mode commands?
+
+
+Options: ~
+
+'autoshelldir' change directory to the shell's current directory
+'cdhome' change directory to the home directory by ":cd"
+'guiligatures' GTK GUI: ASCII characters that can form shapes
+'quickfixtextfunc' function for the text in the quickfix window
+'spelloptions' options for spell checking
+'thesaurusfunc' function to be used for thesaurus completion
+'xtermcodes' request terminal codes from an xterm
+
+
+Ex commands: ~
+
+|:abstract|
+|:argdedupe| remove duplicates from the argument list
+|:balt| like ":badd" but also set the alternate file
+|:class| reserved for future use
+|:def| define a Vim9 user function
+|:defcompile| compile Vim9 user functions in current script
+|:disassemble| disassemble Vim9 user function
+|:echoconsole| like :echomsg but write to stdout
+|:endinterface| reserved for future use
+|:endclass| reserved for future use
+|:enddef| end of a user function started with :def
+|:endenum| reserved for future use
+|:enum| reserved for future use
+|:export| Vim9: export an item from a script
+|:final| declare an immutable variable in Vim9
+|:import| Vim9: import an item from another script
+|:interface| reserved for future use
+|:static| reserved for future use
+|:type| reserved for future use
+|:var| variable declaration in Vim9
+|:vim9script| indicates Vim9 script file
+
+
+Ex command modifiers: ~
+
+|:legacy| make following command use legacy script syntax
+|:vim9cmd| make following command use Vim9 script syntax
+
+
+New and extended functions: ~
+
+|assert_nobeep()| assert that a command does not cause a beep
+|blob2list()| get a list of numbers from a blob
+|charclass()| class of a character
+|charcol()| character number of the cursor or a mark
+|charidx()| character index of a byte in a string
+|digraph_get()| get digraph
+|digraph_getlist()| get all digraphs
+|digraph_set()| register digraph
+|digraph_setlist()| register multiple digraphs
+|echoraw()| output characters as-is
+|exists_compiled()| like exists() but check at compile time
+|extendnew()| make a new Dictionary and append items
+|flatten()| flatten a List
+|flattennew()| flatten a copy of a List
+|fullcommand()| get full command name
+|getcharpos()| get character position of cursor, mark, etc.
+|getcharstr()| get a character from the user as a string
+|getcursorcharpos()| get character position of the cursor
+|getmarklist()| list of global/local marks
+|getreginfo()| get information about a register
+|gettext()| lookup message translation
+|hlget()| get highlight group attributes
+|hlset()| set highlight group attributes
+|list2blob()| get a blob from a list of numbers
+|mapnew()| make a new List with changed items
+|mapset()| restore a mapping
+|matchfuzzy()| fuzzy matches a string in a list of strings
+|matchfuzzypos()| fuzzy matches a string in a list of strings
+|menu_info()| get information about a menu item
+|popup_list()| get list of all popup window IDs
+|prompt_getprompt()| get the effective prompt text for a buffer
+|prop_add_list()| attach a property at multiple positions
+|prop_find()| search for a property
+|readblob()| read a file into a Blob
+|readdirex()| get a List of file information in a directory
+|reduce()| reduce a List to a value
+|searchcount()| get number of matches before/after the cursor
+|setcellwidths()| set character cell width overrides
+|setcharpos()| set character position of cursor, mark, etc.
+|setcursorcharpos()| set character position of the cursor
+|slice()| take a slice of a List
+|strcharlen()| length of a string in characters
+|terminalprops()| properties of the terminal
+|test_gui_event()| generate a GUI event for testing
+|test_null_function()| return a null Funcref
+|test_srand_seed()| set the seed value for srand()
+|test_unknown()| return a value with unknown type
+|test_void()| return a value with void type
+|typename()| type of a variable as text
+|win_gettype()| get type of window
+|win_move_separator()| move window vertical separator
+|win_move_statusline()| move window status line
+|windowsversion()| get MS-Windows version
+
+
+New Vim variables: ~
+
+|v:numbermax| maximum value of a number
+|v:numbermin| minimum value of a number (negative)
+|v:numbersize| number of bits in a Number
+|v:collate| current locale setting for collation order
+|v:exiting| vim exit code
+|v:colornames| dictionary that maps color names to hex color strings
+|v:sizeofint| number of bytes in an int
+|v:sizeoflong| number of bytes in a long
+|v:sizeofpointer| number of bytes in a pointer
+|v:maxcol| maximum line length
+
+
+New autocommand events: ~
+
+|CompleteDonePre| after Insert mode completion is done, before clearing
+ info
+|DirChangedPre| before the working directory will change
+|InsertLeavePre| just before leaving Insert mode
+|ModeChanged| after changing the mode
+|SigUSR1| after the SIGUSR1 signal has been detected
+|WinClosed| after closing a window
+|VimSuspend| when suspending Vim
+|VimResume| when Vim is resumed after being suspended
New runtime files: ~
==============================================================================
IMPROVEMENTS *improvements-9*
+Many memory leaks, invalid memory accesses and crashes have been fixed.
+See the list of patches below.
+
TODO
==============================================================================
Files: src/testdir/test_termcodes.vim
Patch 8.2.0021
-Problem: Timer test fails too often on Travis with MacOS.
+Problem: Timer test fails too often on Travis with macOS.
Solution: Be less strict with the time.
Files: src/testdir/test_timers.vim
src/testdir/test_vim9_disassemble.vim
Patch 8.2.1409
-Problem: Nmpmrc and php.ini filetypes not recognized.
+Problem: Npmrc and php.ini filetypes not recognized.
Solution: Add filetype detection. (Doug Kearns)
Files: runtime/filetype.vim, src/testdir/test_filetype.vim
Files: runtime/filetype.vim, src/testdir/test_filetype.vim
Patch 8.2.1459
-Problem: Vim9: declaring ascript variable at the script level does not
+Problem: Vim9: declaring a script variable at the script level does not
infer the type.
Solution: Get the type from the value. (closes #6716)
Files: src/evalvars.c, src/testdir/test_vim9_script.vim
src/testdir/emoji_list.vim, src/testdir/test_functions.vim
Patch 8.2.1537
-Problem: Memory acccess error when using setcellwidths().
+Problem: Memory access error when using setcellwidths().
Solution: Use array and pointers correctly.
Files: src/mbyte.c, src/errors.h, src/testdir/test_utf8.vim
Files: src/evalfunc.c, src/testdir/test_vim9_func.vim
Patch 8.2.1593
-Problem: Tests do not check the error number properly.0
+Problem: Tests do not check the error number properly.
Solution: Add a colon after the error number. (closes #6869)
Files: src/testdir/test_assert.vim, src/testdir/test_autocmd.vim,
src/testdir/test_backspace_opt.vim, src/testdir/test_channel.vim,
Patch 8.2.1653
Problem: Expand('<stack>') does not include the final line number.
-Solution: Add the line nuber. (closes #6927)
+Solution: Add the line number. (closes #6927)
Files: src/vim.h, src/scriptfile.c, src/proto/scriptfile.pro,
src/debugger.c, src/ex_docmd.c, src/ex_eval.c, src/message.c,
src/testing.c, src/testdir/test_expand_func.vim
Patch 8.2.1671
Problem: Vim9: stray error for missing white space.
-Solution: Do not skip over white space after member. (closes #6817)
+Solution: Do not skip over white space after member. (closes #6917)
Files: src/eval.c, src/testdir/test_vim9_expr.vim
Patch 8.2.1672
Patch 8.2.1679
Problem: Vim9: ":*" is not recognized as a range.
-Solution: Move recognizing "*" into skip_range(). (closes #6838)
+Solution: Move recognizing "*" into skip_range(). (closes #6938)
Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/cmdexpand.c,
src/ex_getln.c, src/userfunc.c, src/vim9compile.c,
src/testdir/test_vim9_cmd.vim
Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim
Patch 8.2.1681
-Problem: Vim9: unnessary :call commands in tests.
+Problem: Vim9: unnecessary :call commands in tests.
Solution: Remove the commands. (issue #6936)
Files: src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim
Files: src/vim9execute.c, src/testdir/test_vim9_func.vim
Patch 8.2.1707
-Problem: Small inconsitency in highlight test.
+Problem: Small inconsistency in highlight test.
Solution: Use one argument for :execute. (Antony Scriven, #6975)
Files: src/testdir/test_highlight.vim
Patch 8.2.1708
-Problem: Vim9: error message for function has unpritable characters.
+Problem: Vim9: error message for function has unprintable characters.
Solution: use printable_func_name(). (closes #6965)
Files: src/vim9compile.c, src/testdir/test_vim9_func.vim
Patch 8.2.1721
Problem: MS-Windows installer doesn't work.
-Solution: Write "Russian" in ASCII. (closes #6995, see #).
+Solution: Write "Russian" in ASCII. (closes #6995, see #6985).
Files: nsis/lang/russian.nsi
Patch 8.2.1722
Patch 8.2.1730
Problem: Vim9: cannot use member of unknown type.
-Solution: When type is unknown us "any". (closes #6997)
+Solution: When type is unknown use "any". (closes #6997)
Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim
Patch 8.2.1731
Patch 8.2.1783 (after 8.2.1781)
Problem: Try-catch test fails.
-Solution: Don't call win_enter(), only call enterering_window().
+Solution: Don't call win_enter(), only call entering_window().
Files: src/autocmd.c, src/window.c, src/proto/window.pro,
src/testdir/runtest.vim
Files: src/vim9execute.c, src/testdir/test_vim9_func.vim
Patch 8.2.1813
-Problem: Vim9: can assign wrong type to script dict. (Christian J. Robinson)
+Problem: Vim9: can assign wrong type to script dict. (Christian J. Robinson)
Solution: Check the type if known.
Files: src/structs.h, src/eval.c, src/vim9script.c,
src/proto/vim9script.pro, src/proto/evalvars.pro,
Patch 8.2.1819
Problem: Vim9: Memory leak when using a closure.
-Solution: Compute the mininal refcount in the funcstack. Reenable disabled
+Solution: Compute the minimal refcount in the funcstack. Reenable disabled
tests.
Files: src/vim9execute.c, src/proto/vim9execute.pro, src/structs.h,
src/eval.c, src/testdir/test_vim9_disassemble.vim,
Patch 8.2.1828
Problem: Build failure without the +eval feature.
-Solution: Add dummys for ex_block and ex_endblock.
+Solution: Add dummies for ex_block and ex_endblock.
Files: src/ex_docmd.c
Patch 8.2.1829
Files: src/eval.c, src/vim9compile.c, src/testdir/test_vim9_expr.vim
Patch 8.2.1852
-Problem: map() returing zero for NULL list is unexpected.
+Problem: map() returning zero for NULL list is unexpected.
Solution: Return the empty list. (closes #7133)
Files: src/list.c, src/testdir/test_filter_map.vim,
src/testdir/test_blob.vim
Patch 8.2.1853
Problem: "to_f" is recognized at "topleft" modifier.
-Solution: Do not recognize modifer when "_" follows. (closes #7019)
+Solution: Do not recognize modifier when "_" follows. (closes #7019)
Files: src/ex_docmd.c, src/testdir/test_vim9_assign.vim
Patch 8.2.1854
Files: src/vim9compile.c, src/evalfunc.c
Patch 8.2.1885
-Problem: Filetype tests unnessarily creates swap files.
+Problem: Filetype tests unnecessarily creates swap files.
Solution: Disable 'swapfile'. (Ken Takata, closes #7183)
Files: src/testdir/test_filetype.vim
Files: src/evalbuffer.c, src/testdir/test_vim9_builtin.vim
Patch 8.2.1889
-Problem: Vim9: errornous error for missing white space after {}.
+Problem: Vim9: erroneous error for missing white space after {}.
Solution: Don't skip over white space after {}. (issue #7167)
Files: src/dict.c, src/testdir/test_vim9_expr.vim
Patch 8.2.1965
Problem: Vim9: tests fail without the channel feature.
Solution: Check if the channel feature is present. (Dominique Pellé,
- closes 7270)
+ closes #7270)
Files: src/testdir/test_vim9_expr.vim
Patch 8.2.1966
src/testdir/test_vim9_func.vim
Patch 8.2.2022
-Problem: Vim9: star command recognized errornously.
+Problem: Vim9: star command recognized erroneously.
Solution: Give an error for missing colon. (issue #7335)
Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim
Patch 8.2.2051
Problem: Vim9: crash when aborting a user function call.
-Solution: Do not use the return value when aboring. (closes #7372)
+Solution: Do not use the return value when aborting. (closes #7372)
Files: src/vim9execute.c, src/testdir/test_vim9_func.vim
Patch 8.2.2052
src/testdir/test_vim9_cmd.vim
Patch 8.2.2053
-Problem: Vim9: lamba doesn't accept argument types.
+Problem: Vim9: lambda doesn't accept argument types.
Solution: Optionally accept argument types at the script level.
Files: src/eval.c, src/testdir/test_vim9_expr.vim
src/testdir/test_vim9_expr.vim
Patch 8.2.2082
-Problem: Vim9: can still use the depricated #{} dict syntax.
+Problem: Vim9: can still use the deprecated #{} dict syntax.
Solution: Remove support for #{} in Vim9 script. (closes #7406, closes #7405)
Files: src/dict.c, src/proto/dict.pro, src/eval.c, src/vim9compile.c,
src/testdir/test_vim9_assign.vim,
src/testdir/test_vim9_func.vim
Patch 8.2.2097
-Problem: Vim9: using :silent! when calling a function prevents abortng that
- function.
+Problem: Vim9: using :silent! when calling a function prevents aborting
+ that function.
Solution: Add emsg_silent_def and did_emsg_def.
Files: src/globals.h, src/message.c, src/vim9execute.c,
src/testdir/test_vim9_func.vim
Patch 8.2.2111
Problem: GTK: Menu background is the same color as the main window.
-Solution: Fix white space around the test in another way. (closes #7437,
+Solution: Fix white space around the text in another way. (closes #7437,
closes #7427)
Files: src/gui_gtk_x11.c
Patch 8.2.2112
Problem: Running tests may leave some files behind.
Solution: Delete the right files. Fix a few typos. (Dominique Pellé,
- closes #7436
+ closes #7436)
Files: src/testdir/test_filetype.vim, src/testdir/test_messages.vim,
src/testdir/test_mksession.vim
Patch 8.2.2130
Problem: Insert mode completion messages end up in message history.
-Solution: Set msg_hist_off. (closes #7452
+Solution: Set msg_hist_off. (closes #7452)
Files: src/insexpand.c, src/testdir/test_ins_complete.vim
Patch 8.2.2131
Files: .github/workflows/codeql-analysis.yml
Patch 8.2.2156
-Problem: Github actions run on pusing a tag.
+Problem: Github actions run on pushing a tag.
Solution: Don't run CI on tag push. Omit coveralls on pull-request.
(Ozaki Kiichi, closes #7489)
Files: .github/workflows/ci.yml, .github/workflows/codeql-analysis.yml
Patch 8.2.2161
Problem: Arguments -T and -x not tested yet.
-Solution: Add a test. (Dominique Pellé, closes #7490
+Solution: Add a test. (Dominique Pellé, closes #7490)
Files: src/testdir/test_startup.vim
Patch 8.2.2162
Patch 8.2.2163
Problem: Crash when discarded exception is the current exception.
-Solution: Compare the execption with current_exception. (closes #7499)
+Solution: Compare the exception with current_exception. (closes #7499)
Files: src/ex_eval.c
Patch 8.2.2164
Patch 8.2.2185
Problem: BufUnload is not triggered for the quickfix dummy buffer.
-Solution: Do trigger BufUnload. (Pontus Leitzler,closes #7518, closes #7517)
+Solution: Do trigger BufUnload. (Pontus Leitzler, closes #7518, closes #7517)
Fix white space around "=".
Files: src/quickfix.c, src/testdir/test_autocmd.vim
Patch 8.2.2200
Problem: Vim9: lambda without white space around -> is confusing.
-Solution: Require white space in a :def funtion. (issue #7503)
+Solution: Require white space in a :def function. (issue #7503)
Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim,
src/testdir/test_vim9_disassemble.vim
Patch 8.2.2241
Problem: Build with Ruby and clang may fail.
-Solution: Adjust congigure and sed script. (Ozaki Kiichi, closes #7566)
+Solution: Adjust configure and sed script. (Ozaki Kiichi, closes #7566)
Files: ci/config.mk.clang.sed, src/auto/configure, src/configure.ac
Patch 8.2.2242
Problem: Cursor keys not recognized at the hit-Enter prompt after executing
an external command.
Solution: Change the codes for the extra cursor keys. (closes #7562)
- Tune the delays to avoid test flakyness.
+ Tune the delays to avoid test flakiness.
Files: runtime/doc/term.txt, src/term.c, src/testdir/test_terminal3.vim
Patch 8.2.2247
src/testdir/test_vim9_disassemble.vim
Patch 8.2.2315
-Problem: Vim9: "enddef" as dict key misintepreted as function end.
+Problem: Vim9: "enddef" as dict key misinterpreted as function end.
Solution: Check for following colon. (closes #7640)
Files: src/userfunc.c, src/testdir/test_vim9_func.vim
Patch 8.2.2335
Problem: Vim9: "silent return" does not restore command modifiers.
-Solution: Resture command modifiers before returning. (closes #7649)
+Solution: Restore command modifiers before returning. (closes #7649)
Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim
Patch 8.2.2336
src/testdir/test_cmdline.vim
Patch 8.2.2342
-Problem: "char" functions return the wront column in Insert mode when the
+Problem: "char" functions return the wrong column in Insert mode when the
cursor is beyond the end of the line.
Solution: Compute the column correctly. (Yegappan Lakshmanan, closes #7669)
Files: src/eval.c, src/evalfunc.c, src/testdir/test_cursor_func.vim
Files: src/term.c
Patch 8.2.2353
-Problem: Spartql files are not detected.
+Problem: Sparql files are not detected.
Solution: Add the sparql filetype. (closes #7679)
Files: runtime/filetype.vim, src/testdir/test_filetype.vim
Patch 8.2.2363
Problem: curpos() does not accept a string argument as before.
solution: Make a string argument work again. (Yegappan Lakshmanan,
- closes #7690
+ closes #7690)
Files: src/evalfunc.c, src/testdir/test_cursor_func.vim
Patch 8.2.2364
src/testdir/test_vim9_func.vim
Patch 8.2.2388
-Problem: No easy way to get the maximum or mininum number value.
+Problem: No easy way to get the maximum or minimum number value.
Solution: Add v:numbermax and v:numbermin.
Files: src/evalvars.c, src/vim.h, src/testdir/test_eval_stuff.vim,
runtime/doc/eval.txt
Patch 8.2.2404
Problem: Vim9: profiling try/catch not correct.
Solution: Add profile instructions. Fix that "entry" did not rethrow an
- excpetion.
+ exception.
Files: src/vim9compile.c, src/vim9execute.c, src/testdir/test_profile.vim
Patch 8.2.2405
Patch 8.2.2447
Problem: 'foldlevel' not applied to folds restored from session.
-Solution: Set 'foldlevel' after creaiting the folds. (closes #7767)
+Solution: Set 'foldlevel' after creating the folds. (closes #7767)
Files: src/fold.c, src/testdir/test_mksession.vim
Patch 8.2.2448
Files: src/errors.h
Patch 8.2.2483
-Problem: Vim9: type error for misformed expression.
+Problem: Vim9: type error for malformed expression.
Solution: Check for end of command before checking type. (closes #7795)
Files: src/vim9compile.c, src/testdir/test_vim9_script.vim
Files: src/move.c, src/testdir/test_breakindent.vim
Patch 8.2.2496 (after 8.2.2495)
-Problem: Insufficien testing for text jumping fix.
+Problem: Insufficient testing for text jumping fix.
Solution: Add another test case.
Files: src/testdir/test_breakindent.vim
Files: src/testdir/test_textprop.vim
Patch 8.2.2562
-Problem: GUI: star register changed when 'clipboard is "unnamedplus". (Ingo
+Problem: GUI: star register changed when 'clipboard' is "unnamedplus". (Ingo
Karkat)
Solution: Do not change the star register when 'clipboard' contains
"unnamedplus" and not "unnamed". (closes #1516)
Patch 8.2.2810
Problem: Vim9: crash when calling a function in a substitute expression.
Solution: Set the instructions back to the substitute expression
- instrunctions. (closes #8148)
+ instructions. (closes #8148)
Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim
Patch 8.2.2811
Patch 8.2.2820
Problem: Session file may divide by zero.
-Solution: Avoid writing difide by zero. (closes #8162)
+Solution: Avoid writing divide by zero. (closes #8162)
Files: src/session.c, src/testdir/test_mksession.vim
Patch 8.2.2821
-Problem: MS-Windows: unnessarily loading libraries when registering OLE.
+Problem: MS-Windows: unnecessarily loading libraries when registering OLE.
Solution: Skip loading libraries when invoked with "-register".
Files: src/main.c, src/globals.h, src/os_win32.c
Patch 8.2.2822 (after 8.2.2821)
-Problem: MS-Windows: unnessarily loading libraries when unregistering OLE.
+Problem: MS-Windows: unnecessarily loading libraries when unregistering OLE.
Solution: Also skip loading libraries when invoked with "-unregister". Run
Vim for README.txt with user privileges.
Files: src/main.c, nsis/gvim.nsi, nsis/README.txt
Files: src/testdir/test_tcl.vim
Patch 8.2.2860
-Problem: Adding a text property causes the whole window to be redawn.
+Problem: Adding a text property causes the whole window to be redrawn.
Solution: Use changed_lines_buf() to only redraw the affected lines.
Files: src/change.c, src/proto/change.pro, src/textprop.c
src/testdir/test_vim9_expr.vim
Patch 8.2.2862
-Problem: Removing a text property causes the whole window to be redawn.
+Problem: Removing a text property causes the whole window to be redrawn.
Solution: Use changed_lines_buf() to only redraw the affected lines.
Files: src/textprop.c
Files: src/ex_getln.c, src/testdir/test_cmdline.vim
Patch 8.2.2871
-Problem: Unnessary VIM_ISDIGIT() calls, badly indented code.
+Problem: Unnecessary VIM_ISDIGIT() calls, badly indented code.
Solution: Call skipdigits() on the next character. Improve indenting.
(Dominique Pellé, closes #8227)
Files: src/charset.c, src/evalfunc.c, src/ex_docmd.c, src/json.c,
Patch 8.2.2961
Problem: Keys typed during a :normal command are discarded.
-Solution: Concatenate saved typeahead and typed kesy. (closes #8340)
+Solution: Concatenate saved typeahead and typed keys. (closes #8340)
Files: src/getchar.c, src/proto/getchar.pro, src/ex_docmd.c,
src/evalfunc.c, src/debugger.c, src/ui.c, src/proto/ui.pro
Patch 8.2.3005
Problem: Vim9: using a void value does not give a proper error message.
-Solution: Give a clear error message. (clodes #8387)
+Solution: Give a clear error message. (closes #8387)
Files: src/typval.c, src/vim9compile.c, src/vim9.h, src/vim9execute.c,
src/testdir/test_vim9_expr.vim,
src/testdir/test_vim9_disassemble.vim
Patch 8.2.3018
Problem: Formatting using quickfixtextfunc is lost when updating location
lists for different buffers. (Yorick Peterse)
-Solution: Use the right window for the locaiton list. (Yegappan Lakshmanan,
+Solution: Use the right window for the location list. (Yegappan Lakshmanan,
closes #8400, closes #8403)
Files: src/quickfix.c, src/testdir/test_quickfix.vim
Patch 8.2.3019
Problem: Location list only has the start position.
-Solution: Make it possible to add an end position. (Shane-XB-Qian,
- closes #8393)
+Solution: Make it possible to add an end position. (thinca, closes #8393)
Files: runtime/doc/eval.txt, src/quickfix.c,
src/testdir/dumps/Test_quickfix_cwindow_1.dump,
src/testdir/dumps/Test_quickfix_cwindow_2.dump,
Patch 8.2.3022
Problem: Available encryption methods are not strong enough.
-Solution: Add initial support for xchaha20. (Christian Brabandt,
+Solution: Add initial support for xchacha20. (Christian Brabandt,
closes #8394)
Files: .github/workflows/ci.yml, runtime/doc/eval.txt,
runtime/doc/options.txt, runtime/doc/various.txt,
Patch 8.2.3046
Problem: Amiga MorphOS: Term mode is set using DOS packets.
-Solution: Use the same way of setting term mdoe on all next gen Amiga-like
+Solution: Use the same way of setting term mode on all next gen Amiga-like
systems. (Ola Söder, closes #8445)
Files: src/os_amiga.c
Files: src/vim9.h
Patch 8.2.3058 (after 8.2.3056)
-Problem: Vim9: cannot use ternary operator in parenthesis.
+Problem: Vim9: cannot use ternary operator in parentheses.
Solution: Do not use "==" for a default argument value. (closes #8462)
Files: src/userfunc.c, src/testdir/test_vim9_func.vim
Files: src/userfunc.c
Patch 8.2.3060 (after 8.2.3056)
-Problem: Vim9: cannot use ternary operator in parenthesis.
+Problem: Vim9: cannot use ternary operator in parentheses.
Solution: Do not use "=~" for a default argument value. (closes #8462)
Files: src/userfunc.c, src/testdir/test_vim9_func.vim
src/testdir/dumps/Test_listchars_05.dump
Patch 8.2.3122
-Problem: With 'nowrap' cursor position is unexected in narrow window.
+Problem: With 'nowrap' cursor position is unexpected in narrow window.
(Leonid V. Fedorenchik)
Solution: Put cursor on the last non-empty line. (closes #8525)
Files: src/move.c, src/testdir/test_listchars.vim,
Files: src/list.c, src/testdir/test_vim9_builtin.vim
Patch 8.2.3128
-Problem: Vim9: uninitialzed list does not get type checked.
+Problem: Vim9: uninitialized list does not get type checked.
Solution: Set the type when initializing the variable. (closes #8529)
Files: src/eval.c, src/evalvars.c, src/vim9script.c,
src/userfunc.c, src/proto/vim9script.pro,
Patch 8.2.3214
Problem: MS-Windows: passing /D does not set the install location.
Solution: Adjust how the installer uses $VIM. Update the documentation.
- (Christian Brabandt, closes #8605)
+ (Christian Brabandt, Ken Takata, closes #8605)
Files: nsis/gvim.nsi, runtime/doc/os_win32.txt
Patch 8.2.3215
src/testdir/test_vim9_script.vim, src/testing.c, src/typval.c
Patch 8.2.3222
-Problem: Vim9: cannot used loop variable later as lambda argument.
+Problem: Vim9: cannot use loop variable later as lambda argument.
Solution: When not in function context check the current block ID.
(closes #8637)
Files: src/vim9compile.c, src/testdir/test_vim9_func.vim
Patch 8.2.3223
-Problem: Vim: using {} block in autoloade omnifunc fails.
+Problem: Vim: using {} block in autoloaded omnifunc fails.
Solution: Allow using {} block when text is locked. (closes #8631)
Files: src/ex_cmds.h, src/testdir/test_ins_complete.vim
Patch 8.2.3226
Problem: New digraph functions use old naming scheme.
-Solution: Use the digraph_ prefix. (Hirohito Higashi, closes #8580)
+Solution: Use the digraph_ prefix. (Hirohito Higashi, closes #8642)
Files: runtime/doc/digraph.txt, runtime/doc/eval.txt,
runtime/doc/usr_41.txt, src/digraph.c, src/edit.c, src/errors.h,
src/evalfunc.c, src/proto/digraph.pro,
Patch 8.2.3245
Problem: The crypt key may appear in a swap partition.
-Solution: When using xchaha20 use sodium_mlock(). (Christian Brabandt,
+Solution: When using xchacha20 use sodium_mlock(). (Christian Brabandt,
closes #8657)
Files: src/buffer.c, src/crypt.c, src/errors.h, src/fileio.c,
src/memline.c, src/vim.h
Files: src/testdir/test_functions.vim
Patch 8.2.3257
-Problem: Calling prop_find() with -1 for ID gives errornous error. (Naohiro
+Problem: Calling prop_find() with -1 for ID gives erroneous error. (Naohiro
Ono)
Solution: When passing -1 use -2. (closes #8674)
Files: src/textprop.c, src/testdir/test_textprop.vim
Patch 8.2.3266
Problem: Vim9: assignment with two indexes may check next line.
Solution: Limit the number of lines to avoid checking the next line when
- assiging to a LHS subscript. (closes #8660)
+ assigning to a LHS subscript. (closes #8660)
Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim
Patch 8.2.3267
Patch 8.2.3335
Problem: Vim9: not enough tests run with Vim9.
Solution: Run a few more tests in Vim9 script and :def function. Fix that
- items(), keys() and values9) return zero for a NULL dict.
+ items(), keys() and values() return zero for a NULL dict.
Make join() return an empty string for a NULL list. Make sort()
return an empty list for a NULL list.
Files: src/dict.c, src/list.c, src/testdir/test_listdict.vim,
Patch 8.2.3473
Problem: Some files with tcl syntax are not recognized.
-Solution: Add a few file patterns. (Doug Kearns
+Solution: Add a few file patterns. (Doug Kearns)
Files: runtime/filetype.vim, src/testdir/test_filetype.vim
Patch 8.2.3474
src/option.c
Patch 8.2.3491
-Problem: xpm2 filetype dection is not so good.
+Problem: xpm2 filetype detection is not so good.
Solution: Adjust the check for xpm2. (closes #8914)
Files: runtime/filetype.vim, src/testdir/test_filetype.vim
Files: .github/workflows/ci.yml
Patch 8.2.3501
-Problem: tmux filetype dection is incomplete
+Problem: tmux filetype detection is incomplete
Solution: Also use tmux for files having text after .conf. (Eric Pruitt,
closes #8971)
Files: runtime/filetype.vim, src/testdir/test_filetype.vim
Files: src/search.c
Patch 8.2.3514
-Problem: Autoread test with nano second time sometimes fails.
+Problem: Autoread test with nanosecond time sometimes fails.
Solution: Mark the test as being flaky.
Files: src/testdir/test_stat.vim
Patch 8.2.3518
Problem: Test_xrestore sometimes fails.
-Solution: Mark the test as flayky. Move marking test as flaky to the test
+Solution: Mark the test as flaky. Move marking test as flaky to the test
instead of listing them in runtest.
Files: src/testdir/test_paste.vim, src/testdir/runtest.vim,
src/testdir/test_autocmd.vim, src/testdir/test_channel.vim,
src/testdir/test_quickfix.vim
Patch 8.2.3548
-Problem: GTK GUI crashen when reading from stdin.
+Problem: GTK GUI crashes when reading from stdin.
Solution: Do not overwrite the NUL after the string. (closes #9028)
Files: src/gui_gtk_x11.c, src/testdir/test_gui.vim
Patch 8.2.3600 (after 8.2.3598)
Problem: Filetype test fails.
-Solution: Add missint change.
+Solution: Add missing change.
Files: runtime/scripts.vim
Patch 8.2.3601
Files: src/vim9compile.c
Patch 8.2.3656
-Problem: Vim9: no error for an evironment variable by itself.
+Problem: Vim9: no error for an environment variable by itself.
Solution: Give a "without effect" error. (closes #9166)
Files: src/ex_eval.c, src/testdir/test_vim9_cmd.vim
Files: src/ops.c, src/testdir/test_blockedit.vim
Patch 8.2.3685
-Problem: Visual studio project files are not recognized.
+Problem: Visual Studio project files are not recognized.
Solution: Use the xml file type. (Doug Kearns)
Files: runtime/filetype.vim, src/testdir/test_filetype.vim
Patch 8.2.3695
Problem: Confusing error for missing key.
-Solution: Use the actualy key for the error. (closes #9241)
+Solution: Use the actual key for the error. (closes #9241)
Files: src/eval.c, src/testdir/test_listdict.vim
Patch 8.2.3696
Files: runtime/doc/options.txt
Patch 8.2.3785
-Problem: Running CI on MacOS with gcc is not useful.
+Problem: Running CI on macOS with gcc is not useful.
Solution: Only use clang. (Ozaki Kiichi, closes #9326) Also build with
normal features.
Files: .github/workflows/ci.yml
Patch 8.2.3792
Problem: Setting *func options insufficiently tested.
-Solution: Impove tests. (Yegappan Lakshmanan, closes #9337)
+Solution: Improve tests. (Yegappan Lakshmanan, closes #9337)
Files: src/testdir/test_iminsert.vim, src/testdir/test_ins_complete.vim,
src/testdir/test_normal.vim, src/testdir/test_quickfix.vim,
src/testdir/test_tagfunc.vim
Problem: Using "g:Func" as a funcref does not work in script context
because "g:" is dropped.
Solution: Keep "g:" in the name. Also add parenthesis to avoid confusing
- operator prececence. (closes #9336)
+ operator precedence. (closes #9336)
Files: src/evalvars.c, src/testdir/test_vim9_func.vim
Patch 8.2.3794
src/eval.c, src/testdir/test_vim9_expr.vim
Patch 8.2.3816
-Problem: Compiler warning for posible loss of data on MS-Windows.
+Problem: Compiler warning for possible loss of data on MS-Windows.
Solution: Add type cast. (Mike Williams, closes #9349)
Files: src/userfunc.c
Patch 8.2.3824
Problem: No ASAN support for MSVC.
-Solution: Add ASAN support and fix a coupld of uncovered problems. (Yegappan
+Solution: Add ASAN support and fix a couple of uncovered problems. (Yegappan
Lakshmanan, closes #9357)
Files: src/Make_mvc.mak, src/findfile.c, src/os_mswin.c,
src/testdir/test_fnamemodify.vim
Patch 8.2.3851
Problem: Vim9: overhead when comparing string, dict or function.
-Solution: Call the intented compare function directly. Refactor to avoid
+Solution: Call the intended compare function directly. Refactor to avoid
duplicated code.
Files: src/vim9execute.c, src/typval.c, src/proto/typval.pro
Files: src/userfunc.c
Patch 8.2.3929
-Problem: Using unititialized variable.
+Problem: Using uninitialized variable.
Solution: Set the option flags to zero for a terminal option.
Files: src/option.c
src/terminal.c, src/textprop.c, src/userfunc.c
Patch 8.2.3978
-Problem: Build error when using dynamycally loaded Python 3.
+Problem: Build error when using dynamically loaded Python 3.
Solution: Adjust #ifdef.
Files: src/errors.h
src/usercmd.c, src/viminfo.c, src/testdir/test_vim9_func.vim
Patch 8.2.4041
-Problem: Using unitialized pointer.
+Problem: Using uninitialized pointer.
Solution: Store "ht" when variable is in another script.
Files: src/evalvars.c
Patch 8.2.4043
Problem: Using int for second argument of ga_init2().
-Solution: Remove unnessary type cast (int) when using sizeof().
+Solution: Remove unnecessary type cast (int) when using sizeof().
Files: src/arglist.c, src/channel.c, src/cmdexpand.c, src/dict.c,
src/digraph.c, src/eval.c, src/evalfunc.c, src/evalvars.c,
src/evalwindow.c, src/ex_docmd.c, src/fileio.c, src/filepath.c,
Files: src/scriptfile.c, src/testdir/test_vim9_import.vim
Patch 8.2.4083
-Problem: Vim9: no test for "vim9script autoload' and using script variable
+Problem: Vim9: no test for "vim9script autoload" and using script variable
in the same script.
Solution: Add a simple test. Fix uncovered problem.
Files: src/evalvars.c, src/testdir/test_vim9_import.vim
Files: src/buffer.c, src/testdir/test_statusline.vim
Patch 8.2.4092
-Problem: MacOS CI: unnecessarily doing "Install packages".
+Problem: macOS CI: unnecessarily doing "Install packages".
Solution: Only do "Install packages" for huge build. (Ozaki Kiichi,
closes #9521)
Files: .github/workflows/ci.yml
Files: src/eval.c, src/testdir/test_vim9_import.vim
Patch 8.2.4103
-Problem: Vim9: variable declared in for loop not initialzed.
-Solution: Always initialze the variable. (closes #9535)
+Problem: Vim9: variable declared in for loop not initialized.
+Solution: Always initialize the variable. (closes #9535)
Files: src/vim9instr.c, src/proto/vim9instr.pro, src/vim9compile.c,
src/testdir/test_vim9_assign.vim
Patch 8.2.4109
Problem: MS-Windows: high dpi support is outdated.
-Solution: Improve High DPI support by using PerMonitorV2. (closes #9525,
- closes #3102)
+Solution: Improve High DPI support by using PerMonitorV2. (Ken Takata
+ closes #9525, closes #3102)
Files: src/gui.c, src/gui.h, src/gui_w32.c, src/vim.manifest
Patch 8.2.4110
Files: src/eval.c
Patch 8.2.4111
-Problem: Potential proglem when map is deleted while executing.
+Problem: Potential problem when map is deleted while executing.
Solution: Reset last used map pointer when deleting a mapping.
Files: src/map.c
Patch 8.2.4133
Problem: output of ":scriptnames" goes into the message history, while this
- des not happen for other commands, such as ":ls".
+ does not happen for other commands, such as ":ls".
Solution: Use msg_outtrans() instead of smsg(). (closes #9551)
Files: src/scriptfile.c, src/testdir/test_scriptnames.vim
Patch 8.2.4137
Problem: Vim9: calling import with and without method is inconsistent.
-Solution: Set a flag that a parenthsis follows to compile_load_scriptvar().
+Solution: Set a flag that a parenthesis follows to compile_load_scriptvar().
Add some more tests. Improve error message.
Files: src/vim9expr.c, src/vim9execute.c, src/vim9script.c,
src/testdir/test_vim9_import.vim
src/testdir/sautest/autoload/foo.vim
Patch 8.2.4169
-Problem: MS-Windows: unnessary casts and other minor things.
+Problem: MS-Windows: unnecessary casts and other minor things.
Solution: Clean up the MS-Windows code. (Ken Takata, closes #9583)
Files: src/gui_w32.c
Patch 8.2.4244
Problem: MS-Windows: warning from MSVC on debug build.
-Solution: Adjust "/opt"o options. Remove unused variables. Make variables
+Solution: Adjust "/opt" options. Remove unused variables. Make variables
uppercase for consistency. (Ken Takata, closes #9647)
Files: src/Make_mvc.mak
Patch 8.2.4291
Problem: Error number used twice.
-Solution: Renumber of of the errors.
+Solution: Renumber the errors.
Files: src/errors.h
Patch 8.2.4292 (after 8.2.4291)
Files: src/buffer.c, src/testdir/test_quickfix.vim
Patch 8.2.4328
-Problem: Command line complete matches cleard when typing character.
+Problem: Command line complete matches cleared when typing character.
(Dominique Pellé)
Solution: Only remove a popup menu if there is one.
Files: src/ex_getln.c, src/testdir/test_cmdline.vim,
Patch 8.2.4333
Problem: cstack not always passed to where it is needed.
-Solution: Pass ctack through functions.
+Solution: Pass cstack through functions.
Files: src/eval.c, src/vim9expr.c, src/vim9script.c,
src/proto/vim9script.pro, src/vim9compile.c,
src/proto/vim9compile.pro
Patch 8.2.4422
Problem: Autochdir test fails on MS-Windows.
-Solution: Expecta nother error on MS-Windows.
+Solution: Expect another error on MS-Windows.
Files: src/testdir/test_autochdir.vim
Patch 8.2.4423
-*vim9.txt* For Vim version 8.2. Last change: 2022 Feb 23
+*vim9.txt* For Vim version 8.2. Last change: 2022 Mar 08
VIM REFERENCE MANUAL by Bram Moolenaar
plugins to do their work without blocking the user. It's a uniform way to
invoke callbacks and handle timeouts and errors.
+Some commands have already been reserved:
+ *:class*
+ *:endclass*
+ *:abstract*
+ *:enum*
+ *:endenum*
+ *:interface*
+ *:endinterface*
+ *:static*
+ *:type*
+
Some examples: >
abstract class Person
" Vim filetype plugin file
" Language: ant
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: aspvbs
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: config
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: csc
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
" Vim filetype plugin file
" Language: csh
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Previous Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Previous Maintainer: Dan Sharp
" Contributor: Johannes Zellner <johannes@zellner.org>
" Last Change: 2021 Oct 15
" Vim filetype plugin file
" Language: dtd
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
" Vim filetype plugin file
" Language: html
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
" Vim filetype plugin file
" Language: Java
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Change: 2012 Mar 11
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
" Vim filetype plugin file
" Language: jsp
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: Pascal
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Previous Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Previous Maintainer: Dan Sharp
" Last Change: 2021 Apr 23
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: php
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: sgml
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: sh
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
" Vim filetype plugin file
" Language: svg
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: tcsh
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Previous Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Previous Maintainer: Dan Sharp
" Last Change: 2021 Oct 15
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: xhtml
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Maintainer: Christian Brabandt <cb@256bit.org>
" Last Changed: Dec 07th, 2018
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
-" Previous Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+" Previous Maintainer: Dan Sharp
" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: xsd
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim filetype plugin file
" Language: xslt
-" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
+"
+" This runtime file is looking for a new maintainer.
+"
+" Former maintainer: Dan Sharp
" Last Changed: 20 Jan 2009
-" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
" Vim indent file
" Language: Vim script
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2022 Feb 23
+" Last Change: 2022 Mar 01
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
" terminated dict.
" ":function" starts a block but "function(" doesn't.
if prev_text !~ '^\s*au\%[tocmd]' && prev_text !~ '^\s*{.*}'
- let i = match(prev_text, '\(^\||\)\s*\(export\s\+\)\?\({\|\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\|finall\%[y]\|def\|el\%[seif]\)\>\|fu\%[nction]\s\)')
+ let i = match(prev_text, '\(^\||\)\s*\(export\s\+\)\?\({\|\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\|finall\%[y]\|def\|el\%[seif]\)\>\|fu\%[nction][! ]\)')
if i >= 0
let ind += shiftwidth()
if strpart(prev_text, i, 1) == '|' && has('syntax_items')
" You can also use this as a start for your own set of menus.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2022 Feb 23
+" Last Change: 2022 Mar 02
" Note that ":an" (short for ":anoremenu") is often used to make a menu work
" in all modes and avoid side effects from mappings defined by the user.
:%!mc vim:xxd
else
s:XxdFind()
- exe '%!' .. g:xxdprogram
+ exe ':%!' .. g:xxdprogram
endif
- if getline(1) =~ "^0000000:" # only if it worked
+ if getline(1) =~ "^00000000:" # only if it worked
set ft=xxd
endif
&mod = mod
:%!mc vim:xxd -r
else
s:XxdFind()
- exe '%!' .. g:xxdprogram .. ' -r'
+ exe ':%!' .. g:xxdprogram .. ' -r'
endif
set ft=
doautocmd filetypedetect BufReadPost