Update runtime files.

This commit is contained in:
Bram Moolenaar 2023-02-02 13:59:48 +00:00
parent 685bf83b73
commit be4e01637e
63 changed files with 1245 additions and 693 deletions

View File

@ -2,18 +2,17 @@
# What is Vim9?
This is an experimental side of [Vim](https://github.com/vim/vim).
It explores ways of making Vim script faster and better.
This is a new syntax for Vim script that was introduced with Vim 9.0.
It intends making Vim script faster and better.
WARNING: The Vim9 script features are still under development, anything can
break!
# Why Vim9?
## 1. FASTER VIM SCRIPT
The third item on the poll results of 2018, after popup windows and text
properties, is faster Vim script. So how do we do that?
properties, both of which have been implemented, is faster Vim script.
So how do we do that?
I have been throwing some ideas around, and soon came to the conclusion
that the current way functions are called and executed, with
@ -53,7 +52,7 @@ we can gain, and also that Vim script can be faster than builtin
interfaces.
LuaJit is much faster at Lua-only instructions. In practice the script would
not do something useless as counting but change the text. For example,
not do something useless counting, but change the text. For example,
reindent all the lines:
``` vim

View File

@ -2,12 +2,12 @@ vim9script
# Language: Vim script
# Maintainer: github user lacygoill
# Last Change: 2023 Jan 03
# Last Change: 2023 Feb 01
# NOTE: Whenever you change the code, make sure the tests are still passing:
#
# $ cd runtime/indent/
# $ make clean; make test || vimdiff testdir/vim.{fail,ok}
# $ make clean; make test || vimdiff testdir/vim.{ok,fail}
# Config {{{1
@ -112,6 +112,10 @@ const DICT_KEY: string = '^\s*\%('
.. '\)'
.. ':\%(\s\|$\)'
# NOT_A_DICT_KEY {{{3
const NOT_A_DICT_KEY: string = ':\@!'
# END_OF_COMMAND {{{3
const END_OF_COMMAND: string = $'\s*\%($\|||\@!\|{INLINE_COMMENT}\)'
@ -144,19 +148,43 @@ const HEREDOC_OPERATOR: string = '\s=<<\s\@=\%(\s\+\%(trim\|eval\)\)\{,2}'
#
# But sometimes, it can be too costly and cause `E363` to be given.
const PATTERN_DELIMITER: string = '[-+*/%]\%(=\s\)\@!'
# QUOTE {{{3
const QUOTE: string = '["'']'
# }}}2
# Syntaxes {{{2
# ASSIGNS_HEREDOC {{{3
# BLOCKS {{{3
const ASSIGNS_HEREDOC: string = $'^\%({COMMENT}\)\@!.*\%({HEREDOC_OPERATOR}\)\s\+\zs[A-Z]\+{END_OF_LINE}'
const BLOCKS: list<list<string>> = [
['if', 'el\%[se]', 'elseif\=', 'en\%[dif]'],
['for', 'endfor\='],
['wh\%[ile]', 'endw\%[hile]'],
['try', 'cat\%[ch]', 'fina\|finally\=', 'endt\%[ry]'],
['def', 'enddef'],
['fu\%[nction](\@!', 'endf\%[unction]'],
['class', 'endclass'],
['interface', 'endinterface'],
['enum', 'endenum'],
['aug\%[roup]\%(\s\+[eE][nN][dD]\)\@!\s\+\S\+', 'aug\%[roup]\s\+[eE][nN][dD]'],
]
# CD_COMMAND {{{3
# MODIFIERS {{{3
const CD_COMMAND: string = $'\<[lt]\=cd!\=\s\+-{END_OF_COMMAND}'
# some keywords can be prefixed by modifiers (e.g. `def` can be prefixed by `export`)
const MODIFIERS: dict<string> = {
def: ['export', 'static'],
class: ['export', 'abstract', 'export abstract'],
interface: ['export'],
}
# ...
# class: ['export', 'abstract', 'export abstract'],
# ...
# →
# ...
# class: '\%(export\|abstract\|export\s\+abstract\)\s\+',
# ...
->map((_, mods: list<string>): string =>
'\%(' .. mods
->join('\|')
->substitute('\s\+', '\\s\\+', 'g')
.. '\)' .. '\s\+')
# HIGHER_ORDER_COMMAND {{{3
@ -174,58 +202,102 @@ patterns =<< trim eval END
g\%[lobal]!\={PATTERN_DELIMITER}.*
v\%[global]!\={PATTERN_DELIMITER}.*
END
const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%(' .. patterns->join('\|') .. '\):\@!'
# MAPPING_COMMAND {{{3
const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%({patterns->join('\|')}\){NOT_A_DICT_KEY}'
const MAPPING_COMMAND: string = '\%(\<sil\%[ent]!\=\s\+\)\=\<[nvxsoilct]\=\%(nore\|un\)map!\=\s'
# START_MIDDLE_END {{{3
# NORMAL_COMMAND {{{3
# Let's derive this constant from `BLOCKS`:
#
# [['if', 'el\%[se]', 'elseif\=', 'en\%[dif]'],
# ['for', 'endfor\='],
# ...,
# [...]]
# →
# {
# 'for': ['for', '', 'endfor\='],
# 'endfor': ['for', '', 'endfor\='],
# 'if': ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
# 'else': ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
# 'elseif': ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
# 'endif': ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
# ...
# }
var START_MIDDLE_END: dict<list<string>>
const NORMAL_COMMAND: string = '\<norm\%[al]!\=\s*\S\+$'
def Unshorten(kwd: string): string
return BlockStartKeyword(kwd)
enddef
# PLUS_MINUS_COMMAND {{{3
def BlockStartKeyword(line: string): string
var kwd: string = line->matchstr('\l\+')
return fullcommand(kwd, false)
enddef
# In legacy, the `:+` and `:-` commands are not required to be preceded by a colon.
# As a result, when `+` or `-` is alone on a line, there is ambiguity.
# It might be an operator or a command.
# To not break the indentation in legacy scripts, we might need to consider such
# lines as commands.
const PLUS_MINUS_COMMAND: string = '^\s*[+-]\s*$'
{
for kwds: list<string> in BLOCKS
var [start: string, middle: string, end: string] = [kwds[0], '', kwds[-1]]
if MODIFIERS->has_key(start->Unshorten())
start = $'\%({MODIFIERS[start]}\)\={start}'
endif
if kwds->len() > 2
middle = kwds[1 : -2]->join('\|')
endif
for kwd: string in kwds
START_MIDDLE_END->extend({[kwd->Unshorten()]: [start, middle, end]})
endfor
endfor
}
START_MIDDLE_END = START_MIDDLE_END
->map((_, kwds: list<string>) =>
kwds->map((_, kwd: string) => kwd == ''
? ''
: $'\%(^\|{BAR_SEPARATION}\|\<sil\%[ent]\|{HIGHER_ORDER_COMMAND}\)\s*'
.. $'\<\%({kwd}\)\>\%(\s*{OPERATOR}\)\@!'))
lockvar! START_MIDDLE_END
# ENDS_BLOCK {{{3
const ENDS_BLOCK: string = '^\s*\%('
.. 'en\%[dif]'
.. '\|' .. 'endfor\='
.. '\|' .. 'endw\%[hile]'
.. '\|' .. 'endt\%[ry]'
.. '\|' .. 'enddef'
.. '\|' .. 'endclass'
.. '\|' .. 'endf\%[unction]'
.. '\|' .. 'aug\%[roup]\s\+[eE][nN][dD]'
.. BLOCKS
->copy()
->map((_, kwds: list<string>): string => kwds[-1])
->join('\|')
.. '\|' .. CLOSING_BRACKET
.. $'\){END_OF_COMMAND}'
# ENDS_BLOCK_OR_CLAUSE {{{3
patterns =<< trim END
en\%[dif]
el\%[se]
endfor\=
endclass
endw\%[hile]
endt\%[ry]
fina\|finally\=
enddef
endf\%[unction]
aug\%[roup]\s\+[eE][nN][dD]
END
patterns = BLOCKS
->copy()
->map((_, kwds: list<string>) => kwds[1 :])
->flattennew()
# `catch` and `elseif` need to be handled as special cases
->filter((_, pat: string): bool => pat->Unshorten() !~ '^\%(catch\|elseif\)\>')
const ENDS_BLOCK_OR_CLAUSE: string = '^\s*\%(' .. patterns->join('\|') .. $'\){END_OF_COMMAND}'
.. $'\|^\s*cat\%[ch]\%(\s\+\({PATTERN_DELIMITER}\).*\1\)\={END_OF_COMMAND}'
.. $'\|^\s*elseif\=\>\%({OPERATOR}\)\@!'
# STARTS_NAMED_BLOCK {{{3
patterns = []
{
for kwds: list<string> in BLOCKS
for kwd: string in kwds[0 : -2]
if MODIFIERS->has_key(kwd->Unshorten())
patterns += [$'\%({MODIFIERS[kwd]}\)\={kwd}']
else
patterns += [kwd]
endif
endfor
endfor
}
const STARTS_NAMED_BLOCK: string = $'^\s*\%(sil\%[ent]\s\+\)\=\%({patterns->join('\|')}\)\>{NOT_A_DICT_KEY}'
# STARTS_CURLY_BLOCK {{{3
# TODO: `{` alone on a line is not necessarily the start of a block.
@ -238,73 +310,57 @@ const STARTS_CURLY_BLOCK: string = '\%('
.. '\|' .. $'^\%(\s*\|.*{BAR_SEPARATION}\s*\)\%(com\%[mand]\|au\%[tocmd]\).*\zs\s{{'
.. '\)' .. END_OF_COMMAND
# STARTS_NAMED_BLOCK {{{3
# All of these will be used at the start of a line (or after a bar).
# NOTE: Don't replace `\%x28` with `(`.{{{
#
# Otherwise, the paren would be unbalanced which might cause syntax highlighting
# issues much later in the code of the current script (sometimes, the syntax
# highlighting plugin fails to correctly recognize a heredoc which is far away
# and/or not displayed because inside a fold).
# }}}
patterns =<< trim END
if
el\%[se]
elseif\=
for
class
wh\%[ile]
try
cat\%[ch]
fina\|finally\=
fu\%[nction]\%x28\@!
\%(export\s\+\)\=def
aug\%[roup]\%(\s\+[eE][nN][dD]\)\@!\s\+\S\+
END
const STARTS_NAMED_BLOCK: string = '^\s*\%(sil\%[ent]\s\+\)\=\%(' .. patterns->join('\|') .. '\)\>:\@!'
# STARTS_FUNCTION {{{3
const STARTS_FUNCTION: string = '^\s*\%(export\s\+\)\=def\>:\@!'
const STARTS_FUNCTION: string = $'^\s*\%({MODIFIERS.def}\)\=def\>{NOT_A_DICT_KEY}'
# ENDS_FUNCTION {{{3
const ENDS_FUNCTION: string = $'^\s*enddef\>:\@!{END_OF_COMMAND}'
const ENDS_FUNCTION: string = $'^\s*enddef\>{END_OF_COMMAND}'
# START_MIDDLE_END {{{3
# ASSIGNS_HEREDOC {{{3
const START_MIDDLE_END: dict<list<string>> = {
if: ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
else: ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
elseif: ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
endif: ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
for: ['for', '', 'endfor\='],
endfor: ['for', '', 'endfor\='],
class: ['class', '', 'endclass'],
endclass: ['class', '', 'endclass'],
while: ['wh\%[ile]', '', 'endw\%[hile]'],
endwhile: ['wh\%[ile]', '', 'endw\%[hile]'],
try: ['try', 'cat\%[ch]\|fina\|finally\=', 'endt\%[ry]'],
catch: ['try', 'cat\%[ch]\|fina\|finally\=', 'endt\%[ry]'],
finally: ['try', 'cat\%[ch]\|fina\|finally\=', 'endt\%[ry]'],
endtry: ['try', 'cat\%[ch]\|fina\|finally\=', 'endt\%[ry]'],
def: ['\%(export\s\+\)\=def', '', 'enddef'],
enddef: ['\%(export\s\+\)\=def', '', 'enddef'],
function: ['fu\%[nction]', '', 'endf\%[unction]'],
endfunction: ['fu\%[nction]', '', 'endf\%[unction]'],
augroup: ['aug\%[roup]\%(\s\+[eE][nN][dD]\)\@!\s\+\S\+', '', 'aug\%[roup]\s\+[eE][nN][dD]'],
}->map((_, kwds: list<string>) =>
kwds->map((_, kwd: string) => kwd == ''
? ''
: $'\%(^\|{BAR_SEPARATION}\|\<sil\%[ent]\|{HIGHER_ORDER_COMMAND}\)\s*'
.. $'\%({printf('\C\<\%%(%s\)\>:\@!\%%(\s*%s\)\@!', kwd, OPERATOR)}\)'))
const ASSIGNS_HEREDOC: string = $'^\%({COMMENT}\)\@!.*\%({HEREDOC_OPERATOR}\)\s\+\zs[A-Z]\+{END_OF_LINE}'
# PLUS_MINUS_COMMAND {{{3
# In legacy, the `:+` and `:-` commands are not required to be preceded by a colon.
# As a result, when `+` or `-` is alone on a line, there is ambiguity.
# It might be an operator or a command.
# To not break the indentation in legacy scripts, we might need to consider such
# lines as commands.
const PLUS_MINUS_COMMAND: string = '^\s*[+-]\s*$'
# TRICKY_COMMANDS {{{3
# Some commands are tricky because they accept an argument which can be
# conflated with an operator. Examples:
#
# argdelete *
# cd -
# normal! ==
# nunmap <buffer> (
#
# TODO: Other commands might accept operators as argument. Handle them too.
patterns =<< trim eval END
{'\'}<argd\%[elete]\s\+\*\s*$
\<[lt]\=cd!\=\s\+-\s*$
\<norm\%[al]!\=\s*\S\+$
\%(\<sil\%[ent]!\=\s\+\)\=\<[nvxsoilct]\=\%(nore\|un\)map!\=\s
{PLUS_MINUS_COMMAND}
END
const TRICKY_COMMANDS: string = patterns->join('\|')
# }}}2
# EOL {{{2
# OPENING_BRACKET_AT_EOL {{{3
const OPENING_BRACKET_AT_EOL: string = OPENING_BRACKET .. END_OF_VIM9_LINE
# CLOSING_BRACKET_AT_EOL {{{3
const CLOSING_BRACKET_AT_EOL: string = CLOSING_BRACKET .. END_OF_VIM9_LINE
# COMMA_AT_EOL {{{3
const COMMA_AT_EOL: string = $',{END_OF_VIM9_LINE}'
@ -392,6 +448,7 @@ export def Expr(lnum = v:lnum): number # {{{2
endif
if line_A->AtStartOf('FuncHeader')
&& !IsInInterface()
line_A.lnum->CacheFuncHeader()
elseif line_A.lnum->IsInside('FuncHeader')
return b:vimindent.startindent + 2 * shiftwidth()
@ -430,6 +487,7 @@ export def Expr(lnum = v:lnum): number # {{{2
if line_A.text->ContinuesBelowBracketBlock(line_B, past_bracket_block)
&& line_A.text !~ CLOSING_BRACKET_AT_SOL
return past_bracket_block.startindent
+ (past_bracket_block.startline =~ STARTS_NAMED_BLOCK ? 2 * shiftwidth() : 0)
endif
# Problem: If we press `==` on the line right below the start of a multiline
@ -438,6 +496,18 @@ export def Expr(lnum = v:lnum): number # {{{2
if line_B->EndsWithLambdaArrow()
return Indent(line_B.lnum) + shiftwidth() + IndentMoreInBracketBlock()
endif
# FIXME: Similar issue here:
#
# var x = []
# ->filter((_, _) =>
# true)
# ->items()
#
# Press `==` on last line.
# Expected: The `->items()` line is indented like `->filter(...)`.
# Actual: It's indented like `true)`.
# Is it worth fixing? `=ip` gives the correct indentation, because then the
# cache is used.
# Don't move this block before the heredoc one.{{{
#
@ -536,8 +606,13 @@ def Offset( # {{{2
line_B: dict<any>,
): number
if line_B->AtStartOf('FuncHeader')
&& IsInInterface()
return 0
# increase indentation inside a block
if line_B.text =~ STARTS_NAMED_BLOCK || line_B->EndsWithCurlyBlock()
elseif line_B.text =~ STARTS_NAMED_BLOCK
|| line_B->EndsWithCurlyBlock()
# But don't indent if the line starting the block also closes it.
if line_B->AlsoClosesBlock()
return 0
@ -807,11 +882,6 @@ def Indent(lnum: number): number # {{{3
return indent(lnum)
enddef
def BlockStartKeyword(line: string): string # {{{3
var kwd: string = line->matchstr('\l\+')
return fullcommand(kwd, false)
enddef
def MatchingOpenBracket(line: dict<any>): number # {{{3
var end: string = line.text->matchstr(CLOSING_BRACKET)
var start: string = {']': '[', '}': '{', ')': '('}[end]
@ -908,7 +978,8 @@ def SearchPair( # {{{3
if end == '[' || end == ']'
e = e->escape('[]')
endif
return searchpair(s, middle, e, flags, (): bool => InCommentOrString(), stopline, TIMEOUT)
return searchpair('\C' .. s, (middle == '' ? '' : '\C' .. middle), '\C' .. e,
flags, (): bool => InCommentOrString(), stopline, TIMEOUT)
enddef
def SearchPairStart( # {{{3
@ -1016,6 +1087,10 @@ def IsInThisBlock(line_A: dict<any>, lnum: number): bool # {{{3
return line_A.lnum <= end
enddef
def IsInInterface(): bool # {{{3
return SearchPair('interface', '', 'endinterface', 'nW') > 0
enddef
def IsFirstLineOfCommand(line_1: dict<any>, line_2: dict<any>): bool # {{{3
if line_1.text->Is_IN_KeywordForLoop(line_2.text)
return false
@ -1096,6 +1171,10 @@ def EndsWithOpeningBracket(line: dict<any>): bool # {{{3
return NonCommentedMatch(line, OPENING_BRACKET_AT_EOL)
enddef
def EndsWithClosingBracket(line: dict<any>): bool # {{{3
return NonCommentedMatch(line, CLOSING_BRACKET_AT_EOL)
enddef
def NonCommentedMatch(line: dict<any>, pat: string): bool # {{{3
# Could happen if there is no code above us, and we're not on the 1st line.
# In that case, `PrevCodeLine()` returns `{lnum: 0, line: ''}`.
@ -1103,16 +1182,6 @@ def NonCommentedMatch(line: dict<any>, pat: string): bool # {{{3
return false
endif
if line.text =~ PLUS_MINUS_COMMAND
return false
endif
# In `argdelete *`, `*` is not a multiplication operator.
# TODO: Other commands can accept `*` as an argument. Handle them too.
if line.text =~ '\<argd\%[elete]\s\+\*\s*$'
return false
endif
# Technically, that's wrong. A line might start with a range and end with a
# line continuation symbol. But it's unlikely. And it's useful to assume the
# opposite because it prevents us from conflating a mark with an operator or
@ -1179,24 +1248,7 @@ def NonCommentedMatch(line: dict<any>, pat: string): bool # {{{3
return false
endif
# `:help cd-`
if line.text =~ CD_COMMAND
return false
endif
# At the end of a mapping, any character might appear; e.g. a paren:
#
# nunmap <buffer> (
#
# Don't conflate this with a line continuation symbol.
if line.text =~ MAPPING_COMMAND
return false
endif
# not a comparison operator
# vv
# normal! ==
if line.text =~ NORMAL_COMMAND
if line.text =~ TRICKY_COMMANDS
return false
endif

View File

@ -1,6 +1,6 @@
" Vim autoload file for the tohtml plugin.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2019 Aug 16
" Last Change: 2023 Jan 01
"
" Additional contributors:
"
@ -351,63 +351,65 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
let s:old_magic = &magic
set magic
if s:settings.use_xhtml
if s:settings.encoding != ""
let xml_line = "<?xml version=\"1.0\" encoding=\"" . s:settings.encoding . "\"?>"
else
let xml_line = "<?xml version=\"1.0\"?>"
endif
let tag_close = ' />'
endif
let style = [s:settings.use_xhtml ? "" : '-->']
let body_line = ''
let html = []
let s:html5 = 0
if s:settings.use_xhtml
call add(html, xml_line)
endif
if s:settings.use_xhtml
call add(html, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">")
call add(html, '<html xmlns="http://www.w3.org/1999/xhtml">')
elseif s:settings.use_css && !s:settings.no_pre
call add(html, "<!DOCTYPE html>")
call add(html, '<html>')
let s:html5 = 1
else
call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
call add(html, ' "http://www.w3.org/TR/html4/loose.dtd">')
call add(html, '<html>')
endif
call add(html, '<head>')
" include encoding as close to the top as possible, but only if not already
" contained in XML information
if s:settings.encoding != "" && !s:settings.use_xhtml
if s:html5
call add(html, '<meta charset="' . s:settings.encoding . '"' . tag_close)
else
call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
if !s:settings.no_doc
if s:settings.use_xhtml
if s:settings.encoding != ""
let xml_line = "<?xml version=\"1.0\" encoding=\"" . s:settings.encoding . "\"?>"
else
let xml_line = "<?xml version=\"1.0\"?>"
endif
let tag_close = ' />'
endif
let style = [s:settings.use_xhtml ? "" : '-->']
let body_line = ''
let s:html5 = 0
if s:settings.use_xhtml
call add(html, xml_line)
endif
if s:settings.use_xhtml
call add(html, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">")
call add(html, '<html xmlns="http://www.w3.org/1999/xhtml">')
elseif s:settings.use_css && !s:settings.no_pre
call add(html, "<!DOCTYPE html>")
call add(html, '<html>')
let s:html5 = 1
else
call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
call add(html, ' "http://www.w3.org/TR/html4/loose.dtd">')
call add(html, '<html>')
endif
call add(html, '<head>')
" include encoding as close to the top as possible, but only if not already
" contained in XML information
if s:settings.encoding != "" && !s:settings.use_xhtml
if s:html5
call add(html, '<meta charset="' . s:settings.encoding . '"' . tag_close)
else
call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
endif
endif
call add(html, '<title>diff</title>')
call add(html, '<meta name="Generator" content="Vim/'.v:version/100.'.'.v:version%100.'"'.tag_close)
call add(html, '<meta name="plugin-version" content="'.g:loaded_2html_plugin.'"'.tag_close)
call add(html, '<meta name="settings" content="'.
\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
\ ',prevent_copy='.s:settings.prevent_copy.
\ ',use_input_for_pc='.s:settings.use_input_for_pc.
\ '"'.tag_close)
call add(html, '<meta name="colorscheme" content="'.
\ (exists('g:colors_name')
\ ? g:colors_name
\ : 'none'). '"'.tag_close)
call add(html, '</head>')
let body_line_num = len(html)
call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
endif
call add(html, '<title>diff</title>')
call add(html, '<meta name="Generator" content="Vim/'.v:version/100.'.'.v:version%100.'"'.tag_close)
call add(html, '<meta name="plugin-version" content="'.g:loaded_2html_plugin.'"'.tag_close)
call add(html, '<meta name="settings" content="'.
\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
\ ',prevent_copy='.s:settings.prevent_copy.
\ ',use_input_for_pc='.s:settings.use_input_for_pc.
\ '"'.tag_close)
call add(html, '<meta name="colorscheme" content="'.
\ (exists('g:colors_name')
\ ? g:colors_name
\ : 'none'). '"'.tag_close)
call add(html, '</head>')
let body_line_num = len(html)
call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
call add(html, "<table ".(s:settings.use_css? "" : "border='1' width='100%' ")."id='vimCodeElement".s:settings.id_suffix."'>")
call add(html, '<tr>')
@ -430,47 +432,53 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" When not using CSS or when using xhtml, the <body> line can be important.
" Assume it will be the same for all buffers and grab it from the first
" buffer. Similarly, need to grab the body end line as well.
if body_line == ''
if !s:settings.no_doc
if body_line == ''
1
call search('<body')
let body_line = getline('.')
$
call search('</body>', 'b')
let s:body_end_line = getline('.')
endif
" Grab the style information. Some of this will be duplicated so only insert
" it if it's not already there. {{{
1
call search('<body')
let body_line = getline('.')
$
call search('</body>', 'b')
let s:body_end_line = getline('.')
endif
" Grab the style information. Some of this will be duplicated so only insert
" it if it's not already there. {{{
1
let style_start = search('^<style\( type="text/css"\)\?>')
1
let style_end = search('^</style>')
if style_start > 0 && style_end > 0
let buf_styles = getline(style_start + 1, style_end - 1)
for a_style in buf_styles
if index(style, a_style) == -1
if diff_style_start == 0
if a_style =~ '\<Diff\(Change\|Text\|Add\|Delete\)'
let diff_style_start = len(style)-1
let style_start = search('^<style\( type="text/css"\)\?>')
1
let style_end = search('^</style>')
if style_start > 0 && style_end > 0
let buf_styles = getline(style_start + 1, style_end - 1)
for a_style in buf_styles
if index(style, a_style) == -1
if diff_style_start == 0
if a_style =~ '\<Diff\(Change\|Text\|Add\|Delete\)'
let diff_style_start = len(style)-1
endif
endif
call insert(style, a_style, insert_index)
let insert_index += 1
endif
call insert(style, a_style, insert_index)
let insert_index += 1
endif
endfor
endif " }}}
endfor
endif " }}}
" everything new will get added before the diff styles so diff highlight
" properly overrides normal highlight
if diff_style_start != 0
let insert_index = diff_style_start
" everything new will get added before the diff styles so diff highlight
" properly overrides normal highlight
if diff_style_start != 0
let insert_index = diff_style_start
endif
" Delete those parts that are not needed so we can include the rest into the
" resulting table.
1,/^<body.*\%(\n<!--.*-->\_s\+.*id='oneCharWidth'.*\_s\+.*id='oneInputWidth'.*\_s\+.*id='oneEmWidth'\)\?\zs/d_
$
?</body>?,$d_
elseif !s:settings.no_modeline
" remove modeline from source files if it is included and we haven't deleted
" due to removing html footer already
$d
endif
" Delete those parts that are not needed so we can include the rest into the
" resulting table.
1,/^<body.*\%(\n<!--.*-->\_s\+.*id='oneCharWidth'.*\_s\+.*id='oneInputWidth'.*\_s\+.*id='oneEmWidth'\)\?\zs/d_
$
?</body>?,$d_
let temp = getline(1,'$')
" clean out id on the main content container because we already set it on
" the table
@ -478,7 +486,11 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
" undo deletion of start and end part
" so we can later save the file as valid html
" TODO: restore using grabbed lines if undolevel is 1?
normal! 2u
if !s:settings.no_doc
normal! 2u
elseif !s:settings.no_modeline
normal! u
endif
if s:settings.use_css
call add(html, '<td><div>')
elseif s:settings.use_xhtml
@ -495,17 +507,23 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
quit!
endfor
let html[body_line_num] = body_line
if !s:settings.no_doc
let html[body_line_num] = body_line
endif
call add(html, '</tr>')
call add(html, '</table>')
call add(html, s:body_end_line)
call add(html, '</html>')
if !s:settings.no_doc
call add(html, s:body_end_line)
call add(html, '</html>')
endif
" The generated HTML is admittedly ugly and takes a LONG time to fold.
" Make sure the user doesn't do syntax folding when loading a generated file,
" using a modeline.
call add(html, '<!-- vim: set foldmethod=manual : -->')
if !s:settings.no_modeline
call add(html, '<!-- vim: set foldmethod=manual : -->')
endif
let i = 1
let name = "Diff" . (s:settings.use_xhtml ? ".xhtml" : ".html")
@ -542,129 +560,131 @@ func! tohtml#Diff2HTML(win_list, buf_list) "{{{
call append(0, html)
if len(style) > 0
1
let style_start = search('^</head>')-1
if !s:settings.no_doc
if len(style) > 0
1
let style_start = search('^</head>')-1
" add required javascript in reverse order so we can just call append again
" and again without adjusting {{{
" add required javascript in reverse order so we can just call append again
" and again without adjusting {{{
let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
" insert script closing tag if needed
if s:uses_script
call append(style_start, [
\ '',
\ s:settings.use_xhtml ? '//]]>' : '-->',
\ "</script>"
\ ])
endif
" insert javascript to get IDs from line numbers, and to open a fold before
" jumping to any lines contained therein
if s:settings.line_ids
call append(style_start, [
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
\ " * we corrected the raw number to a line ID.",
\ " */",
\ " if (lineElem) {",
\ " lineElem.scrollIntoView(true);",
\ " }",
\ " return true;",
\ "}",
\ "if ('onhashchange' in window) {",
\ " window.onhashchange = JumpToLine;",
\ "}"
\ ])
if s:settings.dynamic_folds
" insert script closing tag if needed
if s:uses_script
call append(style_start, [
\ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
\ " {",
\ " if (node.className == 'closed-fold')",
\ " {",
\ " /* toggle open the fold ID (remove window ID) */",
\ " toggleFold(node.id.substr(4));",
\ " }",
\ " node = node.parentNode;",
\ " }",
\ '',
\ s:settings.use_xhtml ? '//]]>' : '-->',
\ "</script>"
\ ])
endif
endif
if s:settings.line_ids
call append(style_start, [
\ "",
\ "/* function to open any folds containing a jumped-to line before jumping to it */",
\ "function JumpToLine()",
\ "{",
\ " var lineNum;",
\ " lineNum = window.location.hash;",
\ " lineNum = lineNum.substr(1); /* strip off '#' */",
\ "",
\ " if (lineNum.indexOf('L') == -1) {",
\ " lineNum = 'L'+lineNum;",
\ " }",
\ " if (lineNum.indexOf('W') == -1) {",
\ " lineNum = 'W1'+lineNum;",
\ " }",
\ " var lineElem = document.getElementById(lineNum);"
\ ])
endif
" insert javascript to get IDs from line numbers, and to open a fold before
" jumping to any lines contained therein
if s:settings.line_ids
call append(style_start, [
\ " /* Always jump to new location even if the line was hidden inside a fold, or",
\ " * we corrected the raw number to a line ID.",
\ " */",
\ " if (lineElem) {",
\ " lineElem.scrollIntoView(true);",
\ " }",
\ " return true;",
\ "}",
\ "if ('onhashchange' in window) {",
\ " window.onhashchange = JumpToLine;",
\ "}"
\ ])
" Insert javascript to toggle matching folds open and closed in all windows,
" if dynamic folding is active.
if s:settings.dynamic_folds
call append(style_start, [
\ " function toggleFold(objID)",
\ " {",
\ " for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)",
\ " {",
\ " var fold;",
\ ' fold = document.getElementById("win"+win_num+objID);',
\ " if(fold.className == 'closed-fold')",
\ " {",
\ " fold.className = 'open-fold';",
\ " }",
\ " else if (fold.className == 'open-fold')",
\ " {",
\ " fold.className = 'closed-fold';",
\ " }",
\ " }",
\ " }",
\ ])
endif
if s:settings.dynamic_folds
call append(style_start, [
\ "",
\ " /* navigate upwards in the DOM tree to open all folds containing the line */",
\ " var node = lineElem;",
\ " while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
\ " {",
\ " if (node.className == 'closed-fold')",
\ " {",
\ " /* toggle open the fold ID (remove window ID) */",
\ " toggleFold(node.id.substr(4));",
\ " }",
\ " node = node.parentNode;",
\ " }",
\ ])
endif
endif
if s:uses_script
" insert script tag if needed
call append(style_start, [
\ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
endif
if s:settings.line_ids
call append(style_start, [
\ "",
\ "/* function to open any folds containing a jumped-to line before jumping to it */",
\ "function JumpToLine()",
\ "{",
\ " var lineNum;",
\ " lineNum = window.location.hash;",
\ " lineNum = lineNum.substr(1); /* strip off '#' */",
\ "",
\ " if (lineNum.indexOf('L') == -1) {",
\ " lineNum = 'L'+lineNum;",
\ " }",
\ " if (lineNum.indexOf('W') == -1) {",
\ " lineNum = 'W1'+lineNum;",
\ " }",
\ " var lineElem = document.getElementById(lineNum);"
\ ])
endif
" Insert styles from all the generated html documents and additional styles
" for the table-based layout of the side-by-side diff. The diff should take
" up the full browser window (but not more), and be static in size,
" horizontally scrollable when the lines are too long. Otherwise, the diff
" is pretty useless for really long lines. {{{
if s:settings.use_css
call append(style_start,
\ ['<style' . (s:html5 ? '' : 'type="text/css"') . '>']+
\ style+
\ [ s:settings.use_xhtml ? '' : '<!--',
\ 'table { table-layout: fixed; }',
\ 'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }',
\ 'table, td, th { border: 1px solid; }',
\ 'td { vertical-align: top; }',
\ 'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }',
\ 'td div { overflow: auto; }',
\ s:settings.use_xhtml ? '' : '-->',
\ '</style>'
\])
endif "}}}
" Insert javascript to toggle matching folds open and closed in all windows,
" if dynamic folding is active.
if s:settings.dynamic_folds
call append(style_start, [
\ " function toggleFold(objID)",
\ " {",
\ " for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)",
\ " {",
\ " var fold;",
\ ' fold = document.getElementById("win"+win_num+objID);',
\ " if(fold.className == 'closed-fold')",
\ " {",
\ " fold.className = 'open-fold';",
\ " }",
\ " else if (fold.className == 'open-fold')",
\ " {",
\ " fold.className = 'closed-fold';",
\ " }",
\ " }",
\ " }",
\ ])
endif
if s:uses_script
" insert script tag if needed
call append(style_start, [
\ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
endif
" Insert styles from all the generated html documents and additional styles
" for the table-based layout of the side-by-side diff. The diff should take
" up the full browser window (but not more), and be static in size,
" horizontally scrollable when the lines are too long. Otherwise, the diff
" is pretty useless for really long lines. {{{
if s:settings.use_css
call append(style_start,
\ ['<style' . (s:html5 ? '' : 'type="text/css"') . '>']+
\ style+
\ [ s:settings.use_xhtml ? '' : '<!--',
\ 'table { table-layout: fixed; }',
\ 'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }',
\ 'table, td, th { border: 1px solid; }',
\ 'td { vertical-align: top; }',
\ 'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }',
\ 'td div { overflow: auto; }',
\ s:settings.use_xhtml ? '' : '-->',
\ '</style>'
\])
endif "}}}
endif
endif
let &paste = s:old_paste

View File

@ -1,4 +1,4 @@
*builtin.txt* For Vim version 9.0. Last change: 2022 Dec 23
*builtin.txt* For Vim version 9.0. Last change: 2023 Jan 17
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*diff.txt* For Vim version 9.0. Last change: 2022 Dec 24
*diff.txt* For Vim version 9.0. Last change: 2023 Jan 21
VIM REFERENCE MANUAL by Bram Moolenaar
@ -136,7 +136,7 @@ file for a moment and come back to the same file and be in diff mode again.
buffers.
The `:diffoff` command resets the relevant options to the values they had when
using `:diffsplit`, `:diffpatch` , `:diffthis`. or starting Vim in diff mode.
using `:diffsplit`, `:diffpatch`, `:diffthis`. or starting Vim in diff mode.
When using `:diffoff` twice the last saved values are restored.
Otherwise they are set to their default value:

View File

@ -1,4 +1,4 @@
*eval.txt* For Vim version 9.0. Last change: 2023 Jan 03
*eval.txt* For Vim version 9.0. Last change: 2023 Jan 12
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@ -1,4 +1,4 @@
*fold.txt* For Vim version 9.0. Last change: 2022 Nov 26
*fold.txt* For Vim version 9.0. Last change: 2023 Jan 29
VIM REFERENCE MANUAL by Bram Moolenaar
@ -202,7 +202,7 @@ non-matching marker pairs. Example: >
/* funcB() {{{2 */
void funcB() {}
< *{{{* *}}}*
A fold starts at a "{{{" marker. The following number specifies the fold
level. What happens depends on the difference between the current fold level
and the level given by the marker:

View File

@ -48,7 +48,7 @@ typesetting command. That must be a function that takes a path and returns the
command as a List. For example:
>
def ConTeXtCustomCommand(path: string): list<string>
return ['mtxrun', '--script', 'context', '--nonstopmode, path]
return ['mtxrun', '--script', 'context', '--nonstopmode', path]
enddef
context.ConTeXtTypeset("%", v:none, ConTeXtCustomCommand)

View File

@ -84,7 +84,7 @@ METAFONT buffers, and it is set to 0 by default in MetaPost buffers.
Define additional keywords that end indented blocks. For instance, if you
define:
>
g:mp_end_tag = ['\<endfoo\>']
g:mp_close_tag = ['\<endfoo\>']
<
any line starting with `endfoo` will be de-indented compared to its previous
line.

View File

@ -1,4 +1,4 @@
*options.txt* For Vim version 9.0. Last change: 2023 Jan 02
*options.txt* For Vim version 9.0. Last change: 2023 Feb 01
VIM REFERENCE MANUAL by Bram Moolenaar
@ -1899,7 +1899,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'allowrevins' + off no CTRL-_ command
'antialias' + off don't use antialiased fonts
'arabic' + off reset arabic-related options
'arabic' + off reset arabic-related options
'arabicshape' + on correct character shapes
'backspace' + "" normal backspace
'backup' + off no backup file
@ -4943,7 +4943,7 @@ A jump table for the options with a short description can be found at |Q_op|.
empty. Then set the 'term' option to have it take effect: >
set keyprotocol=
let &term = &term
<
*'keywordprg'* *'kp'*
'keywordprg' 'kp' string (default "man" or "man -s", DOS: ":help",
@ -5201,8 +5201,8 @@ A jump table for the options with a short description can be found at |Q_op|.
are left blank.
*lcs-multispace*
multispace:c...
One or more characters to use cyclically to show for
multiple consecutive spaces. Overrides the "space"
One or more characters to use cyclically to show for
multiple consecutive spaces. Overrides the "space"
setting, except for single spaces. When omitted, the
"space" setting is used. For example,
`:set listchars=multispace:---+` shows ten consecutive
@ -7784,8 +7784,8 @@ A jump table for the options with a short description can be found at |Q_op|.
windows.
* - Set highlight group to User{N}, where {N} is taken from the
minwid field, e.g. %1*. Restore normal highlight with %* or %0*.
The difference between User{N} and StatusLine will be applied
to StatusLineNC for the statusline of non-current windows.
The difference between User{N} and StatusLine will be applied to
StatusLineNC for the statusline of non-current windows.
The number N must be between 1 and 9. See |hl-User1..9|
When displaying a flag, Vim removes the leading comma, if any, when

View File

@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 9.0. Last change: 2022 Sep 26
*quickfix.txt* For Vim version 9.0. Last change: 2023 Jan 18
VIM REFERENCE MANUAL by Bram Moolenaar
@ -365,8 +365,6 @@ processing a quickfix or location list command, it will be aborted.
If numbers [from] and/or [to] are given, the respective
range of errors is listed. A negative number counts
from the last error backwards, -1 being the last error.
The 'switchbuf' settings are respected when jumping
to a buffer.
The |:filter| command can be used to display only the
quickfix entries matching a supplied pattern. The
pattern is matched against the filename, module name,

View File

@ -438,8 +438,10 @@ $quote eval.txt /*$quote*
'keymap' options.txt /*'keymap'*
'keymodel' options.txt /*'keymodel'*
'keyprotocol' options.txt /*'keyprotocol'*
'keywordprg' options.txt /*'keywordprg'*
'km' options.txt /*'km'*
'kmp' options.txt /*'kmp'*
'kp' options.txt /*'kp'*
'kpc' options.txt /*'kpc'*
'langmap' options.txt /*'langmap'*
'langmenu' options.txt /*'langmenu'*
@ -4416,6 +4418,11 @@ E1351 vim9class.txt /*E1351*
E1352 vim9class.txt /*E1352*
E1353 vim9class.txt /*E1353*
E1354 vim9class.txt /*E1354*
E1355 vim9class.txt /*E1355*
E1356 vim9class.txt /*E1356*
E1357 vim9class.txt /*E1357*
E1358 vim9class.txt /*E1358*
E1359 vim9class.txt /*E1359*
E136 starting.txt /*E136*
E137 starting.txt /*E137*
E138 starting.txt /*E138*
@ -5633,6 +5640,7 @@ View starting.txt /*View*
Vim9 vim9.txt /*Vim9*
Vim9-abstract-class vim9class.txt /*Vim9-abstract-class*
Vim9-class vim9class.txt /*Vim9-class*
Vim9-class-member vim9class.txt /*Vim9-class-member*
Vim9-class-overview vim9class.txt /*Vim9-class-overview*
Vim9-enum vim9class.txt /*Vim9-enum*
Vim9-script vim9.txt /*Vim9-script*
@ -6311,7 +6319,6 @@ cino-} indent.txt /*cino-}*
cinoptions-values indent.txt /*cinoptions-values*
class vim9class.txt /*class*
class-function vim9class.txt /*class-function*
class-member vim9class.txt /*class-member*
clear-undo undo.txt /*clear-undo*
clearmatches() builtin.txt /*clearmatches()*
client-server remote.txt /*client-server*
@ -7558,6 +7565,7 @@ getbufinfo() builtin.txt /*getbufinfo()*
getbufline() builtin.txt /*getbufline()*
getbufoneline() builtin.txt /*getbufoneline()*
getbufvar() builtin.txt /*getbufvar()*
getcellwidths() builtin.txt /*getcellwidths()*
getchangelist() builtin.txt /*getchangelist()*
getchar() builtin.txt /*getchar()*
getcharmod() builtin.txt /*getcharmod()*
@ -10042,6 +10050,7 @@ t_channel-variable eval.txt /*t_channel-variable*
t_ci version4.txt /*t_ci*
t_cil version4.txt /*t_cil*
t_cl term.txt /*t_cl*
t_class-variable eval.txt /*t_class-variable*
t_cm term.txt /*t_cm*
t_cri version4.txt /*t_cri*
t_cs term.txt /*t_cs*
@ -10106,6 +10115,7 @@ t_ms term.txt /*t_ms*
t_nd term.txt /*t_nd*
t_none-variable eval.txt /*t_none-variable*
t_number-variable eval.txt /*t_number-variable*
t_object-variable eval.txt /*t_object-variable*
t_op term.txt /*t_op*
t_se term.txt /*t_se*
t_sf1 version4.txt /*t_sf1*
@ -10614,6 +10624,7 @@ v:t_TYPE eval.txt /*v:t_TYPE*
v:t_blob eval.txt /*v:t_blob*
v:t_bool eval.txt /*v:t_bool*
v:t_channel eval.txt /*v:t_channel*
v:t_class eval.txt /*v:t_class*
v:t_dict eval.txt /*v:t_dict*
v:t_float eval.txt /*v:t_float*
v:t_func eval.txt /*v:t_func*
@ -10621,6 +10632,7 @@ v:t_job eval.txt /*v:t_job*
v:t_list eval.txt /*v:t_list*
v:t_none eval.txt /*v:t_none*
v:t_number eval.txt /*v:t_number*
v:t_object eval.txt /*v:t_object*
v:t_string eval.txt /*v:t_string*
v:termblinkresp eval.txt /*v:termblinkresp*
v:termrbgresp eval.txt /*v:termrbgresp*
@ -11208,6 +11220,8 @@ zz scroll.txt /*zz*
{rhs} map.txt /*{rhs}*
{server} remote.txt /*{server}*
{subject} helphelp.txt /*{subject}*
{{{ fold.txt /*{{{*
{} intro.txt /*{}*
} motion.txt /*}*
}}} fold.txt /*}}}*
~ change.txt /*~*

View File

@ -1,4 +1,4 @@
*term.txt* For Vim version 9.0. Last change: 2023 Jan 09
*term.txt* For Vim version 9.0. Last change: 2023 Jan 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -322,9 +322,14 @@ using the "xterm" workaround. These are the relevant entries (so far):
PS "\033[200~" pasted text start |t_PS|
PE "\033[201~" pasted text end |t_PE|
XM "\033[?1006;1000%?%p1%{1}%=%th%el%;"
XM "\033[?1006;1004;1000%?%p1%{1}%=%th%el%;"
mouse enable / disable |t_XM|
The "XM" entry includes "1006" to enable SGR style mouse reporting. This
supports columns above 223. It also includes "1004" which enables focus
reporting. The t_fe and t_fd entries can be left empty (they don't have
entries in terminfo/termcap anyway).
*xterm-kitty* *kitty-terminal*
The Kitty terminal is a special case. Mainly because it works differently
from most other terminals, but also because, instead of trying the fit in and

View File

@ -223,12 +223,12 @@ test_ignore_error({expr}) *test_ignore_error()*
Can also be used as a |method|: >
GetErrorText()->test_ignore_error()
test_mswin_event({event}, {args}) *test_mswin_event()*
Generate a low-level MS-Windows {event} with arguments {args}
for testing Vim functionality. It works for MS-Windows GUI
for testing Vim functionality. It works for MS-Windows GUI
and for the console.
{event} is a String and the supported values are:
"mouse" mouse event.
"key" keyboard event.

View File

@ -108,7 +108,7 @@ prop_type_list([{props}]) get list of property types
Manipulating text properties:
prop_add({lnum}, {col}, {props}) add a text property
prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
prop_add_list({props}, [{item}, ...])
add a text property at multiple
positions.
prop_clear({lnum} [, {lnum-end} [, {bufnr}]])
@ -263,12 +263,12 @@ prop_add_list({props}, [{item}, ...])
It is not possible to add a text property with a "text" field
here.
Example:
Example: >
call prop_add_list(#{type: 'MyProp', id: 2},
\ [[1, 4, 1, 7],
\ [1, 15, 1, 20],
\ [2, 30, 3, 30]]
<
Can also be used as a |method|: >
GetProp()->prop_add_list([[1, 1, 1, 2], [1, 4, 1, 8]])

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 9.0. Last change: 2023 Jan 09
*todo.txt* For Vim version 9.0. Last change: 2023 Feb 02
VIM REFERENCE MANUAL by Bram Moolenaar
@ -38,6 +38,13 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
Errors when running tests with valgrind:
- test_codestyle.vim: e.g.:
command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[569]..function RunTheTest[52]..Test_test_files line 6: keycode_check.vim: space before tab: Expected 0 but got 7
command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[569]..function RunTheTest[52]..Test_test_files line 10: setup.vim: trailing white space: Expected 0 but got 23
- test_gui.vim:
Found errors in Test_gui_mouse_event():
Upcoming larger works:
- Make spell checking work with recent .dic/.aff files, e.g. French. #4916
Make Vim understand the format somehow? Search for "spell" below.
@ -53,18 +60,29 @@ Upcoming larger works:
Further Vim9 improvements, possibly after launch:
- implement :class and :interface: See |vim9-classes| #11544
inheritance: how about super()?
inheritance: new() method from parent used in child?
import/export of a class
type() should return different type for each class?
give error for shadowing (variable and argument) when defining a class or
interface, not later when compiling it.
object empty(), len() - can class define a method to be used for them?
how about lock/unlock?
When checking "implements" also check types of members and function args.
- implement :class and :interface: See |vim9-classes
- Change access: public by default, private by prefixing "_".
Check for error: can't have same name twice (ignoring "_" prefix).
- Private methods?
either: private def Func()
or: def _Func()
Perhaps use "private" keyword instead of "_" prefix?
- "final" object members - can only be set in the constructor.
- object empty(), len() - can class define a method to be used for them?
- how about lock/unlock?
- When checking "implements" also check types of members and function args.
- For chaining, allow using the class name as type for function return
value.
- Implement generics
- Add "instanceof"
- More efficient way for interface member index than iterating over list?
- a variant of type() that returns a different type for each class?
list<number> and list<string> should also differ.
- Issue #11822: any.Func() can be a dict or an object call, need to handle
this at runtime.
- implement :type
- implement :enum
- class local to a function
- Use Vim9 for more runtime files.
- Inline call to map() and filter(), better type checking.
- When evaluating constants for script variables, some functions could work:
@ -72,16 +90,19 @@ Further Vim9 improvements, possibly after launch:
- Implement as part of an expression: ++expr, --expr, expr++, expr--.
Information missing in terminfo:
Priority:
- t_RV request terminal version string; xterm: "\033[>c"
change in terminfo for "RV" uses the wrong escape sequence... ?
Mouse support:
on/off: hard coded in mch_setmouse() - use "XM" terminfo/termcap entry;
If it starts with "\E[?1006;1000%" then set 'ttymouse' to "sgr".
change in terminfo for "RV" uses the wrong escape sequence 7 - 14 Jan only
Codes used for focus gained and lost (currently using use_xterm_like_mouse())
termcodes are hard-coded in set_termname(), not named.
Use the XF flag? enables recognizing the focus in/out events.
Check if t_fe is not empty.
Check for "1004" in t_XM. (disadvantage: only focus events when mouse is
used)
- t_fe enable focus-event tracking
- t_fd disable focus-event tracking
Modifiers for various keys
- Decode kitty key protocol Meta and use MOD_MASK_META. Document <T-k>
- flag to indicate "xterm compatible modifiers" ?
Underline and similar:
- t_AU - Set underline color: like "AF" and "AB" entries.
- t_Ce undercurl and underline end
@ -124,6 +145,8 @@ Probably Vim internal, not in terminfo:
- t_RK request terminal keyboard protocol state; sent after |t_TI|
Already working, not properly documented:
- t_u7 request cursor position
Also, with Alt-b we get â, with Alt-Shift-b we should bet another character.
That does not appear to work with Kitty. #11913
Popup windows:
- Add a function to redraw a specific popup window. Esp. to be used when

View File

@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 9.0. Last change: 2022 Dec 20
*usr_41.txt* For Vim version 9.0. Last change: 2023 Jan 17
VIM USER MANUAL - by Bram Moolenaar

View File

@ -105,7 +105,7 @@ script and `:def` functions; details are below:
`:open`
`:s` with only flags
`:t`
`:xit`
`:xit`
- Some commands, especially those used for flow control, cannot be shortened.
E.g., `:throw` cannot be written as `:th`. *vim9-no-shorten*
- You cannot use curly-braces names.
@ -265,7 +265,7 @@ Detail: this is because "Inner" will actually become a function reference to a
function with a generated name.
It is not possible to define a script-local function in a function. You can
define a local function and assign it to a script-local funcref (it must have
define a local function and assign it to a script-local Funcref (it must have
been declared at the script level). It is possible to define a global
function by using the "g:" prefix.
@ -388,7 +388,6 @@ used: >
echo temp # Error!
This is especially useful in a user command: >
command -range Rename {
var save = @a
@a = 'some expression'
@ -397,7 +396,6 @@ This is especially useful in a user command: >
}
And with autocommands: >
au BufWritePre *.go {
var save = winsaveview()
silent! exe ':%! some formatting command'
@ -746,7 +744,7 @@ continuation is used without a backslash and a line starts with a bar: >
*E1050*
To make it possible for the operator at the start of the line to be
recognized, it is required to put a colon before a range. This example will
add "start" and print: >
add "start" and "print": >
var result = start
+ print
Like this: >
@ -805,7 +803,7 @@ Notes:
echo [1, 2]
[3, 4]
- In some cases it is difficult for Vim to parse a command, especially when
commands are used as an argument to another command, such as `windo`. In
commands are used as an argument to another command, such as `:windo`. In
those cases the line continuation with a backslash has to be used.
@ -1311,7 +1309,7 @@ Closures defined in a loop will share the same context. For example: >
< *E1271*
A closure must be compiled in the context that it is defined in, so that
variables in that context can be found. This mostly happens correctly, except
when a function is marked for debugging with `breakadd` after it was compiled.
when a function is marked for debugging with `:breakadd` after it was compiled.
Make sure to define the breakpoint before compiling the outer function.
The "inloop" variable will exist only once, all closures put in the list refer
@ -1353,7 +1351,7 @@ closure: >
}
endfor
Using `echowindow` is useful in a timer, the messages go into a popup and will
Using `:echowindow` is useful in a timer, the messages go into a popup and will
not interfere with what the user is doing when it triggers.
@ -1594,7 +1592,7 @@ That is because the declaration looks like a list of numbers, thus is
equivalent to: >
var ll: list<number> = [1, 2, 3]
If you do want a more permissive list you need to declare the type: >
var ll: list<any = [1, 2, 3]
var ll: list<any> = [1, 2, 3]
ll->extend(['x']) # OK

View File

@ -1,21 +1,22 @@
*vim9class.txt* For Vim version 9.0. Last change: 2023 Jan 09
*vim9class.txt* For Vim version 9.0. Last change: 2023 Jan 17
VIM REFERENCE MANUAL by Bram Moolenaar
NOTE - This is under development, anything can still change! - NOTE
NOTE - This is not finished yet, anything can still change! - NOTE
Vim9 classes, objects, interfaces, types and enums.
1. Overview |Vim9-class-overview|
2. A simple class |Vim9-simple-class|
3. Using an abstract class |Vim9-abstract-class|
4. Using an interface |Vim9-using-interface|
5. More class details |Vim9-class|
6. Type definition |Vim9-type|
7. Enum |Vim9-enum|
3. Class members and functions |Vim9-class-member|
4. Using an abstract class |Vim9-abstract-class|
5. Using an interface |Vim9-using-interface|
6. More class details |Vim9-class|
7. Type definition |Vim9-type|
8. Enum |Vim9-enum|
9. Rationale
10. To be done later
@ -25,25 +26,25 @@ Vim9 classes, objects, interfaces, types and enums.
1. Overview *Vim9-class-overview*
The fancy term is "object-oriented programming". You can find lots of study
material about this subject. Here we document what |Vim9| script provides,
assuming you know the basics already. Added are helpful hints about how
to use this functionality effectively.
material on this subject. Here we document what |Vim9| script provides,
assuming you know the basics already. Added are helpful hints about how to
use this functionality effectively.
The basic item is an object:
- An object stores state. It contains one or more variables that can each
have a value.
- An object usually provides functions that manipulate its state. These
- An object provides functions that use and manipulate its state. These
functions are invoked "on the object", which is what sets it apart from the
traditional separation of data and code that manipulates the data.
- An object has a well defined interface, with typed member variables and
member functions.
- Objects are created by a class and all objects have the same interface.
This never changes, it is not dynamic.
- Objects are created from a class and all objects have the same interface.
This does not change at runtime, it is not dynamic.
An object can only be created by a class. A class provides:
- A new() method, the constructor, which returns an object for the class.
This method is invoked on the class name: MyClass.new().
- State shared by all objects of the class: class variables and constants.
- State shared by all objects of the class: class variables (class members).
- A hierarchy of classes, with super-classes and sub-classes, inheritance.
An interface is used to specify properties of an object:
@ -62,17 +63,18 @@ teachers use real-world objects to explain class relations and you might think
your model should therefore reflect the real world. It doesn't! The model
should match your purpose.
You will soon find that composition is often better than inheritance. Don't
waste time trying to find the optimal class model. Or waste time discussing
whether a square is a rectangle or that a rectangle is a square. It doesn't
matter.
Keep in mind that composition (an object contains other objects) is often
better than inheritance (an object extends another object). Don't waste time
trying to find the optimal class model. Or waste time discussing whether a
square is a rectangle or that a rectangle is a square. It doesn't matter.
==============================================================================
2. A simple class *Vim9-simple-class*
Let's start with a simple example: a class that stores a text position: >
Let's start with a simple example: a class that stores a text position (see
below for how to do this more efficiently): >
class TextPosition
this.lnum: number
@ -107,7 +109,7 @@ The object members "lnum" and "col" can be accessed directly: >
< *E1317* *E1327*
If you have been using other object-oriented languages you will notice that
in Vim the object members are consistently referred to with the "this."
prefix. This is different from languages like Java and TypeScript. This
prefix. This is different from languages like Java and TypeScript. The
naming convention makes the object members easy to spot. Also, when a
variable does not have the "this." prefix you know it is not an object member.
@ -117,9 +119,9 @@ Member write access ~
Now try to change an object member directly: >
pos.lnum = 9
< *E1335*
< *E1335*
This will give you an error! That is because by default object members can be
read but not set. That's why the class provides a method for it: >
read but not set. That's why the TextPosition class provides a method for it: >
pos.SetLnum(9)
@ -128,12 +130,12 @@ way. Most often there is no problem using a value, while setting a value may
have side effects that need to be taken care of. In this case, the SetLnum()
method could check if the line number is valid and either give an error or use
the closest valid value.
*:public* *E1331*
*:public* *E1331*
If you don't care about side effects and want to allow the object member to be
changed at any time, you can make it public: >
public this.lnum: number
public this.col number
public this.col: number
Now you don't need the SetLnum(), SetCol() and SetPosition() methods, setting
"pos.lnum" directly above will no longer give an error.
@ -153,7 +155,7 @@ name: >
this._col number
Now you need to provide methods to get the value of the private members.
These are commonly call getters. We recommend using a name that starts with
These are commonly called getters. We recommend using a name that starts with
"Get": >
def GetLnum(): number
@ -181,6 +183,7 @@ Simplifying the new() method ~
Many constructors take values for the object members. Thus you very often see
this pattern: >
class SomeClass
this.lnum: number
this.col: number
@ -188,6 +191,7 @@ this pattern: >
this.lnum = lnum
this.col = col
enddef
endclass
Not only is this text you need to write, it also has the type of each member
twice. Since this is so common a shorter way to write new() is provided: >
@ -197,8 +201,24 @@ twice. Since this is so common a shorter way to write new() is provided: >
The semantics are easy to understand: Providing the object member name,
including "this.", as the argument to new() means the value provided in the
new() call is assigned to that object member. This mechanism is coming from
the Dart language.
new() call is assigned to that object member. This mechanism comes from the
Dart language.
Putting together this way of using new() and making the members public results
in a much shorter class definition as what we started with: >
class TextPosition
public this.lnum: number
public this.col: number
def new(this.lnum, this.col)
enddef
def SetPosition(lnum: number, col: number)
this.lnum = lnum
this.col = col
enddef
endclass
The sequence of constructing a new object is:
1. Memory is allocated and cleared. All values are zero/false/empty.
@ -208,22 +228,69 @@ The sequence of constructing a new object is:
3. Arguments in the new() method in the "this.name" form are assigned.
4. The body of the new() method is executed.
TODO: for a sub-class the constructor of the parent class will be invoked
somewhere.
If the class extends a parent class, the same thing happens. In the second
step the members of the parent class are done first. There is no need to call
"super()" or "new()" on the parent.
==============================================================================
3. Using an abstract class *Vim9-abstract-class*
3. class members and functions *Vim9-class-member*
*:static* *E1337* *E1338*
Class members are declared with "static". They are used by the name without a
prefix: >
class OtherThing
this.size: number
static totalSize: number
def new(this.size)
totalSize += this.size
enddef
endclass
< *E1340* *E1341*
Since the name is used as-is, shadowing the name by a function argument name
or local variable name is not allowed.
Just like object members the access can be made private by using an underscore
as the first character in the name, and it can be made public by prefixing
"public": >
class OtherThing
static total: number # anybody can read, only class can write
static _sum: number # only class can read and write
public static result: number # anybody can read and write
endclass
<
*class-function*
Class functions are also declared with "static". They have no access to
object members, they cannot use the "this" keyword. >
class OtherThing
this.size: number
static totalSize: number
# Clear the total size and return the value it had before.
static def ClearTotalSize(): number
var prev = totalSize
totalSize = 0
return prev
enddef
endclass
Inside the class the function can be called by name directly, outside the
class the class name must be prefixed: `OtherThing.ClearTotalSize()`.
==============================================================================
4. Using an abstract class *Vim9-abstract-class*
An abstract class forms the base for at least one sub-class. In the class
model one often finds that a few classes have the same properties that can be
shared, but a class with those properties does not have enough state to create
shared, but a class with these properties does not have enough state to create
an object from. A sub-class must extend the abstract class and add the
missing state and/or methods before it can be used to create objects for.
An abstract class does not have a new() method.
For example, a Shape class could store a color and thickness. You cannot
create a Shape object, it is missing the information about what kind of shape
it is. The Shape class functions as the base for a Square and a Triangle
@ -249,51 +316,13 @@ class, for which objects can be created. Example: >
enddef
endclass
<
*class-member* *:static* *E1337* *E1338*
Class members are declared with "static". They are used by the name without a
prefix: >
class OtherThing
this.size: number
static totalSize: number
def new(this.size)
totalSize += this.size
enddef
endclass
< *E1340* *E1341*
Since the name is used as-is, shadowing the name by a function argument name
or variable name is not allowed.
Just like object members the access can be made private by using an underscore
as the first character in the name, and it can be made public by prefixing
"public": >
class OtherThing
static total: number # anybody can read, only class can write
static _sum: number # only class can read and write
public static result: number # anybody can read and write
endclass
<
*class-function*
Class functions are also declared with "static". They have no access to
object members, they cannot use the "this" keyword. >
class OtherThing
this.size: number
static totalSize: number
" Clear the total size and return the value it had before.
static def ClearTotalSize(): number
var prev = totalSize
totalSize = 0
return prev
enddef
endclass
An abstract class is defined the same way as a normal class, except that it
does not have any new() method. *E1359*
==============================================================================
4. Using an interface *Vim9-using-interface*
5. Using an interface *Vim9-using-interface*
The example above with Shape, Square and Triangle can be made more useful if
we add a method to compute the surface of the object. For that we create the
@ -348,7 +377,7 @@ The interface name can be used as a type: >
==============================================================================
5. More class details *Vim9-class* *Class* *class*
6. More class details *Vim9-class* *Class* *class*
Defining a class ~
*:class* *:endclass* *:abstract*
@ -386,12 +415,52 @@ once. They can appear in any order, although this order is recommended: >
extends ClassName
implements InterfaceName, OtherInterface
specifies SomeInterface
< *extends*
< *E1355*
Each member and function name can be used only once. It is not possible to
define a function with the same name and different type of arguments.
Extending a class ~
*extends*
A class can extend one other class. *E1352* *E1353* *E1354*
The basic idea is to build on top of an existing class, add properties to it.
The extended class is called the "base class" or "super class". The new class
is called the "child class".
Object members from the base class are all taken over by the child class. It
is not possible to override them (unlike some other languages).
*E1356* *E1357* *E1358*
Object methods of the base class can be overruled. The signature (arguments,
argument types and return type) must be exactly the same. The method of the
base class can be called by prefixing "super.".
Other object methods of the base class are taken over by the child class.
Class functions, including functions starting with "new", can be overruled,
like with object methods. The function on the base class can be called by
prefixing the name of the class (for class functions) or "super.".
Unlike other languages, the constructor of the base class does not need to be
invoked. In fact, it cannot be invoked. If some initialization from the base
class also needs to be done in a child class, put it in an object method and
call that method from every constructor().
If the base class did not specify a new() function then one was automatically
created. This function will not be taken over by the child class. The child
class can define its own new() function, or, if there isn't one, a new()
function will be added automatically.
A class implementing an interface ~
*implements* *E1346* *E1347*
A class can implement one or more interfaces. The "implements" keyword can
only appear once *E1350* . Multiple interfaces can be specified, separated by
commas. Each interface name can appear only once. *E1351*
A class defining an interface ~
*specifies*
A class can declare its interface, the object members and methods, with a
named interface. This avoids the need for separately specifying the
@ -528,7 +597,7 @@ constructor methods.
==============================================================================
6. Type definition *Vim9-type* *:type*
7. Type definition *Vim9-type* *:type*
A type definition is giving a name to a type specification. For Example: >
@ -539,7 +608,7 @@ TODO: more explanation
==============================================================================
7. Enum *Vim9-enum* *:enum* *:endenum*
8. Enum *Vim9-enum* *:enum* *:endenum*
An enum is a type that can have one of a list of values. Example: >
@ -639,7 +708,7 @@ Some languages support multiple inheritance. Although that can be useful in
some cases, it makes the rules of how a class works quite complicated.
Instead, using interfaces to declare what is supported is much simpler. The
very popular Java language does it this way, and it should be good enough for
Vim. The "keep it simple" rule applies here.
Vim. The "keep it simple" rule applies here.
Explicitly declaring that a class supports an interface makes it easy to see
what a class is intended for. It also makes it possible to do proper type

View File

@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2022 Dec 19
" Last Change: 2023 Feb 02
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")

View File

@ -3,9 +3,9 @@
" Maintainer: Debian Vim Maintainers <team+vim@tracker.debian.org>
" Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de>
" Stefano Zacchiroli <zack@debian.org>
" Last Change: 2022 Jul 25
" Last Change: 2023 Jan 16
" License: Vim License
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debchangelog.vim
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/ftplugin/debchangelog.vim
" Bug completion requires apt-listbugs installed for Debian packages or
" python-launchpadlib installed for Ubuntu packages
@ -35,14 +35,14 @@ if exists('g:did_changelog_ftplugin')
finish
endif
" Don't load another plugin (this is global)
let g:did_changelog_ftplugin = 1
" Make sure the '<' and 'C' flags are not included in 'cpoptions', otherwise
" <CR> would not be recognized. See ":help 'cpoptions'".
let s:cpo_save = &cpo
set cpo&vim
" Don't load another plugin (this is global)
let g:did_changelog_ftplugin = 1
" {{{1 GUI menu
" Helper functions returning various data.

View File

@ -2,8 +2,8 @@
" Language: Debian control files
" Maintainer: Debian Vim Maintainers
" Former Maintainer: Pierre Habouzit <madcoder@debian.org>
" Last Change: 2018-01-28
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debcontrol.vim
" Last Change: 2023 Jan 16
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/ftplugin/debcontrol.vim
" Do these settings once per buffer
if exists('b:did_ftplugin')

View File

@ -1,9 +1,9 @@
" Vim filetype plugin file
" Language: Logcheck
" Maintainer: Debian Vim Maintainers
" Last Change: 2018 Dec 27
" Last Change: 2023 Jan 16
" License: Vim License
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/logcheck.vim
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/ftplugin/logcheck.vim
if exists('b:did_ftplugin')
finish

View File

@ -887,3 +887,55 @@ if true
elseif
endif
" END_INDENT
" START_INDENT
if (
true)
&& true
echo
endif
" END_INDENT
" START_INDENT
abstract class Shape
this.color = Color.Black
this.thickness = 10
endclass
" END_INDENT
" START_INDENT
class OtherThing
this.size: number
static totalSize: number
static def ClearTotalSize(): number
var prev = totalSize
totalSize = 0
return prev
enddef
endclass
" END_INDENT
" START_INDENT
interface HasSurface
this.size: number
def Surface(): number
endinterface
" END_INDENT
" START_INDENT
interface EnterExit
def Enter(): void
def Exit(): void
endinterface
" END_INDENT
" START_INDENT
enum Color
White
Red
Green
Blue
Black
endenum
" END_INDENT

View File

@ -887,3 +887,55 @@ if true
elseif
endif
" END_INDENT
" START_INDENT
if (
true)
&& true
echo
endif
" END_INDENT
" START_INDENT
abstract class Shape
this.color = Color.Black
this.thickness = 10
endclass
" END_INDENT
" START_INDENT
class OtherThing
this.size: number
static totalSize: number
static def ClearTotalSize(): number
var prev = totalSize
totalSize = 0
return prev
enddef
endclass
" END_INDENT
" START_INDENT
interface HasSurface
this.size: number
def Surface(): number
endinterface
" END_INDENT
" START_INDENT
interface EnterExit
def Enter(): void
def Exit(): void
endinterface
" END_INDENT
" START_INDENT
enum Color
White
Red
Green
Blue
Black
endenum
" END_INDENT

View File

@ -1,6 +1,6 @@
" Vim plugin for converting a syntax highlighted file to HTML.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2019 Nov 13
" Last Change: 2023 Jan 01
"
" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
" $VIMRUNTIME/syntax/2html.vim
@ -8,11 +8,23 @@
if exists('g:loaded_2html_plugin')
finish
endif
let g:loaded_2html_plugin = 'vim8.1_v2'
let g:loaded_2html_plugin = 'vim9.0_v1'
"
" Changelog: {{{
" 8.1_v2 (this version): - Fix Bitbucket issue #19: fix calculation of tab
" 9.0_v1 (this version): - Implement g:html_no_doc and g:html_no_modeline
" for diff mode. Add tests.
" (Vim 9.0.1122): NOTE: no version string update for this version!
" - Bugfix for variable name in g:html_no_doc
" (Vim 9.0.0819): NOTE: no version string update for this version!
" - Add options g:html_no_doc, g:html_no_lines,
" and g:html_no_modeline (partially included in Vim
" runtime prior to version string update).
" - Updates for new Vim9 string append style (i.e. use
" ".." instead of ".")
"
" 8.1 updates: {{{
" 8.1_v2 (Vim 8.1.2312): - Fix SourceForge issue #19: fix calculation of tab
" stop position to use in expanding a tab, when that
" tab occurs after a syntax match which in turn
" comes after previously expanded tabs.
@ -20,17 +32,17 @@ let g:loaded_2html_plugin = 'vim8.1_v2'
" destination file to ignore FileType events;
" speeds up processing when the destination file
" already exists and HTML highlight takes too long.
" - Fix Bitbucket issue #20: progress bar could not be
" - Fix SourceForge issue #20: progress bar could not be
" seen when DiffDelete background color matched
" StatusLine background color. Added TOhtmlProgress
" highlight group for manual user override, but
" calculate it to be visible compared to StatusLine
" by default.
" - Fix Bitbucket issue #1: Remove workaround for old
" - Fix SourceForge issue #1: Remove workaround for old
" browsers which don't support 'ch' CSS unit, since
" all modern browsers, including IE>=9, support it.
" - Fix Bitbucket issue #10: support termguicolors
" - Fix Bitbucket issue #21: default to using
" - Fix SourceForge issue #10: support termguicolors
" - Fix SourceForge issue #21: default to using
" generated content instead of <input> tags for
" uncopyable text, so that text is correctly
" prevented from being copied in chrome. Use
@ -41,13 +53,14 @@ let g:loaded_2html_plugin = 'vim8.1_v2'
" - Fix fallback sizing of <input> tags for browsers
" without "ch" support.
" - Fix cursor on unselectable diff filler text.
" 8.1_v1 (Vim 8.1.0528): - Fix Bitbucket issue #6: Don't generate empty
" 8.1_v1 (Vim 8.1.0528): - Fix SourceForge issue #6: Don't generate empty
" script tag.
" - Fix Bitbucket issue #5: javascript should
" - Fix SourceForge issue #5: javascript should
" declare variables with "var".
" - Fix Bitbucket issue #13: errors thrown sourcing
" - Fix SourceForge issue #13: errors thrown sourcing
" 2html.vim directly when plugins not loaded.
" - Fix Bitbucket issue #16: support 'vartabstop'.
" - Fix SourceForge issue #16: support 'vartabstop'.
"}}}
"
" 7.4 updates: {{{
" 7.4_v2 (Vim 7.4.0899): Fix error raised when converting a diff containing
@ -152,7 +165,7 @@ let g:loaded_2html_plugin = 'vim8.1_v2'
" TODO: {{{
" * Check the issue tracker:
" https://bitbucket.org/fritzophrenic/vim-tohtml/issues?status=new&status=open
" https://sourceforge.net/p/vim-tohtml/issues/search/?q=%21status%3Aclosed
" * Options for generating the CSS in external style sheets. New :TOcss
" command to convert the current color scheme into a (mostly) generic CSS
" stylesheet which can be re-used. Alternate stylesheet support? Good start

View File

@ -1,6 +1,6 @@
" Vim syntax support file
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2022 Dec 26
" Last Change: 2023 Jan 01
"
" Additional contributors:
"

View File

@ -2,8 +2,8 @@
" Language: automake Makefile.am
" Maintainer: Debian Vim Maintainers
" Former Maintainer: John Williams <jrw@pobox.com>
" Last Change: 2018 Dec 27
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/automake.vim
" Last Change: 2023 Jan 16
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/automake.vim
"
" XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain
" it only because patches have been submitted for it by Debian users and the

View File

@ -3,8 +3,8 @@
" Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2022 Oct 29
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
" Last Change: 2023 Jan 16
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debchangelog.vim
" Standard syntax initialization
if exists('b:current_syntax')

View File

@ -3,8 +3,8 @@
" Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2022 May 11
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcontrol.vim
" Last Change: 2023 Jan 16
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debcontrol.vim
" Standard syntax initialization
if exists('b:current_syntax')

View File

@ -1,8 +1,8 @@
" Vim syntax file
" Language: Debian copyright file
" Maintainer: Debian Vim Maintainers
" Last Change: 2019 Sep 07
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcopyright.vim
" Last Change: 2023 Jan 16
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debcopyright.vim
" Standard syntax initialization
if exists('b:current_syntax')

View File

@ -2,8 +2,8 @@
" Language: Debian sources.list
" Maintainer: Debian Vim Maintainers
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
" Last Change: 2022 Oct 29
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim
" Last Change: 2023 Jan 16
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debsources.vim
" Standard syntax initialization
if exists('b:current_syntax')
@ -14,7 +14,7 @@ endif
syn case match
" A bunch of useful keywords
syn match debsourcesKeyword /\(deb-src\|deb\|main\|contrib\|non-free\|restricted\|universe\|multiverse\)/
syn match debsourcesKeyword /\(deb-src\|deb\|main\|contrib\|non-free\|non-free-firmware\|restricted\|universe\|multiverse\)/
" Match comments
syn match debsourcesComment /#.*/ contains=@Spell

View File

@ -1,8 +1,8 @@
" Vim syntax file
" Language: Debian DEP3 Patch headers
" Maintainer: Gabriel Filion <gabster@lelutin.ca>
" Last Change: 2022 Apr 06
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/dep3patch.vim
" Last Change: 2023 Jan 16
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/dep3patch.vim
"
" Specification of the DEP3 patch header format is available at:
" https://dep-team.pages.debian.net/deps/dep3/

View File

@ -1,8 +1,8 @@
" Vim syntax file
" Language: FORTH
" Current Maintainer: Johan Kotlinski <kotlinski@gmail.com>
" Previous Maintainer: Christian V. J. Brüssow <cvjb@cvjb.de>
" Last Change: 2018-03-29
" Previous Maintainer: Christian V. J. Br<EFBFBD>ssow <cvjb@cvjb.de>
" Last Change: 2023-01-12
" Filenames: *.fs,*.ft
" URL: https://github.com/jkotlinski/forth.vim
@ -23,7 +23,6 @@ syn case ignore
" Some special, non-FORTH keywords
syn keyword forthTodo contained TODO FIXME XXX
syn match forthTodo contained 'Copyright\(\s([Cc])\)\=\(\s[0-9]\{2,4}\)\='
" Characters allowed in keywords
" I don't know if 128-255 are allowed in ANS-FORTH
@ -98,13 +97,16 @@ syn keyword forthEndOfColonDef ; ;M ;m
syn keyword forthEndOfClassDef ;class
syn keyword forthEndOfObjectDef ;object
syn keyword forthDefine CONSTANT 2CONSTANT FCONSTANT VARIABLE 2VARIABLE
syn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS DOES> IMMEDIATE
syn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS <BUILDS DOES> IMMEDIATE
syn keyword forthDefine COMPILE-ONLY COMPILE RESTRICT INTERPRET POSTPONE EXECUTE
syn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION>
syn keyword forthDefine <INTERPRETATION COMPILATION> <COMPILATION ] LASTXT
syn keyword forthDefine COMP' POSTPONE, FIND-NAME NAME>INT NAME?INT NAME>COMP
syn keyword forthDefine NAME>STRING STATE C; CVARIABLE BUFFER: MARKER
syn keyword forthDefine , 2, F, C, COMPILE,
syn match forthDefine "\[DEFINED]"
syn match forthDefine "\[UNDEFINED]"
syn match forthDefine "\[IF]"
syn match forthDefine "\[IFDEF]"
syn match forthDefine "\[IFUNDEF]"
syn match forthDefine "\[THEN]"
@ -180,6 +182,7 @@ syn keyword forthBlocks BLOCK-INCLUDED BLK
syn keyword forthMath DECIMAL HEX BASE
syn match forthInteger '\<-\=[0-9]\+.\=\>'
syn match forthInteger '\<&-\=[0-9]\+.\=\>'
syn match forthInteger '\<#-\=[0-9]\+.\=\>'
" recognize hex and binary numbers, the '$' and '%' notation is for gforth
syn match forthInteger '\<\$\x*\x\+\>' " *1* --- don't mess
syn match forthInteger '\<\x*\d\x*\>' " *2* --- this order!
@ -192,18 +195,18 @@ syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>'
syn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo
" Strings
syn region forthString start=+\.*\"+ end=+"+ end=+$+
syn region forthString start=+\.*\"+ end=+"+ end=+$+ contains=@Spell
" XXX
syn region forthString start=+s\"+ end=+"+ end=+$+
syn region forthString start=+s\\\"+ end=+"+ end=+$+
syn region forthString start=+c\"+ end=+"+ end=+$+
syn region forthString start=+s\"+ end=+"+ end=+$+ contains=@Spell
syn region forthString start=+s\\\"+ end=+"+ end=+$+ contains=@Spell
syn region forthString start=+c\"+ end=+"+ end=+$+ contains=@Spell
" Comments
syn match forthComment '\\\s.*$' contains=forthTodo,forthSpaceError
syn region forthComment start='\\S\s' end='.*' contains=forthTodo,forthSpaceError
syn match forthComment '\.(\s[^)]*)' contains=forthTodo,forthSpaceError
syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError
syn region forthComment start='/\*' end='\*/' contains=forthTodo,forthSpaceError
syn match forthComment '\\\%(\s.*\)\=$' contains=@Spell,forthTodo,forthSpaceError
syn region forthComment start='\\S\s' end='.*' contains=@Spell,forthTodo,forthSpaceError
syn match forthComment '\.(\s[^)]*)' contains=@Spell,forthTodo,forthSpaceError
syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=@Spell,forthTodo,forthSpaceError
syn region forthComment start='/\*' end='\*/' contains=@Spell,forthTodo,forthSpaceError
" Include files
syn match forthInclude '^INCLUDE\s\+\k\+'
@ -260,3 +263,4 @@ let b:current_syntax = "forth"
let &cpo = s:cpo_save
unlet s:cpo_save
" vim:ts=8:sw=4:nocindent:smartindent:

View File

@ -1,7 +1,8 @@
" Vim syntax file
" Language: gpg(1) configuration file
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-10-14
" Language: gpg(1) configuration file
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-10-14
" Updated: 2023-01-23 @ObserverOfTime: added a couple of keywords
if exists("b:current_syntax")
finish
@ -12,91 +13,92 @@ set cpo&vim
setlocal iskeyword+=-
syn keyword gpgTodo contained FIXME TODO XXX NOTE
syn keyword gpgTodo contained FIXME TODO XXX NOTE
syn region gpgComment contained display oneline start='#' end='$'
\ contains=gpgTodo,gpgID,@Spell
syn region gpgComment contained display oneline start='#' end='$'
\ contains=gpgTodo,gpgID,@Spell
syn match gpgID contained display '\<\(0x\)\=\x\{8,}\>'
syn match gpgID contained display '\<\(0x\)\=\x\{8,}\>'
syn match gpgBegin display '^' skipwhite nextgroup=gpgComment,gpgOption,gpgCommand
syn match gpgBegin display '^' skipwhite nextgroup=gpgComment,gpgOption,gpgCommand
syn keyword gpgCommand contained skipwhite nextgroup=gpgArg
\ check-sigs decrypt decrypt-files delete-key
\ delete-secret-and-public-key delete-secret-key
\ edit-key encrypt-files export export-all
\ export-ownertrust export-secret-keys
\ export-secret-subkeys fast-import fingerprint
\ gen-prime gen-random import import-ownertrust
\ list-keys list-public-keys list-secret-keys
\ list-sigs lsign-key nrsign-key print-md print-mds
\ recv-keys search-keys send-keys sign-key verify
\ verify-files
syn keyword gpgCommand contained skipwhite nextgroup=gpgArgError
\ check-trustdb clearsign desig-revoke detach-sign
\ encrypt gen-key gen-revoke help list-packets
\ rebuild-keydb-caches sign store symmetric
\ update-trustdb version warranty
syn keyword gpgCommand contained skipwhite nextgroup=gpgArg
\ check-sigs decrypt decrypt-files delete-key
\ delete-secret-and-public-key delete-secret-key
\ edit-key encrypt-files export export-all
\ export-ownertrust export-secret-keys
\ export-secret-subkeys fast-import fingerprint
\ gen-prime gen-random import import-ownertrust
\ list-keys list-public-keys list-secret-keys
\ list-sigs lsign-key nrsign-key print-md print-mds
\ recv-keys search-keys send-keys sign-key verify
\ verify-files
syn keyword gpgCommand contained skipwhite nextgroup=gpgArgError
\ check-trustdb clearsign desig-revoke detach-sign
\ encrypt gen-key gen-revoke help list-packets
\ rebuild-keydb-caches sign store symmetric
\ update-trustdb version warranty
syn keyword gpgOption contained skipwhite nextgroup=gpgArg
\ attribute-fd cert-digest-algo charset cipher-algo
\ command-fd comment completes-needed compress
\ compress-algo debug default-cert-check-level
\ default-key default-preference-list
\ default-recipient digest-algo disable-cipher-algo
\ disable-pubkey-algo encrypt-to exec-path
\ export-options group homedir import-options
\ keyring keyserver keyserver-options load-extension
\ local-user logger-fd marginals-needed max-cert-depth
\ notation-data options output override-session-key
\ passphrase-fd personal-cipher-preferences
\ personal-compress-preferences
\ personal-digest-preferences photo-viewer
\ recipient s2k-cipher-algo s2k-digest-algo s2k-mode
\ secret-keyring set-filename set-policy-url status-fd
\ trusted-key verify-options keyid-format list-options
syn keyword gpgOption contained skipwhite nextgroup=gpgArgError
\ allow-freeform-uid allow-non-selfsigned-uid
\ allow-secret-key-import always-trust
\ armor ask-cert-expire ask-sig-expire
\ auto-check-trustdb batch debug-all default-comment
\ default-recipient-self dry-run emit-version
\ emulate-md-encode-bug enable-special-filenames
\ escape-from-lines expert fast-list-mode
\ fixed-list-mode for-your-eyes-only
\ force-mdc force-v3-sigs force-v4-certs
\ gpg-agent-info ignore-crc-error ignore-mdc-error
\ ignore-time-conflict ignore-valid-from interactive
\ list-only lock-multiple lock-never lock-once
\ merge-only no no-allow-non-selfsigned-uid
\ no-armor no-ask-cert-expire no-ask-sig-expire
\ no-auto-check-trustdb no-batch no-comment
\ no-default-keyring no-default-recipient
\ no-encrypt-to no-expensive-trust-checks
\ no-expert no-for-your-eyes-only no-force-v3-sigs
\ no-force-v4-certs no-greeting no-literal
\ no-mdc-warning no-options no-permission-warning
\ no-pgp2 no-pgp6 no-pgp7 no-random-seed-file
\ no-secmem-warning no-show-notation no-show-photos
\ no-show-policy-url no-sig-cache no-sig-create-check
\ no-sk-comments no-tty no-utf8-strings no-verbose
\ no-version not-dash-escaped openpgp pgp2
\ pgp6 pgp7 preserve-permissions quiet rfc1991
\ set-filesize show-keyring show-notation show-photos
\ show-policy-url show-session-key simple-sk-checksum
\ sk-comments skip-verify textmode throw-keyid
\ try-all-secrets use-agent use-embedded-filename
\ utf8-strings verbose with-colons with-fingerprint
\ with-key-data yes
syn keyword gpgOption contained skipwhite nextgroup=gpgArg
\ attribute-fd cert-digest-algo charset cipher-algo
\ command-fd comment completes-needed compress
\ compress-algo debug default-cert-check-level
\ default-key default-preference-list
\ default-recipient digest-algo disable-cipher-algo
\ disable-pubkey-algo encrypt-to exec-path
\ export-options group homedir import-options
\ keyring keyserver keyserver-options load-extension
\ local-user logger-fd marginals-needed max-cert-depth
\ notation-data options output override-session-key
\ passphrase-fd personal-cipher-preferences
\ personal-compress-preferences
\ personal-digest-preferences photo-viewer
\ recipient s2k-cipher-algo s2k-digest-algo s2k-mode
\ secret-keyring set-filename set-policy-url status-fd
\ trusted-key verify-options keyid-format list-options
\ default-new-key-algo weak-digest
syn keyword gpgOption contained skipwhite nextgroup=gpgArgError
\ allow-freeform-uid allow-non-selfsigned-uid
\ allow-secret-key-import always-trust
\ armor ask-cert-expire ask-sig-expire
\ auto-check-trustdb batch debug-all default-comment
\ default-recipient-self dry-run emit-version
\ emulate-md-encode-bug enable-special-filenames
\ escape-from-lines expert fast-list-mode
\ fixed-list-mode for-your-eyes-only
\ force-mdc force-v3-sigs force-v4-certs
\ gpg-agent-info ignore-crc-error ignore-mdc-error
\ ignore-time-conflict ignore-valid-from interactive
\ list-only lock-multiple lock-never lock-once
\ merge-only no no-allow-non-selfsigned-uid
\ no-armor no-ask-cert-expire no-ask-sig-expire
\ no-auto-check-trustdb no-batch no-comment
\ no-default-keyring no-default-recipient
\ no-encrypt-to no-expensive-trust-checks
\ no-expert no-for-your-eyes-only no-force-v3-sigs
\ no-force-v4-certs no-greeting no-literal
\ no-mdc-warning no-options no-permission-warning
\ no-pgp2 no-pgp6 no-pgp7 no-random-seed-file
\ no-secmem-warning no-show-notation no-show-photos
\ no-show-policy-url no-sig-cache no-sig-create-check
\ no-sk-comments no-tty no-utf8-strings no-verbose
\ no-version not-dash-escaped openpgp pgp2
\ pgp6 pgp7 preserve-permissions quiet rfc1991
\ set-filesize show-keyring show-notation show-photos
\ show-policy-url show-session-key simple-sk-checksum
\ sk-comments skip-verify textmode throw-keyid
\ try-all-secrets use-agent use-embedded-filename
\ utf8-strings verbose with-colons with-fingerprint
\ with-key-data yes
syn match gpgArg contained display '\S\+\(\s\+\S\+\)*' contains=gpgID
syn match gpgArg contained display '\S\+\(\s\+\S\+\)*' contains=gpgID
syn match gpgArgError contained display '\S\+\(\s\+\S\+\)*'
hi def link gpgComment Comment
hi def link gpgTodo Todo
hi def link gpgID Number
hi def link gpgOption Keyword
hi def link gpgCommand Error
hi def link gpgComment Comment
hi def link gpgTodo Todo
hi def link gpgID Number
hi def link gpgOption Keyword
hi def link gpgCommand Error
hi def link gpgArgError Error
let b:current_syntax = "gpg"

31
runtime/syntax/lc.vim Normal file
View File

@ -0,0 +1,31 @@
" Vim syntax file
" Language: Elsa
" Maintainer: Miles Glapa-Grossklag <miles@glapa-grossklag.com>
" Last Change: 2023-01-29
if exists('b:current_syntax')
finish
endif
" Keywords
syntax keyword elsaKeyword let eval
syntax match elsaKeyword "\v:"
highlight link elsaKeyword Keyword
" Comments
setlocal commentstring=--%s
syntax match elsaComment "\v--.*$"
highlight link elsaComment Comment
" Operators
syntax match elsaOperator "\v\="
syntax match elsaOperator "\v\=[abd*~]\>"
syntax match elsaOperator "\v-\>"
syntax match elsaOperator "\v\\"
highlight link elsaOperator Operator
" Definitions
syntax match elsaConstant "\v[A-Z]+[A-Z_0-9]*"
highlight link elsaConstant Constant
let b:current_syntax = 'elsa'

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: nginx.conf
" Maintainer: Chris Aumann <me@chr4.org>
" Last Change: Apr 15, 2017
" Last Change: Jan 25, 2023
if exists("b:current_syntax")
finish
@ -84,6 +84,8 @@ syn keyword ngxListenOptions default_server contained
syn keyword ngxListenOptions ssl contained
syn keyword ngxListenOptions http2 contained
syn keyword ngxListenOptions spdy contained
syn keyword ngxListenOptions http3 contained
syn keyword ngxListenOptions quic contained
syn keyword ngxListenOptions proxy_protocol contained
syn keyword ngxListenOptions setfib contained
syn keyword ngxListenOptions fastopen contained
@ -265,8 +267,16 @@ syn keyword ngxDirective http2_max_concurrent_streams
syn keyword ngxDirective http2_max_field_size
syn keyword ngxDirective http2_max_header_size
syn keyword ngxDirective http2_max_requests
syn keyword ngxDirective http2_push
syn keyword ngxDirective http2_push_preload
syn keyword ngxDirective http2_recv_buffer_size
syn keyword ngxDirective http2_recv_timeout
syn keyword ngxDirective http3_hq
syn keyword ngxDirective http3_max_concurrent_pushes
syn keyword ngxDirective http3_max_concurrent_streams
syn keyword ngxDirective http3_push
syn keyword ngxDirective http3_push_preload
syn keyword ngxDirective http3_stream_buffer_size
syn keyword ngxDirective if_modified_since
syn keyword ngxDirective ignore_invalid_headers
syn keyword ngxDirective image_filter
@ -444,6 +454,10 @@ syn keyword ngxDirective proxy_temp_path
syn keyword ngxDirective proxy_timeout
syn keyword ngxDirective proxy_upload_rate
syn keyword ngxDirective queue
syn keyword ngxDirective quic_gso
syn keyword ngxDirective quic_host_key
syn keyword ngxDirective quic_mtu
syn keyword ngxDirective quic_retry
syn keyword ngxDirective random_index
syn keyword ngxDirective read_ahead
syn keyword ngxDirective real_ip_header
@ -545,8 +559,10 @@ syn keyword ngxDirective ssl_certificate
syn keyword ngxDirective ssl_certificate_key
syn keyword ngxDirective ssl_ciphers
syn keyword ngxDirective ssl_client_certificate
syn keyword ngxDirective ssl_conf_command
syn keyword ngxDirective ssl_crl
syn keyword ngxDirective ssl_dhparam
syn keyword ngxDirective ssl_early_data
syn keyword ngxDirective ssl_ecdh_curve
syn keyword ngxDirective ssl_engine
syn keyword ngxDirective ssl_handshake_timeout
@ -556,6 +572,7 @@ syn keyword ngxSSLPreferServerCiphersOn on contained
syn keyword ngxSSLPreferServerCiphersOff off contained
syn keyword ngxDirective ssl_preread
syn keyword ngxDirective ssl_protocols nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
syn keyword ngxDirective ssl_reject_handshake
syn match ngxSSLProtocol 'TLSv1' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
syn match ngxSSLProtocol 'TLSv1\.1' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
syn match ngxSSLProtocol 'TLSv1\.2' contained nextgroup=ngxSSLProtocol,ngxSSLProtocolDeprecated skipwhite
@ -622,6 +639,7 @@ syn keyword ngxDirective uwsgi_buffering
syn keyword ngxDirective uwsgi_buffers
syn keyword ngxDirective uwsgi_busy_buffers_size
syn keyword ngxDirective uwsgi_cache
syn keyword ngxDirective uwsgi_cache_background_update
syn keyword ngxDirective uwsgi_cache_bypass
syn keyword ngxDirective uwsgi_cache_key
syn keyword ngxDirective uwsgi_cache_lock
@ -2225,6 +2243,19 @@ syn keyword ngxDirectiveThirdParty xss_override_status
syn keyword ngxDirectiveThirdParty xss_check_status
syn keyword ngxDirectiveThirdParty xss_input_types
" CT Module <https://github.com/grahamedgecombe/nginx-ct>
" Certificate Transparency module for nginx
syn keyword ngxDirectiveThirdParty ssl_ct
syn keyword ngxDirectiveThirdParty ssl_ct_static_scts
" Dynamic TLS records patch <https://github.com/cloudflare/sslconfig/blob/master/patches/nginx__dynamic_tls_records.patch>
" TLS Dynamic Record Resizing
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_enable
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_size_hi
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_size_lo
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_threshold
syn keyword ngxDirectiveThirdParty ssl_dyn_rec_timeout
" ZIP Module <https://www.nginx.com/resources/wiki/modules/zip/>
" ZIP archiver for nginx

View File

@ -2,8 +2,8 @@
" Language: shell (sh) Korn shell (ksh) bash (sh)
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int>
" Last Change: Nov 25, 2022
" Version: 204
" Last Change: Dec 20, 2022
" Version: 205
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
" For options and settings, please use: :help ft-sh-syntax
" This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) and heredoc fixes from Felipe Contreras
@ -190,8 +190,10 @@ syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" ski
" =====
if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
syn match shStatement "\<alias\>"
syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`"
syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="="
syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]*\)\@=" skip="\\$" end="\>\|`"
syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]*=\)\@=" skip="\\$" end="="
" syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+\)\@=" skip="\\$" end="\>\|`"
" syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\h[-._[:alnum:]]\+=\)\@=" skip="\\$" end="="
" Touch: {{{1
" =====
@ -333,7 +335,7 @@ syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shComment
" systems too, however, so the following syntax will flag $(..) as
" an Error under /bin/sh. By consensus of vimdev'ers!
if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix")
syn region shCommandSub matchgroup=shCmdSubRegion start="\$(\ze[^(]" skip='\\\\\|\\.' end=")" contains=@shCommandSubList
syn region shCommandSub matchgroup=shCmdSubRegion start="\$(\ze[^(]\|$" skip='\\\\\|\\.' end=")" contains=@shCommandSubList
syn region shArithmetic matchgroup=shArithRegion start="\$((" skip='\\\\\|\\.' end="))" contains=@shArithList
syn region shArithmetic matchgroup=shArithRegion start="\$\[" skip='\\\\\|\\.' end="\]" contains=@shArithList
syn match shSkipInitWS contained "^\s\+"
@ -483,7 +485,9 @@ endif
" Parameter Dereferencing: {{{1
" ========================
if !exists("g:sh_no_error") && !(exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix"))
" Note: sh04 failure with following line
"if !exists("g:sh_no_error") && !(exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix"))
if !exists("g:sh_no_error")
syn match shDerefWordError "[^}$[~]" contained
endif
syn match shDerefSimple "\$\%(\h\w*\|\d\)" nextgroup=@shNoZSList

View File

@ -1,2 +1,2 @@
This directory "runtime/syntax/shared" contains Vim script files that are
generated or used by more then one syntax file.
generated or used by more than one syntax file.

View File

@ -2,8 +2,8 @@
" Language: tpp - Text Presentation Program
" Maintainer: Debian Vim Maintainers
" Former Maintainer: Gerfried Fuchs <alfie@ist.org>
" Last Change: 2018 Dec 27
" URL: https://salsa.debian.org/vim-team/vim-debian/master/syntax/tpp.vim
" Last Change: 2023 Jan 16
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/tpp.vim
" Filenames: *.tpp
" License: BSD
"

View File

@ -1,8 +1,8 @@
" Vim syntax file
" Language: Vim 9.0 script
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
" Last Change: Jan 08, 2023
" Version: 9.0-18
" Last Change: January 18, 2023
" Version: 9.0-21
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
" Automatically generated keyword lists: {{{1
@ -19,12 +19,13 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2
syn keyword vimCommand contained a ar[gs] argg[lobal] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] defer deletl dep diffpu[t] dj[ump] dp earlier echow[indow] endf[unction] ex files fini[sh] folddoc[losed] grepa[dd] helpf[ind] hor[izontal] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xmenu xunme
syn keyword vimCommand contained ab arga[dd] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec el[se] endfo[r] exi[t] filet fir[st] foldo[pen] gui helpg[rep] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoreme xunmenu
syn keyword vimCommand contained abc[lear] argd[elete] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] elsei[f] endt[ry] exp filetype fix[del] for gvim helpt[ags] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xnoremenu xwininfo
syn keyword vimCommand contained abo[veleft] argded[upe] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] em[enu] endw[hile] export filt[er] fo[ld] fu[nction] h[elp] hi iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xprop y[ank]
syn keyword vimCommand contained addd argdo au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] en[dif] ene[w] exu[sage] fin[d] foldc[lose] go[to] ha[rdcopy] hid[e] if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xr[estore] z[^.=]
syn keyword vimCommand contained al[l] arge[dit] bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletep delp diffp[atch] disa[ssemble] doaut ea echon enddef eval f[ile] fina[lly] foldd[oopen] gr[ep] helpc[lose] his[tory] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo
syn keyword vimCommand contained a ar[gs] argl[ocal] bad[d] bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] em[enu] endfo[r] eval f[ile] fina[lly] foldd[oopen] gr[ep] helpc[lose] his[tory] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
syn keyword vimCommand contained ab arga[dd] argu[ment] balt bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] en[dif] endinterface ex files fini[sh] folddoc[losed] grepa[dd] helpf[ind] hor[izontal] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] public py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
syn keyword vimCommand contained abc[lear] argd[elete] as[cii] bd[elete] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletep delp diffp[atch] disa[ssemble] doaut ea echon endclass endt[ry] exi[t] filet fir[st] foldo[pen] gui helpg[rep] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
syn keyword vimCommand contained abo[veleft] argded[upe] au bel[owright] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] defer deletl dep diffpu[t] dj[ump] dp earlier echow[indow] enddef endw[hile] exp filetype fix[del] for gvim helpt[ags] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp static sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
syn keyword vimCommand contained abstract argdo bN[ext] bf[irst] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec el[se] endenum ene[w] export filt[er] fo[ld] fu[nction] h[elp] hi iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
syn keyword vimCommand contained addd arge[dit] b[uffer] bl[ast] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] elsei[f] endf[unction] enum exu[sage] fin[d] foldc[lose] go[to] ha[rdcopy] hid[e] if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
syn keyword vimCommand contained al[l] argg[lobal] ba[ll] bm[odified]
syn match vimCommand contained "\<z[-+^.=]\=\>"
syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
@ -49,8 +50,8 @@ syn keyword vimOption contained invai invaltkeymap invar invarabicshape invasd i
syn keyword vimOption contained invakm invanti invarab invari invautochdir invautoshelldir invaw invballooneval invbevalterm invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo invendofline invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs invlazyredraw invlisp invloadplugins invlz invmagic invmle invmodelineexpr invmore invmousehide invodev invpi
" termcap codes (which can also be set) {{{2
syn keyword vimOption contained t_8b t_8u t_AF t_AL t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_Ds t_EI t_F2 t_F4 t_F6 t_F8 t_fd t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_K8 t_K9 t_kb t_KB t_kd t_KD t_KE t_KG t_KH t_KI t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_Ri t_RI t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_Si t_SI t_so t_sr t_SR t_ST t_te t_Te t_TE t_ti t_TI t_ts t_Ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_xn t_xs t_ZH t_ZR
syn keyword vimOption contained t_8f t_AB t_al t_AU t_BD t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_ds t_EC t_F1 t_F3 t_F5 t_F7 t_F9 t_fe t_GP t_IS t_K1 t_k3 t_k4 t_k5 t_k6 t_k7 t_k8 t_k9 t_KA t_kB t_KC t_kD t_ke t_KF t_kh t_kI t_KJ
syn keyword vimOption contained t_8b t_8u t_AF t_AL t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_Ds t_EI t_F2 t_F4 t_F6 t_F8 t_fd t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_K8 t_K9 t_kb t_KB t_kd t_KD t_KE t_KG t_KH t_KI t_KK t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_Ri t_RI t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_Si t_SI t_so t_sr t_SR t_ST t_te t_Te t_TE t_ti t_TI t_ts t_Ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR
syn keyword vimOption contained t_8f t_AB t_al t_AU t_BD t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_ds t_EC t_F1 t_F3 t_F5 t_F7 t_F9 t_fe t_GP t_IS t_K1 t_k3 t_k4 t_k5 t_k6 t_k7 t_k8 t_k9 t_KA t_kB t_KC t_kD t_ke t_KF t_kh t_kI t_KJ t_kl
syn match vimOption contained "t_%1"
syn match vimOption contained "t_#2"
syn match vimOption contained "t_#4"
@ -78,12 +79,12 @@ syn match vimHLGroup contained "Conceal"
syn case match
" Function Names {{{2
syn keyword vimFuncName contained abs argc assert_equal assert_match atan balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled extendnew findfile fnameescape foldtextresult get getchar getcmdline getcurpos getfsize getloclist getpos gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr listener_add luaeval mapset matchend max nextnonblank popup_atcursor popup_dialog popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdline setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_channel test_null_partial test_setmouse timer_info tolower type values winbufnr win_getid win_id2win winnr win_splitmove
syn keyword vimFuncName contained acos argidx assert_equalfile assert_nobeep atan2 balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp feedkeys flatten fnamemodify foreground getbufinfo getcharmod getcmdpos getcursorcharpos getftime getmarklist getqflist gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_flush map match matchfuzzy menu_info nr2char popup_beval popup_filter_menu popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_dict test_null_string test_settime timer_pause toupper typename virtcol wincol win_gettype winlayout winrestcmd winwidth
syn keyword vimFuncName contained add arglistid assert_exception assert_notequal autocmd_add blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filereadable flattennew foldclosed fullcommand getbufline getcharpos getcmdscreenpos getcwd getftype getmatches getreg gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop keys line2byte listener_remove maparg matchadd matchfuzzypos min or popup_clear popup_filter_yesno popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapfilelist synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_function test_option_not_set test_srand_seed timer_start tr undofile virtcol2col windowsversion win_gotoid winline winrestview wordcount
syn keyword vimFuncName contained and argv assert_fails assert_notmatch autocmd_delete browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filewritable float2nr foldclosedend funcref getbufoneline getcharsearch getcmdtype getenv getimstatus getmousepos getreginfo gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keytrans lispindent localtime mapcheck matchaddpos matchlist mkdir pathshorten popup_close popup_findecho popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_mswin_event test_null_job test_override test_unknown timer_stop trim undotree visualmode win_execute winheight win_move_separator winsaveview writefile
syn keyword vimFuncName contained append asin assert_false assert_report autocmd_get browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath expr10 filter floor foldlevel function getbufvar getcharstr getcmdwintype getfontname getjumplist getmouseshape getregtype gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len list2blob log maplist matcharg matchstr mode perleval popup_create popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor
syn keyword vimFuncName contained appendbufline assert_beeps assert_inrange assert_true balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extend finddir fmod foldtext garbagecollect getchangelist getcmdcompltype getcompletion getfperm getline getpid getscriptinfo getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2str log10 mapnew matchdelete matchstrpos mzeval
syn keyword vimFuncName contained abs argc assert_equal assert_match atan balloon_show bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline digraph_set eval exists_compiled extendnew findfile fnameescape foldtextresult get getchangelist getcmdcompltype getcompletion getfperm getline getpid getscriptinfo getwininfo glob2regpat histadd hlID indexof inputsecret isinf job_setoptions js_encode libcall list2str log10 mapnew matchdelete matchstrpos mzeval popup_atcursor popup_dialog popup_findpreview popup_locate popup_settext prompt_getprompt prop_add_list prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdline setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_channel test_null_partial test_setmouse timer_info tolower type values winbufnr win_getid win_id2win winnr win_splitmove
syn keyword vimFuncName contained acos argidx assert_equalfile assert_nobeep atan2 balloon_split buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype digraph_setlist eventhandler exp feedkeys flatten fnamemodify foreground getbufinfo getchar getcmdline getcurpos getfsize getloclist getpos gettabinfo getwinpos globpath histdel hlset input insert islocked job_start json_decode libcallnr listener_add luaeval mapset matchend max nextnonblank popup_beval popup_filter_menu popup_getoptions popup_menu popup_show prompt_setcallback prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_gui_event test_null_dict test_null_string test_settime timer_pause toupper typename virtcol wincol win_gettype winlayout winrestcmd winwidth
syn keyword vimFuncName contained add arglistid assert_exception assert_notequal autocmd_add blob2list bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler echoraw executable expand filereadable flattennew foldclosed fullcommand getbufline getcharmod getcmdpos getcursorcharpos getftime getmarklist getqflist gettabvar getwinposx has histget hostname inputdialog interrupt isnan job_status json_encode line listener_flush map match matchfuzzy menu_info nr2char popup_clear popup_filter_yesno popup_getpos popup_move pow prompt_setinterrupt prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapfilelist synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_ignore_error test_null_function test_option_not_set test_srand_seed timer_start tr undofile virtcol2col windowsversion win_gotoid winline winrestview wordcount
syn keyword vimFuncName contained and argv assert_fails assert_notmatch autocmd_delete browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID empty execute expandcmd filewritable float2nr foldclosedend funcref getbufoneline getcharpos getcmdscreenpos getcwd getftype getmatches getreg gettabwinvar getwinposy has_key histnr iconv inputlist invert items job_stop keys line2byte listener_remove maparg matchadd matchfuzzypos min or popup_close popup_findecho popup_hide popup_notification prevnonblank prompt_setprompt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_mswin_event test_null_job test_override test_unknown timer_stop trim undotree visualmode win_execute winheight win_move_separator winsaveview writefile
syn keyword vimFuncName contained append asin assert_false assert_report autocmd_get browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy digraph_get environ exepath expr10 filter floor foldlevel function getbufvar getcharsearch getcmdtype getenv getimstatus getmousepos getreginfo gettagstack getwinvar haslocaldir hlexists indent inputrestore isabsolutepath job_getchannel join keytrans lispindent localtime mapcheck matchaddpos matchlist mkdir pathshorten popup_create popup_findinfo popup_list popup_setoptions printf prop_add prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_blob test_null_list test_refcount test_void timer_stopall trunc uniq wildmenumode win_findbuf win_id2tabwin win_move_statusline win_screenpos xor
syn keyword vimFuncName contained appendbufline assert_beeps assert_inrange assert_true balloon_gettext bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete digraph_getlist escape exists extend finddir fmod foldtext garbagecollect getcellwidths getcharstr getcmdwintype getfontname getjumplist getmouseshape getregtype gettext glob hasmapto hlget index inputsave isdirectory job_info js_decode len list2blob log maplist matcharg matchstr mode perleval
"--- syntax here and above generated by mkvimvim ---
" Special Vim Highlighting (not automatic) {{{1

View File

@ -1,13 +1,12 @@
" Vim syntax file
" This is a GENERATED FILE. Please always refer to source file at the URI below.
" Language: XF86Config (XFree86 configuration file)
" Former Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
" Last Change: 2010 Nov 01
" URL: http://trific.ath.cx/Ftp/vim/syntax/xf86conf.vim
" Last Change By David: 2010 Nov 01
" Last Change: 2023 Jan 23
" Required Vim Version: 6.0
"
" Options: let xf86conf_xfree86_version = 3 or 4
" to force XFree86 3.x or 4.x XF86Config syntax
" to force XFree86 3.x or 4.x XF86Config syntax
" Setup
" quit when a syntax file was already loaded
@ -147,6 +146,8 @@ syn keyword xf86confKeyword Hskew HTimings InputDevice IOBase MemBase Mode nextg
syn keyword xf86confKeyword Modes Ramdac Screen TextClockFreq UseModes VendorName nextgroup=xf86confComment,xf86confValue
syn keyword xf86confKeyword VertRefresh VideoRam ViewPort Virtual VScan VTimings nextgroup=xf86confComment,xf86confValue
syn keyword xf86confKeyword Weight White nextgroup=xf86confComment,xf86confValue
syn keyword xf86confMatch MatchDevicePath MatchDriver MatchLayout MatchOS MatchPnPID MatchProduct MatchTag MatchUSBID MatchVendor nextgroup=xf86confComment,xf86confString skipwhite
syn keyword xf86confMatch MatchIsPointer MatchIsKeyboard MatchIsTouchpad MatchIsTouchscreen MatchIsJoystick nextgroup=xf86confComment,xf86confValue skipwhite
syn keyword xf86confModeLine ModeLine nextgroup=xf86confComment,xf86confModeLineValue skipwhite skipnl
" Constants
@ -185,6 +186,7 @@ hi def link xf86confOctalNumberError xf86confError
hi def link xf86confError Error
hi def link xf86confOption xf86confKeyword
hi def link xf86confMatch xf86confKeyword
hi def link xf86confModeLine xf86confKeyword
hi def link xf86confKeyword Type

View File

@ -335,7 +335,7 @@ Doubling to operate on a line also works for operators mentioned below.
5. Now type a capital U to return the line to its original state.
6. Now type u a few times to undo the U and preceding commands.
7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times
to redo the commands (undo the undo's).
to redo the commands (undo the undos).
---> Fiix the errors oon thhis line and reeplace them witth undo.
@ -365,7 +365,7 @@ Doubling to operate on a line also works for operators mentioned below.
8. To undo previous actions, type: u (lowercase u)
To undo all the changes on a line, type: U (capital U)
To undo the undo's, type: CTRL-R
To undo the undos, type: CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 3.1: THE PUT COMMAND

View File

@ -335,7 +335,7 @@ Doubling to operate on a line also works for operators mentioned below.
5. Now type a capital U to return the line to its original state.
6. Now type u a few times to undo the U and preceding commands.
7. Now type CTRL-R (keeping CTRL key pressed while hitting R) a few times
to redo the commands (undo the undo's).
to redo the commands (undo the undos).
---> Fiix the errors oon thhis line and reeplace them witth undo.
@ -365,7 +365,7 @@ Doubling to operate on a line also works for operators mentioned below.
8. To undo previous actions, type: u (lowercase u)
To undo all the changes on a line, type: U (capital U)
To undo the undo's, type: CTRL-R
To undo the undos, type: CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Lesson 3.1: THE PUT COMMAND

View File

@ -7729,8 +7729,8 @@ msgstr "E1112: L'element de la llista %d no t
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Intervals solapats per a 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Només es suporten valors de 0x100 o superiors"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Només es suporten valors de 0x80 o superiors"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: el quart argument a \"assert_fails()\" ha de ser un número"

View File

@ -7836,8 +7836,8 @@ msgstr "E1112: Listenwert %d Zellbreite ung
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Überlappender Bereich für 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Nur Werte oberhalb 0x100 unterstützt"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Nur Werte oberhalb 0x80 unterstützt"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: \"assert_fails()\" viertes Argument muss eine Zahl sein"

View File

@ -7346,8 +7346,8 @@ msgstr "E1110: Listero %d ne enhavas 3 nombojn"
msgid "E1111: List item %d range invalid"
msgstr "E1111: Listero %d havas nevalidan amplekson"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Nur valoroj 0x100 kaj pli altaj estas subtenataj"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Nur valoroj 0x80 kaj pli altaj estas subtenataj"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: la 4-a argumento de \"assert_fails()\" devas esti nombro"

View File

@ -7809,8 +7809,8 @@ msgstr "E1112: Elemento %d de lista, ancho de celda no válido"
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Rangos superpuestos para 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Solo se admiten valores de 0x100 y superiores"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Solo se admiten valores de 0x80 y superiores"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: El cuarto argumento \"assert_fails()\" debe ser un número"

View File

@ -7759,8 +7759,8 @@ msgstr "E1112: Listan kohdan %d soluleveys on viallinen"
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Päällekkäiset arvoalueet osoitteessa 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Vain arvot 0x100:sta eteenpäin kelpaavat"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Vain arvot 0x80:sta eteenpäin kelpaavat"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: assert_fails()-funktion neljännen argumentin tulee olla numero"

View File

@ -7768,8 +7768,8 @@ msgstr "E1112: Leithead cille neamhbhail
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Raonta forluiteacha ar 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Ní thacaítear ach le luachanna 0x100 agus níos airde"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Ní thacaítear ach le luachanna 0x80 agus níos airde"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: Ní mór don cheathrú hargóint ar \"assert_fails()\" a bheith ina huimhir"

View File

@ -6995,8 +6995,8 @@ msgstr "E1112: Elemento di Lista %d con larghezza di cella non valida"
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Intervalli sovrapposti per 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Solo valori 0x100 o più elevati sono supportati"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Solo valori 0x80 o più elevati sono supportati"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: Il quarto argomento di \"assert_fails()\" dev'essere un Numero"

View File

@ -7702,8 +7702,8 @@ msgstr "E1112:
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: 0x%lx の範囲が重複しています"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: 0x100 以上の値しかサポートされていません"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: 0x80 以上の値しかサポートされていません"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: \"assert_fails()\" の第4引数は数字でなければなりません"

View File

@ -7702,8 +7702,8 @@ msgstr "E1112: リストの要素 %d のセル幅が不正です"
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: 0x%lx の範囲が重複しています"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: 0x100 以上の値しかサポートされていません"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: 0x80 以上の値しかサポートされていません"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: \"assert_fails()\" の第4引数は数字でなければなりません"

View File

@ -7702,8 +7702,8 @@ msgstr "E1112:
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: 0x%lx の範囲が重複しています"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: 0x100 以上の値しかサポートされていません"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: 0x80 以上の値しかサポートされていません"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: \"assert_fails()\" の第4引数は数字でなければなりません"

View File

@ -7696,8 +7696,8 @@ msgstr "E1112:
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Ïåðåêðûâàþùèåñÿ äèàïàçîíû äëÿ 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Ïîääåðæèâàþòñÿ òîëüêî çíà÷åíèÿ îò 0x100 è âûøå"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Ïîääåðæèâàþòñÿ òîëüêî çíà÷åíèÿ îò 0x80 è âûøå"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr ""

View File

@ -7696,8 +7696,8 @@ msgstr "E1112: Элемент %d в списке задаёт неправиль
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Перекрывающиеся диапазоны для 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Поддерживаются только значения от 0x100 и выше"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Поддерживаются только значения от 0x80 и выше"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr ""

View File

@ -10,16 +10,16 @@ msgid ""
msgstr ""
"Project-Id-Version: Vim(Serbian)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-11-25 15:38+0400\n"
"PO-Revision-Date: 2022-11-25 15:40+0400\n"
"POT-Creation-Date: 2023-02-02 10:20+0400\n"
"PO-Revision-Date: 2023-02-02 10:54+0400\n"
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
"Language-Team: Serbian\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
msgid "ERROR: "
msgstr "ГРЕШКА: "
@ -1817,8 +1817,8 @@ msgstr "-P <назив родитеља>\tОтвори Vim унутар роди
msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
msgstr "--windowid <HWND>\tОтвори Vim унутар другог win32 виџета"
msgid "Seen modifyOtherKeys: true"
msgstr "Уочено modifyOtherKeys: да"
msgid "Seen modifyOtherKeys: true\n"
msgstr "Уочено modifyOtherKeys: да\n"
msgid "Unknown"
msgstr "Непознато"
@ -1836,8 +1836,12 @@ msgid "Cleared"
msgstr "Обрисано"
#, c-format
msgid "Kitty keyboard protocol: %s"
msgstr "Kitty протокол тастатуре: %s"
msgid "modifyOtherKeys detected: %s\n"
msgstr "Откривено modifyOtherKeys: %s\n"
#, c-format
msgid "Kitty keyboard protocol: %s\n"
msgstr "Kitty протокол тастатуре: %s\n"
msgid "No abbreviation found"
msgstr "Скраћеница није пронађена"
@ -7635,8 +7639,8 @@ msgstr "E1112: Ширина ћелије ставке листе %d је нев
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Опсези за 0x%lx се преклапају"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Подржавају се само вредности од 0x100 и веће"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Подржавају се само вредности од 0x80 и веће"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: „assert_fails()” четврти аргумент мора бити број"
@ -8362,6 +8366,184 @@ msgstr "E1311: Током исписа не може да се врши изме
msgid "E1312: Not allowed to change the window layout in this autocmd"
msgstr "E1312: У овој аутокоманди није дозвољено мењање распореда прозора"
#, c-format
msgid "E1313: Not allowed to add or remove entries (%s)"
msgstr "E1313: Није дозвољено додавање или уклањање ставки (%s)"
#, c-format
msgid "E1314: Class name must start with an uppercase letter: %s"
msgstr "E1314: Име класе мора да почне великим словом: %s"
#, c-format
msgid "E1315: White space required after name: %s"
msgstr "E1315: Након имена мора да стоји празан простор: %s"
msgid "E1316: Class can only be defined in Vim9 script"
msgstr "E1316: Класа може да се дефинише само у Vim9 скрипти"
#, c-format
msgid "E1317: Invalid object member declaration: %s"
msgstr "E1317: Неисправна декларација члана објекта: %s"
#, c-format
msgid "E1318: Not a valid command in a class: %s"
msgstr "E1318: Команда не важи у класи: %s"
msgid "E1319: Using a class as a Number"
msgstr "E1319: Класа се користи као Број"
msgid "E1320: Using an object as a Number"
msgstr "E1320: Објекат се користи као Број"
msgid "E1321: Using a class as a Float"
msgstr "E1321: Класа се користи као Покретни"
msgid "E1322: Using an object as a Float"
msgstr "E1322: Објекат се користи као Покретни"
msgid "E1323: Using a class as a String"
msgstr "E1323: Класа се користи као Стринг"
msgid "E1324: Using an object as a String"
msgstr "E1324: Објекат се користи као Стринг"
#, c-format
msgid "E1325: Method not found on class \"%s\": %s"
msgstr "E1325: Није пронађена метода класе „%s”: %s"
#, c-format
msgid "E1326: Member not found on object \"%s\": %s"
msgstr "E1326: Члан није пронађен у објекту „%s”: %s"
#, c-format
msgid "E1327: Object required, found %s"
msgstr "E1327: Потребан је објекат, пронађено %s"
#, c-format
msgid "E1328: Constructor default value must be v:none: %s"
msgstr "E1328: Подразумевана вредност конструктора мора бити v:none: %s"
#, c-format
msgid "E1329: Cannot get object member type from initializer: %s"
msgstr "E1329: Тип члана објекта не може да се одреди из иницијализатора: %s"
#, c-format
msgid "E1330: Invalid type for object member: %s"
msgstr "E1330: Неисправан тип члана објекта: %s"
msgid "E1331: Public must be followed by \"this\" or \"static\""
msgstr "E1331: Након Public мора да следи „this” или „static”"
#, c-format
msgid "E1332: Public member name cannot start with underscore: %s"
msgstr "E1332: Име Public члана не може почити доњом цртом: %s"
#, c-format
msgid "E1333: Cannot access private member: %s"
msgstr "E1333: Не може да се приступи приватном члану: %s"
#, c-format
msgid "E1334: Object member not found: %s"
msgstr "E1334: Члан објекта није пронађен: %s"
#, c-format
msgid "E1335: Member is not writable: %s"
msgstr "E1335: У члан не може да се уписује: %s"
msgid "E1336: Internal error: shortmess too long"
msgstr "E1336: Интерна грешка: shortmess сувише дугачко"
#, c-format
msgid "E1337: Class member not found: %s"
msgstr "E1337: Није пронађен члан класе: %s"
#, c-format
msgid "E1338: Member not found on class \"%s\": %s"
msgstr "E1338: Није шронаћен члан над класом „%s”: %s"
msgid ""
"E1339: Cannot add a textprop with text after using a textprop with a "
"negative id"
msgstr ""
"E1339: Текст особина са текстом не може да се додан након употребе "
"текст особине са негативним id"
#, c-format
msgid "E1340: Argument already declared in the class: %s"
msgstr "E1340: Аргумент је већ дефинисан у класи: %s"
#, c-format
msgid "E1341: Variable already declared in the class: %s"
msgstr "E1341: Променљива је већ декларисана у класи: %s"
msgid "E1342: Interface can only be defined in Vim9 script"
msgstr "E1342: Интерфејс може да се дефинише само у Vim9 скрипти"
#, c-format
msgid "E1343: Interface name must start with an uppercase letter: %s"
msgstr "E1343: Име интерфејса мора да почне великим словом: %s"
msgid "E1344: Cannot initialize a member in an interface"
msgstr "E1344: Члан не може да се иницијализује у интерфејсу"
#, c-format
msgid "E1345: Not a valid command in an interface: %s"
msgstr "E1345: Команда не важи у интерфејсу: %s"
#, c-format
msgid "E1346: Interface name not found: %s"
msgstr "E1346: Није пронађено име интерфејса: %s"
#, c-format
msgid "E1347: Not a valid interface: %s"
msgstr "E1347: Неважећи интерфејс: %s"
#, c-format
msgid "E1348: Member \"%s\" of interface \"%s\" not implemented"
msgstr "E1348: Члан „%s” интерфејса „%s” није имплементиран"
#, c-format
msgid "E1349: Function \"%s\" of interface \"%s\" not implemented"
msgstr "E1349: Функција „%s” интерфејса „%s” није имплементирана"
msgid "E1350: Duplicate \"implements\""
msgstr "E1350: Дупликат „implements”"
#, c-format
msgid "E1351: Duplicate interface after \"implements\": %s"
msgstr "E1351: Дуплирани интерфејс након „implements”: %s"
msgid "E1352: Duplicate \"extends\""
msgstr "E1352: Дупликат „extends”"
#, c-format
msgid "E1353: Class name not found: %s"
msgstr "E1353: Име класе није пронађено: %s"
#, c-format
msgid "E1354: Cannot extend %s"
msgstr "E1354: Не може да се прошири %s"
#, c-format
msgid "E1355: Duplicate function: %s"
msgstr "E1355: Дуплирана функција: %s"
msgid "E1356: \"super\" must be followed by a dot"
msgstr "E1356: Након „super” мора да следи тачка"
msgid "E1357: Using \"super\" not in a class function"
msgstr "E1357:„super” се користи ван функције класе"
msgid "E1358: Using \"super\" not in a child class"
msgstr "E1358: „super” се не користи у изведеној класи"
msgid "E1359: Cannot define a \"new\" function in an abstract class"
msgstr "E1359: Функција „new” не може да се дефинише у апстрактној класи"
#, c-format
msgid "E476: Invalid command: %s, expected %s"
msgstr "E476: Неважећа команда: %s, очекује се %s"
msgid "--No lines in buffer--"
msgstr "--У баферу нема линија--"
@ -8686,9 +8868,6 @@ msgstr "Уређујте текст фајлове"
msgid "Text;editor;"
msgstr "Текст;едитор;"
msgid "gvim"
msgstr "gvim"
msgid "Vim"
msgstr "Vim"
@ -9360,8 +9539,11 @@ msgstr ""
msgid "list of flags to make messages shorter"
msgstr "листа заставица за скраћивање порука"
msgid "show (partial) command keys in the status line"
msgstr "у статусној линији се приказују (делимични) тастери команде"
msgid "show (partial) command keys in location given by 'showcmdloc'"
msgstr "приказује (делимичне) тастере команде на месту наведеном у 'showcmdloc'"
msgid "location where to show the (partial) command keys for 'showcmd'"
msgstr "место на којем треба да се прикажу (делимични) тастери команде за 'showcmd'"
msgid "display the current mode in the status line"
msgstr "у статусној линији се приказује текући режим"

View File

@ -7562,8 +7562,8 @@ msgstr "E1112: Liste ögesi %d hücre genişliği geçersiz"
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: 0x%lx için üst üste binen erimler"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Yalnızca 0x100 ve daha yüksek değerler destekleniyor"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Yalnızca 0x80 ve daha yüksek değerler destekleniyor"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: \"assert_fails()\" dördüncü argüman bir sayı olmalıdır"

View File

@ -7869,8 +7869,8 @@ msgstr "E1112:
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Ïåðåêðèòòÿ ä³àïàçîí³â ó 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: ϳäòðèìóþòüñÿ ò³ëüêè çíà÷åííÿ 0x100 ³ âèù³"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: ϳäòðèìóþòüñÿ ò³ëüêè çíà÷åííÿ 0x80 ³ âèù³"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: ×åòâåðòèé àðãóìåíò «assert_fails()» ìຠáóòè ÷èñëîì"

View File

@ -7869,8 +7869,8 @@ msgstr "E1112: Ширина комірки елементу %d списку не
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: Перекриття діапазонів у 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: Підтримуються тільки значення 0x100 і вищі"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: Підтримуються тільки значення 0x80 і вищі"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: Четвертий аргумент «assert_fails()» має бути числом"

View File

@ -7511,8 +7511,8 @@ msgstr "E1112: 列表项 %d 单元格宽度无效"
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: 重叠范围为 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: 只支持 0x100 或更高的值"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: 只支持 0x80 或更高的值"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: \"assert_fails()\" 第四个参数必须是一个整数"

View File

@ -7511,8 +7511,8 @@ msgstr "E1112:
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: 重叠范围为 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: 只支持 0x100 或更高的值"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: 只支持 0x80 或更高的值"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: \"assert_fails()\" 第四个参数必须是一个整数"

View File

@ -7511,8 +7511,8 @@ msgstr "E1112:
msgid "E1113: Overlapping ranges for 0x%lx"
msgstr "E1113: 重叠范围为 0x%lx"
msgid "E1114: Only values of 0x100 and higher supported"
msgstr "E1114: 只支持 0x100 或更高的值"
msgid "E1114: Only values of 0x80 and higher supported"
msgstr "E1114: 只支持 0x80 或更高的值"
msgid "E1115: \"assert_fails()\" fourth argument must be a number"
msgstr "E1115: \"assert_fails()\" 第四个参数必须是一个整数"