1
mirror of https://github.com/neovim/neovim.git synced 2024-12-28 14:31:13 -07:00

vim-patch:partial 6aa57295cfbe ()

* vim-patch:partial 6aa57295cfbe

Update runtime files
6aa57295cf

omit doc/popup.txt
omit plugin/manpager.vim

partial skip runtime/doc/eval.txt (needs 8.2.{0258,0924,1544,2324,2468,2606})

skip ftplugin/julia.vim, indent/julia.vim, syntax/julia.vim (already
        ported in
        65f32f0f19)
skip syntax/scala.vim (already ported in
        a92e83ac14)
This commit is contained in:
Christian Clason 2021-09-12 11:02:33 +02:00 committed by GitHub
parent 4a7a99ff31
commit 229effac9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 381 additions and 190 deletions

View File

@ -0,0 +1,16 @@
" scdoc compiler for Vim
" Compiler: scdoc
" Maintainer: Greg Anders <greg@gpanders.com>
" Last Updated: 2019-10-24
if exists('current_compiler')
finish
endif
let current_compiler = 'scdoc'
if exists(':CompilerSet') != 2
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=scdoc\ <\ %\ 2>&1
CompilerSet errorformat=Error\ at\ %l:%c:\ %m,%-G%.%#

View File

@ -153,7 +153,12 @@ CTRL-R {register} *c_CTRL-R* *c_<C-R>*
too. too.
When the result is a Float it's automatically When the result is a Float it's automatically
converted to a String. converted to a String.
See |registers| about registers. Note that when you only want to move the
cursor and not insert anything, you must make
sure the expression evaluates to an empty
string. E.g.: >
<C-R><C-R>=setcmdpos(2)[-1]<CR>
< See |registers| about registers.
Implementation detail: When using the |expression| register Implementation detail: When using the |expression| register
and invoking setcmdpos(), this sets the position before and invoking setcmdpos(), this sets the position before
inserting the resulting string. Use CTRL-R CTRL-R to set the inserting the resulting string. Use CTRL-R CTRL-R to set the

View File

@ -25,7 +25,6 @@ Number A 32 or 64 bit signed number. |expr-number|
Float A floating point number. |floating-point-format| *Float* Float A floating point number. |floating-point-format| *Float*
Examples: 123.456 1.15e-6 -1.1e3 Examples: 123.456 1.15e-6 -1.1e3
*E928*
String A NUL terminated string of 8-bit unsigned characters (bytes). String A NUL terminated string of 8-bit unsigned characters (bytes).
|expr-string| Examples: "ab\txx\"--" 'x-z''a,c' |expr-string| Examples: "ab\txx\"--" 'x-z''a,c'
@ -2191,8 +2190,8 @@ cursor({list}) Number move cursor to position in {list}
debugbreak({pid}) Number interrupt process being debugged debugbreak({pid}) Number interrupt process being debugged
deepcopy({expr} [, {noref}]) any make a full copy of {expr} deepcopy({expr} [, {noref}]) any make a full copy of {expr}
delete({fname} [, {flags}]) Number delete the file or directory {fname} delete({fname} [, {flags}]) Number delete the file or directory {fname}
deletebufline({expr}, {first}[, {last}]) deletebufline({buf}, {first}[, {last}])
Number delete lines from buffer {expr} Number delete lines from buffer {buf}
dictwatcheradd({dict}, {pattern}, {callback}) dictwatcheradd({dict}, {pattern}, {callback})
Start watching a dictionary Start watching a dictionary
dictwatcherdel({dict}, {pattern}, {callback}) dictwatcherdel({dict}, {pattern}, {callback})
@ -2244,12 +2243,12 @@ garbagecollect([{atexit}]) none free memory, breaking cyclic references
get({list}, {idx} [, {def}]) any get item {idx} from {list} or {def} get({list}, {idx} [, {def}]) any get item {idx} from {list} or {def}
get({dict}, {key} [, {def}]) any get item {key} from {dict} or {def} get({dict}, {key} [, {def}]) any get item {key} from {dict} or {def}
get({func}, {what}) any get property of funcref/partial {func} get({func}, {what}) any get property of funcref/partial {func}
getbufinfo([{expr}]) List information about buffers getbufinfo([{buf}]) List information about buffers
getbufline({expr}, {lnum} [, {end}]) getbufline({buf}, {lnum} [, {end}])
List lines {lnum} to {end} of buffer {expr} List lines {lnum} to {end} of buffer {buf}
getbufvar({expr}, {varname} [, {def}]) getbufvar({buf}, {varname} [, {def}])
any variable {varname} in buffer {expr} any variable {varname} in buffer {buf}
getchangelist({expr}) List list of change list items getchangelist([{buf}]) List list of change list items
getchar([expr]) Number or String getchar([expr]) Number or String
get one character from the user get one character from the user
getcharmod() Number modifiers for the last typed character getcharmod() Number modifiers for the last typed character
@ -2275,7 +2274,7 @@ getline({lnum}) String line {lnum} of current buffer
getline({lnum}, {end}) List lines {lnum} to {end} of current buffer getline({lnum}, {end}) List lines {lnum} to {end} of current buffer
getloclist({nr}) List list of location list items getloclist({nr}) List list of location list items
getloclist({nr}, {what}) Dict get specific location list properties getloclist({nr}, {what}) Dict get specific location list properties
getmarklist([{expr}]) List list of global/local marks getmarklist([{buf}]) List list of global/local marks
getmatches([{win}]) List list of current matches getmatches([{win}]) List list of current matches
getpid() Number process ID of Vim getpid() Number process ID of Vim
getpos({expr}) List position of cursor, mark, etc. getpos({expr}) List position of cursor, mark, etc.
@ -2459,7 +2458,7 @@ serverlist() String get a list of available servers
setbufline( {expr}, {lnum}, {line}) setbufline( {expr}, {lnum}, {line})
Number set line {lnum} to {line} in buffer Number set line {lnum} to {line} in buffer
{expr} {expr}
setbufvar({expr}, {varname}, {val}) set {varname} in buffer {expr} to {val} setbufvar({buf}, {varname}, {val}) set {varname} in buffer {buf} to {val}
setcharsearch({dict}) Dict set character search from {dict} setcharsearch({dict}) Dict set character search from {dict}
setcmdpos({pos}) Number set cursor position in command-line setcmdpos({pos}) Number set cursor position in command-line
setenv({name}, {val}) none set environment variable setenv({name}, {val}) none set environment variable
@ -2489,11 +2488,11 @@ shiftwidth([{col}]) Number effective value of 'shiftwidth'
sign_define({name} [, {dict}]) Number define or update a sign sign_define({name} [, {dict}]) Number define or update a sign
sign_define({list}) List define or update a list of signs sign_define({list}) List define or update a list of signs
sign_getdefined([{name}]) List get a list of defined signs sign_getdefined([{name}]) List get a list of defined signs
sign_getplaced([{expr} [, {dict}]]) sign_getplaced([{buf} [, {dict}]])
List get a list of placed signs List get a list of placed signs
sign_jump({id}, {group}, {expr}) sign_jump({id}, {group}, {buf})
Number jump to a sign Number jump to a sign
sign_place({id}, {group}, {name}, {expr} [, {dict}]) sign_place({id}, {group}, {name}, {buf} [, {dict}])
Number place a sign Number place a sign
sign_placelist({list}) List place a list of signs sign_placelist({list}) List place a list of signs
sign_undefine([{name}]) Number undefine a sign sign_undefine([{name}]) Number undefine a sign
@ -2517,7 +2516,7 @@ split({expr} [, {pat} [, {keepempty}]])
sqrt({expr}) Float square root of {expr} sqrt({expr}) Float square root of {expr}
stdioopen({dict}) Number open stdio in a headless instance. stdioopen({dict}) Number open stdio in a headless instance.
stdpath({what}) String/List returns the standard path(s) for {what} stdpath({what}) String/List returns the standard path(s) for {what}
str2float({expr}) Float convert String to Float str2float({expr} [, {quoted}]) Float convert String to Float
str2list({expr} [, {utf8}]) List convert each character of {expr} to str2list({expr} [, {utf8}]) List convert each character of {expr} to
ASCII/UTF8 value ASCII/UTF8 value
str2nr({expr} [, {base} [, {quoted}]]) str2nr({expr} [, {base} [, {quoted}]])
@ -2547,7 +2546,7 @@ submatch({nr} [, {list}]) String or List
substitute({expr}, {pat}, {sub}, {flags}) substitute({expr}, {pat}, {sub}, {flags})
String all {pat} in {expr} replaced with {sub} String all {pat} in {expr} replaced with {sub}
swapinfo({fname}) Dict information about swap file {fname} swapinfo({fname}) Dict information about swap file {fname}
swapname({expr}) String swap file of buffer {expr} swapname({buf}) String swap file of buffer {buf}
synID({lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col} synID({lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col}
synIDattr({synID}, {what} [, {mode}]) synIDattr({synID}, {what} [, {mode}])
String attribute {what} of syntax ID {synID} String attribute {what} of syntax ID {synID}
@ -2689,13 +2688,13 @@ append({lnum}, {text}) *append()*
< Can also be used as a |method| after a List: > < Can also be used as a |method| after a List: >
mylist->append(lnum) mylist->append(lnum)
appendbufline({expr}, {lnum}, {text}) *appendbufline()* appendbufline({buf}, {lnum}, {text}) *appendbufline()*
Like |append()| but append the text in buffer {expr}. Like |append()| but append the text in buffer {expr}.
This function works only for loaded buffers. First call This function works only for loaded buffers. First call
|bufload()| if needed. |bufload()| if needed.
For the use of {expr}, see |bufname()|. For the use of {buf}, see |bufname()|.
{lnum} is used like with |append()|. Note that using |line()| {lnum} is used like with |append()|. Note that using |line()|
would use the current buffer, not the one appending to. would use the current buffer, not the one appending to.
@ -2703,7 +2702,7 @@ appendbufline({expr}, {lnum}, {text}) *appendbufline()*
On success 0 is returned, on failure 1 is returned. On success 0 is returned, on failure 1 is returned.
If {expr} is not a valid buffer or {lnum} is not valid, an If {buf} is not a valid buffer or {lnum} is not valid, an
error message is given. Example: > error message is given. Example: >
:let failed = appendbufline(13, 0, "# THE START") :let failed = appendbufline(13, 0, "# THE START")
< <
@ -2823,7 +2822,7 @@ browsedir({title}, {initdir})
browsing is not possible, an empty string is returned. browsing is not possible, an empty string is returned.
bufadd({name}) *bufadd()* bufadd({name}) *bufadd()*
Add a buffer to the buffer list with {name}. Add a buffer to the buffer list with String {name}.
If a buffer for file {name} already exists, return that buffer If a buffer for file {name} already exists, return that buffer
number. Otherwise return the buffer number of the newly number. Otherwise return the buffer number of the newly
created buffer. When {name} is an empty string then a new created buffer. When {name} is an empty string then a new
@ -2832,13 +2831,13 @@ bufadd({name}) *bufadd()*
< Can also be used as a |method|: > < Can also be used as a |method|: >
let bufnr = 'somename'->bufadd() let bufnr = 'somename'->bufadd()
bufexists({expr}) *bufexists()* bufexists({buf}) *bufexists()*
The result is a Number, which is |TRUE| if a buffer called The result is a Number, which is |TRUE| if a buffer called
{expr} exists. {buf} exists.
If the {expr} argument is a number, buffer numbers are used. If the {buf} argument is a number, buffer numbers are used.
Number zero is the alternate buffer for the current window. Number zero is the alternate buffer for the current window.
If the {expr} argument is a string it must match a buffer name If the {buf} argument is a string it must match a buffer name
exactly. The name can be: exactly. The name can be:
- Relative to the current directory. - Relative to the current directory.
- A full path. - A full path.
@ -2857,42 +2856,42 @@ bufexists({expr}) *bufexists()*
Can also be used as a |method|: > Can also be used as a |method|: >
let exists = 'somename'->bufexists() let exists = 'somename'->bufexists()
buflisted({expr}) *buflisted()* buflisted({buf}) *buflisted()*
The result is a Number, which is |TRUE| if a buffer called The result is a Number, which is |TRUE| if a buffer called
{expr} exists and is listed (has the 'buflisted' option set). {buf} exists and is listed (has the 'buflisted' option set).
The {expr} argument is used like with |bufexists()|. The {buf} argument is used like with |bufexists()|.
Can also be used as a |method|: > Can also be used as a |method|: >
let listed = 'somename'->buflisted() let listed = 'somename'->buflisted()
bufload({expr}) *bufload()* bufload({buf}) *bufload()*
Ensure the buffer {expr} is loaded. When the buffer name Ensure the buffer {buf} is loaded. When the buffer name
refers to an existing file then the file is read. Otherwise refers to an existing file then the file is read. Otherwise
the buffer will be empty. If the buffer was already loaded the buffer will be empty. If the buffer was already loaded
then there is no change. then there is no change.
If there is an existing swap file for the file of the buffer, If there is an existing swap file for the file of the buffer,
there will be no dialog, the buffer will be loaded anyway. there will be no dialog, the buffer will be loaded anyway.
The {expr} argument is used like with |bufexists()|. The {buf} argument is used like with |bufexists()|.
Can also be used as a |method|: > Can also be used as a |method|: >
eval 'somename'->bufload() eval 'somename'->bufload()
bufloaded({expr}) *bufloaded()* bufloaded({buf}) *bufloaded()*
The result is a Number, which is |TRUE| if a buffer called The result is a Number, which is |TRUE| if a buffer called
{expr} exists and is loaded (shown in a window or hidden). {buf} exists and is loaded (shown in a window or hidden).
The {expr} argument is used like with |bufexists()|. The {buf} argument is used like with |bufexists()|.
Can also be used as a |method|: > Can also be used as a |method|: >
let loaded = 'somename'->bufloaded() let loaded = 'somename'->bufloaded()
bufname([{expr}]) *bufname()* bufname([{buf}]) *bufname()*
The result is the name of a buffer. Mostly as it is displayed The result is the name of a buffer. Mostly as it is displayed
by the `:ls` command, but not using special names such as by the `:ls` command, but not using special names such as
"[No Name]". "[No Name]".
If {expr} is omitted the current buffer is used. If {buf} is omitted the current buffer is used.
If {expr} is a Number, that buffer number's name is given. If {buf} is a Number, that buffer number's name is given.
Number zero is the alternate buffer for the current window. Number zero is the alternate buffer for the current window.
If {expr} is a String, it is used as a |file-pattern| to match If {buf} is a String, it is used as a |file-pattern| to match
with the buffer names. This is always done like 'magic' is with the buffer names. This is always done like 'magic' is
set and 'cpoptions' is empty. When there is more than one set and 'cpoptions' is empty. When there is more than one
match an empty string is returned. match an empty string is returned.
@ -2905,7 +2904,7 @@ bufname([{expr}]) *bufname()*
Listed buffers are found first. If there is a single match Listed buffers are found first. If there is a single match
with a listed buffer, that one is returned. Next unlisted with a listed buffer, that one is returned. Next unlisted
buffers are searched for. buffers are searched for.
If the {expr} is a String, but you want to use it as a buffer If the {buf} is a String, but you want to use it as a buffer
number, force it to be a Number by adding zero to it: > number, force it to be a Number by adding zero to it: >
:echo bufname("3" + 0) :echo bufname("3" + 0)
< Can also be used as a |method|: > < Can also be used as a |method|: >
@ -2919,9 +2918,9 @@ bufname([{expr}]) *bufname()*
bufname("file2") name of buffer where "file2" matches. bufname("file2") name of buffer where "file2" matches.
*bufnr()* *bufnr()*
bufnr([{expr} [, {create}]]) bufnr([{buf} [, {create}]])
The result is the number of a buffer, as it is displayed by The result is the number of a buffer, as it is displayed by
the `:ls` command. For the use of {expr}, see |bufname()| the `:ls` command. For the use of {buf}, see |bufname()|
above. above.
If the buffer doesn't exist, -1 is returned. Or, if the If the buffer doesn't exist, -1 is returned. Or, if the
{create} argument is present and TRUE, a new, unlisted, {create} argument is present and TRUE, a new, unlisted,
@ -2936,10 +2935,10 @@ bufnr([{expr} [, {create}]])
Can also be used as a |method|: > Can also be used as a |method|: >
echo bufref->bufnr() echo bufref->bufnr()
bufwinid({expr}) *bufwinid()* bufwinid({buf}) *bufwinid()*
The result is a Number, which is the |window-ID| of the first The result is a Number, which is the |window-ID| of the first
window associated with buffer {expr}. For the use of {expr}, window associated with buffer {buf}. For the use of {buf},
see |bufname()| above. If buffer {expr} doesn't exist or see |bufname()| above. If buffer {buf} doesn't exist or
there is no such window, -1 is returned. Example: > 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))
@ -2949,10 +2948,10 @@ bufwinid({expr}) *bufwinid()*
Can also be used as a |method|: > Can also be used as a |method|: >
FindBuffer()->bufwinid() FindBuffer()->bufwinid()
bufwinnr({expr}) *bufwinnr()* bufwinnr({buf}) *bufwinnr()*
Like |bufwinid()| but return the window number instead of the Like |bufwinid()| but return the window number instead of the
|window-ID|. |window-ID|.
If buffer {expr} doesn't exist or there is no such window, -1 If buffer {buf} doesn't exist or there is no such window, -1
is returned. Example: > is returned. Example: >
echo "A window containing buffer 1 is " . (bufwinnr(1)) echo "A window containing buffer 1 is " . (bufwinnr(1))
@ -2975,7 +2974,7 @@ byte2line({byte}) *byte2line()*
GetOffset()->byte2line() GetOffset()->byte2line()
byteidx({expr}, {nr}) *byteidx()* byteidx({expr}, {nr}) *byteidx()*
Return byte index of the {nr}'th character in the string Return byte index of the {nr}'th character in the String
{expr}. Use zero for the first character, it then returns {expr}. Use zero for the first character, it then returns
zero. zero.
If there are no multibyte characters the returned value is If there are no multibyte characters the returned value is
@ -3079,8 +3078,9 @@ chansend({id}, {data}) *chansend()*
messages, use |rpcnotify()| and |rpcrequest()| instead. messages, use |rpcnotify()| and |rpcrequest()| instead.
char2nr({expr} [, {utf8}]) *char2nr()* char2nr({string} [, {utf8}]) *char2nr()*
Return number value of the first char in {expr}. Examples: > Return number value of the first char in {string}.
Examples: >
char2nr(" ") returns 32 char2nr(" ") returns 32
char2nr("ABC") returns 65 char2nr("ABC") returns 65
char2nr("á") returns 225 char2nr("á") returns 225
@ -3189,6 +3189,7 @@ complete({startcol}, {matches}) *complete()* *E785*
match. match.
{matches} must be a |List|. Each |List| item is one match. {matches} must be a |List|. Each |List| item is one match.
See |complete-items| for the kind of items that are possible. See |complete-items| for the kind of items that are possible.
"longest" in 'completeopt' is ignored.
Note that the after calling this function you need to avoid Note that the after calling this function you need to avoid
inserting anything that would cause completion to stop. inserting anything that would cause completion to stop.
The match can be selected with CTRL-N and CTRL-P as usual with The match can be selected with CTRL-N and CTRL-P as usual with
@ -3230,8 +3231,8 @@ complete_check() *complete_check()*
Only to be used by the function specified with the Only to be used by the function specified with the
'completefunc' option. 'completefunc' option.
*complete_info()*
complete_info([{what}]) complete_info([{what}]) *complete_info()*
Returns a |Dictionary| with information about Insert mode Returns a |Dictionary| with information about Insert mode
completion. See |ins-completion|. completion. See |ins-completion|.
The items are: The items are:
@ -3310,10 +3311,10 @@ confirm({msg} [, {choices} [, {default} [, {type}]]])
< For the console, the first letter of each choice is used as < For the console, the first letter of each choice is used as
the default shortcut key. Case is ignored. the default shortcut key. Case is ignored.
The optional {default} argument is the number of the choice The optional {type} String argument gives the type of dialog.
that is made if the user hits <CR>. Use 1 to make the first It can be one of these values: "Error", "Question", "Info",
choice the default one. Use 0 to not set a default. If "Warning" or "Generic". Only the first character is relevant.
{default} is omitted, 1 is used. When {type} is omitted, "Generic" is used.
The optional {type} argument gives the type of dialog. This The optional {type} argument gives the type of dialog. This
is only used for the icon of the Win32 GUI. It can be one of is only used for the icon of the Win32 GUI. It can be one of
@ -3517,7 +3518,7 @@ deepcopy({expr}[, {noref}]) *deepcopy()* *E698*
Can also be used as a |method|: > Can also be used as a |method|: >
GetObject()->deepcopy() GetObject()->deepcopy()
delete({fname} [, {flags}]) *delete()* delete({fname} [, {flags}]) *delete()*
Without {flags} or with {flags} empty: Deletes the file by the Without {flags} or with {flags} empty: Deletes the file by the
name {fname}. This also works when {fname} is a symbolic link. name {fname}. This also works when {fname} is a symbolic link.
A symbolic link itself is deleted, not what it points to. A symbolic link itself is deleted, not what it points to.
@ -3537,19 +3538,19 @@ delete({fname} [, {flags}]) *delete()*
Can also be used as a |method|: > Can also be used as a |method|: >
GetName()->delete() GetName()->delete()
deletebufline({expr}, {first}[, {last}]) *deletebufline()* deletebufline({buf}, {first}[, {last}]) *deletebufline()*
Delete lines {first} to {last} (inclusive) from buffer {expr}. Delete lines {first} to {last} (inclusive) from buffer {buf}.
If {last} is omitted then delete line {first} only. If {last} is omitted then delete line {first} only.
On success 0 is returned, on failure 1 is returned. On success 0 is returned, on failure 1 is returned.
This function works only for loaded buffers. First call This function works only for loaded buffers. First call
|bufload()| if needed. |bufload()| if needed.
For the use of {expr}, see |bufname()| above. For the use of {buf}, see |bufname()| above.
{first} and {last} are used like with |setline()|. Note that {first} and {last} are used like with |setline()|. Note that
when using |line()| this refers to the current buffer. Use "$" when using |line()| this refers to the current buffer. Use "$"
to refer to the last line in buffer {expr}. to refer to the last line in buffer {buf}.
Can also be used as a |method|: > Can also be used as a |method|: >
GetBuffer()->deletebufline(1) GetBuffer()->deletebufline(1)
@ -3840,21 +3841,21 @@ debugbreak({pid}) *debugbreak()*
Can also be used as a |method|: > Can also be used as a |method|: >
GetPid()->debugbreak() GetPid()->debugbreak()
expand({expr} [, {nosuf} [, {list}]]) *expand()* expand({string} [, {nosuf} [, {list}]]) *expand()*
Expand wildcards and the following special keywords in {expr}. Expand wildcards and the following special keywords in
'wildignorecase' applies. {string}. 'wildignorecase' applies.
If {list} is given and it is |TRUE|, a List will be returned. If {list} is given and it is |TRUE|, a List will be returned.
Otherwise the result is a String and when there are several Otherwise the result is a String and when there are several
matches, they are separated by <NL> characters. matches, they are separated by <NL> characters.
If the expansion fails, the result is an empty string. A name If the expansion fails, the result is an empty string. A name
for a non-existing file is not included, unless {expr} does for a non-existing file is not included, unless {string} does
not start with '%', '#' or '<', see below. not start with '%', '#' or '<', see below.
When {expr} starts with '%', '#' or '<', the expansion is done When {string} starts with '%', '#' or '<', the expansion is
like for the |cmdline-special| variables with their associated done like for the |cmdline-special| variables with their
modifiers. Here is a short overview: associated modifiers. Here is a short overview:
% current file name % current file name
# alternate file name # alternate file name
@ -3903,7 +3904,7 @@ expand({expr} [, {nosuf} [, {list}]]) *expand()*
buffer with no name, results in the current directory, with a buffer with no name, results in the current directory, with a
'/' added. '/' added.
When {expr} does not start with '%', '#' or '<', it is When {string} does not start with '%', '#' or '<', it is
expanded like a file name is expanded on the command line. expanded like a file name is expanded on the command line.
'suffixes' and 'wildignore' are used, unless the optional 'suffixes' and 'wildignore' are used, unless the optional
{nosuf} argument is given and it is |TRUE|. {nosuf} argument is given and it is |TRUE|.
@ -4374,7 +4375,7 @@ get({func}, {what})
"args" The list with arguments "args" The list with arguments
*getbufinfo()* *getbufinfo()*
getbufinfo([{expr}]) getbufinfo([{buf}])
getbufinfo([{dict}]) getbufinfo([{dict}])
Get information about buffers as a List of Dictionaries. Get information about buffers as a List of Dictionaries.
@ -4388,8 +4389,8 @@ getbufinfo([{dict}])
bufloaded include only loaded buffers. bufloaded include only loaded buffers.
bufmodified include only modified buffers. bufmodified include only modified buffers.
Otherwise, {expr} specifies a particular buffer to return Otherwise, {buf} specifies a particular buffer to return
information for. For the use of {expr}, see |bufname()| information for. For the use of {buf}, see |bufname()|
above. If the buffer is found the returned List has one item. above. If the buffer is found the returned List has one item.
Otherwise the result is an empty list. Otherwise the result is an empty list.
@ -4442,12 +4443,12 @@ getbufinfo([{dict}])
< <
*getbufline()* *getbufline()*
getbufline({expr}, {lnum} [, {end}]) getbufline({buf}, {lnum} [, {end}])
Return a |List| with the lines starting from {lnum} to {end} Return a |List| with the lines starting from {lnum} to {end}
(inclusive) in the buffer {expr}. If {end} is omitted, a (inclusive) in the buffer {buf}. If {end} is omitted, a
|List| with only the line {lnum} is returned. |List| with only the line {lnum} is returned.
For the use of {expr}, see |bufname()| above. For the use of {buf}, see |bufname()| above.
For {lnum} and {end} "$" can be used for the last line of the For {lnum} and {end} "$" can be used for the last line of the
buffer. Otherwise a number must be used. buffer. Otherwise a number must be used.
@ -4466,10 +4467,11 @@ getbufline({expr}, {lnum} [, {end}])
Example: > Example: >
:let lines = getbufline(bufnr("myfile"), 1, "$") :let lines = getbufline(bufnr("myfile"), 1, "$")
getbufvar({expr}, {varname} [, {def}]) *getbufvar()* getbufvar({buf}, {varname} [, {def}]) *getbufvar()*
The result is the value of option or local buffer variable The result is the value of option or local buffer variable
{varname} in buffer {expr}. Note that the name without "b:" {varname} in buffer {buf}. Note that the name without "b:"
must be used. must be used.
The {varname} argument is a string.
When {varname} is empty returns a |Dictionary| with all the When {varname} is empty returns a |Dictionary| with all the
buffer-local variables. buffer-local variables.
When {varname} is equal to "&" returns a |Dictionary| with all When {varname} is equal to "&" returns a |Dictionary| with all
@ -4479,16 +4481,16 @@ getbufvar({expr}, {varname} [, {def}]) *getbufvar()*
This also works for a global or buffer-local option, but it This also works for a global or buffer-local option, but it
doesn't work for a global variable, window-local variable or doesn't work for a global variable, window-local variable or
window-local option. window-local option.
For the use of {expr}, see |bufname()| above. For the use of {buf}, see |bufname()| above.
When the buffer or variable doesn't exist {def} or an empty When the buffer or variable doesn't exist {def} or an empty
string is returned, there is no error message. string is returned, there is no error message.
Examples: > Examples: >
:let bufmodified = getbufvar(1, "&mod") :let bufmodified = getbufvar(1, "&mod")
:echo "todo myvar = " . getbufvar("todo", "myvar") :echo "todo myvar = " . getbufvar("todo", "myvar")
< <
getchangelist({expr}) *getchangelist()* getchangelist({buf}) *getchangelist()*
Returns the |changelist| for the buffer {expr}. For the use Returns the |changelist| for the buffer {buf}. For the use
of {expr}, see |bufname()| above. If buffer {expr} doesn't of {buf}, see |bufname()| above. If buffer {buf} doesn't
exist, an empty list is returned. exist, an empty list is returned.
The returned list contains two entries: a list with the change The returned list contains two entries: a list with the change
@ -4498,7 +4500,7 @@ getchangelist({expr}) *getchangelist()*
col column number col column number
coladd column offset for 'virtualedit' coladd column offset for 'virtualedit'
lnum line number lnum line number
If buffer {expr} is the current buffer, then the current If buffer {buf} is the current buffer, then the current
position refers to the position in the list. For other position refers to the position in the list. For other
buffers, it is set to the length of the list. buffers, it is set to the length of the list.
@ -4654,9 +4656,9 @@ getcmdwintype() *getcmdwintype()*
when not in the command-line window. when not in the command-line window.
getcompletion({pat}, {type} [, {filtered}]) *getcompletion()* getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
Return a list of command-line completion matches. {type} Return a list of command-line completion matches. The String
specifies what for. The following completion types are {type} argument specifies what for. The following completion
supported: types are supported:
arglist file names in argument list arglist file names in argument list
augroup autocmd groups augroup autocmd groups
@ -4740,8 +4742,11 @@ getcwd([{winnr}[, {tabnr}]]) *getcwd()*
{winnr} can be the window number or the |window-ID|. {winnr} can be the window number or the |window-ID|.
getenv({name}) *getenv()* getenv({name}) *getenv()*
Return the value of environment variable {name}. Return the value of environment variable {name}. The {name}
When the variable does not exist |v:null| is returned. That argument is a string, without a leading '$'. Example: >
myHome = getenv('HOME')
< When the variable does not exist |v:null| is returned. That
is different from a variable set to an empty string. is different from a variable set to an empty string.
See also |expr-env|. See also |expr-env|.
@ -4749,8 +4754,8 @@ getfontname([{name}]) *getfontname()*
Without an argument returns the name of the normal font being Without an argument returns the name of the normal font being
used. Like what is used for the Normal highlight group used. Like what is used for the Normal highlight group
|hl-Normal|. |hl-Normal|.
With an argument a check is done whether {name} is a valid With an argument a check is done whether String {name} is a
font name. If not then an empty string is returned. valid font name. If not then an empty string is returned.
Otherwise the actual font name is returned, or {name} if the Otherwise the actual font name is returned, or {name} if the
GUI does not support obtaining the real name. GUI does not support obtaining the real name.
Only works when the GUI is running, thus not in your vimrc or Only works when the GUI is running, thus not in your vimrc or
@ -4879,12 +4884,12 @@ getloclist({nr},[, {what}]) *getloclist()*
:echo getloclist(5, {'filewinid': 0}) :echo getloclist(5, {'filewinid': 0})
getmarklist([{expr}]) *getmarklist()* getmarklist([{buf}]) *getmarklist()*
Without the {expr} argument returns a |List| with information Without the {buf} argument returns a |List| with information
about all the global marks. |mark| about all the global marks. |mark|
If the optional {expr} argument is specified, returns the If the optional {buf} argument is specified, returns the
local marks defined in buffer {expr}. For the use of {expr}, local marks defined in buffer {buf}. For the use of {buf},
see |bufname()|. see |bufname()|.
Each item in the returned List is a |Dict| with the following: Each item in the returned List is a |Dict| with the following:
@ -4926,8 +4931,8 @@ getpid() Return a Number which is the process ID of the Vim process.
This is a unique number, until Vim exits. This is a unique number, until Vim exits.
*getpos()* *getpos()*
getpos({expr}) Get the position for {expr}. For possible values of {expr} getpos({expr}) Get the position for String {expr}. For possible values of
see |line()|. For getting the cursor position see {expr} see |line()|. For getting the cursor position see
|getcurpos()|. |getcurpos()|.
The result is a |List| with four numbers: The result is a |List| with four numbers:
[bufnum, lnum, col, off] [bufnum, lnum, col, off]
@ -5053,6 +5058,7 @@ getreg([{regname} [, 1 [, {list}]]]) *getreg()*
{regname}. Example: > {regname}. Example: >
:let cliptext = getreg('*') :let cliptext = getreg('*')
< When {regname} was not set the result is an empty string. < When {regname} was not set the result is an empty string.
The {regname} argument is a string.
getreg('=') returns the last evaluated value of the expression getreg('=') returns the last evaluated value of the expression
register. (For use in maps.) register. (For use in maps.)
@ -5078,7 +5084,8 @@ getregtype([{regname}]) *getregtype()*
"<CTRL-V>{width}" for |blockwise-visual| text "<CTRL-V>{width}" for |blockwise-visual| text
"" for an empty or unknown register "" for an empty or unknown register
<CTRL-V> is one character with value 0x16. <CTRL-V> is one character with value 0x16.
If {regname} is not specified, |v:register| is used. The {regname} argument is a string. If {regname} is not
specified, |v:register| is used.
gettabinfo([{tabnr}]) *gettabinfo()* gettabinfo([{tabnr}]) *gettabinfo()*
If {tabnr} is not specified, then information about all the If {tabnr} is not specified, then information about all the
@ -5097,8 +5104,8 @@ gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()*
Get the value of a tab-local variable {varname} in tab page Get the value of a tab-local variable {varname} in tab page
{tabnr}. |t:var| {tabnr}. |t:var|
Tabs are numbered starting with one. Tabs are numbered starting with one.
When {varname} is empty a dictionary with all tab-local The {varname} argument is a string. When {varname} is empty a
variables is returned. dictionary with all tab-local variables is returned.
Note that the name without "t:" must be used. Note that the name without "t:" must be used.
When the tab or variable doesn't exist {def} or an empty When the tab or variable doesn't exist {def} or an empty
string is returned, there is no error message. string is returned, there is no error message.
@ -5106,8 +5113,8 @@ gettabvar({tabnr}, {varname} [, {def}]) *gettabvar()*
gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()* gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
Get the value of window-local variable {varname} in window Get the value of window-local variable {varname} in window
{winnr} in tab page {tabnr}. {winnr} in tab page {tabnr}.
When {varname} is empty a dictionary with all window-local The {varname} argument is a string. When {varname} is empty a
variables is returned. dictionary with all window-local variables is returned.
When {varname} is equal to "&" get the values of all When {varname} is equal to "&" get the values of all
window-local options in a |Dictionary|. window-local options in a |Dictionary|.
Otherwise, when {varname} starts with "&" get the value of a Otherwise, when {varname} starts with "&" get the value of a
@ -5262,22 +5269,22 @@ glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) *glob()*
See |expand()| for expanding special Vim variables. See See |expand()| for expanding special Vim variables. See
|system()| for getting the raw output of an external command. |system()| for getting the raw output of an external command.
glob2regpat({expr}) *glob2regpat()* glob2regpat({string}) *glob2regpat()*
Convert a file pattern, as used by glob(), into a search Convert a file pattern, as used by glob(), into a search
pattern. The result can be used to match with a string that pattern. The result can be used to match with a string that
is a file name. E.g. > is a file name. E.g. >
if filename =~ glob2regpat('Make*.mak') if filename =~ glob2regpat('Make*.mak')
< This is equivalent to: > < This is equivalent to: >
if filename =~ '^Make.*\.mak$' if filename =~ '^Make.*\.mak$'
< When {expr} is an empty string the result is "^$", match an < When {string} is an empty string the result is "^$", match an
empty string. empty string.
Note that the result depends on the system. On MS-Windows Note that the result depends on the system. On MS-Windows
a backslash usually means a path separator. a backslash usually means a path separator.
*globpath()* *globpath()*
globpath({path}, {expr} [, {nosuf} [, {list} [, {allinks}]]]) globpath({path}, {expr} [, {nosuf} [, {list} [, {allinks}]]])
Perform glob() on all directories in {path} and concatenate Perform glob() for String {expr} on all directories in {path}
the results. Example: > and concatenate the results. Example: >
:echo globpath(&rtp, "syntax/c.vim") :echo globpath(&rtp, "syntax/c.vim")
< <
{path} is a comma-separated list of directory names. Each {path} is a comma-separated list of directory names. Each
@ -5371,7 +5378,8 @@ has({feature}) Returns 1 if {feature} is supported, 0 otherwise. The
has_key({dict}, {key}) *has_key()* has_key({dict}, {key}) *has_key()*
The result is a Number, which is TRUE if |Dictionary| {dict} The result is a Number, which is TRUE if |Dictionary| {dict}
has an entry with key {key}. FALSE otherwise. has an entry with key {key}. FALSE otherwise. The {key}
argument is a string.
Can also be used as a |method|: > Can also be used as a |method|: >
mydict->has_key(key) mydict->has_key(key)
@ -5396,6 +5404,7 @@ hasmapto({what} [, {mode} [, {abbr}]]) *hasmapto()*
that contains {what} in somewhere in the rhs (what it is that contains {what} in somewhere in the rhs (what it is
mapped to) and this mapping exists in one of the modes mapped to) and this mapping exists in one of the modes
indicated by {mode}. indicated by {mode}.
The arguments {what} and {mode} are strings.
When {abbr} is there and it is |TRUE| use abbreviations When {abbr} is there and it is |TRUE| use abbreviations
instead of mappings. Don't forget to specify Insert and/or instead of mappings. Don't forget to specify Insert and/or
Command-line mode. Command-line mode.
@ -5516,8 +5525,8 @@ hostname() *hostname()*
which Vim is currently running. Machine names greater than which Vim is currently running. Machine names greater than
256 characters long are truncated. 256 characters long are truncated.
iconv({expr}, {from}, {to}) *iconv()* iconv({string}, {from}, {to}) *iconv()*
The result is a String, which is the text {expr} converted The result is a String, which is the text {string} converted
from encoding {from} to encoding {to}. from encoding {from} to encoding {to}.
When the conversion completely fails an empty string is When the conversion completely fails an empty string is
returned. When some characters could not be converted they returned. When some characters could not be converted they
@ -5762,8 +5771,9 @@ isinf({expr}) *isinf()*
islocked({expr}) *islocked()* *E786* islocked({expr}) *islocked()* *E786*
The result is a Number, which is |TRUE| when {expr} is the The result is a Number, which is |TRUE| when {expr} is the
name of a locked variable. name of a locked variable.
{expr} must be the name of a variable, |List| item or The string argument {expr} must be the name of a variable,
|Dictionary| entry, not the variable itself! Example: > |List| item or |Dictionary| entry, not the variable itself!
Example: >
:let alist = [0, ['a', 'b'], 2, 3] :let alist = [0, ['a', 'b'], 2, 3]
:lockvar 1 alist :lockvar 1 alist
:echo islocked('alist') " 1 :echo islocked('alist') " 1
@ -6036,7 +6046,8 @@ libcallnr({libname}, {funcname}, {argument})
< <
*line()* *line()*
line({expr}) The result is a Number, which is the line number of the file line({expr}) The result is a Number, which is the line number of the file
position given with {expr}. The accepted positions are: position given with {expr}. The {expr} argument is a string.
The accepted positions are:
. the cursor position . the cursor position
$ the last line in the current buffer $ the last line in the current buffer
'x position of mark x (if the mark is not set, 0 is 'x position of mark x (if the mark is not set, 0 is
@ -6767,8 +6778,8 @@ or({expr}, {expr}) *or()*
< Can also be used as a |method|: > < Can also be used as a |method|: >
:let bits = bits->or(0x80) :let bits = bits->or(0x80)
pathshorten({expr}) *pathshorten()* pathshorten({path}) *pathshorten()*
Shorten directory names in the path {expr} and return the Shorten directory names in the path {path} and return the
result. The tail, the file name, is kept as-is. The other result. The tail, the file name, is kept as-is. The other
components in the path are reduced to single letters. Leading components in the path are reduced to single letters. Leading
'~' and '.' characters are kept. Example: > '~' and '.' characters are kept. Example: >
@ -7267,6 +7278,7 @@ remote_expr({server}, {string} [, {idvar} [, {timeout}]])
remote_foreground({server}) *remote_foreground()* remote_foreground({server}) *remote_foreground()*
Move the Vim server with the name {server} to the foreground. Move the Vim server with the name {server} to the foreground.
The {server} argument is a string.
This works like: > This works like: >
remote_expr({server}, "foreground()") remote_expr({server}, "foreground()")
< Except that on Win32 systems the client does the work, to work < Except that on Win32 systems the client does the work, to work
@ -7889,8 +7901,8 @@ serverstop({address}) *serverstop()*
If |v:servername| is stopped it is set to the next available If |v:servername| is stopped it is set to the next available
address returned by |serverlist()|. address returned by |serverlist()|.
setbufline({expr}, {lnum}, {text}) *setbufline()* setbufline({buf}, {lnum}, {text}) *setbufline()*
Set line {lnum} to {text} in buffer {expr}. This works like Set line {lnum} to {text} in buffer {buf}. This works like
|setline()| for the specified buffer. |setline()| for the specified buffer.
This function works only for loaded buffers. First call This function works only for loaded buffers. First call
@ -7903,23 +7915,24 @@ setbufline({expr}, {lnum}, {text}) *setbufline()*
to set multiple lines. If the list extends below the last to set multiple lines. If the list extends below the last
line then those lines are added. line then those lines are added.
For the use of {expr}, see |bufname()| above. For the use of {buf}, see |bufname()| above.
{lnum} is used like with |setline()|. {lnum} is used like with |setline()|.
When {lnum} is just below the last line the {text} will be When {lnum} is just below the last line the {text} will be
added below the last line. added below the last line.
On success 0 is returned, on failure 1 is returned. On success 0 is returned, on failure 1 is returned.
If {expr} is not a valid buffer or {lnum} is not valid, an If {buf} is not a valid buffer or {lnum} is not valid, an
error message is given. error message is given.
setbufvar({expr}, {varname}, {val}) *setbufvar()* setbufvar({buf}, {varname}, {val}) *setbufvar()*
Set option or local variable {varname} in buffer {expr} to Set option or local variable {varname} in buffer {buf} to
{val}. {val}.
This also works for a global or local window option, but it This also works for a global or local window option, but it
doesn't work for a global or local window variable. doesn't work for a global or local window variable.
For a local window option the global value is unchanged. For a local window option the global value is unchanged.
For the use of {expr}, see |bufname()| above. For the use of {buf}, see |bufname()| above.
The {varname} argument is a string.
Note that the variable name without "b:" must be used. Note that the variable name without "b:" must be used.
Examples: > Examples: >
:call setbufvar(1, "&mod", 1) :call setbufvar(1, "&mod", 1)
@ -7962,8 +7975,10 @@ setcmdpos({pos}) *setcmdpos()*
command line. command line.
setenv({name}, {val}) *setenv()* setenv({name}, {val}) *setenv()*
Set environment variable {name} to {val}. Set environment variable {name} to {val}. Example: >
When {val} is |v:null| the environment variable is deleted. call setenv('HOME', '/home/myhome')
< When {val} is |v:null| the environment variable is deleted.
See also |expr-env|. See also |expr-env|.
setfperm({fname}, {mode}) *setfperm()* *chmod* setfperm({fname}, {mode}) *setfperm()* *chmod*
@ -8034,7 +8049,7 @@ setmatches({list} [, {win}]) *setmatches()*
*setpos()* *setpos()*
setpos({expr}, {list}) setpos({expr}, {list})
Set the position for {expr}. Possible values: Set the position for String {expr}. Possible values:
. the cursor . the cursor
'x mark x 'x mark x
@ -8195,6 +8210,7 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
*setreg()* *setreg()*
setreg({regname}, {value} [, {options}]) setreg({regname}, {value} [, {options}])
Set the register {regname} to {value}. Set the register {regname} to {value}.
The {regname} argument is a string.
{value} may be any value returned by |getreg()|, including {value} may be any value returned by |getreg()|, including
a |List|. a |List|.
@ -8246,6 +8262,7 @@ setreg({regname}, {value} [, {options}])
settabvar({tabnr}, {varname}, {val}) *settabvar()* settabvar({tabnr}, {varname}, {val}) *settabvar()*
Set tab-local variable {varname} to {val} in tab page {tabnr}. Set tab-local variable {varname} to {val} in tab page {tabnr}.
|t:var| |t:var|
The {varname} argument is a string.
Note that the variable name without "t:" must be used. Note that the variable name without "t:" must be used.
Tabs are numbered starting with one. Tabs are numbered starting with one.
This function is not available in the |sandbox|. This function is not available in the |sandbox|.
@ -8495,12 +8512,14 @@ sort({list} [, {func} [, {dict}]]) *sort()* *E702*
func MyCompare(i1, i2) func MyCompare(i1, i2)
return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1 return a:i1 == a:i2 ? 0 : a:i1 > a:i2 ? 1 : -1
endfunc endfunc
let sortedlist = sort(mylist, "MyCompare") eval mylist->sort("MyCompare")
< A shorter compare version for this specific simple case, which < A shorter compare version for this specific simple case, which
ignores overflow: > ignores overflow: >
func MyCompare(i1, i2) func MyCompare(i1, i2)
return a:i1 - a:i2 return a:i1 - a:i2
endfunc endfunc
< For a simple expression you can use a lambda: >
eval mylist->sort({i1, i2 -> i1 - i2})
< <
*soundfold()* *soundfold()*
soundfold({word}) soundfold({word})
@ -8559,8 +8578,8 @@ spellsuggest({word} [, {max} [, {capital}]])
values of 'spelllang' and 'spellsuggest' are used. values of 'spelllang' and 'spellsuggest' are used.
split({expr} [, {pattern} [, {keepempty}]]) *split()* split({string} [, {pattern} [, {keepempty}]]) *split()*
Make a |List| out of {expr}. When {pattern} is omitted or Make a |List| out of {string}. When {pattern} is omitted or
empty each white-separated sequence of characters becomes an empty each white-separated sequence of characters becomes an
item. item.
Otherwise the string is split where {pattern} matches, Otherwise the string is split where {pattern} matches,
@ -8637,13 +8656,16 @@ stdpath({what}) *stdpath()* *E6100*
:echo stdpath("config") :echo stdpath("config")
str2float({expr}) *str2float()* str2float({string} [, {quoted}]) *str2float()*
Convert String {expr} to a Float. This mostly works the same Convert String {string} to a Float. This mostly works the
as when using a floating point number in an expression, see same as when using a floating point number in an expression,
|floating-point-format|. But it's a bit more permissive. see |floating-point-format|. But it's a bit more permissive.
E.g., "1e40" is accepted, while in an expression you need to E.g., "1e40" is accepted, while in an expression you need to
write "1.0e40". The hexadecimal form "0x123" is also write "1.0e40". The hexadecimal form "0x123" is also
accepted, but not others, like binary or octal. accepted, but not others, like binary or octal.
When {quoted} is present and non-zero then embedded single
quotes before the dot are ignored, thus "1'000.0" is a
thousand.
Text after the number is silently ignored. Text after the number is silently ignored.
The decimal point is always '.', no matter what the locale is The decimal point is always '.', no matter what the locale is
set to. A comma ends the number: "12,345.67" is converted to set to. A comma ends the number: "12,345.67" is converted to
@ -8654,9 +8676,9 @@ str2float({expr}) *str2float()*
Can also be used as a |method|: > Can also be used as a |method|: >
let f = text->substitute(',', '', 'g')->str2float() let f = text->substitute(',', '', 'g')->str2float()
str2list({expr} [, {utf8}]) *str2list()* str2list({string} [, {utf8}]) *str2list()*
Return a list containing the number values which represent Return a list containing the number values which represent
each character in String {expr}. Examples: > each character in String {string}. Examples: >
str2list(" ") returns [32] str2list(" ") returns [32]
str2list("ABC") returns [65, 66, 67] str2list("ABC") returns [65, 66, 67]
< |list2str()| does the opposite. < |list2str()| does the opposite.
@ -8670,8 +8692,8 @@ str2list({expr} [, {utf8}]) *str2list()*
< Can also be used as a |method|: > < Can also be used as a |method|: >
GetString()->str2list() GetString()->str2list()
str2nr({expr} [, {base} [, {quoted}]]) *str2nr()* str2nr({string} [, {base}]) *str2nr()*
Convert string {expr} to a number. Convert string {string} to a number.
{base} is the conversion base, it can be 2, 8, 10 or 16. {base} is the conversion base, it can be 2, 8, 10 or 16.
When {quoted} is present and non-zero then embedded single When {quoted} is present and non-zero then embedded single
quotes are ignored, thus "1'000'000" is a million. quotes are ignored, thus "1'000'000" is a million.
@ -8688,9 +8710,9 @@ str2nr({expr} [, {base} [, {quoted}]]) *str2nr()*
Text after the number is silently ignored. Text after the number is silently ignored.
strchars({expr} [, {skipcc}]) *strchars()* strchars({string} [, {skipcc}]) *strchars()*
The result is a Number, which is the number of characters The result is a Number, which is the number of characters
in String {expr}. in String {string}.
When {skipcc} is omitted or zero, composing characters are When {skipcc} is omitted or zero, composing characters are
counted separately. counted separately.
When {skipcc} set to 1, Composing characters are ignored. When {skipcc} set to 1, Composing characters are ignored.
@ -8721,16 +8743,16 @@ strcharpart({src}, {start} [, {len}]) *strcharpart()*
strcharpart('abc', -1, 2) strcharpart('abc', -1, 2)
< results in 'a'. < results in 'a'.
strdisplaywidth({expr} [, {col}]) *strdisplaywidth()* strdisplaywidth({string} [, {col}]) *strdisplaywidth()*
The result is a Number, which is the number of display cells The result is a Number, which is the number of display cells
String {expr} occupies on the screen when it starts at {col} String {string} occupies on the screen when it starts at {col}
(first column is zero). When {col} is omitted zero is used. (first column is zero). When {col} is omitted zero is used.
Otherwise it is the screen column where to start. This Otherwise it is the screen column where to start. This
matters for Tab characters. matters for Tab characters.
The option settings of the current window are used. This The option settings of the current window are used. This
matters for anything that's displayed differently, such as matters for anything that's displayed differently, such as
'tabstop' and 'display'. 'tabstop' and 'display'.
When {expr} contains characters with East Asian Width Class When {string} contains characters with East Asian Width Class
Ambiguous, this function's return value depends on 'ambiwidth'. Ambiguous, this function's return value depends on 'ambiwidth'.
Also see |strlen()|, |strwidth()| and |strchars()|. Also see |strlen()|, |strwidth()| and |strchars()|.
@ -8802,9 +8824,9 @@ string({expr}) Return {expr} converted to a String. If {expr} is a Number,
Can also be used as a |method|: > Can also be used as a |method|: >
mylist->string() mylist->string()
*strlen()* strlen({string}) *strlen()*
strlen({expr}) The result is a Number, which is the length of the String The result is a Number, which is the length of the String
{expr} in bytes. {string} in bytes.
If the argument is a Number it is first converted to a String. If the argument is a Number it is first converted to a String.
For other types an error is given. For other types an error is given.
If you want to count the number of multibyte characters use If you want to count the number of multibyte characters use
@ -8880,8 +8902,8 @@ strridx({haystack}, {needle} [, {start}]) *strridx()*
When used with a single character it works similar to the C When used with a single character it works similar to the C
function strrchr(). function strrchr().
strtrans({expr}) *strtrans()* strtrans({string}) *strtrans()*
The result is a String, which is {expr} with all unprintable The result is a String, which is {string} with all unprintable
characters translated into printable characters |'isprint'|. characters translated into printable characters |'isprint'|.
Like they are shown in a window. Example: > Like they are shown in a window. Example: >
echo strtrans(@a) echo strtrans(@a)
@ -8891,11 +8913,11 @@ strtrans({expr}) *strtrans()*
Can also be used as a |method|: > Can also be used as a |method|: >
GetString()->strtrans() GetString()->strtrans()
strwidth({expr}) *strwidth()* strwidth({string}) *strwidth()*
The result is a Number, which is the number of display cells The result is a Number, which is the number of display cells
String {expr} occupies. A Tab character is counted as one String {string} occupies. A Tab character is counted as one
cell, alternatively use |strdisplaywidth()|. cell, alternatively use |strdisplaywidth()|.
When {expr} contains characters with East Asian Width Class When {string} contains characters with East Asian Width Class
Ambiguous, this function's return value depends on 'ambiwidth'. Ambiguous, this function's return value depends on 'ambiwidth'.
Also see |strlen()|, |strdisplaywidth()| and |strchars()|. Also see |strlen()|, |strdisplaywidth()| and |strchars()|.
@ -8928,10 +8950,10 @@ submatch({nr} [, {list}]) *submatch()* *E935*
< This finds the first number in the line and adds one to it. < This finds the first number in the line and adds one to it.
A line break is included as a newline character. A line break is included as a newline character.
substitute({expr}, {pat}, {sub}, {flags}) *substitute()* substitute({string}, {pat}, {sub}, {flags}) *substitute()*
The result is a String, which is a copy of {expr}, in which The result is a String, which is a copy of {string}, in which
the first match of {pat} is replaced with {sub}. the first match of {pat} is replaced with {sub}.
When {flags} is "g", all matches of {pat} in {expr} are When {flags} is "g", all matches of {pat} in {string} are
replaced. Otherwise {flags} should be "". replaced. Otherwise {flags} should be "".
This works like the ":substitute" command (without any flags). This works like the ":substitute" command (without any flags).
@ -8947,7 +8969,7 @@ substitute({expr}, {pat}, {sub}, {flags}) *substitute()*
|sub-replace-special|. For example, to replace something with |sub-replace-special|. For example, to replace something with
"\n" (two characters), use "\\\\n" or '\\n'. "\n" (two characters), use "\\\\n" or '\\n'.
When {pat} does not match in {expr}, {expr} is returned When {pat} does not match in {string}, {string} is returned
unmodified. unmodified.
Example: > Example: >
@ -8990,12 +9012,12 @@ swapinfo({fname}) *swapinfo()*
Not a swap file: does not contain correct block ID Not a swap file: does not contain correct block ID
Magic number mismatch: Info in first block is invalid Magic number mismatch: Info in first block is invalid
swapname({expr}) *swapname()* swapname({buf}) *swapname()*
The result is the swap file path of the buffer {expr}. The result is the swap file path of the buffer {buf}.
For the use of {expr}, see |bufname()| above. For the use of {buf}, see |bufname()| above.
If buffer {expr} is the current buffer, the result is equal to If buffer {buf} is the current buffer, the result is equal to
|:swapname| (unless there is no swap file). |:swapname| (unless there is no swap file).
If buffer {expr} has no swap file, returns an empty string. If buffer {buf} has no swap file, returns an empty string.
synID({lnum}, {col}, {trans}) *synID()* synID({lnum}, {col}, {trans}) *synID()*
The result is a Number, which is the syntax ID at the position The result is a Number, which is the syntax ID at the position

View File

@ -1133,7 +1133,7 @@ match to the total list. These matches should then not appear in the returned
list! Call |complete_check()| now and then to allow the user to press a key list! Call |complete_check()| now and then to allow the user to press a key
while still searching for matches. Stop searching when it returns non-zero. while still searching for matches. Stop searching when it returns non-zero.
*E839* *E840* *E840*
The function is allowed to move the cursor, it is restored afterwards. The function is allowed to move the cursor, it is restored afterwards.
The function is not allowed to move to another window or delete text. The function is not allowed to move to another window or delete text.

View File

@ -321,6 +321,34 @@ Other commands ~
isn't one isn't one
Events ~
*termdebug-events*
Four autocommands can be used: >
au User TermdebugStartPre echomsg 'debugging starting'
au User TermdebugStartPost echomsg 'debugging started'
au User TermdebugStopPre echomsg 'debugging stopping'
au User TermdebugStopPost echomsg 'debugging stopped'
<
*TermdebugStartPre*
TermdebugStartPre Before starting debugging.
Not triggered if the debugger is already
running or |g:termdebugger| cannot be
executed.
*TermdebugStartPost*
TermdebugStartPost After debugging has initialized.
If a "!" bang is passed to `:Termdebug` or
`:TermdebugCommand` the event is triggered
before running the provided command in gdb.
*TermdebugStopPre*
TermdebugStopPre Before debugging ends, when gdb is terminated,
most likely after issuing a "quit" command in
the gdb window.
*TermdebugStopPost*
TermdebugStopPost After debugging has ended, gdb-related windows
are closed, debug buffers wiped out and
the state before the debugging was restored.
Prompt mode ~ Prompt mode ~
*termdebug-prompt* *termdebug-prompt*
When on MS-Windows, gdb will run in a buffer with 'buftype' set to "prompt". When on MS-Windows, gdb will run in a buffer with 'buftype' set to "prompt".

View File

@ -435,13 +435,13 @@ sign_getdefined([{name}]) *sign_getdefined()*
" Get the attribute of the sign named mySign " Get the attribute of the sign named mySign
echo sign_getdefined("mySign") echo sign_getdefined("mySign")
< <
sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()* sign_getplaced([{buf} [, {dict}]]) *sign_getplaced()*
Return a list of signs placed in a buffer or all the buffers. Return a list of signs placed in a buffer or all the buffers.
This is similar to the |:sign-place-list| command. This is similar to the |:sign-place-list| command.
If the optional buffer name {expr} is specified, then only the If the optional buffer name {buf} is specified, then only the
list of signs placed in that buffer is returned. For the use list of signs placed in that buffer is returned. For the use
of {expr}, see |bufname()|. The optional {dict} can contain of {buf}, see |bufname()|. The optional {dict} can contain
the following entries: the following entries:
group select only signs in this group group select only signs in this group
id select sign with this identifier id select sign with this identifier
@ -496,12 +496,12 @@ sign_getplaced([{expr} [, {dict}]]) *sign_getplaced()*
echo sign_getplaced() echo sign_getplaced()
< <
*sign_jump()* *sign_jump()*
sign_jump({id}, {group}, {expr}) sign_jump({id}, {group}, {buf})
Open the buffer {expr} or jump to the window that contains Open the buffer {buf} or jump to the window that contains
{expr} and position the cursor at sign {id} in group {group}. {buf} and position the cursor at sign {id} in group {group}.
This is similar to the |:sign-jump| command. This is similar to the |:sign-jump| command.
For the use of {expr}, see |bufname()|. For the use of {buf}, see |bufname()|.
Returns the line number of the sign. Returns -1 if the Returns the line number of the sign. Returns -1 if the
arguments are invalid. arguments are invalid.
@ -512,9 +512,9 @@ sign_jump({id}, {group}, {expr})
< <
*sign_place()* *sign_place()*
sign_place({id}, {group}, {name}, {expr} [, {dict}]) sign_place({id}, {group}, {name}, {buf} [, {dict}])
Place the sign defined as {name} at line {lnum} in file or Place the sign defined as {name} at line {lnum} in file or
buffer {expr} and assign {id} and {group} to sign. This is buffer {buf} and assign {id} and {group} to sign. This is
similar to the |:sign-place| command. similar to the |:sign-place| command.
If the sign identifier {id} is zero, then a new identifier is If the sign identifier {id} is zero, then a new identifier is
@ -525,12 +525,12 @@ sign_place({id}, {group}, {name}, {expr} [, {dict}])
and |sign-group| for more information. and |sign-group| for more information.
{name} refers to a defined sign. {name} refers to a defined sign.
{expr} refers to a buffer name or number. For the accepted {buf} refers to a buffer name or number. For the accepted
values, see |bufname()|. values, see |bufname()|.
The optional {dict} argument supports the following entries: The optional {dict} argument supports the following entries:
lnum line number in the file or buffer lnum line number in the file or buffer
{expr} where the sign is to be placed. {buf} where the sign is to be placed.
For the accepted values, see |line()|. For the accepted values, see |line()|.
priority priority of the sign. See priority priority of the sign. See
|sign-priority| for more information. |sign-priority| for more information.
@ -578,7 +578,7 @@ sign_placelist({list})
then a new unique identifier is allocated. then a new unique identifier is allocated.
Otherwise the specified number is used. See Otherwise the specified number is used. See
|sign-identifier| for more information. |sign-identifier| for more information.
lnum line number in the buffer {expr} where the lnum line number in the buffer {buf} where the
sign is to be placed. For the accepted values, sign is to be placed. For the accepted values,
see |line()|. see |line()|.
name name of the sign to place. See |sign_define()| name name of the sign to place. See |sign_define()|

View File

@ -177,7 +177,7 @@ assert_notmatch({pattern}, {actual} [, {msg}])
assert_report({msg}) *assert_report()* assert_report({msg}) *assert_report()*
Report a test failure directly, using {msg}. Report a test failure directly, using String {msg}.
Always returns one. Always returns one.
Can also be used as a |method|: > Can also be used as a |method|: >

View File

@ -2,6 +2,7 @@
" Last Change: 2018-03-05 " Last Change: 2018-03-05
" Author: Evan Hanson <evhan@foldling.org> " Author: Evan Hanson <evhan@foldling.org>
" Maintainer: Evan Hanson <evhan@foldling.org> " Maintainer: Evan Hanson <evhan@foldling.org>
" Repository: https://git.foldling.org/vim-scheme.git
" URL: https://foldling.org/vim/ftplugin/chicken.vim " URL: https://foldling.org/vim/ftplugin/chicken.vim
" Notes: These are supplemental settings, to be loaded after the core " Notes: These are supplemental settings, to be loaded after the core
" Scheme ftplugin file (ftplugin/scheme.vim). Enable it by setting " Scheme ftplugin file (ftplugin/scheme.vim). Enable it by setting

View File

@ -0,0 +1,26 @@
" scdoc filetype plugin
" Maintainer: Gregory Anders <greg@gpanders.com>
" Last Updated: 2021-08-04
" Only do this when not done yet for this buffer
if exists('b:did_ftplugin')
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
setlocal comments=b:;
setlocal commentstring=;%s
setlocal formatoptions+=t
setlocal noexpandtab
setlocal shiftwidth=0
setlocal softtabstop=0
setlocal textwidth=80
let b:undo_ftplugin = 'setl com< cms< fo< et< sw< sts< tw<'
if has('conceal')
setlocal conceallevel=2
let b:undo_ftplugin .= ' cole<'
endif

View File

@ -1,9 +1,10 @@
" Vim filetype plugin file " Vim filetype plugin file
" Language: Scheme (R7RS) " Language: Scheme (R7RS)
" Last Change: 2019 Nov 18 " Last Change: 2019-11-19
" Author: Evan Hanson <evhan@foldling.org> " Author: Evan Hanson <evhan@foldling.org>
" Maintainer: Evan Hanson <evhan@foldling.org> " Maintainer: Evan Hanson <evhan@foldling.org>
" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com> " Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
" Repository: https://git.foldling.org/vim-scheme.git
" URL: https://foldling.org/vim/ftplugin/scheme.vim " URL: https://foldling.org/vim/ftplugin/scheme.vim
if exists('b:did_ftplugin') if exists('b:did_ftplugin')
@ -48,7 +49,7 @@ let b:undo_ftplugin = b:undo_ftplugin . ' lispwords<'
let b:did_scheme_ftplugin = 1 let b:did_scheme_ftplugin = 1
if exists('b:is_chicken') || exists('g:is_chicken') if exists('b:is_chicken') || exists('g:is_chicken')
exe 'ru! ftplugin/chicken.vim' runtime! ftplugin/chicken.vim
endif endif
unlet b:did_scheme_ftplugin unlet b:did_scheme_ftplugin

View File

@ -2,7 +2,7 @@
" Language: YAML " Language: YAML
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com> " Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
" Last Update: Lukas Reineke " Last Update: Lukas Reineke
" Last Change: 2021 Jan 19 " Last Change: 2021 Aug 13
" Only load this indent file when no other was loaded. " Only load this indent file when no other was loaded.
if exists('b:did_indent') if exists('b:did_indent')

View File

@ -2,7 +2,7 @@
" "
" Author: Bram Moolenaar " Author: Bram Moolenaar
" Copyright: Vim license applies, see ":help license" " Copyright: Vim license applies, see ":help license"
" Last Change: 2021 May 18 " Last Change: 2021 Aug 06
" "
" WORK IN PROGRESS - Only the basics work " WORK IN PROGRESS - Only the basics work
" Note: On MS-Windows you need a recent version of gdb. The one included with " Note: On MS-Windows you need a recent version of gdb. The one included with
@ -127,6 +127,10 @@ func s:StartDebug_internal(dict)
let s:pid = 0 let s:pid = 0
let s:asmwin = 0 let s:asmwin = 0
if exists('#User#TermdebugStartPre')
doauto <nomodeline> User TermdebugStartPre
endif
" Uncomment this line to write logging in "debuglog". " Uncomment this line to write logging in "debuglog".
" call ch_logfile('debuglog', 'w') " call ch_logfile('debuglog', 'w')
@ -173,6 +177,10 @@ func s:StartDebug_internal(dict)
call win_gotoid(curwinid) call win_gotoid(curwinid)
endif endif
endif endif
if exists('#User#TermdebugStartPost')
doauto <nomodeline> User TermdebugStartPost
endif
endfunc endfunc
" Use when debugger didn't start or ended. " Use when debugger didn't start or ended.
@ -623,6 +631,10 @@ func s:GetAsmAddr(msg)
endfunc endfunc
function s:EndTermDebug(job_id, exit_code, event) function s:EndTermDebug(job_id, exit_code, event)
if exists('#User#TermdebugStopPre')
doauto <nomodeline> User TermdebugStopPre
endif
unlet s:gdbwin unlet s:gdbwin
call s:EndDebugCommon() call s:EndDebugCommon()
@ -657,10 +669,18 @@ func s:EndDebugCommon()
let &columns = s:save_columns let &columns = s:save_columns
endif endif
if exists('#User#TermdebugStopPost')
doauto <nomodeline> User TermdebugStopPost
endif
au! TermDebug au! TermDebug
endfunc endfunc
func s:EndPromptDebug(job_id, exit_code, event) func s:EndPromptDebug(job_id, exit_code, event)
if exists('#User#TermdebugStopPre')
doauto <nomodeline> User TermdebugStopPre
endif
let curwinid = win_getid(winnr()) let curwinid = win_getid(winnr())
call win_gotoid(s:gdbwin) call win_gotoid(s:gdbwin)
close close

View File

@ -1,8 +1,9 @@
" Vim syntax file " Vim syntax file
" Language: Scheme (CHICKEN) " Language: Scheme (CHICKEN)
" Last Change: 2018-02-05 " Last Change: 2021 Jul 30
" Author: Evan Hanson <evhan@foldling.org> " Author: Evan Hanson <evhan@foldling.org>
" Maintainer: Evan Hanson <evhan@foldling.org> " Maintainer: Evan Hanson <evhan@foldling.org>
" Repository: https://git.foldling.org/vim-scheme.git
" URL: https://foldling.org/vim/syntax/chicken.vim " URL: https://foldling.org/vim/syntax/chicken.vim
" Notes: This is supplemental syntax, to be loaded after the core Scheme " Notes: This is supplemental syntax, to be loaded after the core Scheme
" syntax file (syntax/scheme.vim). Enable it by setting b:is_chicken=1 " syntax file (syntax/scheme.vim). Enable it by setting b:is_chicken=1
@ -36,9 +37,23 @@ if len(s:c)
syn region c matchgroup=schemeComment start=/#>/ end=/<#/ contains=@c syn region c matchgroup=schemeComment start=/#>/ end=/<#/ contains=@c
endif endif
# SRFI 26
syn match schemeSyntax /\(([ \t\n]*\)\@<=\(cut\|cute\)\>/
syn keyword schemeSyntax and-let*
syn keyword schemeSyntax define-record syn keyword schemeSyntax define-record
syn keyword schemeSyntax set!-values
syn keyword schemeSyntax fluid-let
syn keyword schemeSyntax let-optionals
syn keyword schemeSyntax let-optionals*
syn keyword schemeSyntax letrec-values
syn keyword schemeSyntax nth-value
syn keyword schemeSyntax receive
syn keyword schemeLibrarySyntax declare syn keyword schemeLibrarySyntax declare
syn keyword schemeLibrarySyntax define-interface
syn keyword schemeLibrarySyntax functor
syn keyword schemeLibrarySyntax include-relative
syn keyword schemeLibrarySyntax module syn keyword schemeLibrarySyntax module
syn keyword schemeLibrarySyntax reexport syn keyword schemeLibrarySyntax reexport
syn keyword schemeLibrarySyntax require-library syn keyword schemeLibrarySyntax require-library
@ -52,10 +67,12 @@ syn keyword schemeTypeSyntax define-specialization
syn keyword schemeTypeSyntax define-type syn keyword schemeTypeSyntax define-type
syn keyword schemeTypeSyntax the syn keyword schemeTypeSyntax the
syn keyword schemeExtraSyntax and-let*
syn keyword schemeExtraSyntax match syn keyword schemeExtraSyntax match
syn keyword schemeExtraSyntax match-lambda syn keyword schemeExtraSyntax match-lambda
syn keyword schemeExtraSyntax match-lambda* syn keyword schemeExtraSyntax match-lambda*
syn keyword schemeExtraSyntax match-let
syn keyword schemeExtraSyntax match-let*
syn keyword schemeExtraSyntax match-letrec
syn keyword schemeSpecialSyntax define-compiler-syntax syn keyword schemeSpecialSyntax define-compiler-syntax
syn keyword schemeSpecialSyntax define-constant syn keyword schemeSpecialSyntax define-constant

View File

@ -3,7 +3,7 @@
" Maintainer: Debian Vim Maintainers " Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org> " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org> " Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2020 Nov 28 " Last Change: 2021 Aug 03
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
" Standard syntax initialization " Standard syntax initialization
@ -24,7 +24,7 @@ let s:supported = [
\ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm', \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
\ 'trixie', 'sid', 'rc-buggy', \ 'trixie', 'sid', 'rc-buggy',
\ \
\ 'trusty', 'xenial', 'bionic', 'focal', 'groovy', 'hirsute', 'devel' \ 'trusty', 'xenial', 'bionic', 'focal', 'hirsute', 'impish', 'devel'
\ ] \ ]
let s:unsupported = [ let s:unsupported = [
\ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', \ 'frozen', 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
@ -34,7 +34,7 @@ let s:unsupported = [
\ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid', \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
\ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy', \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
\ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic', \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
\ 'disco', 'eoan' \ 'disco', 'eoan', 'groovy'
\ ] \ ]
let &cpo=s:cpo let &cpo=s:cpo

View File

@ -2,7 +2,7 @@
" Language: Debian sources.list " Language: Debian sources.list
" Maintainer: Debian Vim Maintainers " Maintainer: Debian Vim Maintainers
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl> " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
" Last Change: 2020 Nov 28 " Last Change: 2021 Aug 03
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
" Standard syntax initialization " Standard syntax initialization
@ -26,7 +26,7 @@ let s:supported = [
\ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm', \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm',
\ 'trixie', 'sid', 'rc-buggy', \ 'trixie', 'sid', 'rc-buggy',
\ \
\ 'trusty', 'xenial', 'bionic', 'focal', 'groovy', 'hirsute', 'devel' \ 'trusty', 'xenial', 'bionic', 'focal', 'hirsute', 'impish', 'devel'
\ ] \ ]
let s:unsupported = [ let s:unsupported = [
\ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', \ 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato',
@ -36,7 +36,7 @@ let s:unsupported = [
\ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid', \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid',
\ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy', \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy',
\ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic', \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic',
\ 'disco', 'eoan' \ 'disco', 'eoan', 'groovy'
\ ] \ ]
let &cpo=s:cpo let &cpo=s:cpo

View File

@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: ReDIF " Language: ReDIF
" Maintainer: Axel Castellane <axel.castellane@polytechnique.edu> " Maintainer: Axel Castellane <axel.castellane@polytechnique.edu>
" Last Change: 2013 April 17 " Last Change: 2021 Jul 28
" Original Author: Axel Castellane " Original Author: Axel Castellane
" Source: http://openlib.org/acmes/root/docu/redif_1.html " Source: http://openlib.org/acmes/root/docu/redif_1.html
" File Extension: rdf " File Extension: rdf
@ -932,7 +932,7 @@ highlight redifFieldDeprecated term=undercurl cterm=undercurl gui=undercurl guis
" Sync: The template-type (ReDIF-Paper, ReDIF-Archive, etc.) influences which " Sync: The template-type (ReDIF-Paper, ReDIF-Archive, etc.) influences which
" fields can follow. Thus sync must search backwards for it. " fields can follow. Thus sync must search backwards for it.
" "
" I would like to simply ask VIM to search backward for the first occurence of " I would like to simply ask VIM to search backward for the first occurrence of
" /^Template-Type:/, but it does not seem to be possible, so I have to start " /^Template-Type:/, but it does not seem to be possible, so I have to start
" from the beginning of the file... This might slow down a lot for files that " from the beginning of the file... This might slow down a lot for files that
" contain a lot of Template-Type statements. " contain a lot of Template-Type statements.

52
runtime/syntax/scdoc.vim Normal file
View File

@ -0,0 +1,52 @@
" Syntax file for scdoc files
" Maintainer: Gregory Anders <greg@gpanders.com>
" Last Updated: 2021-08-04
if exists('b:current_syntax')
finish
endif
let b:current_syntax = 'scdoc'
syntax match scdocFirstLineError "\%^.*$"
syntax match scdocFirstLineValid "\%^\S\+(\d[0-9A-Za-z]*)\%(\s\+\"[^"]*\"\%(\s\+\"[^"]*\"\)\=\)\=$"
syntax region scdocCommentError start="^;\S" end="$" keepend
syntax region scdocComment start="^; " end="$" keepend
syntax region scdocHeaderError start="^#\{3,}" end="$" keepend
syntax region scdocHeader start="^#\{1,2}" end="$" keepend
syntax match scdocIndentError "^[ ]\+"
syntax match scdocLineBreak "++$"
syntax match scdocOrderedListMarker "^\s*\.\%(\s\+\S\)\@="
syntax match scdocListMarker "^\s*-\%(\s\+\S\)\@="
syntax match scdocTableStartMarker "^[\[|\]][\[\-\]]"
syntax match scdocTableMarker "^[|:][\[\-\] ]"
syntax region scdocBold concealends matchgroup=scdocBoldDelimiter start="\\\@<!\*" end="\\\@<!\*"
syntax region scdocUnderline concealends matchgroup=scdocUnderlineDelimiter start="\<\\\@<!_" end="\\\@<!_\>"
syntax region scdocPre matchgroup=scdocPreDelimiter start="^\t*```" end="^\t*```"
hi link scdocFirstLineValid Comment
hi link scdocComment Comment
hi link scdocHeader Title
hi link scdocOrderedListMarker Statement
hi link scdocListMarker scdocOrderedListMarker
hi link scdocLineBreak Special
hi link scdocTableMarker Statement
hi link scdocTableStartMarker scdocTableMarker
hi link scdocFirstLineError Error
hi link scdocCommentError Error
hi link scdocHeaderError Error
hi link scdocIndentError Error
hi link scdocPreDelimiter Delimiter
hi scdocBold term=bold cterm=bold gui=bold
hi scdocUnderline term=underline cterm=underline gui=underline
hi link scdocBoldDelimiter scdocBold
hi link scdocUnderlineDelimiter scdocUnderline

View File

@ -1,10 +1,11 @@
" Vim syntax file " Vim syntax file
" Language: Scheme (R7RS) " Language: Scheme (R7RS)
" Last Change: 2018-01-06 " Last Change: 2021-01-03
" Author: Evan Hanson <evhan@foldling.org> " Author: Evan Hanson <evhan@foldling.org>
" Maintainer: Evan Hanson <evhan@foldling.org> " Maintainer: Evan Hanson <evhan@foldling.org>
" Previous Author: Dirk van Deun <dirk@igwe.vub.ac.be> " Previous Author: Dirk van Deun <dirk@igwe.vub.ac.be>
" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com> " Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com>
" Repository: https://git.foldling.org/vim-scheme.git
" URL: https://foldling.org/vim/syntax/scheme.vim " URL: https://foldling.org/vim/syntax/scheme.vim
if exists('b:current_syntax') if exists('b:current_syntax')
@ -14,6 +15,8 @@ endif
let s:cpo = &cpo let s:cpo = &cpo
set cpo&vim set cpo&vim
syn spell notoplevel
syn match schemeParentheses "[^ '`\t\n()\[\]";]\+" syn match schemeParentheses "[^ '`\t\n()\[\]";]\+"
syn match schemeParentheses "[)\]]" syn match schemeParentheses "[)\]]"
@ -35,7 +38,7 @@ syn region schemeUnquote matchgroup=schemeParentheses start=/,@(/ end=/)/ contai
syn region schemeQuoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeQuoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuasiquote,schemeQuasiquoteForm,schemeUnquote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
syn region schemeQuasiquoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster syn region schemeQuasiquoteForm matchgroup=schemeData start=/(/ end=/)/ contained contains=ALLBUT,schemeQuote,schemeForm,schemeDatumCommentForm,schemeImport,@schemeImportCluster,@schemeSyntaxCluster
syn region schemeString start=/\(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/ syn region schemeString start=/\(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/ contains=@Spell
syn region schemeSymbol start=/\(\\\)\@<!|/ skip=/\\[\\|]/ end=/|/ syn region schemeSymbol start=/\(\\\)\@<!|/ skip=/\\[\\|]/ end=/|/
syn match schemeNumber /\(#[dbeio]\)*[+\-]*\([0-9]\+\|inf.0\|nan.0\)\(\/\|\.\)\?[0-9+\-@\ilns]*\>/ syn match schemeNumber /\(#[dbeio]\)*[+\-]*\([0-9]\+\|inf.0\|nan.0\)\(\/\|\.\)\?[0-9+\-@\ilns]*\>/
@ -47,9 +50,9 @@ syn match schemeBoolean /#f\(alse\)\?/
syn match schemeCharacter /#\\.[^ `'\t\n\[\]()]*/ syn match schemeCharacter /#\\.[^ `'\t\n\[\]()]*/
syn match schemeCharacter /#\\x[0-9a-fA-F]\+/ syn match schemeCharacter /#\\x[0-9a-fA-F]\+/
syn match schemeComment /;.*$/ syn match schemeComment /;.*$/ contains=@Spell
syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment,@Spell
syn region schemeForm matchgroup=schemeParentheses start="(" end=")" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster syn region schemeForm matchgroup=schemeParentheses start="(" end=")" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
syn region schemeForm matchgroup=schemeParentheses start="\[" end="\]" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster syn region schemeForm matchgroup=schemeParentheses start="\[" end="\]" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
@ -63,7 +66,7 @@ else
syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\)\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment syn region schemeImport matchgroup=schemeImport start="\(([ \t\n]*\)\@<=\(import\)\>" end=")"me=e-1 contained contains=schemeImportForm,schemeIdentifier,schemeComment,schemeDatumComment
endif endif
syn match schemeImportKeyword "\(([ \t\n]*\)\@<=\(except\|only\|prefix\|rename\|srfi\)\>" syn match schemeImportKeyword "\(([ \t\n]*\)\@<=\(except\|only\|prefix\|rename\)\>"
syn region schemeImportForm matchgroup=schemeParentheses start="(" end=")" contained contains=schemeIdentifier,schemeComment,schemeDatumComment,@schemeImportCluster syn region schemeImportForm matchgroup=schemeParentheses start="(" end=")" contained contains=schemeIdentifier,schemeComment,schemeDatumComment,@schemeImportCluster
syn cluster schemeImportCluster contains=schemeImportForm,schemeImportKeyword syn cluster schemeImportCluster contains=schemeImportForm,schemeImportKeyword