Compare commits

...

9 Commits

Author SHA1 Message Date
Adam Stankiewicz
e8454d66ab Fix performance issue with markdown highlighting 2019-12-31 14:23:47 +01:00
Adam Stankiewicz
a60e299a3c Switch back to plasticboy for markdown 2019-12-31 14:08:15 +01:00
Adam Stankiewicz
b8a5504021 Update 2019-12-31 14:05:09 +01:00
Adam Stankiewicz
cea0d08a06 Replace markdown plugin for faster one 2019-12-12 16:43:09 +01:00
Adam Stankiewicz
43085dc02f Update 2019-12-12 16:33:01 +01:00
Adam Stankiewicz
4d8423c962 Add v language, closes #437 2019-12-07 17:39:31 +01:00
Adam Stankiewicz
e204a7223b Add ftplugin to markdown, fixes #447 2019-12-07 13:01:03 +01:00
Adam Stankiewicz
7a0f2d974f Update 2019-12-07 12:21:37 +01:00
timfeirg
15aeea662e Headsup on g:polyglot_disabled (#438) 2019-11-28 11:29:38 +01:00
76 changed files with 1940 additions and 240 deletions

View File

@@ -10,7 +10,7 @@ A collection of language packs for Vim.
> One to rule them all, one to find them, one to bring them all and in the darkness bind them. > One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*. - It **won't affect your startup time**, as scripts are loaded only on demand\*.
- It **installs and updates 120+ times faster** than the <!--Package Count-->146<!--/Package Count--> packages it consists of. - It **installs and updates 120+ times faster** than the <!--Package Count-->147<!--/Package Count--> packages it consists of.
- Solid syntax and indentation support (other features skipped). Only the best language packs. - Solid syntax and indentation support (other features skipped). Only the best language packs.
- All unnecessary files are ignored (like enormous documentation from php support). - All unnecessary files are ignored (like enormous documentation from php support).
- No support for esoteric languages, only most popular ones (modern too, like `slim`). - No support for esoteric languages, only most popular ones (modern too, like `slim`).
@@ -119,7 +119,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [log](https://github.com/MTDL9/vim-log-highlighting) (syntax) - [log](https://github.com/MTDL9/vim-log-highlighting) (syntax)
- [lua](https://github.com/tbastos/vim-lua) (syntax, indent) - [lua](https://github.com/tbastos/vim-lua) (syntax, indent)
- [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin) - [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin)
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent) - [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent, ftplugin)
- [mathematica](https://github.com/voldikss/vim-mma) (syntax, ftplugin) - [mathematica](https://github.com/voldikss/vim-mma) (syntax, ftplugin)
- [mdx](https://github.com/jxnblk/vim-mdx-js) (syntax) - [mdx](https://github.com/jxnblk/vim-mdx-js) (syntax)
- [meson](https://github.com/mesonbuild/meson) (syntax, indent, ftplugin) - [meson](https://github.com/mesonbuild/meson) (syntax, indent, ftplugin)
@@ -178,7 +178,8 @@ If you need full functionality of any plugin, please use it directly with your p
- [tptp](https://github.com/c-cube/vim-tptp) (syntax) - [tptp](https://github.com/c-cube/vim-tptp) (syntax)
- [twig](https://github.com/lumiliet/vim-twig) (syntax, indent, ftplugin) - [twig](https://github.com/lumiliet/vim-twig) (syntax, indent, ftplugin)
- [typescript](https://github.com/HerringtonDarkholme/yats.vim) (syntax, indent, compiler, ftplugin) - [typescript](https://github.com/HerringtonDarkholme/yats.vim) (syntax, indent, compiler, ftplugin)
- [vala](https://github.com/arrufat/vala.vim) (syntax, indent) - [v](https://github.com/ollykel/v-vim) (syntax, indent, ftplugin)
- [vala](https://github.com/arrufat/vala.vim) (syntax, indent, ftplugin)
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax) - [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
- [vcl](https://github.com/smerrill/vcl-vim-plugin) (syntax) - [vcl](https://github.com/smerrill/vcl-vim-plugin) (syntax)
- [vifm](https://github.com/vifm/vifm.vim) (syntax, autoload, ftplugin) - [vifm](https://github.com/vifm/vifm.vim) (syntax, autoload, ftplugin)
@@ -204,7 +205,7 @@ Please make sure you have `syntax on` in your `.vimrc`, otherwise syntax files a
Individual language packs can be disabled by setting `g:polyglot_disabled` as follows: Individual language packs can be disabled by setting `g:polyglot_disabled` as follows:
```viml ```viml
" ~/.vimrc " ~/.vimrc, declare this variable before polyglot is loaded
let g:polyglot_disabled = ['css'] let g:polyglot_disabled = ['css']
``` ```

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/javascript.vim
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/tsx.vim
endif

View File

@@ -21,7 +21,7 @@ if exists('s:did_indent')
endif endif
setlocal indentexpr=GetJsxIndent() setlocal indentexpr=GetJsxIndent()
setlocal indentkeys=0{,0},0),0],0?,0\*,0\,,!^F,:,<:>,o,O,e,<>>,=*/ setlocal indentkeys=0.,0{,0},0),0],0?,0\*,0\,,!^F,:,<:>,o,O,e,<>>,=*/
function! GetJsxIndent() function! GetJsxIndent()
return jsx_pretty#indent#get(function('GetJavascriptIndent')) return jsx_pretty#indent#get(function('GetJavascriptIndent'))

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/javascript.vim
endif

View File

@@ -26,7 +26,7 @@ if exists('s:did_indent')
endif endif
setlocal indentexpr=GetJsxIndent() setlocal indentexpr=GetJsxIndent()
setlocal indentkeys=0{,0},0),0],0?,0\*,0\,,!^F,:,<:>,o,O,e,<>>,=*/ setlocal indentkeys=0.,0{,0},0),0],0?,0\*,0\,,!^F,:,<:>,o,O,e,<>>,=*/
function! GetJsxIndent() function! GetJsxIndent()
return jsx_pretty#indent#get(function('GetTypescriptIndent')) return jsx_pretty#indent#get(function('GetTypescriptIndent'))

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/tsx.vim
endif

View File

@@ -1,5 +1,28 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Copyright (c) 2016-2019 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('b:current_syntax') if exists('b:current_syntax')
let s:current_syntax = b:current_syntax let s:current_syntax = b:current_syntax
unlet b:current_syntax unlet b:current_syntax
@@ -11,17 +34,31 @@ endif
let s:tags = '\%(' . join(graphql#javascript_tags(), '\|') . '\)' let s:tags = '\%(' . join(graphql#javascript_tags(), '\|') . '\)'
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend' if graphql#has_syntax_group('jsTemplateExpression')
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString' " pangloss/vim-javascript
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=jsTemplateExpression containedin=graphqlFold keepend
" Support expression interpolation ((${...})) inside template strings. hi def link graphqlTemplateString jsTemplateString
syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=jsTemplateExpression containedin=graphqlFold keepend hi def link graphqlTaggedTemplate jsTaggedTemplate
hi def link graphqlTemplateExpression jsTemplateExpression
hi def link graphqlTemplateString jsTemplateString syn cluster jsExpression add=graphqlTaggedTemplate
hi def link graphqlTaggedTemplate jsTaggedTemplate syn cluster graphqlTaggedTemplate add=graphqlTemplateString
hi def link graphqlTemplateExpression jsTemplateExpression elseif graphql#has_syntax_group('javaScriptStringT')
" runtime/syntax/javascript.vim
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\\\\|\\`+ end=+`+ contains=@GraphQLSyntax,javaScriptSpecial,javaScriptEmbed,@htmlPreproc extend'
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString'
syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=@javaScriptEmbededExpr containedin=graphqlFold keepend
syn cluster jsExpression add=graphqlTaggedTemplate hi def link graphqlTemplateString javaScriptStringT
syn cluster graphqlTaggedTemplate add=graphqlTemplateString hi def link graphqlTaggedTemplate javaScriptEmbed
hi def link graphqlTemplateExpression javaScriptEmbed
syn cluster htmlJavaScript add=graphqlTaggedTemplate
syn cluster javaScriptEmbededExpr add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
endif
endif endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/javascript.vim
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
runtime! after/syntax/javascript/graphql.vim
endif

View File

@@ -20,7 +20,7 @@ syntax region jsxTag
\ matchgroup=NONE \ matchgroup=NONE
\ end=+\%(/\_s*>\)\@=+ \ end=+\%(/\_s*>\)\@=+
\ contained \ contained
\ contains=jsxOpenTag,jsxAttrib,jsxEscapeJs,jsxSpreadOperator,jsComment,@javascriptComments,javaScriptLineComment,javaScriptComment,typescriptLineComment,typescriptComment \ contains=jsxOpenTag,jsxAttrib,jsxExpressionBlock,jsxSpreadOperator,jsComment,@javascriptComments,javaScriptLineComment,javaScriptComment,typescriptLineComment,typescriptComment
\ keepend \ keepend
\ extend \ extend
\ skipwhite \ skipwhite
@@ -39,7 +39,7 @@ syntax region jsxElement
\ start=+<\_s*\%(>\|\${\|\z(\<[-:._$A-Za-z0-9]\+\>\)\)+ \ start=+<\_s*\%(>\|\${\|\z(\<[-:._$A-Za-z0-9]\+\>\)\)+
\ end=+/\_s*>+ \ end=+/\_s*>+
\ end=+<\_s*/\_s*\z1\_s*>+ \ end=+<\_s*/\_s*\z1\_s*>+
\ contains=jsxElement,jsxTag,jsxEscapeJs,jsxComment,jsxCloseTag,@Spell \ contains=jsxElement,jsxTag,jsxExpressionBlock,jsxComment,jsxCloseTag,@Spell
\ keepend \ keepend
\ extend \ extend
\ contained \ contained
@@ -66,13 +66,13 @@ exe 'syntax region jsxOpenTag
" <tag key={this.props.key}> " <tag key={this.props.key}>
" ~~~~~~~~~~~~~~~~ " ~~~~~~~~~~~~~~~~
syntax region jsxEscapeJs syntax region jsxExpressionBlock
\ matchgroup=jsxBraces \ matchgroup=jsxBraces
\ start=+{+ \ start=+{+
\ end=+}+ \ end=+}+
\ contained \ contained
\ extend \ extend
\ contains=@jsExpression,jsSpreadExpression,@javascriptExpression,javascriptSpreadOp,@javaScriptEmbededExpr,@typescriptExpression,typescriptObjectSpread \ contains=@jsExpression,jsSpreadExpression,@javascriptExpression,javascriptSpreadOp,@javaScriptEmbededExpr,@typescriptExpression,typescriptObjectSpread,jsComment,@javascriptComments,javaScriptLineComment,javaScriptComment,typescriptLineComment,typescriptComment
" <foo.bar> " <foo.bar>
" ~ " ~
@@ -84,7 +84,7 @@ syntax match jsxNamespace +:+ contained
" <tag id="sample"> " <tag id="sample">
" ~ " ~
syntax match jsxEqual +=+ contained skipwhite skipempty nextgroup=jsxString,jsxEscapeJs,jsxRegion syntax match jsxEqual +=+ contained skipwhite skipempty nextgroup=jsxString,jsxExpressionBlock,jsxRegion
" <tag /> " <tag />
" ~~ " ~~
@@ -154,10 +154,10 @@ if s:enable_tagged_jsx
\ end=+`+ \ end=+`+
\ extend \ extend
\ contained \ contained
\ contains=jsxElement,jsxEscapeJs \ contains=jsxElement,jsxExpressionBlock
\ transparent \ transparent
syntax region jsxEscapeJs syntax region jsxExpressionBlock
\ matchgroup=jsxBraces \ matchgroup=jsxBraces
\ start=+\${+ \ start=+\${+
\ end=+}+ \ end=+}+
@@ -171,14 +171,14 @@ if s:enable_tagged_jsx
\ matchgroup=NONE \ matchgroup=NONE
\ end=+}\@1<=+ \ end=+}\@1<=+
\ contained \ contained
\ contains=jsxEscapeJs \ contains=jsxExpressionBlock
\ skipwhite \ skipwhite
\ skipempty \ skipempty
\ nextgroup=jsxAttrib,jsxSpreadOperator \ nextgroup=jsxAttrib,jsxSpreadOperator
syntax keyword jsxAttribKeyword class contained syntax keyword jsxAttribKeyword class contained
syntax match jsxSpreadOperator +\.\.\.+ contained nextgroup=jsxEscapeJs skipwhite syntax match jsxSpreadOperator +\.\.\.+ contained nextgroup=jsxExpressionBlock skipwhite
syntax match jsxCloseTag +<//>+ contained syntax match jsxCloseTag +<//>+ contained

View File

@@ -30,6 +30,12 @@ endif
" refine the typescript line comment " refine the typescript line comment
syntax region typescriptLineComment start=+//+ end=/$/ contains=@Spell,typescriptCommentTodo,typescriptRef extend keepend syntax region typescriptLineComment start=+//+ end=/$/ contains=@Spell,typescriptCommentTodo,typescriptRef extend keepend
for syntax_name in ['tsxRegion', 'tsxFragment']
if hlexists(syntax_name)
exe 'syntax clear ' . syntax_name
endif
endfor
if !hlexists('typescriptTypeCast') if !hlexists('typescriptTypeCast')
" add a typescriptBlock group for typescript " add a typescriptBlock group for typescript
syntax region typescriptBlock syntax region typescriptBlock
@@ -40,11 +46,14 @@ if !hlexists('typescriptTypeCast')
\ extend \ extend
\ contains=@typescriptExpression,typescriptBlock \ contains=@typescriptExpression,typescriptBlock
\ fold \ fold
hi def link typescriptTypeBrackets typescriptOpSymbols
endif endif
syntax cluster typescriptExpression add=jsxRegion,typescriptParens
runtime syntax/jsx_pretty.vim runtime syntax/jsx_pretty.vim
syntax cluster typescriptExpression add=jsxRegion,typescriptParens
" Fix type casting ambiguity with JSX syntax
syntax match typescriptTypeBrackets +[<>]+ contained
syntax match typescriptTypeCast +<\([_$A-Za-z0-9]\+\)>\%(\s*\%([_$A-Za-z0-9]\+\s*;\?\|(\)\%(\_[^<]*</\1>\)\@!\)\@=+ contains=typescriptTypeBrackets,@typescriptType,typescriptType nextgroup=@typescriptExpression
let b:current_syntax = 'typescript.tsx' let b:current_syntax = 'typescript.tsx'

View File

@@ -1,5 +1,28 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Copyright (c) 2016-2019 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('b:current_syntax') if exists('b:current_syntax')
let s:current_syntax = b:current_syntax let s:current_syntax = b:current_syntax
unlet b:current_syntax unlet b:current_syntax

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
source <sfile>:h/tsx.vim
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
runtime! after/syntax/typescript/graphql.vim
endif

View File

@@ -0,0 +1,5 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
runtime! after/syntax/javascript/graphql.vim
endif

View File

@@ -5,7 +5,17 @@ function! cargo#Load()
endfunction endfunction
function! cargo#cmd(args) function! cargo#cmd(args)
execute "! cargo" a:args " Trim trailing spaces. This is necessary since :terminal command parses
" trailing spaces as an empty argument.
let args = substitute(a:args, '\s\+$', '', '')
if has('terminal')
let cmd = 'terminal'
elseif has('nvim')
let cmd = 'noautocmd new | terminal'
else
let cmd = '!'
endif
execute cmd 'cargo' args
endfunction endfunction
function! s:nearest_cargo(...) abort function! s:nearest_cargo(...) abort

View File

@@ -122,7 +122,7 @@ fu! csv#Init(start, end, ...) "{{{3
" Enable vartabs for tab delimited files " Enable vartabs for tab delimited files
if b:delimiter=="\t" && has("vartabs")&& !exists("b:csv_fixed_width_cols") if b:delimiter=="\t" && has("vartabs")&& !exists("b:csv_fixed_width_cols")
if get(b:, 'col_width', []) ==# [] if get(b:, 'col_width', []) ==# []
call csv#CalculateColumnWidth('') call csv#CalculateColumnWidth(line('$'), 1)
endif endif
let &l:vts=join(b:col_width, ',') let &l:vts=join(b:col_width, ',')
let g:csv_no_conceal=1 let g:csv_no_conceal=1
@@ -574,7 +574,7 @@ fu! csv#MaxColumns(...) "{{{3
return len(b:csv_fixed_width_cols) return len(b:csv_fixed_width_cols)
endif endif
endfu endfu
fu! csv#ColWidth(colnr, ...) "{{{3 fu! csv#ColWidth(colnr, row, silent) "{{{3
" if a:1 is given, specifies the row, for which to calculate the width " if a:1 is given, specifies the row, for which to calculate the width
" "
" Return the width of a column " Return the width of a column
@@ -586,14 +586,13 @@ fu! csv#ColWidth(colnr, ...) "{{{3
if !exists("b:csv_fixed_width_cols") if !exists("b:csv_fixed_width_cols")
if !exists("b:csv_list") if !exists("b:csv_list")
" only check first 10000 lines, to be faster " only check first 10000 lines, to be faster
let last = line('$') let last = a:row
if exists("a:1") && !empty(a:1)
let last = a:1
endif
if !get(b:, 'csv_arrange_use_all_rows', 0) if !get(b:, 'csv_arrange_use_all_rows', 0)
if last > 10000 if last > 10000
let last = 10000 let last = 10000
call csv#Warn('File too large, only checking the first 10000 rows for the width') if !a:silent
call csv#Warn('File too large, only checking the first 10000 rows for the width')
endif
endif endif
endif endif
let b:csv_list=getline(skipfirst+1,last) let b:csv_list=getline(skipfirst+1,last)
@@ -637,7 +636,7 @@ fu! csv#ArrangeCol(first, last, bang, limit, ...) range "{{{3
endif endif
let cur=winsaveview() let cur=winsaveview()
" Force recalculation of Column width " Force recalculation of Column width
let row = exists("a:1") ? a:1 : '' let row = exists("a:1") ? a:1 : line('$')
if a:bang || !empty(row) if a:bang || !empty(row)
if a:bang && exists("b:col_width") if a:bang && exists("b:col_width")
" Unarrange, so that if csv_arrange_align has changed " Unarrange, so that if csv_arrange_align has changed
@@ -671,7 +670,7 @@ fu! csv#ArrangeCol(first, last, bang, limit, ...) range "{{{3
endif endif
if !exists("b:col_width") if !exists("b:col_width")
call csv#CalculateColumnWidth(row) call csv#CalculateColumnWidth(row, 1)
endif endif
" abort on empty file " abort on empty file
@@ -750,7 +749,7 @@ fu! csv#UnArrangeCol(match) "{{{3
" Strip leading white space, also trims empty recordcsv# " Strip leading white space, also trims empty recordcsv#
return substitute(a:match, '\%(^ \+\)\|\%( \+\ze'.b:delimiter. '\?$\)', '', 'g') return substitute(a:match, '\%(^ \+\)\|\%( \+\ze'.b:delimiter. '\?$\)', '', 'g')
endfu endfu
fu! csv#CalculateColumnWidth(row) "{{{3 fu! csv#CalculateColumnWidth(row, silent) "{{{3
" Internal function, not called from external, " Internal function, not called from external,
" does not work with fixed width columns " does not work with fixed width columns
" row for the row for which to calculate the width " row for the row for which to calculate the width
@@ -763,7 +762,7 @@ fu! csv#CalculateColumnWidth(row) "{{{3
endif endif
let s:max_cols=csv#MaxColumns(line('.')) let s:max_cols=csv#MaxColumns(line('.'))
for i in range(1,s:max_cols) for i in range(1,s:max_cols)
call add(b:col_width, csv#ColWidth(i, a:row)) call add(b:col_width, csv#ColWidth(i, a:row, a:silent))
endfor endfor
catch /csv:no_col/ catch /csv:no_col/
call csv#Warn("Error: getting Column numbers, aborting!") call csv#Warn("Error: getting Column numbers, aborting!")
@@ -1053,7 +1052,7 @@ fu! csv#MoveCol(forward, line, ...) "{{{3
let maxcol=csv#MaxColumns(line('.')) let maxcol=csv#MaxColumns(line('.'))
let cpos=getpos('.')[2] let cpos=getpos('.')[2]
if !exists("b:csv_fixed_width_cols") if !exists("b:csv_fixed_width_cols")
let curwidth=CSVWidth() let curwidth=CSVWidth(1)
call search(b:col, 'bc', line('.')) call search(b:col, 'bc', line('.'))
endif endif
let spos=getpos('.')[2] let spos=getpos('.')[2]
@@ -1146,7 +1145,7 @@ fu! csv#MoveCol(forward, line, ...) "{{{3
" leave the column (if the next column is shorter) " leave the column (if the next column is shorter)
if !exists("b:csv_fixed_width_cols") if !exists("b:csv_fixed_width_cols")
let a = getpos('.') let a = getpos('.')
if CSVWidth() == curwidth if CSVWidth(1) == curwidth
let a[2]+= cpos-spos let a[2]+= cpos-spos
endif endif
else else
@@ -1159,7 +1158,7 @@ fu! csv#MoveCol(forward, line, ...) "{{{3
" Move to the correct screen column " Move to the correct screen column
if !exists("b:csv_fixed_width_cols") if !exists("b:csv_fixed_width_cols")
let a = getpos('.') let a = getpos('.')
if CSVWidth() == curwidth if CSVWidth(1) == curwidth
let a[2]+= cpos-spos let a[2]+= cpos-spos
endif endif
else else
@@ -1835,7 +1834,7 @@ fu! csv#ProcessFieldValue(field) "{{{3
if a == b:delimiter if a == b:delimiter
try try
let a=repeat(' ', csv#ColWidth(col)) let a=repeat(' ', csv#ColWidth(col, line('$'), 1))
catch catch
" no-op " no-op
endtry endtry
@@ -2134,7 +2133,7 @@ fu! csv#NewRecord(line1, line2, count) "{{{3
if !exists("b:col_width") if !exists("b:col_width")
" Best guess width " Best guess width
if exists("b:csv_fixed_width_cols") if exists("b:csv_fixed_width_cols")
let record .= printf("%*s", csv#ColWidth(item), let record .= printf("%*s", csv#ColWidth(item, line('$'), 1),
\ b:delimiter) \ b:delimiter)
else else
let record .= printf("%20s", b:delimiter) let record .= printf("%20s", b:delimiter)
@@ -3145,7 +3144,9 @@ fu! CSVCount(col, fmt, first, last, ...) "{{{3
unlet! s:additional['distinct'] unlet! s:additional['distinct']
return (empty(result) ? 0 : result) return (empty(result) ? 0 : result)
endfu endfu
fu! CSVWidth() "{{{3 fu! CSVWidth(...) "{{{3
" do not output any warning
let silent = get(a:000, 0, 1)
" does not work with fixed width columns " does not work with fixed width columns
if exists("b:csv_fixed_width_cols") if exists("b:csv_fixed_width_cols")
let c = getline(1,'$') let c = getline(1,'$')
@@ -3164,7 +3165,7 @@ fu! CSVWidth() "{{{3
" Add width for last column " Add width for last column
call add(width, max-y+1) call add(width, max-y+1)
else else
call csv#CalculateColumnWidth('') call csv#CalculateColumnWidth(line('$'), silent)
let width=map(copy(b:col_width), 'v:val-1') let width=map(copy(b:col_width), 'v:val-1')
endif endif
return width return width

View File

@@ -84,7 +84,18 @@ function! go#config#StatuslineDuration() abort
endfunction endfunction
function! go#config#SnippetEngine() abort function! go#config#SnippetEngine() abort
return get(g:, 'go_snippet_engine', 'automatic') let l:engine = get(g:, 'go_snippet_engine', 'automatic')
if l:engine is? "automatic"
if get(g:, 'did_plugin_ultisnips') is 1
let l:engine = 'ultisnips'
elseif get(g:, 'loaded_neosnippet') is 1
let l:engine = 'neosnippet'
elseif get(g:, 'loaded_minisnip') is 1
let l:engine = 'minisnip'
endif
endif
return l:engine
endfunction endfunction
function! go#config#PlayBrowserCommand() abort function! go#config#PlayBrowserCommand() abort
@@ -353,7 +364,7 @@ function! go#config#FmtCommand() abort
endfunction endfunction
function! go#config#FmtOptions() abort function! go#config#FmtOptions() abort
return get(g:, "go_fmt_options", {}) return get(b:, "go_fmt_options", get(g:, "go_fmt_options", {}))
endfunction endfunction
function! go#config#FmtFailSilently() abort function! go#config#FmtFailSilently() abort
@@ -368,9 +379,9 @@ function! go#config#PlayOpenBrowser() abort
return get(g:, "go_play_open_browser", 1) return get(g:, "go_play_open_browser", 1)
endfunction endfunction
function! go#config#GorenameCommand() abort function! go#config#RenameCommand() abort
" delegate to go#config#GorenameBin for backwards compatability. " delegate to go#config#GorenameBin for backwards compatability.
return get(g:, "go_gorename_command", go#config#GorenameBin()) return get(g:, "go_rename_command", go#config#GorenameBin())
endfunction endfunction
function! go#config#GorenameBin() abort function! go#config#GorenameBin() abort
@@ -516,10 +527,22 @@ function! go#config#GoplsFuzzyMatching() abort
return get(g:, 'go_gopls_fuzzy_matching', 1) return get(g:, 'go_gopls_fuzzy_matching', 1)
endfunction endfunction
function! go#config#GoplsStaticCheck() abort
return get(g:, 'go_gopls_staticcheck', 0)
endfunction
function! go#config#GoplsUsePlaceholders() abort function! go#config#GoplsUsePlaceholders() abort
return get(g:, 'go_gopls_use_placeholders', 0) return get(g:, 'go_gopls_use_placeholders', 0)
endfunction endfunction
function! go#config#GoplsEnabled() abort
return get(g:, 'go_gopls_enabled', 1)
endfunction
function! go#config#DiagnosticsEnabled() abort
return get(g:, 'go_diagnostics_enabled', 0)
endfunction
" Set the default value. A value of "1" is a shortcut for this, for " Set the default value. A value of "1" is a shortcut for this, for
" compatibility reasons. " compatibility reasons.
if exists("g:go_gorename_prefill") && g:go_gorename_prefill == 1 if exists("g:go_gorename_prefill") && g:go_gorename_prefill == 1

View File

@@ -1,13 +1,36 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Vim plugin " Copyright (c) 2016-2019 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL " Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org> " Maintainer: Jon Parise <jon@indelible.org>
if exists('g:autoloaded_graphql') function! graphql#has_syntax_group(group) abort
finish try
endif silent execute 'silent highlight ' . a:group
let g:autoloaded_graphql = 1 catch
return v:false
endtry
return v:true
endfunction
function! graphql#javascript_tags() abort function! graphql#javascript_tags() abort
return get(g:, 'graphql_javascript_tags', ['gql', 'graphql', 'Relay.QL']) return get(g:, 'graphql_javascript_tags', ['gql', 'graphql', 'Relay.QL'])

View File

@@ -70,9 +70,9 @@ function s:is_jsx_element(syntax)
return a:syntax =~? 'jsxElement' return a:syntax =~? 'jsxElement'
endfunction endfunction
" Whether the specified syntax group is the jsxEscapeJs " Whether the specified syntax group is the jsxExpressionBlock
function s:is_jsx_escape(syntax) function s:is_jsx_expression(syntax)
return a:syntax =~? 'jsxEscapeJs' return a:syntax =~? 'jsxExpressionBlock'
endfunction endfunction
" Whether the specified syntax group is the jsxBraces " Whether the specified syntax group is the jsxBraces
@@ -191,7 +191,7 @@ endfunction
" - jsxRegion " - jsxRegion
" - jsxTaggedRegion " - jsxTaggedRegion
" - jsxElement " - jsxElement
" - jsxEscapeJs " - jsxExpressionBlock
" - Other " - Other
function s:syntax_context(lnum) function s:syntax_context(lnum)
let start_col = s:start_col(a:lnum) let start_col = s:start_col(a:lnum)
@@ -201,9 +201,9 @@ function s:syntax_context(lnum)
let i = 0 let i = 0
for syntax_name in reversed for syntax_name in reversed
" If the current line is jsxEscapeJs and not starts with jsxBraces " If the current line is jsxExpressionBlock and not starts with jsxBraces
if s:is_jsx_escape(syntax_name) if s:is_jsx_expression(syntax_name)
return 'jsxEscapeJs' return 'jsxExpressionBlock'
endif endif
if s:is_jsx_region(syntax_name) if s:is_jsx_region(syntax_name)
@@ -287,7 +287,7 @@ function! jsx_pretty#indent#get(js_indent)
endif endif
return s:jsx_indent_element(v:lnum) return s:jsx_indent_element(v:lnum)
elseif syntax_context == 'jsxEscapeJs' elseif syntax_context == 'jsxExpressionBlock'
let prev_lnum = s:prev_lnum(v:lnum) let prev_lnum = s:prev_lnum(v:lnum)
let prev_line = s:trim(getline(prev_lnum)) let prev_line = s:trim(getline(prev_lnum))

View File

@@ -1,6 +1,5 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
" Author: Kevin Ballard
" Description: Helper functions for Rust commands/mappings " Description: Helper functions for Rust commands/mappings
" Last Modified: May 27, 2014 " Last Modified: May 27, 2014
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim " For bugs, patches and license go to https://github.com/rust-lang/rust.vim
@@ -510,16 +509,23 @@ function! s:SearchTestFunctionNameUnderCursor() abort
return matchstr(getline(test_func_line), '\m\C^\s*fn\s\+\zs\h\w*') return matchstr(getline(test_func_line), '\m\C^\s*fn\s\+\zs\h\w*')
endfunction endfunction
function! rust#Test(all, options) abort function! rust#Test(mods, winsize, all, options) abort
let manifest = findfile('Cargo.toml', expand('%:p:h') . ';') let manifest = findfile('Cargo.toml', expand('%:p:h') . ';')
if manifest ==# '' if manifest ==# ''
return rust#Run(1, '--test ' . a:options) return rust#Run(1, '--test ' . a:options)
endif endif
" <count> defaults to 0, but we prefer an empty string
let winsize = a:winsize ? a:winsize : ''
if has('terminal') if has('terminal')
let cmd = 'terminal ' if has('patch-8.0.910')
let cmd = printf('%s noautocmd %snew | terminal ++curwin ', a:mods, winsize)
else
let cmd = printf('%s terminal ', a:mods)
endif
elseif has('nvim') elseif has('nvim')
let cmd = 'noautocmd new | terminal ' let cmd = printf('%s noautocmd %snew | terminal ', a:mods, winsize)
else else
let cmd = '!' let cmd = '!'
let manifest = shellescape(manifest) let manifest = shellescape(manifest)

View File

@@ -746,6 +746,10 @@ let g:xmldata_html5 = {
\ [], \ [],
\ global_attributes \ global_attributes
\ ], \ ],
\ 'slot': [
\ [],
\ extend(copy(global_attributes), {'name': []})
\ ],
\ 'small': [ \ 'small': [
\ phrasing_elements, \ phrasing_elements,
\ global_attributes \ global_attributes

3
build
View File

@@ -233,7 +233,7 @@ PACKS="
log:MTDL9/vim-log-highlighting log:MTDL9/vim-log-highlighting
lua:tbastos/vim-lua lua:tbastos/vim-lua
mako:sophacles/vim-bundle-mako mako:sophacles/vim-bundle-mako
markdown:plasticboy/vim-markdown:_SYNTAX markdown:plasticboy/vim-markdown:_NOAFTER
mathematica:voldikss/vim-mma mathematica:voldikss/vim-mma
mdx:jxnblk/vim-mdx-js mdx:jxnblk/vim-mdx-js
meson:mesonbuild/meson:_ALL:/data/syntax-highlighting/vim/ meson:mesonbuild/meson:_ALL:/data/syntax-highlighting/vim/
@@ -292,6 +292,7 @@ PACKS="
tptp:c-cube/vim-tptp tptp:c-cube/vim-tptp
twig:lumiliet/vim-twig twig:lumiliet/vim-twig
typescript:HerringtonDarkholme/yats.vim typescript:HerringtonDarkholme/yats.vim
v:ollykel/v-vim
vala:arrufat/vala.vim vala:arrufat/vala.vim
vbnet:vim-scripts/vbnet.vim vbnet:vim-scripts/vbnet.vim
vcl:smerrill/vcl-vim-plugin vcl:smerrill/vcl-vim-plugin

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cucumber') == -
" Vim compiler file " Vim compiler file
" Compiler: Cucumber " Compiler: Cucumber
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2010 Aug 09 " Last Change: 2016 Aug 29
if exists("current_compiler") if exists("current_compiler")
finish finish

View File

@@ -1,3 +1,15 @@
if !exists('g:markdown_enable_spell_checking')
let g:markdown_enable_spell_checking = 0
end
if !exists('g:markdown_enable_input_abbreviations')
let g:markdown_enable_input_abbreviations = 0
end
if !exists('g:markdown_enable_mappings')
let g:markdown_enable_mappings = 0
end
" Enable jsx syntax by default " Enable jsx syntax by default
if !exists('g:jsx_ext_required') if !exists('g:jsx_ext_required')
let g:jsx_ext_required = 0 let g:jsx_ext_required = 0

View File

@@ -1,3 +1,15 @@
if !exists('g:markdown_enable_spell_checking')
let g:markdown_enable_spell_checking = 0
end
if !exists('g:markdown_enable_input_abbreviations')
let g:markdown_enable_input_abbreviations = 0
end
if !exists('g:markdown_enable_mappings')
let g:markdown_enable_mappings = 0
end
" Enable jsx syntax by default " Enable jsx syntax by default
if !exists('g:jsx_ext_required') if !exists('g:jsx_ext_required')
let g:jsx_ext_required = 0 let g:jsx_ext_required = 0
@@ -507,6 +519,29 @@ endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
augroup filetypedetect augroup filetypedetect
" graphql, from graphql.vim in jparise/vim-graphql:_ALL " graphql, from graphql.vim in jparise/vim-graphql:_ALL
" Copyright (c) 2016-2019 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
" vint: -ProhibitAutocmdWithNoGroup " vint: -ProhibitAutocmdWithNoGroup
au BufRead,BufNewFile *.graphql,*.graphqls,*.gql setfiletype graphql au BufRead,BufNewFile *.graphql,*.graphqls,*.gql setfiletype graphql
augroup end augroup end
@@ -781,7 +816,7 @@ endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
augroup filetypedetect augroup filetypedetect
" markdown, from markdown.vim in plasticboy/vim-markdown:_SYNTAX " markdown, from markdown.vim in plasticboy/vim-markdown:_NOAFTER
if !has('patch-7.4.480') if !has('patch-7.4.480')
" Before this patch, vim used modula2 for .md. " Before this patch, vim used modula2 for .md.
au! filetypedetect BufRead,BufNewFile *.md au! filetypedetect BufRead,BufNewFile *.md
@@ -1473,10 +1508,17 @@ autocmd BufNewFile,BufRead *.tsx setlocal filetype=typescriptreact
augroup end augroup end
endif endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'v') == -1
augroup filetypedetect
" v, from vlang.vim in ollykel/v-vim
au BufNewFile,BufRead *.v set filetype=vlang
au BufNewFile,BufRead *.v set syntax=vlang
augroup end
endif
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vala') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vala') == -1
augroup filetypedetect augroup filetypedetect
" vala, from vala.vim in arrufat/vala.vim " vala, from vala.vim in arrufat/vala.vim
autocmd BufRead *.vala,*.vapi set efm=%f:%l.%c-%[%^:]%#:\ %t%[%^:]%#:\ %m
au BufRead,BufNewFile *.vala,*.vapi,*.valadoc setfiletype vala au BufRead,BufNewFile *.vala,*.vapi,*.valadoc setfiletype vala
augroup end augroup end
endif endif

View File

@@ -1,9 +1,5 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1
" Slow yaml highlighting workaround
if exists('+regexpengine') && ('&regexpengine' == 0)
setlocal regexpengine=1
endif
set isfname+=@-@ set isfname+=@-@
set path+=./../templates,./../files,templates,files set path+=./../templates,./../files,templates,files

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cucumber') == -
" Vim filetype plugin " Vim filetype plugin
" Language: Cucumber " Language: Cucumber
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2013 Jun 01 " Last Change: 2016 Aug 29
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if (exists("b:did_ftplugin")) if (exists("b:did_ftplugin"))

View File

@@ -27,6 +27,7 @@ let &l:errorformat =
setlocal includeexpr=dart#resolveUri(v:fname) setlocal includeexpr=dart#resolveUri(v:fname)
setlocal isfname+=: setlocal isfname+=:
setlocal iskeyword+=$
let b:undo_ftplugin = 'setl et< fo< sw< sts< com< cms< inex< isf<' let b:undo_ftplugin = 'setl et< fo< sw< sts< com< cms< inex< isf<'

View File

@@ -32,6 +32,20 @@ if exists('g:dhall_strip_whitespace')
endif endif
endif endif
function! DhallFormat()
let cursor = getpos('.')
exec 'silent %!dhall format'
call setpos('.', cursor)
endfunction
if exists('g:dhall_format')
if g:dhall_format == 1
augroup dhall
au BufWritePre *.dhall call DhallFormat()
augroup END
endif
endif
augroup dhall augroup dhall
au BufNewFile,BufRead *.dhall setl shiftwidth=2 au BufNewFile,BufRead *.dhall setl shiftwidth=2
augroup END augroup END

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
" Vim filetype plugin " Vim filetype plugin
" Language: generic git output " Language: generic git output
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2013 May 30 " Last Change: 2016 Aug 29
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if (exists("b:did_ftplugin")) if (exists("b:did_ftplugin"))

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
" Vim filetype plugin " Vim filetype plugin
" Language: git commit file " Language: git commit file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2013 May 30 " Last Change: 2016 Aug 29
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if (exists("b:did_ftplugin")) if (exists("b:did_ftplugin"))

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
" Vim filetype plugin " Vim filetype plugin
" Language: git rebase --interactive " Language: git rebase --interactive
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2010 May 21 " Last Change: 2016 Aug 29
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if (exists("b:did_ftplugin")) if (exists("b:did_ftplugin"))
@@ -20,12 +20,15 @@ if !exists("b:undo_ftplugin")
endif endif
let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<" let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<"
function! s:choose(word) function! s:choose(word) abort
s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e
endfunction endfunction
function! s:cycle() function! s:cycle(count) abort
call s:choose(get({'s':'edit','p':'squash','e':'reword','r':'fixup'},getline('.')[0],'pick')) let words = ['pick', 'edit', 'fixup', 'squash', 'reword', 'drop']
let index = index(map(copy(words), 'v:val[0]'), getline('.')[0])
let index = ((index < 0 ? 0 : index) + 10000 * len(words) + a:count) % len(words)
call s:choose(words[index])
endfunction endfunction
command! -buffer -bar -range Pick :<line1>,<line2>call s:choose('pick') command! -buffer -bar -range Pick :<line1>,<line2>call s:choose('pick')
@@ -34,16 +37,16 @@ command! -buffer -bar -range Edit :<line1>,<line2>call s:choose('edit')
command! -buffer -bar -range Reword :<line1>,<line2>call s:choose('reword') command! -buffer -bar -range Reword :<line1>,<line2>call s:choose('reword')
command! -buffer -bar -range Fixup :<line1>,<line2>call s:choose('fixup') command! -buffer -bar -range Fixup :<line1>,<line2>call s:choose('fixup')
command! -buffer -bar -range Drop :<line1>,<line2>call s:choose('drop') command! -buffer -bar -range Drop :<line1>,<line2>call s:choose('drop')
command! -buffer -bar Cycle :call s:cycle() command! -buffer -count=1 -bar -bang Cycle call s:cycle(<bang>0 ? -<count> : <count>)
" The above are more useful when they are mapped; for example:
"nnoremap <buffer> <silent> S :Cycle<CR>
if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps") if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps")
finish finish
endif endif
nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K' nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K'
nnoremap <buffer> <silent> <C-A> :<C-U><C-R>=v:count1<CR>Cycle<CR>
nnoremap <buffer> <silent> <C-X> :<C-U><C-R>=v:count1<CR>Cycle!<CR>
let b:undo_ftplugin = b:undo_ftplugin . "|nunmap <buffer> K" let b:undo_ftplugin = b:undo_ftplugin . "|exe 'nunmap <buffer> K'|exe 'nunmap <buffer> <C-A>'|exe 'nunmap <buffer> <C-X>'"
endif endif

View File

@@ -1,6 +1,25 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Vim filetype plugin " Copyright (c) 2016-2019 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL " Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org> " Maintainer: Jon Parise <jon@indelible.org>

795
ftplugin/markdown.vim Normal file
View File

@@ -0,0 +1,795 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
"TODO print messages when on visual mode. I only see VISUAL, not the messages.
" Function interface phylosophy:
"
" - functions take arbitrary line numbers as parameters.
" Current cursor line is only a suitable default parameter.
"
" - only functions that bind directly to user actions:
"
" - print error messages.
" All intermediate functions limit themselves return `0` to indicate an error.
"
" - move the cursor. All other functions do not move the cursor.
"
" This is how you should view headers for the header mappings:
"
" |BUFFER
" |
" |Outside any header
" |
" a-+# a
" |
" |Inside a
" |
" a-+
" b-+## b
" |
" |inside b
" |
" b-+
" c-+### c
" |
" |Inside c
" |
" c-+
" d-|# d
" |
" |Inside d
" |
" d-+
" e-|e
" |====
" |
" |Inside e
" |
" e-+
" For each level, contains the regexp that matches at that level only.
"
let s:levelRegexpDict = {
\ 1: '\v^(#[^#]@=|.+\n\=+$)',
\ 2: '\v^(##[^#]@=|.+\n-+$)',
\ 3: '\v^###[^#]@=',
\ 4: '\v^####[^#]@=',
\ 5: '\v^#####[^#]@=',
\ 6: '\v^######[^#]@='
\ }
" Maches any header level of any type.
"
" This could be deduced from `s:levelRegexpDict`, but it is more
" efficient to have a single regexp for this.
"
let s:headersRegexp = '\v^(#|.+\n(\=+|-+)$)'
" Returns the line number of the first header before `line`, called the
" current header.
"
" If there is no current header, return `0`.
"
" @param a:1 The line to look the header of. Default value: `getpos('.')`.
"
function! s:GetHeaderLineNum(...)
if a:0 == 0
let l:l = line('.')
else
let l:l = a:1
endif
while(l:l > 0)
if join(getline(l:l, l:l + 1), "\n") =~ s:headersRegexp
return l:l
endif
let l:l -= 1
endwhile
return 0
endfunction
" - if inside a header goes to it.
" Return its line number.
"
" - if on top level outside any headers,
" print a warning
" Return `0`.
"
function! s:MoveToCurHeader()
let l:lineNum = s:GetHeaderLineNum()
if l:lineNum != 0
call cursor(l:lineNum, 1)
else
echo 'outside any header'
"normal! gg
endif
return l:lineNum
endfunction
" Move cursor to next header of any level.
"
" If there are no more headers, print a warning.
"
function! s:MoveToNextHeader()
if search(s:headersRegexp, 'W') == 0
"normal! G
echo 'no next header'
endif
endfunction
" Move cursor to previous header (before current) of any level.
"
" If it does not exist, print a warning.
"
function! s:MoveToPreviousHeader()
let l:curHeaderLineNumber = s:GetHeaderLineNum()
let l:noPreviousHeader = 0
if l:curHeaderLineNumber <= 1
let l:noPreviousHeader = 1
else
let l:previousHeaderLineNumber = s:GetHeaderLineNum(l:curHeaderLineNumber - 1)
if l:previousHeaderLineNumber == 0
let l:noPreviousHeader = 1
else
call cursor(l:previousHeaderLineNumber, 1)
endif
endif
if l:noPreviousHeader
echo 'no previous header'
endif
endfunction
" - if line is inside a header, return the header level (h1 -> 1, h2 -> 2, etc.).
"
" - if line is at top level outside any headers, return `0`.
"
function! s:GetHeaderLevel(...)
if a:0 == 0
let l:line = line('.')
else
let l:line = a:1
endif
let l:linenum = s:GetHeaderLineNum(l:line)
if l:linenum != 0
return s:GetLevelOfHeaderAtLine(l:linenum)
else
return 0
endif
endfunction
" Returns the level of the header at the given line.
"
" If there is no header at the given line, returns `0`.
"
function! s:GetLevelOfHeaderAtLine(linenum)
let l:lines = join(getline(a:linenum, a:linenum + 1), "\n")
for l:key in keys(s:levelRegexpDict)
if l:lines =~ get(s:levelRegexpDict, l:key)
return l:key
endif
endfor
return 0
endfunction
" Move cursor to parent header of the current header.
"
" If it does not exit, print a warning and do nothing.
"
function! s:MoveToParentHeader()
let l:linenum = s:GetParentHeaderLineNumber()
if l:linenum != 0
call cursor(l:linenum, 1)
else
echo 'no parent header'
endif
endfunction
" Return the line number of the parent header of line `line`.
"
" If it has no parent, return `0`.
"
function! s:GetParentHeaderLineNumber(...)
if a:0 == 0
let l:line = line('.')
else
let l:line = a:1
endif
let l:level = s:GetHeaderLevel(l:line)
if l:level > 1
let l:linenum = s:GetPreviousHeaderLineNumberAtLevel(l:level - 1, l:line)
return l:linenum
endif
return 0
endfunction
" Return the line number of the previous header of given level.
" in relation to line `a:1`. If not given, `a:1 = getline()`
"
" `a:1` line is included, and this may return the current header.
"
" If none return 0.
"
function! s:GetNextHeaderLineNumberAtLevel(level, ...)
if a:0 < 1
let l:line = line('.')
else
let l:line = a:1
endif
let l:l = l:line
while(l:l <= line('$'))
if join(getline(l:l, l:l + 1), "\n") =~ get(s:levelRegexpDict, a:level)
return l:l
endif
let l:l += 1
endwhile
return 0
endfunction
" Return the line number of the previous header of given level.
" in relation to line `a:1`. If not given, `a:1 = getline()`
"
" `a:1` line is included, and this may return the current header.
"
" If none return 0.
"
function! s:GetPreviousHeaderLineNumberAtLevel(level, ...)
if a:0 == 0
let l:line = line('.')
else
let l:line = a:1
endif
let l:l = l:line
while(l:l > 0)
if join(getline(l:l, l:l + 1), "\n") =~ get(s:levelRegexpDict, a:level)
return l:l
endif
let l:l -= 1
endwhile
return 0
endfunction
" Move cursor to next sibling header.
"
" If there is no next siblings, print a warning and don't move.
"
function! s:MoveToNextSiblingHeader()
let l:curHeaderLineNumber = s:GetHeaderLineNum()
let l:curHeaderLevel = s:GetLevelOfHeaderAtLine(l:curHeaderLineNumber)
let l:curHeaderParentLineNumber = s:GetParentHeaderLineNumber()
let l:nextHeaderSameLevelLineNumber = s:GetNextHeaderLineNumberAtLevel(l:curHeaderLevel, l:curHeaderLineNumber + 1)
let l:noNextSibling = 0
if l:nextHeaderSameLevelLineNumber == 0
let l:noNextSibling = 1
else
let l:nextHeaderSameLevelParentLineNumber = s:GetParentHeaderLineNumber(l:nextHeaderSameLevelLineNumber)
if l:curHeaderParentLineNumber == l:nextHeaderSameLevelParentLineNumber
call cursor(l:nextHeaderSameLevelLineNumber, 1)
else
let l:noNextSibling = 1
endif
endif
if l:noNextSibling
echo 'no next sibling header'
endif
endfunction
" Move cursor to previous sibling header.
"
" If there is no previous siblings, print a warning and do nothing.
"
function! s:MoveToPreviousSiblingHeader()
let l:curHeaderLineNumber = s:GetHeaderLineNum()
let l:curHeaderLevel = s:GetLevelOfHeaderAtLine(l:curHeaderLineNumber)
let l:curHeaderParentLineNumber = s:GetParentHeaderLineNumber()
let l:previousHeaderSameLevelLineNumber = s:GetPreviousHeaderLineNumberAtLevel(l:curHeaderLevel, l:curHeaderLineNumber - 1)
let l:noPreviousSibling = 0
if l:previousHeaderSameLevelLineNumber == 0
let l:noPreviousSibling = 1
else
let l:previousHeaderSameLevelParentLineNumber = s:GetParentHeaderLineNumber(l:previousHeaderSameLevelLineNumber)
if l:curHeaderParentLineNumber == l:previousHeaderSameLevelParentLineNumber
call cursor(l:previousHeaderSameLevelLineNumber, 1)
else
let l:noPreviousSibling = 1
endif
endif
if l:noPreviousSibling
echo 'no previous sibling header'
endif
endfunction
function! s:Toc(...)
if a:0 > 0
let l:window_type = a:1
else
let l:window_type = 'vertical'
endif
let l:bufnr = bufnr('%')
let l:cursor_line = line('.')
let l:cursor_header = 0
let l:fenced_block = 0
let l:front_matter = 0
let l:header_list = []
let l:header_max_len = 0
let l:vim_markdown_toc_autofit = get(g:, "vim_markdown_toc_autofit", 0)
let l:vim_markdown_frontmatter = get(g:, "vim_markdown_frontmatter", 0)
for i in range(1, line('$'))
let l:lineraw = getline(i)
let l:l1 = getline(i+1)
let l:line = substitute(l:lineraw, "#", "\\\#", "g")
if l:line =~ '````*' || l:line =~ '\~\~\~\~*'
if l:fenced_block == 0
let l:fenced_block = 1
elseif l:fenced_block == 1
let l:fenced_block = 0
endif
elseif l:vim_markdown_frontmatter == 1
if l:front_matter == 1
if l:line == '---'
let l:front_matter = 0
endif
elseif i == 1
if l:line == '---'
let l:front_matter = 1
endif
endif
endif
if l:line =~ '^#\+' || (l:l1 =~ '^=\+\s*$' || l:l1 =~ '^-\+\s*$') && l:line =~ '^\S'
let l:is_header = 1
else
let l:is_header = 0
endif
if l:is_header == 1 && l:fenced_block == 0 && l:front_matter == 0
" append line to location list
let l:item = {'lnum': i, 'text': l:line, 'valid': 1, 'bufnr': l:bufnr, 'col': 1}
let l:header_list = l:header_list + [l:item]
" set header number of the cursor position
if l:cursor_header == 0
if i == l:cursor_line
let l:cursor_header = len(l:header_list)
elseif i > l:cursor_line
let l:cursor_header = len(l:header_list) - 1
endif
endif
" keep track of the longest header size (heading level + title)
let l:total_len = stridx(l:line, ' ') + strdisplaywidth(l:line)
if l:total_len > l:header_max_len
let l:header_max_len = l:total_len
endif
endif
endfor
call setloclist(0, l:header_list)
if len(l:header_list) == 0
echom "Toc: No headers."
return
endif
if l:window_type ==# 'horizontal'
lopen
elseif l:window_type ==# 'vertical'
vertical lopen
" auto-fit toc window when possible to shrink it
if (&columns/2) > l:header_max_len && l:vim_markdown_toc_autofit == 1
execute 'vertical resize ' . (l:header_max_len + 1)
else
execute 'vertical resize ' . (&columns/2)
endif
elseif l:window_type ==# 'tab'
tab lopen
else
lopen
endif
setlocal modifiable
for i in range(1, line('$'))
" this is the location-list data for the current item
let d = getloclist(0)[i-1]
" atx headers
if match(d.text, "^#") > -1
let l:level = len(matchstr(d.text, '#*', 'g'))-1
let d.text = substitute(d.text, '\v^#*[ ]*', '', '')
let d.text = substitute(d.text, '\v[ ]*#*$', '', '')
" setex headers
else
let l:next_line = getbufline(d.bufnr, d.lnum+1)
if match(l:next_line, "=") > -1
let l:level = 0
elseif match(l:next_line, "-") > -1
let l:level = 1
endif
endif
call setline(i, repeat(' ', l:level). d.text)
endfor
setlocal nomodified
setlocal nomodifiable
execute 'normal! ' . l:cursor_header . 'G'
endfunction
" Convert Setex headers in range `line1 .. line2` to Atx.
"
" Return the number of conversions.
"
function! s:SetexToAtx(line1, line2)
let l:originalNumLines = line('$')
execute 'silent! ' . a:line1 . ',' . a:line2 . 'substitute/\v(.*\S.*)\n\=+$/# \1/'
execute 'silent! ' . a:line1 . ',' . a:line2 . 'substitute/\v(.*\S.*)\n-+$/## \1/'
return l:originalNumLines - line('$')
endfunction
" If `a:1` is 0, decrease the level of all headers in range `line1 .. line2`.
"
" Otherwise, increase the level. `a:1` defaults to `0`.
"
function! s:HeaderDecrease(line1, line2, ...)
if a:0 > 0
let l:increase = a:1
else
let l:increase = 0
endif
if l:increase
let l:forbiddenLevel = 6
let l:replaceLevels = [5, 1]
let l:levelDelta = 1
else
let l:forbiddenLevel = 1
let l:replaceLevels = [2, 6]
let l:levelDelta = -1
endif
for l:line in range(a:line1, a:line2)
if join(getline(l:line, l:line + 1), "\n") =~ s:levelRegexpDict[l:forbiddenLevel]
echomsg 'There is an h' . l:forbiddenLevel . ' at line ' . l:line . '. Aborting.'
return
endif
endfor
let l:numSubstitutions = s:SetexToAtx(a:line1, a:line2)
let l:flags = (&gdefault ? '' : 'g')
for l:level in range(replaceLevels[0], replaceLevels[1], -l:levelDelta)
execute 'silent! ' . a:line1 . ',' . (a:line2 - l:numSubstitutions) . 'substitute/' . s:levelRegexpDict[l:level] . '/' . repeat('#', l:level + l:levelDelta) . '/' . l:flags
endfor
endfunction
" Format table under cursor.
"
" Depends on Tabularize.
"
function! s:TableFormat()
let l:pos = getpos('.')
normal! {
" Search instead of `normal! j` because of the table at beginning of file edge case.
call search('|')
normal! j
" Remove everything that is not a pipe, colon or hyphen next to a colon othewise
" well formated tables would grow because of addition of 2 spaces on the separator
" line by Tabularize /|.
let l:flags = (&gdefault ? '' : 'g')
execute 's/\(:\@<!-:\@!\|[^|:-]\)//e' . l:flags
execute 's/--/-/e' . l:flags
Tabularize /|
" Move colons for alignment to left or right side of the cell.
execute 's/:\( \+\)|/\1:|/e' . l:flags
execute 's/|\( \+\):/|:\1/e' . l:flags
execute 's/ /-/' . l:flags
call setpos('.', l:pos)
endfunction
" Wrapper to do move commands in visual mode.
"
function! s:VisMove(f)
norm! gv
call function(a:f)()
endfunction
" Map in both normal and visual modes.
"
function! s:MapNormVis(rhs,lhs)
execute 'nn <buffer><silent> ' . a:rhs . ' :call ' . a:lhs . '()<cr>'
execute 'vn <buffer><silent> ' . a:rhs . ' <esc>:call <sid>VisMove(''' . a:lhs . ''')<cr>'
endfunction
" Parameters:
"
" - step +1 for right, -1 for left
"
" TODO: multiple lines.
"
function! s:FindCornerOfSyntax(lnum, col, step)
let l:col = a:col
let l:syn = synIDattr(synID(a:lnum, l:col, 1), 'name')
while synIDattr(synID(a:lnum, l:col, 1), 'name') ==# l:syn
let l:col += a:step
endwhile
return l:col - a:step
endfunction
" Return the next position of the given syntax name,
" inclusive on the given position.
"
" TODO: multiple lines
"
function! s:FindNextSyntax(lnum, col, name)
let l:col = a:col
let l:step = 1
while synIDattr(synID(a:lnum, l:col, 1), 'name') !=# a:name
let l:col += l:step
endwhile
return [a:lnum, l:col]
endfunction
function! s:FindCornersOfSyntax(lnum, col)
return [<sid>FindLeftOfSyntax(a:lnum, a:col), <sid>FindRightOfSyntax(a:lnum, a:col)]
endfunction
function! s:FindRightOfSyntax(lnum, col)
return <sid>FindCornerOfSyntax(a:lnum, a:col, 1)
endfunction
function! s:FindLeftOfSyntax(lnum, col)
return <sid>FindCornerOfSyntax(a:lnum, a:col, -1)
endfunction
" Returns:
"
" - a string with the the URL for the link under the cursor
" - an empty string if the cursor is not on a link
"
" TODO
"
" - multiline support
" - give an error if the separator does is not on a link
"
function! s:Markdown_GetUrlForPosition(lnum, col)
let l:lnum = a:lnum
let l:col = a:col
let l:syn = synIDattr(synID(l:lnum, l:col, 1), 'name')
if l:syn ==# 'mkdInlineURL' || l:syn ==# 'mkdURL' || l:syn ==# 'mkdLinkDefTarget'
" Do nothing.
elseif l:syn ==# 'mkdLink'
let [l:lnum, l:col] = <sid>FindNextSyntax(l:lnum, l:col, 'mkdURL')
let l:syn = 'mkdURL'
elseif l:syn ==# 'mkdDelimiter'
let l:line = getline(l:lnum)
let l:char = l:line[col - 1]
if l:char ==# '<'
let l:col += 1
elseif l:char ==# '>' || l:char ==# ')'
let l:col -= 1
elseif l:char ==# '[' || l:char ==# ']' || l:char ==# '('
let [l:lnum, l:col] = <sid>FindNextSyntax(l:lnum, l:col, 'mkdURL')
else
return ''
endif
else
return ''
endif
let [l:left, l:right] = <sid>FindCornersOfSyntax(l:lnum, l:col)
return getline(l:lnum)[l:left - 1 : l:right - 1]
endfunction
" Front end for GetUrlForPosition.
"
function! s:OpenUrlUnderCursor()
let l:url = s:Markdown_GetUrlForPosition(line('.'), col('.'))
if l:url != ''
call s:VersionAwareNetrwBrowseX(l:url)
else
echomsg 'The cursor is not on a link.'
endif
endfunction
" We need a definition guard because we invoke 'edit' which will reload this
" script while this function is running. We must not replace it.
if !exists('*s:EditUrlUnderCursor')
function s:EditUrlUnderCursor()
let l:url = s:Markdown_GetUrlForPosition(line('.'), col('.'))
if l:url != ''
if get(g:, 'vim_markdown_autowrite', 0)
write
endif
let l:anchor = ''
if get(g:, 'vim_markdown_follow_anchor', 0)
let l:parts = split(l:url, '#', 1)
if len(l:parts) == 2
let [l:url, l:anchor] = parts
let l:anchorexpr = get(g:, 'vim_markdown_anchorexpr', '')
if l:anchorexpr != ''
let l:anchor = eval(substitute(
\ l:anchorexpr, 'v:anchor',
\ escape('"'.l:anchor.'"', '"'), ''))
endif
endif
endif
if l:url != ''
let l:ext = ''
if get(g:, 'vim_markdown_no_extensions_in_markdown', 0)
" use another file extension if preferred
if exists('g:vim_markdown_auto_extension_ext')
let l:ext = '.'.g:vim_markdown_auto_extension_ext
else
let l:ext = '.md'
endif
endif
let l:url = fnameescape(fnamemodify(expand('%:h').'/'.l:url.l:ext, ':.'))
let l:editmethod = ''
" determine how to open the linked file (split, tab, etc)
if exists('g:vim_markdown_edit_url_in')
if g:vim_markdown_edit_url_in == 'tab'
let l:editmethod = 'tabnew'
elseif g:vim_markdown_edit_url_in == 'vsplit'
let l:editmethod = 'vsp'
elseif g:vim_markdown_edit_url_in == 'hsplit'
let l:editmethod = 'sp'
else
let l:editmethod = 'edit'
endif
else
" default to current buffer
let l:editmethod = 'edit'
endif
execute l:editmethod l:url
endif
if l:anchor != ''
silent! execute '/'.l:anchor
endif
else
echomsg 'The cursor is not on a link.'
endif
endfunction
endif
function! s:VersionAwareNetrwBrowseX(url)
if has('patch-7.4.567')
call netrw#BrowseX(a:url, 0)
else
call netrw#NetrwBrowseX(a:url, 0)
endif
endf
function! s:MapNotHasmapto(lhs, rhs)
if !hasmapto('<Plug>' . a:rhs)
execute 'nmap <buffer>' . a:lhs . ' <Plug>' . a:rhs
execute 'vmap <buffer>' . a:lhs . ' <Plug>' . a:rhs
endif
endfunction
call <sid>MapNormVis('<Plug>Markdown_MoveToNextHeader', '<sid>MoveToNextHeader')
call <sid>MapNormVis('<Plug>Markdown_MoveToPreviousHeader', '<sid>MoveToPreviousHeader')
call <sid>MapNormVis('<Plug>Markdown_MoveToNextSiblingHeader', '<sid>MoveToNextSiblingHeader')
call <sid>MapNormVis('<Plug>Markdown_MoveToPreviousSiblingHeader', '<sid>MoveToPreviousSiblingHeader')
call <sid>MapNormVis('<Plug>Markdown_MoveToParentHeader', '<sid>MoveToParentHeader')
call <sid>MapNormVis('<Plug>Markdown_MoveToCurHeader', '<sid>MoveToCurHeader')
nnoremap <Plug>Markdown_OpenUrlUnderCursor :call <sid>OpenUrlUnderCursor()<cr>
nnoremap <Plug>Markdown_EditUrlUnderCursor :call <sid>EditUrlUnderCursor()<cr>
if !get(g:, 'vim_markdown_no_default_key_mappings', 0)
call <sid>MapNotHasmapto(']]', 'Markdown_MoveToNextHeader')
call <sid>MapNotHasmapto('[[', 'Markdown_MoveToPreviousHeader')
call <sid>MapNotHasmapto('][', 'Markdown_MoveToNextSiblingHeader')
call <sid>MapNotHasmapto('[]', 'Markdown_MoveToPreviousSiblingHeader')
call <sid>MapNotHasmapto(']u', 'Markdown_MoveToParentHeader')
call <sid>MapNotHasmapto(']c', 'Markdown_MoveToCurHeader')
call <sid>MapNotHasmapto('gx', 'Markdown_OpenUrlUnderCursor')
call <sid>MapNotHasmapto('ge', 'Markdown_EditUrlUnderCursor')
endif
command! -buffer -range=% HeaderDecrease call s:HeaderDecrease(<line1>, <line2>)
command! -buffer -range=% HeaderIncrease call s:HeaderDecrease(<line1>, <line2>, 1)
command! -buffer -range=% SetexToAtx call s:SetexToAtx(<line1>, <line2>)
command! -buffer TableFormat call s:TableFormat()
command! -buffer Toc call s:Toc()
command! -buffer Toch call s:Toc('horizontal')
command! -buffer Tocv call s:Toc('vertical')
command! -buffer Toct call s:Toc('tab')
" Heavily based on vim-notes - http://peterodding.com/code/vim/notes/
if exists('g:vim_markdown_fenced_languages')
let s:filetype_dict = {}
for s:filetype in g:vim_markdown_fenced_languages
let key = matchstr(s:filetype, "[^=]*")
let val = matchstr(s:filetype, "[^=]*$")
let s:filetype_dict[key] = val
endfor
else
let s:filetype_dict = {
\ 'c++': 'cpp',
\ 'viml': 'vim',
\ 'bash': 'sh',
\ 'ini': 'dosini'
\ }
endif
function! s:MarkdownHighlightSources(force)
" Syntax highlight source code embedded in notes.
" Look for code blocks in the current file
let filetypes = {}
for line in getline(1, '$')
let ft = matchstr(line, '```\s*\zs[0-9A-Za-z_+-]*')
if !empty(ft) && ft !~ '^\d*$' | let filetypes[ft] = 1 | endif
endfor
if !exists('b:mkd_known_filetypes')
let b:mkd_known_filetypes = {}
endif
if !exists('b:mkd_included_filetypes')
" set syntax file name included
let b:mkd_included_filetypes = {}
endif
if !a:force && (b:mkd_known_filetypes == filetypes || empty(filetypes))
return
endif
" Now we're ready to actually highlight the code blocks.
let startgroup = 'mkdCodeStart'
let endgroup = 'mkdCodeEnd'
for ft in keys(filetypes)
if a:force || !has_key(b:mkd_known_filetypes, ft)
if has_key(s:filetype_dict, ft)
let filetype = s:filetype_dict[ft]
else
let filetype = ft
endif
let group = 'mkdSnippet' . toupper(substitute(filetype, "[+-]", "_", "g"))
if !has_key(b:mkd_included_filetypes, filetype)
let include = s:SyntaxInclude(filetype)
let b:mkd_included_filetypes[filetype] = 1
else
let include = '@' . toupper(filetype)
endif
let command = 'syntax region %s matchgroup=%s start="^\s*```\s*%s$" matchgroup=%s end="\s*```$" keepend contains=%s%s'
execute printf(command, group, startgroup, ft, endgroup, include, has('conceal') && get(g:, 'vim_markdown_conceal', 1) && get(g:, 'vim_markdown_conceal_code_blocks', 1) ? ' concealends' : '')
execute printf('syntax cluster mkdNonListItem add=%s', group)
let b:mkd_known_filetypes[ft] = 1
endif
endfor
endfunction
function! s:SyntaxInclude(filetype)
" Include the syntax highlighting of another {filetype}.
let grouplistname = '@' . toupper(a:filetype)
" Unset the name of the current syntax while including the other syntax
" because some syntax scripts do nothing when "b:current_syntax" is set
if exists('b:current_syntax')
let syntax_save = b:current_syntax
unlet b:current_syntax
endif
try
execute 'syntax include' grouplistname 'syntax/' . a:filetype . '.vim'
execute 'syntax include' grouplistname 'after/syntax/' . a:filetype . '.vim'
catch /E484/
" Ignore missing scripts
endtry
" Restore the name of the current syntax
if exists('syntax_save')
let b:current_syntax = syntax_save
elseif exists('b:current_syntax')
unlet b:current_syntax
endif
return grouplistname
endfunction
function! s:MarkdownRefreshSyntax(force)
if &filetype =~ 'markdown' && line('$') > 1
call s:MarkdownHighlightSources(a:force)
endif
endfunction
function! s:MarkdownClearSyntaxVariables()
if &filetype =~ 'markdown'
unlet! b:mkd_included_filetypes
endif
endfunction
augroup Mkd
" These autocmd calling s:MarkdownRefreshSyntax need to be kept in sync with
" the autocmds calling s:MarkdownSetupFolding in after/ftplugin/markdown.vim.
autocmd! * <buffer>
autocmd BufWinEnter <buffer> call s:MarkdownRefreshSyntax(1)
autocmd BufUnload <buffer> call s:MarkdownClearSyntaxVariables()
autocmd BufWritePost <buffer> call s:MarkdownRefreshSyntax(0)
autocmd InsertEnter,InsertLeave <buffer> call s:MarkdownRefreshSyntax(0)
autocmd CursorHold,CursorHoldI <buffer> call s:MarkdownRefreshSyntax(0)
augroup END
endif

View File

@@ -3,7 +3,6 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
" Language: Rust " Language: Rust
" Description: Vim ftplugin for Rust " Description: Vim ftplugin for Rust
" Maintainer: Chris Morgan <me@chrismorgan.info> " Maintainer: Chris Morgan <me@chrismorgan.info>
" Maintainer: Kevin Ballard <kevin@sb.org>
" Last Change: June 08, 2016 " Last Change: June 08, 2016
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim " For bugs, patches and license go to https://github.com/rust-lang/rust.vim
@@ -139,7 +138,7 @@ command! -bar RustInfoToClipboard call rust#debugging#InfoToClipboard()
command! -bar -nargs=1 RustInfoToFile call rust#debugging#InfoToFile(<f-args>) command! -bar -nargs=1 RustInfoToFile call rust#debugging#InfoToFile(<f-args>)
" See |:RustTest| for docs " See |:RustTest| for docs
command! -buffer -nargs=* -bang RustTest call rust#Test(<bang>0, <q-args>) command! -buffer -nargs=* -count -bang RustTest call rust#Test(<q-mods>, <count>, <bang>0, <q-args>)
if !exists("b:rust_last_rustc_args") || !exists("b:rust_last_args") if !exists("b:rust_last_rustc_args") || !exists("b:rust_last_args")
let b:rust_last_rustc_args = [] let b:rust_last_rustc_args = []

29
ftplugin/vala.vim Normal file
View File

@@ -0,0 +1,29 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vala') == -1
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setlocal efm=%f:%l.%c-%[%^:]%#:\ %t%[%^:]%#:\ %m
" Insert a CCode attribute for the symbol below the cursor
" https://wiki.gnome.org/Projects/Vala/LegacyBindings
function! CCode() abort
normal yiwO[CCode (cname = "pa")]
endfunction
" Set Vala Coding Style
" https://wiki.gnome.org/Projects/Vala/Hacking#Coding_Style
function! ValaCodingStyle() abort
set ts=4 sts=4 sw=4 tw=0 wm=0
endfunction
command! -buffer -bar CCode call CCode()
command! -buffer -bar ValaCodingStyle call ValaCodingStyle()
if get(g:, 'vala_syntax_folding_enabled', 1)
setlocal foldmethod=syntax
endif
endif

6
ftplugin/vlang.vim Normal file
View File

@@ -0,0 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'v') == -1
setlocal commentstring=//\ %s
setlocal makeprg=v\ %
endif

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cucumber') == -
" Vim indent file " Vim indent file
" Language: Cucumber " Language: Cucumber
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2013 May 30 " Last Change: 2017 Jun 13
if exists("b:did_indent") if exists("b:did_indent")
finish finish
@@ -29,7 +29,7 @@ function! GetCucumberIndent()
let line = getline(prevnonblank(v:lnum-1)) let line = getline(prevnonblank(v:lnum-1))
let cline = getline(v:lnum) let cline = getline(v:lnum)
let nline = getline(nextnonblank(v:lnum+1)) let nline = getline(nextnonblank(v:lnum+1))
let sw = exists('*shiftwidth') ? shiftwidth() : &sw let sw = exists('*shiftwidth') ? shiftwidth() : shiftwidth()
let syn = s:syn(prevnonblank(v:lnum-1)) let syn = s:syn(prevnonblank(v:lnum-1))
let csyn = s:syn(v:lnum) let csyn = s:syn(v:lnum)
let nsyn = s:syn(nextnonblank(v:lnum+1)) let nsyn = s:syn(nextnonblank(v:lnum+1))

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
" Vim indent file " Vim indent file
" Language: git config file " Language: git config file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2013 May 30 " Last Change: 2017 Jun 13
if exists("b:did_indent") if exists("b:did_indent")
finish finish
@@ -22,7 +22,7 @@ if exists("*GetGitconfigIndent")
endif endif
function! GetGitconfigIndent() function! GetGitconfigIndent()
let sw = exists('*shiftwidth') ? shiftwidth() : &sw let sw = shiftwidth()
let line = getline(prevnonblank(v:lnum-1)) let line = getline(prevnonblank(v:lnum-1))
let cline = getline(v:lnum) let cline = getline(v:lnum)
if line =~ '\\\@<!\%(\\\\\)*\\$' if line =~ '\\\@<!\%(\\\\\)*\\$'

View File

@@ -1,6 +1,25 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Vim indent file " Copyright (c) 2016-2019 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL " Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org> " Maintainer: Jon Parise <jon@indelible.org>

View File

@@ -20,6 +20,13 @@ endif
let s:itemization_pattern = '^\s*[-*+]\s' let s:itemization_pattern = '^\s*[-*+]\s'
let s:enumeration_pattern = '^\s*\%(\d\+\|#\)\.\s\+' let s:enumeration_pattern = '^\s*\%(\d\+\|#\)\.\s\+'
let s:note_pattern = '^\.\. '
function! s:get_paragraph_start()
let paragraph_mark_start = getpos("'{")[1]
return getline(paragraph_mark_start) =~
\ '\S' ? paragraph_mark_start : paragraph_mark_start + 1
endfunction
function GetRSTIndent() function GetRSTIndent()
let lnum = prevnonblank(v:lnum - 1) let lnum = prevnonblank(v:lnum - 1)
@@ -30,6 +37,13 @@ function GetRSTIndent()
let ind = indent(lnum) let ind = indent(lnum)
let line = getline(lnum) let line = getline(lnum)
let psnum = s:get_paragraph_start()
if psnum != 0
if getline(psnum) =~ s:note_pattern
let ind = 3
endif
endif
if line =~ s:itemization_pattern if line =~ s:itemization_pattern
let ind += 2 let ind += 2
elseif line =~ s:enumeration_pattern elseif line =~ s:enumeration_pattern

View File

@@ -66,6 +66,7 @@ let s:syng_strcom = s:syng_stringdoc + [
\ 'PercentStringDelimiter', \ 'PercentStringDelimiter',
\ 'PercentSymbolDelimiter', \ 'PercentSymbolDelimiter',
\ 'Regexp', \ 'Regexp',
\ 'RegexpCharClass',
\ 'RegexpDelimiter', \ 'RegexpDelimiter',
\ 'RegexpEscape', \ 'RegexpEscape',
\ 'StringDelimiter', \ 'StringDelimiter',

View File

@@ -193,7 +193,12 @@ function GetRustIndent(lnum)
" A line that ends with '.<expr>;' is probably an end of a long list " A line that ends with '.<expr>;' is probably an end of a long list
" of method operations. " of method operations.
if prevline =~# '\V\^\s\*.' && l:last_prevline_character ==# ';' if prevline =~# '\V\^\s\*.' && l:last_prevline_character ==# ';'
return indent(prevlinenum) - s:shiftwidth() call cursor(a:lnum - 1, 1)
let l:scope_start = searchpair('{\|(', '', '}\|)', 'nbW',
\ 's:is_string_comment(line("."), col("."))')
if l:scope_start != 0 && l:scope_start < a:lnum
return indent(l:scope_start) + 4
endif
endif endif
if l:last_prevline_character ==# "," if l:last_prevline_character ==# ","

69
indent/vlang.vim Normal file
View File

@@ -0,0 +1,69 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'v') == -1
" Based on the Go identation file.
"
" Copyright 2011 The Go Authors. All rights reserved.
" Use of this source code is governed by a BSD-style
" license that can be found in the LICENSE file.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal nolisp
setlocal autoindent
setlocal indentexpr=VlangIndent(v:lnum)
setlocal indentkeys+=<:>,0=},0=)
if exists("*VlangIndent")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
function! VlangIndent(lnum) abort
let prevlnum = prevnonblank(a:lnum-1)
if prevlnum == 0
return 0
endif
let prevl = substitute(getline(prevlnum), '//.*$', '', '')
let thisl = substitute(getline(a:lnum), '//.*$', '', '')
let previ = indent(prevlnum)
let ind = previ
if prevl =~ '[({]\s*$'
" previous line opened a block
let ind += shiftwidth()
endif
if prevl =~# '^\s*\(case .*\|default\):$'
" previous line is part of a switch statement
let ind += shiftwidth()
endif
if thisl =~ '^\s*[)}]'
" this line closed a block
let ind -= shiftwidth()
endif
" Colons are tricky.
" We want to outdent if it's part of a switch ("case foo:" or "default:").
" We ignore trying to deal with jump labels because (a) they're rare, and
" (b) they're hard to disambiguate from a composite literal key.
if thisl =~# '^\s*\(case .*\|default\):$'
let ind -= shiftwidth()
endif
return ind
endfunction
" restore Vi compatibility settings
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: sw=2 ts=2 et
endif

View File

@@ -15,7 +15,7 @@ syntax match typescriptClassName contained /\K\k*/
syntax region typescriptClassTypeParameter syntax region typescriptClassTypeParameter
\ start=/</ end=/>/ \ start=/</ end=/>/
\ contains=typescriptTypeParameter \ contains=@typescriptTypeParameterCluster
\ nextgroup=typescriptClassBlock,typescriptClassExtends \ nextgroup=typescriptClassBlock,typescriptClassExtends
\ contained skipwhite skipnl \ contained skipwhite skipnl
@@ -47,7 +47,7 @@ syntax match typescriptInterfaceName contained /\k\+/
\ skipwhite skipnl \ skipwhite skipnl
syntax region typescriptInterfaceTypeParameter syntax region typescriptInterfaceTypeParameter
\ start=/</ end=/>/ \ start=/</ end=/>/
\ contains=typescriptTypeParameter \ contains=@typescriptTypeParameterCluster
\ nextgroup=typescriptObjectType,typescriptInterfaceExtends \ nextgroup=typescriptObjectType,typescriptInterfaceExtends
\ contained \ contained
\ skipwhite skipnl \ skipwhite skipnl

View File

@@ -16,7 +16,7 @@ syntax region typescriptString
\ contains=typescriptSpecial,@Spell \ contains=typescriptSpecial,@Spell
\ extend \ extend
syntax match typescriptSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)" syntax match typescriptSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{1,6}})|c\u|.)"
" From vim runtime " From vim runtime
" <https://github.com/vim/vim/blob/master/runtime/syntax/javascript.vim#L48> " <https://github.com/vim/vim/blob/master/runtime/syntax/javascript.vim#L48>
@@ -24,7 +24,7 @@ syntax region typescriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|
syntax region typescriptTemplate syntax region typescriptTemplate
\ start=/`/ skip=/\\\\\|\\`\|\n/ end=/`\|$/ \ start=/`/ skip=/\\\\\|\\`\|\n/ end=/`\|$/
\ contains=typescriptTemplateSubstitution \ contains=typescriptTemplateSubstitution,typescriptSpecial,@Spell
\ nextgroup=@typescriptSymbols \ nextgroup=@typescriptSymbols
\ skipwhite skipempty \ skipwhite skipempty

View File

@@ -2,9 +2,11 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'typescript') ==
syntax region typescriptObjectLiteral matchgroup=typescriptBraces syntax region typescriptObjectLiteral matchgroup=typescriptBraces
\ start=/{/ end=/}/ \ start=/{/ end=/}/
\ contains=@typescriptComments,typescriptObjectLabel,typescriptStringProperty,typescriptComputedPropertyName \ contains=@typescriptComments,typescriptObjectLabel,typescriptStringProperty,typescriptComputedPropertyName,typescriptObjectAsyncKeyword
\ fold contained \ fold contained
syntax keyword typescriptObjectAsyncKeyword async contained
syntax match typescriptObjectLabel contained /\k\+\_s*/ syntax match typescriptObjectLabel contained /\k\+\_s*/
\ nextgroup=typescriptObjectColon,@typescriptCallImpl \ nextgroup=typescriptObjectColon,@typescriptCallImpl
\ skipwhite skipempty \ skipwhite skipempty

View File

@@ -3,13 +3,17 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'typescript') ==
" Types " Types
syntax match typescriptOptionalMark /?/ contained syntax match typescriptOptionalMark /?/ contained
syntax cluster typescriptTypeParameterCluster contains=
\ typescriptTypeParameter,
\ typescriptGenericDefault
syntax region typescriptTypeParameters matchgroup=typescriptTypeBrackets syntax region typescriptTypeParameters matchgroup=typescriptTypeBrackets
\ start=/</ end=/>/ \ start=/</ end=/>/
\ contains=typescriptTypeParameter \ contains=@typescriptTypeParameterCluster
\ contained \ contained
syntax match typescriptTypeParameter /\K\k*/ syntax match typescriptTypeParameter /\K\k*/
\ nextgroup=typescriptConstraint,typescriptGenericDefault \ nextgroup=typescriptConstraint
\ contained skipwhite skipnl \ contained skipwhite skipnl
syntax keyword typescriptConstraint extends syntax keyword typescriptConstraint extends

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c/c++') == -1
" Vim syntax file " Vim syntax file
" Language: C " Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2016 Nov 18 " Last Change: 2019 Nov 29
" Quit when a (custom) syntax file was already loaded " Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax") if exists("b:current_syntax")
@@ -15,6 +15,14 @@ set cpo&vim
let s:ft = matchstr(&ft, '^\([^.]\)\+') let s:ft = matchstr(&ft, '^\([^.]\)\+')
" Optional embedded Autodoc parsing
" To enable it add: let g:c_autodoc = 1
" to your .vimrc
if exists("c_autodoc")
syn include @cAutodoc <sfile>:p:h/autodoc.vim
unlet b:current_syntax
endif
" A bunch of useful C keywords " A bunch of useful C keywords
syn keyword cStatement goto break return continue asm syn keyword cStatement goto break return continue asm
syn keyword cLabel case default syn keyword cLabel case default
@@ -131,7 +139,7 @@ if exists("c_no_curly_error")
syn match cParenError display ")" syn match cParenError display ")"
syn match cErrInParen display contained "^^<%\|^%>" syn match cErrInParen display contained "^^<%\|^%>"
else else
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell syn region cParen transparent start='(' end=')' contains=ALLBUT,cBlock,@cParenGroup,cCppParen,@cStringGroup,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine " cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
syn match cParenError display ")" syn match cParenError display ")"
@@ -214,7 +222,7 @@ if exists("c_comment_strings")
syn match cCommentSkip contained "^\s*\*\($\|\s\+\)" syn match cCommentSkip contained "^\s*\*\($\|\s\+\)"
syn region cCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip syn region cCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip
syn region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial syn region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,@Spell syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,cWrongComTail,@Spell
if exists("c_no_comment_fold") if exists("c_no_comment_fold")
" Use "extend" here to have preprocessor lines not terminate halfway a " Use "extend" here to have preprocessor lines not terminate halfway a
" comment. " comment.
@@ -233,6 +241,7 @@ endif
" keep a // comment separately, it terminates a preproc. conditional " keep a // comment separately, it terminates a preproc. conditional
syn match cCommentError display "\*/" syn match cCommentError display "\*/"
syn match cCommentStartError display "/\*"me=e-1 contained syn match cCommentStartError display "/\*"me=e-1 contained
syn match cWrongComTail display "\*/"
syn keyword cOperator sizeof syn keyword cOperator sizeof
if exists("c_gnu") if exists("c_gnu")
@@ -282,6 +291,22 @@ if !exists("c_no_c11")
syn keyword cOperator _Static_assert static_assert syn keyword cOperator _Static_assert static_assert
syn keyword cStorageClass _Thread_local thread_local syn keyword cStorageClass _Thread_local thread_local
syn keyword cType char16_t char32_t syn keyword cType char16_t char32_t
" C11 atomics (take down the shield wall!)
syn keyword cType atomic_bool atomic_char atomic_schar atomic_uchar
syn keyword Ctype atomic_short atomic_ushort atomic_int atomic_uint
syn keyword cType atomic_long atomic_ulong atomic_llong atomic_ullong
syn keyword cType atomic_char16_t atomic_char32_t atomic_wchar_t
syn keyword cType atomic_int_least8_t atomic_uint_least8_t
syn keyword cType atomic_int_least16_t atomic_uint_least16_t
syn keyword cType atomic_int_least32_t atomic_uint_least32_t
syn keyword cType atomic_int_least64_t atomic_uint_least64_t
syn keyword cType atomic_int_fast8_t atomic_uint_fast8_t
syn keyword cType atomic_int_fast16_t atomic_uint_fast16_t
syn keyword cType atomic_int_fast32_t atomic_uint_fast32_t
syn keyword cType atomic_int_fast64_t atomic_uint_fast64_t
syn keyword cType atomic_intptr_t atomic_uintptr_t
syn keyword cType atomic_size_t atomic_ptrdiff_t
syn keyword cType atomic_intmax_t atomic_uintmax_t
endif endif
if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu") if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
@@ -313,44 +338,32 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX
syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX
endif endif
syn keyword cConstant FLT_RADIX FLT_ROUNDS syn keyword cConstant FLT_RADIX FLT_ROUNDS FLT_DIG FLT_MANT_DIG FLT_EPSILON DBL_DIG DBL_MANT_DIG DBL_EPSILON
syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP FLT_MIN_10_EXP FLT_MAX_10_EXP
syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP DBL_MIN_10_EXP DBL_MAX_10_EXP LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP HUGE_VAL CLOCKS_PER_SEC NULL LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP syn keyword cConstant LC_NUMERIC LC_TIME SIG_DFL SIG_ERR SIG_IGN SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP
syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP
syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP
syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP
syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL
syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
syn keyword cConstant LC_NUMERIC LC_TIME
syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN
syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
" Add POSIX signals as well... " Add POSIX signals as well...
syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2
syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF FOPEN_MAX FILENAME_MAX L_tmpnam
syn keyword cConstant SIGUSR1 SIGUSR2 syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET TMP_MAX stderr stdin stdout EXIT_FAILURE EXIT_SUCCESS RAND_MAX
syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF
syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam
syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET
syn keyword cConstant TMP_MAX stderr stdin stdout
syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX
" POSIX 2001 " POSIX 2001
syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG SIGVTALRM SIGXCPU SIGXFSZ
syn keyword cConstant SIGVTALRM SIGXCPU SIGXFSZ
" non-POSIX signals " non-POSIX signals
syn keyword cConstant SIGWINCH SIGINFO syn keyword cConstant SIGWINCH SIGINFO
" Add POSIX errors as well " Add POSIX errors as well. List comes from:
syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY " http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html
syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT syn keyword cConstant E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF
syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR syn keyword cConstant EBADMSG EBUSY ECANCELED ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK
syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV syn keyword cConstant EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTUNREACH EIDRM EILSEQ
syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS syn keyword cConstant EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE
syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM syn keyword cConstant EMULTIHOP ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA
syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV syn keyword cConstant ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENOPROTOOPT ENOSPC ENOSR
syn keyword cConstant ENOSTR ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTRECOVERABLE ENOTSOCK ENOTSUP
syn keyword cConstant ENOTTY ENXIO EOPNOTSUPP EOVERFLOW EOWNERDEAD EPERM EPIPE EPROTO
syn keyword cConstant EPROTONOSUPPORT EPROTOTYPE ERANGE EROFS ESPIPE ESRCH ESTALE ETIME ETIMEDOUT
syn keyword cConstant ETXTBSY EWOULDBLOCK EXDEV
" math.h " math.h
syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4 syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
@@ -371,17 +384,17 @@ if !exists("c_no_if0")
else else
syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
endif endif
syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\zs\(%:\|#\)\s*\(else\|elif\)" end="^\s*\zs\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit
syn region cCppInWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold syn region cCppInWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold
syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\zs\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit
if !exists("c_no_if0_fold") if !exists("c_no_if0_fold")
syn region cCppInElse contained start="^\s*\zs\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold
else else
syn region cCppInElse contained start="^\s*\zs\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2
endif endif
syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\zs\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\zs\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
syn region cCppOutSkip contained start="^\s*\zs\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\zs\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip syn region cCppOutSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip
syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\zs\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\zs\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc
endif endif
syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
syn match cIncluded display contained "<[^>]*>" syn match cIncluded display contained "<[^>]*>"
@@ -391,6 +404,13 @@ syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInP
syn region cDefine start="^\s*\zs\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell syn region cDefine start="^\s*\zs\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
syn region cPreProc start="^\s*\zs\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell syn region cPreProc start="^\s*\zs\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
" Optional embedded Autodoc parsing
if exists("c_autodoc")
syn match cAutodocReal display contained "\%(//\|[/ \t\v]\*\|^\*\)\@2<=!.*" contains=@cAutodoc containedin=cComment,cCommentL
syn cluster cCommentGroup add=cAutodocReal
syn cluster cPreProcGroup add=cAutodocReal
endif
" Highlight User Labels " Highlight User Labels
syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
if s:ft ==# 'c' || exists("cpp_no_cpp11") if s:ft ==# 'c' || exists("cpp_no_cpp11")
@@ -452,6 +472,7 @@ hi def link cErrInBracket cError
hi def link cCommentError cError hi def link cCommentError cError
hi def link cCommentStartError cError hi def link cCommentStartError cError
hi def link cSpaceError cError hi def link cSpaceError cError
hi def link cWrongComTail cError
hi def link cSpecialError cError hi def link cSpecialError cError
hi def link cCurlyError cError hi def link cCurlyError cError
hi def link cOperator Operator hi def link cOperator Operator

View File

@@ -111,6 +111,7 @@ if exists("did_typescript_hilink")
HiLink typescriptMethodAccessor Operator HiLink typescriptMethodAccessor Operator
HiLink typescriptAsyncFuncKeyword Keyword HiLink typescriptAsyncFuncKeyword Keyword
HiLink typescriptObjectAsyncKeyword Keyword
HiLink typescriptAsyncFor Keyword HiLink typescriptAsyncFor Keyword
HiLink typescriptFuncKeyword Keyword HiLink typescriptFuncKeyword Keyword
HiLink typescriptAsyncFunc Keyword HiLink typescriptAsyncFunc Keyword

View File

@@ -4,6 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c/c++') == -1
" Language: C++ " Language: C++
" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) " Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp)
" Previous Maintainer: Ken Shan <ccshan@post.harvard.edu> " Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
" Last Change: 2017 Jun 05
" quit when a syntax file was already loaded " quit when a syntax file was already loaded
if exists("b:current_syntax") if exists("b:current_syntax")
@@ -43,6 +44,8 @@ if !exists("cpp_no_cpp11")
syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE syn keyword cppConstant ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE
syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE syn keyword cppConstant ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE
syn region cppRawString matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell syn region cppRawString matchgroup=cppRawStringDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell
syn match cppCast "\<\(const\|static\|dynamic\)_pointer_cast\s*<"me=e-1
syn match cppCast "\<\(const\|static\|dynamic\)_pointer_cast\s*$"
endif endif
" C++ 14 extensions " C++ 14 extensions
@@ -54,6 +57,21 @@ if !exists("cpp_no_cpp14")
syn case match syn case match
endif endif
" C++ 17 extensions
if !exists("cpp_no_cpp17")
syn match cppCast "\<reinterpret_pointer_cast\s*<"me=e-1
syn match cppCast "\<reinterpret_pointer_cast\s*$"
endif
" C++ 20 extensions
if !exists("cpp_no_cpp20")
syn keyword cppStatement co_await co_return co_yield requires
syn keyword cppStorageClass consteval constinit
syn keyword cppStructure concept
syn keyword cppType char8_t
syn keyword cppModule import module export
endif
" The minimum and maximum operators in GNU C++ " The minimum and maximum operators in GNU C++
syn match cppMinMax "[<>]?" syn match cppMinMax "[<>]?"
@@ -72,6 +90,7 @@ hi def link cppConstant Constant
hi def link cppRawStringDelimiter Delimiter hi def link cppRawStringDelimiter Delimiter
hi def link cppRawString String hi def link cppRawString String
hi def link cppNumber Number hi def link cppNumber Number
hi def link cppModule Include
let b:current_syntax = "cpp" let b:current_syntax = "cpp"

View File

@@ -28,7 +28,7 @@ syntax keyword dartConstant null
syntax keyword dartTypedef this super class typedef enum mixin syntax keyword dartTypedef this super class typedef enum mixin
syntax keyword dartOperator new is as in syntax keyword dartOperator new is as in
syntax match dartOperator "+=\=\|-=\=\|*=\=\|/=\=\|%=\=\|\~/=\=\|<<=\=\|>>=\=\|[<>]=\=\|===\=\|\!==\=\|&=\=\|\^=\=\||=\=\|||\|&&\|\[\]=\=\|=>\|!\|\~\|?\|:" syntax match dartOperator "+=\=\|-=\=\|*=\=\|/=\=\|%=\=\|\~/=\=\|<<=\=\|>>=\=\|[<>]=\=\|===\=\|\!==\=\|&=\=\|\^=\=\||=\=\|||\|&&\|\[\]=\=\|=>\|!\|\~\|?\|:"
syntax keyword dartType void var bool int double num dynamic syntax keyword dartCoreType void var dynamic
syntax keyword dartStatement return syntax keyword dartStatement return
syntax keyword dartStorageClass static abstract final const factory syntax keyword dartStorageClass static abstract final const factory
syntax keyword dartExceptions throw rethrow try on catch finally syntax keyword dartExceptions throw rethrow try on catch finally
@@ -51,27 +51,26 @@ syntax match dartLibrary "^\(library\|part of\|part\)\>"
syntax match dartMetadata "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>" syntax match dartMetadata "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>"
" Numbers " Numbers
syntax match dartNumber "\<\d\+\(\.\d\+\)\=\>" syntax match dartNumber "\<\d\+\(\.\d\+\)\=\>"
" User Types " User Types
if !exists('dart_highlight_types') || dart_highlight_types syntax match dartUserType "\<_\?\u[[:alnum:]_\$]*\>"
syntax match dartTypeName "\<[A-Z]\w*\>\|\<_[A-Z]\w*\>"
endif
" Core libraries " Function highlighting
if !exists('dart_corelib_highlight') || dart_corelib_highlight syntax match dartFunction "\zs\<\(_\?\l[[:alnum:]_\$]*\)\>*\s*\ze("
syntax keyword dartCoreClasses BidirectionalIterator Comparable DateTime
\ Duration Expando Function Invocation Iterable Iterator List Map Match " SDK libraries
\ Object Pattern RegExp RuneIterator Runes Set StackTrace Stopwatch String syntax keyword dartSdkClass BidirectionalIterator Comparable DateTime
\ StringBuffer StringSink Symbol Type \ Duration Expando Function Invocation Iterable Iterator List Map Match
syntax keyword dartCoreTypedefs Comparator \ Object Pattern RegExp RuneIterator Runes Set StackTrace Stopwatch String
syntax keyword dartCoreExceptions AbstractClassInstantiationError \ StringBuffer StringSink Symbol Type bool int double num
\ ArgumentError AssertionError CastError ConcurrentModificationError syntax keyword dartSdkTypedef Comparator
\ Error Exception FallThroughError FormatException syntax keyword dartSdkException AbstractClassInstantiationError
\ IntegerDivisionByZeroException NoSuchMethodError NullThrownError \ ArgumentError AssertionError CastError ConcurrentModificationError
\ OutOfMemoryError RangeError RuntimeError StackOverflowError StateError \ Error Exception FallThroughError FormatException
\ TypeError UnimplementedError UnsupportedError \ IntegerDivisionByZeroException NoSuchMethodError NullThrownError
endif \ OutOfMemoryError RangeError RuntimeError StackOverflowError StateError
\ TypeError UnimplementedError UnsupportedError
" Comments " Comments
syntax keyword dartTodo contained TODO FIXME XXX syntax keyword dartTodo contained TODO FIXME XXX
@@ -119,21 +118,23 @@ highlight default link dartLineComment Comment
highlight default link dartLineDocComment Comment highlight default link dartLineDocComment Comment
highlight default link dartShebangLine Comment highlight default link dartShebangLine Comment
highlight default link dartConstant Constant highlight default link dartConstant Constant
highlight default link dartTypedef Typedef
highlight default link dartTodo Todo highlight default link dartTodo Todo
highlight default link dartKeyword Keyword highlight default link dartKeyword Keyword
highlight default link dartType Type
highlight default link dartTypeName Type
highlight default link dartInterpolation PreProc highlight default link dartInterpolation PreProc
highlight default link dartDocLink SpecialComment highlight default link dartDocLink SpecialComment
highlight default link dartSpecialChar SpecialChar highlight default link dartSpecialChar SpecialChar
highlight default link dartLibrary Include highlight default link dartLibrary Include
highlight default link dartUri String highlight default link dartUri String
highlight default link dartCombinator Keyword highlight default link dartCombinator Keyword
highlight default link dartCoreClasses Type
highlight default link dartCoreTypedefs Typedef
highlight default link dartCoreExceptions Exception
highlight default link dartMetadata PreProc highlight default link dartMetadata PreProc
highlight default link dartSdkTypedef Typedef
highlight default link dartTypedef Typedef
highlight default link dartSdkException Exception
highlight default link dartSdkClass dartType
highlight default link dartCoreType dartType
highlight default link dartUserType dartType
highlight default link dartType Type
highlight default link dartFunction Function
let b:current_syntax = "dart" let b:current_syntax = "dart"
let b:spell_options = "contained" let b:spell_options = "contained"

View File

@@ -6,7 +6,7 @@ if exists('b:current_syntax')
finish finish
endif endif
syntax match dhallInterpolation "\v\$\{[^\}]*\}" syntax match dhallInterpolation "\v\$\{([^\}]|\\n)*\}"
syntax keyword dhallTodo TODO FIXME syntax keyword dhallTodo TODO FIXME
syntax match dhallBrackets "[<>|]" syntax match dhallBrackets "[<>|]"
syntax match dhallOperator "+\|*\|#" syntax match dhallOperator "+\|*\|#"
@@ -39,6 +39,7 @@ syntax region dhallString start=+''+ end=+''+ contains=@Spell,dhallInterpolation
syntax region dhallString start=+"+ end=+"+ contains=dhallInterpolation,dhallEsc syntax region dhallString start=+"+ end=+"+ contains=dhallInterpolation,dhallEsc
syntax region dhallString start=+"/+ end=+"+ contains=dhallInterpolation,dhallEsc syntax region dhallString start=+"/+ end=+"+ contains=dhallInterpolation,dhallEsc
syntax keyword dhallBool True False syntax keyword dhallBool True False
syntax match dhallHash "sha256:[a-f0-9]+"
highlight link dhallSingleSpecial Special highlight link dhallSingleSpecial Special
highlight link dhallIndex Special highlight link dhallIndex Special
@@ -60,6 +61,7 @@ highlight link dhallType Structure
highlight link dhallParens Special highlight link dhallParens Special
highlight link dhallComment Comment highlight link dhallComment Comment
highlight link dhallMultilineComment Comment highlight link dhallMultilineComment Comment
highlight link dhallHash Keyword
let b:current_syntax = 'dhall' let b:current_syntax = 'dhall'

View File

@@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
" Language: git commit file " Language: git commit file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.git/COMMIT_EDITMSG " Filenames: *.git/COMMIT_EDITMSG
" Last Change: 2013 May 30 " Last Change: 2016 Aug 29
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish

View File

@@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
" Language: git config file " Language: git config file
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: gitconfig, .gitconfig, *.git/config " Filenames: gitconfig, .gitconfig, *.git/config
" Last Change: 2010 May 21 " Last Change: 2019 Sep 27
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@@ -13,7 +13,7 @@ endif
syn case ignore syn case ignore
syn sync minlines=10 syn sync minlines=10
syn match gitconfigComment "[#;].*" syn match gitconfigComment "[#;].*" contains=@Spell
syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]" syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]"
syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]' syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]'
syn match gitconfigVariable "\%(^\s*\)\@<=\a[a-z0-9-]*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite syn match gitconfigVariable "\%(^\s*\)\@<=\a[a-z0-9-]*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite

View File

@@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
" Language: git rebase --interactive " Language: git rebase --interactive
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: git-rebase-todo " Filenames: git-rebase-todo
" Last Change: 2013 May 30 " Last Change: 2016 Aug 29
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@@ -12,36 +12,49 @@ endif
syn case match syn case match
syn match gitrebaseHash "\v<\x{7,40}>" contained syn match gitrebaseHash "\v<\x{7,}>" contained
syn match gitrebaseCommit "\v<\x{7,40}>" nextgroup=gitrebaseSummary skipwhite syn match gitrebaseCommit "\v<\x{7,}>" nextgroup=gitrebaseSummary skipwhite
syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebasePick "\v^p%(ick)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseReword "\v^r%(eword)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseEdit "\v^e%(dit)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseSquash "\v^s%(quash)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseFixup "\v^f%(ixup)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseExec "\v^%(x|exec)>" nextgroup=gitrebaseCommand skipwhite syn match gitrebaseExec "\v^%(x|exec)>" nextgroup=gitrebaseCommand skipwhite
syn match gitrebaseBreak "\v^b%(reak)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseBreak "\v^b%(reak)=>"
syn match gitrebaseDrop "\v^d%(rop)=>" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseDrop "\v^d%(rop)=>" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseNoop "\v^noop>" syn match gitrebaseNoop "\v^noop>"
syn match gitrebaseMerge "\v^m(erge)=>" nextgroup=gitrebaseMergeOption,gitrebaseName skipwhite
syn match gitrebaseLabel "\v^l(abel)=>" nextgroup=gitrebaseName skipwhite
syn match gitrebaseReset "\v^r(eset)=>" nextgroup=gitrebaseName skipwhite
syn match gitrebaseSummary ".*" contains=gitrebaseHash contained syn match gitrebaseSummary ".*" contains=gitrebaseHash contained
syn match gitrebaseCommand ".*" contained syn match gitrebaseCommand ".*" contained
syn match gitrebaseComment "^\s*#.*" contains=gitrebaseHash syn match gitrebaseComment "^\s*#.*" contains=gitrebaseHash
syn match gitrebaseSquashError "\v%^%(s%(quash)=>|f%(ixup)=>)" nextgroup=gitrebaseCommit skipwhite syn match gitrebaseSquashError "\v%^%(s%(quash)=>|f%(ixup)=>)" nextgroup=gitrebaseCommit skipwhite
syn match gitrebaseMergeOption "\v-[Cc]>" nextgroup=gitrebaseMergeCommit skipwhite contained
syn match gitrebaseMergeCommit "\v<\x{7,}>" nextgroup=gitrebaseName skipwhite contained
syn match gitrebaseName "\v[^[:space:].*?i:^~/-]\S+" nextgroup=gitrebaseMergeComment skipwhite contained
syn match gitrebaseMergeComment "#" nextgroup=gitrebaseSummary skipwhite contained
hi def link gitrebaseCommit gitrebaseHash hi def link gitrebaseCommit gitrebaseHash
hi def link gitrebaseHash Identifier hi def link gitrebaseHash Identifier
hi def link gitrebasePick Statement hi def link gitrebasePick Type
hi def link gitrebaseReword Number hi def link gitrebaseReword Conditional
hi def link gitrebaseEdit PreProc hi def link gitrebaseEdit PreProc
hi def link gitrebaseSquash Type hi def link gitrebaseSquash Statement
hi def link gitrebaseFixup Special hi def link gitrebaseFixup Repeat
hi def link gitrebaseExec Function hi def link gitrebaseExec Operator
hi def link gitrebaseBreak Macro hi def link gitrebaseBreak Macro
hi def link gitrebaseDrop Comment hi def link gitrebaseDrop Comment
hi def link gitrebaseNoop Comment hi def link gitrebaseNoop Comment
hi def link gitrebaseMerge Exception
hi def link gitrebaseLabel Label
hi def link gitrebaseReset Keyword
hi def link gitrebaseSummary String hi def link gitrebaseSummary String
hi def link gitrebaseComment Comment hi def link gitrebaseComment Comment
hi def link gitrebaseSquashError Error hi def link gitrebaseSquashError Error
hi def link gitrebaseMergeCommit gitrebaseCommit
hi def link gitrebaseMergeComment gitrebaseComment
hi def link gitrebaseName Tag
let b:current_syntax = "gitrebase" let b:current_syntax = "gitrebase"

View File

@@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1
" Language: git send-email message " Language: git send-email message
" Maintainer: Tim Pope " Maintainer: Tim Pope
" Filenames: .gitsendemail.* " Filenames: .gitsendemail.*
" Last Change: 2010 May 21 " Last Change: 2016 Aug 29
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish

View File

@@ -164,15 +164,17 @@ endif
syn match goSingleDecl /\%(import\|var\|const\) [^(]\@=/ contains=goImport,goVar,goConst syn match goSingleDecl /\%(import\|var\|const\) [^(]\@=/ contains=goImport,goVar,goConst
" Integers " Integers
syn match goDecimalInt "\<-\=\(0\|[1-9]\d*\)\%([Ee][-+]\=\d\+\)\=\>" syn match goDecimalInt "\<-\=\(0\|[1-9]_\?\(\d\|\d\+_\?\d\+\)*\)\%([Ee][-+]\=\d\+\)\=\>"
syn match goHexadecimalInt "\<-\=0[xX]\x\+\>" syn match goDecimalError "\<-\=\(_\(\d\+_*\)\+\|\([1-9]\d*_*\)\+__\(\d\+_*\)\+\|\([1-9]\d*_*\)\+_\+\)\%([Ee][-+]\=\d\+\)\=\>"
syn match goHexadecimalError "\<-\=0[xX]\x*[^ \t0-9A-Fa-f]\S*\>" syn match goHexadecimalInt "\<-\=0[xX]_\?\(\x\+_\?\)\+\>"
syn match goOctalInt "\<-\=0\o\+\>" syn match goHexadecimalError "\<-\=0[xX]_\?\(\x\+_\?\)*\(\([^ \t0-9A-Fa-f_]\|__\)\S*\|_\)\>"
syn match goOctalError "\<-\=0[XxBb\]]\@!\o*[^ \t0-7]\S*\>" syn match goOctalInt "\<-\=0[oO]\?_\?\(\o\+_\?\)\+\>"
syn match goBinaryInt "\<-\=0[bB][01]\+\>" syn match goOctalError "\<-\=0[0-7oO_]*\(\([^ \t0-7oOxX_/)\]\}\:]\|[oO]\{2,\}\|__\)\S*\|_\|[oOxX]\)\>"
syn match goBinaryError "\<-\=0[bB][01]*[^ \t01]\S*\>" syn match goBinaryInt "\<-\=0[bB]_\?\([01]\+_\?\)\+\>"
syn match goBinaryError "\<-\=0[bB]_\?[01_]*\([^ \t01_]\S*\|__\S*\|_\)\>"
hi def link goDecimalInt Integer hi def link goDecimalInt Integer
hi def link goDecimalError Error
hi def link goHexadecimalInt Integer hi def link goHexadecimalInt Integer
hi def link goHexadecimalError Error hi def link goHexadecimalError Error
hi def link goOctalInt Integer hi def link goOctalInt Integer

View File

@@ -1,6 +1,25 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Vim syntax file " Copyright (c) 2016-2019 Jon Parise <jon@indelible.org>
"
" Permission is hereby granted, free of charge, to any person obtaining a copy
" of this software and associated documentation files (the "Software"), to
" deal in the Software without restriction, including without limitation the
" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
" sell copies of the Software, and to permit persons to whom the Software is
" furnished to do so, subject to the following conditions:
"
" The above copyright notice and this permission notice shall be included in
" all copies or substantial portions of the Software.
"
" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
" IN THE SOFTWARE.
"
" Language: GraphQL " Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org> " Maintainer: Jon Parise <jon@indelible.org>
@@ -8,20 +27,23 @@ if exists('b:current_syntax')
finish finish
endif endif
syn case match
syn match graphqlComment "#.*$" contains=@Spell syn match graphqlComment "#.*$" contains=@Spell
syn match graphqlOperator "=" display syn match graphqlOperator "=" display
syn match graphqlOperator "!" display syn match graphqlOperator "!" display
syn match graphqlOperator "|" display syn match graphqlOperator "|" display
syn match graphqlOperator "&" display
syn match graphqlOperator "\M..." display syn match graphqlOperator "\M..." display
syn keyword graphqlBoolean true false syn keyword graphqlBoolean true false
syn keyword graphqlNull null syn keyword graphqlNull null
syn match graphqlNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>" display syn match graphqlNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>" display
syn region graphqlString start=+"+ skip=+\\\\\|\\"+ end=+"\|$+ syn region graphqlString start=+"+ skip=+\\\\\|\\"+ end=+"\|$+
syn region graphqlString start=+"""+ end=+"""+ syn region graphqlString start=+"""+ skip=+\\"""+ end=+"""+
syn keyword graphqlKeyword on nextgroup=graphqlType skipwhite syn keyword graphqlKeyword on nextgroup=graphqlType,graphqlDirectiveLocation skipwhite
syn keyword graphqlStructure enum scalar type union nextgroup=graphqlType skipwhite syn keyword graphqlStructure enum scalar type union nextgroup=graphqlType skipwhite
syn keyword graphqlStructure input interface subscription nextgroup=graphqlType skipwhite syn keyword graphqlStructure input interface subscription nextgroup=graphqlType skipwhite
@@ -35,7 +57,16 @@ syn match graphqlDirective "\<@\h\w*\>" display
syn match graphqlVariable "\<\$\h\w*\>" display syn match graphqlVariable "\<\$\h\w*\>" display
syn match graphqlName "\<\h\w*\>" display syn match graphqlName "\<\h\w*\>" display
syn match graphqlType "\<_*\u\w*\>" display syn match graphqlType "\<_*\u\w*\>" display
syn match graphqlConstant "\<[A-Z_]\+\>" display
" https://graphql.github.io/graphql-spec/June2018/#ExecutableDirectiveLocation
syn keyword graphqlDirectiveLocation QUERY MUTATION SUBSCRIPTION FIELD
syn keyword graphqlDirectiveLocation FRAGMENT_DEFINITION FRAGMENT_SPREAD
syn keyword graphqlDirectiveLocation INLINE_FRAGMENT
" https://graphql.github.io/graphql-spec/June2018/#TypeSystemDirectiveLocation
syn keyword graphqlDirectiveLocation SCHEMA SCALAR OBJECT FIELD_DEFINITION
syn keyword graphqlDirectiveLocation ARGUMENT_DEFINITION INTERFACE UNION
syn keyword graphqlDirectiveLocation ENUM ENUM_VALUE INPUT_OBJECT
syn keyword graphqlDirectiveLocation INPUT_FIELD_DEFINITION
syn keyword graphqlMetaFields __schema __type __typename syn keyword graphqlMetaFields __schema __type __typename
@@ -52,8 +83,8 @@ hi def link graphqlNull Keyword
hi def link graphqlNumber Number hi def link graphqlNumber Number
hi def link graphqlString String hi def link graphqlString String
hi def link graphqlConstant Constant
hi def link graphqlDirective PreProc hi def link graphqlDirective PreProc
hi def link graphqlDirectiveLocation Special
hi def link graphqlName Identifier hi def link graphqlName Identifier
hi def link graphqlMetaFields Special hi def link graphqlMetaFields Special
hi def link graphqlKeyword Keyword hi def link graphqlKeyword Keyword

View File

@@ -33,7 +33,7 @@ syn keyword htmlTagName contained article aside audio canvas command
syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer
syn keyword htmlTagName contained header hgroup keygen main mark meter menu menuitem nav output syn keyword htmlTagName contained header hgroup keygen main mark meter menu menuitem nav output
syn keyword htmlTagName contained progress ruby rt rp rb rtc section source summary time track video data syn keyword htmlTagName contained progress ruby rt rp rb rtc section source summary time track video data
syn keyword htmlTagName contained template content shadow syn keyword htmlTagName contained template content shadow slot
syn keyword htmlTagName contained wbr bdi syn keyword htmlTagName contained wbr bdi
syn keyword htmlTagName contained picture syn keyword htmlTagName contained picture

View File

@@ -41,9 +41,9 @@ syn match i3ConfigFontNamespace /\w\+:/ contained contains=i3ConfigFontSeparator
syn match i3ConfigFontContent /-\?\w\+\(-\+\|\s\+\|,\)/ contained contains=i3ConfigFontNamespace,i3ConfigFontSeparator,i3ConfigFontKeyword syn match i3ConfigFontContent /-\?\w\+\(-\+\|\s\+\|,\)/ contained contains=i3ConfigFontNamespace,i3ConfigFontSeparator,i3ConfigFontKeyword
syn match i3ConfigFontSize /\s\=\d\+\(px\)\?\s\?$/ contained syn match i3ConfigFontSize /\s\=\d\+\(px\)\?\s\?$/ contained
syn match i3ConfigFont /^\s*font\s\+.*$/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace syn match i3ConfigFont /^\s*font\s\+.*$/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace
"syn match i3ConfigFont /^\s*font\s\+.*\(\\\_.*\)\?$/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace syn match i3ConfigFont /^\s*font\s\+.*\(\\\_.*\)\?$/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace
"syn match i3ConfigFont /^\s*font\s\+.*\(\\\_.*\)\?[^\\]\+$/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace syn match i3ConfigFont /^\s*font\s\+.*\(\\\_.*\)\?[^\\]\+$/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace
"syn match i3ConfigFont /^\s*font\s\+\(\(.*\\\_.*\)\|\(.*[^\\]\+$\)\)/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace syn match i3ConfigFont /^\s*font\s\+\(\(.*\\\_.*\)\|\(.*[^\\]\+$\)\)/ contains=i3ConfigFontContent,i3ConfigFontSeparator,i3ConfigFontSize,i3ConfigFontNamespace
" variables " variables
syn match i3ConfigString /\(['"]\)\(.\{-}\)\1/ contained syn match i3ConfigString /\(['"]\)\(.\{-}\)\1/ contained
@@ -55,8 +55,8 @@ syn keyword i3ConfigInitializeKeyword set contained
syn match i3ConfigInitialize /^\s*set\s\+.*$/ contains=i3ConfigVariable,i3ConfigInitializeKeyword,i3ConfigColor,i3ConfigString syn match i3ConfigInitialize /^\s*set\s\+.*$/ contains=i3ConfigVariable,i3ConfigInitializeKeyword,i3ConfigColor,i3ConfigString
" Gaps " Gaps
syn keyword i3ConfigGapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle contained syn keyword i3ConfigGapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle up down contained
syn match i3ConfigGapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(-\?\d\+\|\$.*\)\)$/ contains=i3ConfigGapStyleKeyword,number,i3ConfigVariable syn match i3ConfigGapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(-\?\d\+\|\$.*\)\)$/ contains=i3ConfigGapStyleKeyword,i3ConfigNumber,i3ConfigVariable
syn keyword i3ConfigSmartGapKeyword on inverse_outer contained syn keyword i3ConfigSmartGapKeyword on inverse_outer contained
syn match i3ConfigSmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\)\s\?$/ contains=i3ConfigSmartGapKeyword syn match i3ConfigSmartGap /^\s*smart_gaps\s\+\(on\|inverse_outer\)\s\?$/ contains=i3ConfigSmartGapKeyword
syn keyword i3ConfigSmartBorderKeyword on no_gaps contained syn keyword i3ConfigSmartBorderKeyword on no_gaps contained
@@ -64,19 +64,21 @@ syn match i3ConfigSmartBorder /^\s*smart_borders\s\+\(on\|no_gaps\)\s\?$/ contai
" Keyboard bindings " Keyboard bindings
syn keyword i3ConfigAction toggle fullscreen restart key import kill shrink grow contained syn keyword i3ConfigAction toggle fullscreen restart key import kill shrink grow contained
syn keyword i3ConfigAction focus move split layout resize restore reload mute unmute exit contained syn keyword i3ConfigAction focus move grow height width split layout resize restore reload mute unmute exit mode workspace container to contained
syn match i3ConfigModifier /\w\++\w\+\(\(+\w\+\)\+\)\?/ contained contains=i3ConfigVariableModifier syn match i3ConfigModifier /\w\++\w\+\(\(+\w\+\)\+\)\?/ contained contains=i3ConfigVariableModifier
syn match i3ConfigNumber /\s\d\+/ contained syn match i3ConfigNumber /\s\d\+/ contained
syn match i3ConfigUnit /\sp\(pt\|x\)/ contained
syn match i3ConfigUnitOr /\sor/ contained
syn keyword i3ConfigBindKeyword bindsym bindcode exec gaps contained syn keyword i3ConfigBindKeyword bindsym bindcode exec gaps contained
syn match i3ConfigBindArgument /--\w\+\(\(-\w\+\)\+\)\?\s/ contained syn match i3ConfigBindArgument /--\w\+\(\(-\w\+\)\+\)\?\s/ contained
syn match i3ConfigBind /^\s*\(bindsym\|bindcode\)\s\+.*$/ contains=i3ConfigVariable,i3ConfigBindKeyword,i3ConfigVariableAndModifier,i3ConfigBindArgument,i3ConfigNumber,i3ConfigModifier,i3ConfigAction,i3ConfigString,i3ConfigGapStyleKeyword syn match i3ConfigBind /^\s*\(bindsym\|bindcode\)\s\+.*$/ contains=i3ConfigVariable,i3ConfigBindKeyword,i3ConfigVariableAndModifier,i3ConfigNumber,i3ConfigUnit,i3ConfigUnitOr,i3ConfigBindArgument,i3ConfigModifier,i3ConfigAction,i3ConfigString,i3ConfigGapStyleKeyword
" Floating " Floating
syn keyword i3ConfigSizeSpecial x contained syn keyword i3ConfigSizeSpecial x contained
syn match i3ConfigNegativeSize /-/ contained syn match i3ConfigNegativeSize /-/ contained
syn match i3ConfigSize /-\?\d\+\s\?x\s\?-\?\d\+/ contained contains=i3ConfigSizeSpecial,i3ConfigNumber,i3ConfigNegativeSize syn match i3ConfigSize /-\?\d\+\s\?x\s\?-\?\d\+/ contained contains=i3ConfigSizeSpecial,i3ConfigNumber,i3ConfigNegativeSize
syn match i3ConfigFloating /^\s*floating_modifier\s\+\$\w\+\d\?/ contains=i3ConfigVariable syn match i3ConfigFloating /^\s*floating_modifier\s\+\$\w\+\d\?/ contains=i3ConfigVariable
syn match i3ConfigFloating /^\s*floating_\(maximum\|minimum\)_size\s\+-\?\d\+\s\?x\s\?-\?\d\+/ contains=Size syn match i3ConfigFloating /^\s*floating_\(maximum\|minimum\)_size\s\+-\?\d\+\s\?x\s\?-\?\d\+/ contains=i3ConfigSize
" Orientation " Orientation
syn keyword i3ConfigOrientationKeyword vertical horizontal auto contained syn keyword i3ConfigOrientationKeyword vertical horizontal auto contained
@@ -88,7 +90,7 @@ syn match i3ConfigLayout /^\s*workspace_layout\s\+\(default\|stacking\|tabbed\)\
" Border style " Border style
syn keyword i3ConfigBorderStyleKeyword none normal pixel contained syn keyword i3ConfigBorderStyleKeyword none normal pixel contained
syn match i3ConfigBorderStyle /^\s*\(new_window\|new_float\|default_border\|default_floating_border\)\s\+\(none\|\(normal\|pixel\)\(\s\+\d\+\)\?\)\s\?$/ contains=i3ConfigBorderStyleKeyword,number syn match i3ConfigBorderStyle /^\s*\(new_window\|new_float\|default_border\|default_floating_border\)\s\+\(none\|\(normal\|pixel\)\(\s\+\d\+\)\?\)\s\?$/ contains=i3ConfigBorderStyleKeyword,i3ConfigNumber
" Hide borders and edges " Hide borders and edges
syn keyword i3ConfigEdgeKeyword none vertical horizontal both smart smart_no_gaps contained syn keyword i3ConfigEdgeKeyword none vertical horizontal both smart smart_no_gaps contained
@@ -97,7 +99,7 @@ syn match i3ConfigEdge /^\s*hide_edge_borders\s\+\(none\|vertical\|horizontal\|b
" Arbitrary commands for specific windows (for_window) " Arbitrary commands for specific windows (for_window)
syn keyword i3ConfigCommandKeyword for_window contained syn keyword i3ConfigCommandKeyword for_window contained
syn region i3ConfigWindowStringSpecial start=+"+ skip=+\\"+ end=+"+ contained contains=i3ConfigString syn region i3ConfigWindowStringSpecial start=+"+ skip=+\\"+ end=+"+ contained contains=i3ConfigString
syn region i3ConfigWindowCommandSpecial start="\[" end="\]" contained contains=WindowStringSpacial,i3ConfigString syn region i3ConfigWindowCommandSpecial start="\[" end="\]" contained contains=i3ConfigWindowStringSpacial,i3ConfigString
syn match i3ConfigArbitraryCommand /^\s*for_window\s\+.*$/ contains=i3ConfigWindowCommandSpecial,i3ConfigCommandKeyword,i3ConfigBorderStyleKeyword,i3ConfigLayoutKeyword,i3ConfigOrientationKeyword,Size,i3ConfigNumber syn match i3ConfigArbitraryCommand /^\s*for_window\s\+.*$/ contains=i3ConfigWindowCommandSpecial,i3ConfigCommandKeyword,i3ConfigBorderStyleKeyword,i3ConfigLayoutKeyword,i3ConfigOrientationKeyword,Size,i3ConfigNumber
" Disable focus open opening " Disable focus open opening
@@ -127,6 +129,9 @@ syn match i3ConfigWorkspace /^\s*workspace\s\+.*$/ contains=i3ConfigWorkspaceKey
syn keyword i3ConfigClientColorKeyword client focused focused_inactive unfocused urgent placeholder background contained syn keyword i3ConfigClientColorKeyword client focused focused_inactive unfocused urgent placeholder background contained
syn match i3ConfigClientColor /^\s*client.\w\+\s\+.*$/ contains=i3ConfigClientColorKeyword,i3ConfigColor,i3ConfigVariable syn match i3ConfigClientColor /^\s*client.\w\+\s\+.*$/ contains=i3ConfigClientColorKeyword,i3ConfigColor,i3ConfigVariable
syn keyword i3ConfigTitleAlignKeyword left center right contained
syn match i3ConfigTitleAlign /^\s*title_align\s\+.*$/ contains=i3ConfigTitleAlignKeyword
" Interprocess communication " Interprocess communication
syn match i3ConfigInterprocessKeyword /ipc-socket/ contained syn match i3ConfigInterprocessKeyword /ipc-socket/ contained
syn match i3ConfigInterprocess /^\s*ipc-socket\s\+.*$/ contains=i3ConfigInterprocessKeyword syn match i3ConfigInterprocess /^\s*ipc-socket\s\+.*$/ contains=i3ConfigInterprocessKeyword
@@ -175,10 +180,10 @@ syn match i3ConfigDrawingMarks /^\s*show_marks\s\+\(yes\|no\)\s\?$/ contains=i3C
" Group mode/bar " Group mode/bar
syn keyword i3ConfigBlockKeyword mode bar colors i3bar_command status_command position exec mode hidden_state modifier id position output background statusline tray_output tray_padding separator separator_symbol workspace_buttons strip_workspace_numbers binding_mode_indicator focused_workspace active_workspace inactive_workspace urgent_workspace binding_mode contained syn keyword i3ConfigBlockKeyword mode bar colors i3bar_command status_command position exec mode hidden_state modifier id position output background statusline tray_output tray_padding separator separator_symbol workspace_buttons strip_workspace_numbers binding_mode_indicator focused_workspace active_workspace inactive_workspace urgent_workspace binding_mode contained
syn region i3ConfigBlock start=+.*s\?{$+ end=+^}$+ contains=i3ConfigBlockKeyword,i3ConfigString,Bind,i3ConfigComment,Font,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend syn region i3ConfigBlock start=+.*s\?{$+ end=+^}$+ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend
" Line continuation " Line continuation
syn region i3ConfigLineCont start=/^.*\\$/ end=/^.*$/ contains=i3ConfigBlockKeyword,i3ConfigString,Bind,i3ConfigComment,Font,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend syn region i3ConfigLineCont start=/^.*\\$/ end=/^.*$/ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend
" Define the highlighting. " Define the highlighting.
hi! def link i3ConfigError Error hi! def link i3ConfigError Error
@@ -191,6 +196,7 @@ hi! def link i3ConfigOrientationKeyword Type
hi! def link i3ConfigMouseWarpingType Type hi! def link i3ConfigMouseWarpingType Type
hi! def link i3ConfigFocusFollowsMouseType Type hi! def link i3ConfigFocusFollowsMouseType Type
hi! def link i3ConfigGapStyleKeyword Type hi! def link i3ConfigGapStyleKeyword Type
hi! def link i3ConfigTitleAlignKeyword Type
hi! def link i3ConfigSmartGapKeyword Type hi! def link i3ConfigSmartGapKeyword Type
hi! def link i3ConfigSmartBorderKeyword Type hi! def link i3ConfigSmartBorderKeyword Type
hi! def link i3ConfigLayoutKeyword Type hi! def link i3ConfigLayoutKeyword Type
@@ -201,9 +207,11 @@ hi! def link i3ConfigCommand Type
hi! def link i3ConfigOutput Type hi! def link i3ConfigOutput Type
hi! def link i3ConfigWindowCommandSpecial Type hi! def link i3ConfigWindowCommandSpecial Type
hi! def link i3ConfigFocusWrappingType Type hi! def link i3ConfigFocusWrappingType Type
hi! def link i3ConfigUnitOr Type
hi! def link i3ConfigFontSize Constant hi! def link i3ConfigFontSize Constant
hi! def link i3ConfigColor Constant hi! def link i3ConfigColor Constant
hi! def link i3ConfigNumber Constant hi! def link i3ConfigNumber Constant
hi! def link i3ConfigUnit Constant
hi! def link i3ConfigVariableAndModifier Constant hi! def link i3ConfigVariableAndModifier Constant
hi! def link i3ConfigTimeUnit Constant hi! def link i3ConfigTimeUnit Constant
hi! def link i3ConfigModifier Constant hi! def link i3ConfigModifier Constant
@@ -221,6 +229,7 @@ hi! def link i3ConfigFontKeyword Identifier
hi! def link i3ConfigBindKeyword Identifier hi! def link i3ConfigBindKeyword Identifier
hi! def link i3ConfigOrientation Identifier hi! def link i3ConfigOrientation Identifier
hi! def link i3ConfigGapStyle Identifier hi! def link i3ConfigGapStyle Identifier
hi! def link i3ConfigTitleAlign Identifier
hi! def link i3ConfigSmartGap Identifier hi! def link i3ConfigSmartGap Identifier
hi! def link i3ConfigSmartBorder Identifier hi! def link i3ConfigSmartBorder Identifier
hi! def link i3ConfigLayout Identifier hi! def link i3ConfigLayout Identifier

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'log') == -1
" Vim syntax file " Vim syntax file
" Language: Generic log file " Language: Generic log file
" Maintainer: MTDL9 <https://github.com/MTDL9> " Maintainer: MTDL9 <https://github.com/MTDL9>
" Latest Revision: 2019-04-16 " Latest Revision: 2019-11-24
if exists('b:current_syntax') if exists('b:current_syntax')
finish finish
@@ -52,8 +52,8 @@ syn match logDate '\(\(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\) \)\?\(Jan\|Feb\|Mar\|
syn match logTime '\d\{2}:\d\{2}:\d\{2}\(\.\d\{2,6}\)\?\(\s\?[-+]\d\{2,4}\|Z\)\?\>' nextgroup=logTimeZone,logSysColumns skipwhite syn match logTime '\d\{2}:\d\{2}:\d\{2}\(\.\d\{2,6}\)\?\(\s\?[-+]\d\{2,4}\|Z\)\?\>' nextgroup=logTimeZone,logSysColumns skipwhite
" Follows logTime, matches UTC or PDT 2019 or 2019 EDT " Follows logTime, matches UTC or PDT 2019 or 2019 EDT
syn match logTimeZone '\(UTC\|PDT\|EDT\|GMT\|EST\|KST\)\( \d\{4}\)\?' contained syn match logTimeZone '[A-Z]\{2,5}\>\( \d\{4}\)\?' contained
syn match logTimeZone '\d\{4} \(UTC\|PDT\|EDT\|GMT\|EST\|KST\)' contained syn match logTimeZone '\d\{4} [A-Z]\{2,5}\>' contained
" Entities " Entities
@@ -66,7 +66,7 @@ syn match logIPV4 '\<\d\{1,3}\(\.\d\{1,3}\)\{3}\>'
syn match logIPV6 '\<\x\{1,4}\(:\x\{1,4}\)\{7}\>' syn match logIPV6 '\<\x\{1,4}\(:\x\{1,4}\)\{7}\>'
syn match logMacAddress '\<\x\{2}\(:\x\{2}\)\{5}' syn match logMacAddress '\<\x\{2}\(:\x\{2}\)\{5}'
syn match logFilePath '\<\w:\\[^\n|,; ()'"\]{}]\+' syn match logFilePath '\<\w:\\[^\n|,; ()'"\]{}]\+'
syn match logFilePath '\/\w[^\n|,; ()'"\]{}]\+' syn match logFilePath '[^a-zA-Z0-9"']\@<=\/\w[^\n|,; ()'"\]{}]\+'
" Syslog Columns " Syslog Columns

View File

@@ -119,6 +119,7 @@ syn keyword mesonBuiltin
\ subdir \ subdir
\ subdir_done \ subdir_done
\ subproject \ subproject
\ summary
\ target_machine \ target_machine
\ test \ test
\ vcs_tag \ vcs_tag

54
syntax/ocpbuild.vim Normal file
View File

@@ -0,0 +1,54 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ocaml') == -1
" Vim syntax file
" Language: ocp-build files
" Maintainer: Florent Monnier
" Latest Revision: 14 September 2013
if exists("b:current_syntax")
finish
endif
syn keyword ocpKeywords begin end pack
syn keyword ocpKeywords if then else
syn keyword ocpBlockKind library syntax objects program test
syn keyword ocpFields files generated dirname archive
syn keyword ocpFields requires bundle
syn keyword ocpFields tests test_dir test_args test_benchmark
syn keyword ocpFields bytecomp bytelink link
syn keyword ocpFields has_asm nopervasives sort
syn keyword ocpFields comp ccopt byte has_byte
syn keyword ocpFields version authors license copyright
syn keyword ocpFields lib_files install installed
syn keyword ocpPreProc test_exit ocp2ml env_strings
syn keyword ocpPreProc ocaml_major_version
syn keyword ocpPreProc system
" Strings
syn region ocpString start=+"+ end=+"+
" Comments
syn keyword ocpTodo TODO XXX FIXME BUG contained
syn region ocpComment start="(\*" end="\*)" contains=ocpTodo
" Usual Values
syn keyword ocpNumber None
syn keyword ocpNumber true
syn keyword ocpNumber false
hi def link ocpTodo Todo
hi def link ocpComment Comment
hi def link ocpString String
hi def link ocpBlockKind Identifier
hi def link ocpNumber Number
hi def link ocpFields Structure
hi def link ocpKeywords Keyword
hi def link ocpPreProc PreProc
let b:current_syntax = "ocpbuild"
endif

57
syntax/ocpbuildroot.vim Normal file
View File

@@ -0,0 +1,57 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ocaml') == -1
" Vim syntax file
" Language: ocp-build.root files
" Maintainer: Florent Monnier
" Latest Revision: 14 September 2013
if exists("b:current_syntax")
finish
endif
" Keywords
syn keyword ocprKeywords digest
syn keyword ocprKeywords verbosity
syn keyword ocprKeywords njobs
syn keyword ocprKeywords autoscan
syn keyword ocprKeywords bytecode
syn keyword ocprKeywords native
syn keyword ocprKeywords meta_dirnames
syn keyword ocprKeywords install_destdir
syn keyword ocprKeywords install_bin
syn keyword ocprKeywords install_lib
syn keyword ocprKeywords install_data
syn keyword ocprKeywords install_doc
syn keyword ocprKeywords ocamllib
syn keyword ocprKeywords use_ocamlfind
syn keyword ocprKeywords ocpbuild_version
syn keyword ocprKeywords project_external_dirs
syn keyword ocprKeywords files
syn keyword ocprKeywords install_docdir
syn keyword ocprKeywords install_datadir
syn keyword ocprKeywords install_libdir
syn keyword ocprKeywords install_bindir
syn keyword ocprKeywords install_metadir
syn keyword ocprNumber None
syn keyword ocprNumber true
syn keyword ocprNumber false
" Strings
syn match ocprString "\".\{-}\""
" Comments
syn keyword ocprTodo TODO XXX FIXME BUG contained
syn region ocprComment start="(\*" end="\*)" contains=ocprTodo
hi def link ocprKeywords Keyword
hi def link ocprTodo Todo
hi def link ocprComment Comment
hi def link ocprString String
hi def link ocprNumber Number
let b:current_syntax = "ocpbuildroot"
endif

View File

@@ -175,7 +175,7 @@ if version >= 508 || !exists("did_ps1_syn_inits")
HiLink ps1Comment Comment HiLink ps1Comment Comment
HiLink ps1CommentTodo Todo HiLink ps1CommentTodo Todo
HiLink ps1CommentDoc Tag HiLink ps1CommentDoc Tag
HiLink ps1CDocParam Todo HiLink ps1CDocParam Identifier
HiLink ps1Operator Operator HiLink ps1Operator Operator
HiLink ps1Repeat Repeat HiLink ps1Repeat Repeat
HiLink ps1RepeatAndCmdlet Repeat HiLink ps1RepeatAndCmdlet Repeat

View File

@@ -1,5 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'qml') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'qml') == -1
" Vim syntax file " Vim syntax file
" Language: QML " Language: QML
" Maintainer: Peter Hoeg <peter@hoeg.com> " Maintainer: Peter Hoeg <peter@hoeg.com>
@@ -29,7 +30,7 @@ endif
syn case ignore syn case ignore
syn cluster qmlExpr contains=qmlStringD,qmlString,SqmlCharacter,qmlNumber,qmlObjectLiteralType,qmlBoolean,qmlType,qmlJsType,qmlNull,qmlGlobal,qmlFunction syn cluster qmlExpr contains=qmlStringD,qmlStringS,qmlStringT,SqmlCharacter,qmlNumber,qmlObjectLiteralType,qmlBoolean,qmlType,qmlJsType,qmlNull,qmlGlobal,qmlFunction,qmlArrowFunction
syn keyword qmlCommentTodo TODO FIXME XXX TBD contained syn keyword qmlCommentTodo TODO FIXME XXX TBD contained
syn match qmlLineComment "\/\/.*" contains=@Spell,qmlCommentTodo syn match qmlLineComment "\/\/.*" contains=@Spell,qmlCommentTodo
syn match qmlCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" syn match qmlCommentSkip "^[ \t]*\*\($\|[ \t]\+\)"
@@ -37,6 +38,9 @@ syn region qmlComment start="/\*" end="\*/" contains=@Spell,qmlComme
syn match qmlSpecial "\\\d\d\d\|\\." syn match qmlSpecial "\\\d\d\d\|\\."
syn region qmlStringD start=+"+ skip=+\\\\\|\\"\|\\$+ end=+"+ keepend contains=qmlSpecial,@htmlPreproc,@Spell syn region qmlStringD start=+"+ skip=+\\\\\|\\"\|\\$+ end=+"+ keepend contains=qmlSpecial,@htmlPreproc,@Spell
syn region qmlStringS start=+'+ skip=+\\\\\|\\'\|\\$+ end=+'+ keepend contains=qmlSpecial,@htmlPreproc,@Spell syn region qmlStringS start=+'+ skip=+\\\\\|\\'\|\\$+ end=+'+ keepend contains=qmlSpecial,@htmlPreproc,@Spell
syn region qmlStringT start=+`+ skip=+\\\\\|\\`\|\\$+ end=+`+ keepend contains=qmlTemplateExpr,qmlSpecial,@htmlPreproc,@Spell
syntax region qmlTemplateExpr contained matchgroup=qmlBraces start=+${+ end=+}+ keepend contains=@qmlExpr
syn match qmlCharacter "'\\.'" syn match qmlCharacter "'\\.'"
syn match qmlNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" syn match qmlNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
@@ -54,7 +58,7 @@ syn keyword qmlType action alias bool color date double enumeration
syn keyword qmlStatement return with syn keyword qmlStatement return with
syn keyword qmlBoolean true false syn keyword qmlBoolean true false
syn keyword qmlNull null undefined syn keyword qmlNull null undefined
syn keyword qmlIdentifier arguments this var syn keyword qmlIdentifier arguments this var let
syn keyword qmlLabel case default syn keyword qmlLabel case default
syn keyword qmlException try catch finally throw syn keyword qmlException try catch finally throw
syn keyword qmlMessage alert confirm prompt status syn keyword qmlMessage alert confirm prompt status
@@ -72,9 +76,10 @@ if get(g:, 'qml_fold', 0)
setlocal foldmethod=syntax setlocal foldmethod=syntax
setlocal foldtext=getline(v:foldstart) setlocal foldtext=getline(v:foldstart)
else else
syn keyword qmlFunction function syn keyword qmlFunction function
syn match qmlBraces "[{}\[\]]" syn match qmlArrowFunction "=>"
syn match qmlParens "[()]" syn match qmlBraces "[{}\[\]]"
syn match qmlParens "[()]"
endif endif
syn sync fromstart syn sync fromstart
@@ -100,6 +105,7 @@ if version >= 508 || !exists("did_qml_syn_inits")
HiLink qmlSpecial Special HiLink qmlSpecial Special
HiLink qmlStringS String HiLink qmlStringS String
HiLink qmlStringD String HiLink qmlStringD String
HiLink qmlStringT String
HiLink qmlCharacter Character HiLink qmlCharacter Character
HiLink qmlNumber Number HiLink qmlNumber Number
HiLink qmlConditional Conditional HiLink qmlConditional Conditional
@@ -111,6 +117,7 @@ if version >= 508 || !exists("did_qml_syn_inits")
HiLink qmlObjectLiteralType Type HiLink qmlObjectLiteralType Type
HiLink qmlStatement Statement HiLink qmlStatement Statement
HiLink qmlFunction Function HiLink qmlFunction Function
HiLink qmlArrowFunction Function
HiLink qmlBraces Function HiLink qmlBraces Function
HiLink qmlError Error HiLink qmlError Error
HiLink qmlNull Keyword HiLink qmlNull Keyword

View File

@@ -175,7 +175,7 @@ syn match rstStandaloneHyperlink contains=@NoSpell
\ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]" \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]"
syn region rstCodeBlock contained matchgroup=rstDirective syn region rstCodeBlock contained matchgroup=rstDirective
\ start=+\%(sourcecode\|code\%(-block\)\=\)::\s*\n\%(\s*:.*:\s*.*\s*\n\)*\n\ze\z(\s\+\)+ \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s*\(\S*\)\?\s*\n\%(\s*:.*:\s*.*\s*\n\)*\n\ze\z(\s\+\)+
\ skip=+^$+ \ skip=+^$+
\ end=+^\z1\@!+ \ end=+^\z1\@!+
\ contains=@NoSpell \ contains=@NoSpell

View File

@@ -55,6 +55,7 @@ syn keyword rustKeyword mod trait nextgroup=rustIdentifier skipwhite skipe
syn keyword rustStorage move mut ref static const syn keyword rustStorage move mut ref static const
syn match rustDefault /\<default\ze\_s\+\(impl\|fn\|type\|const\)\>/ syn match rustDefault /\<default\ze\_s\+\(impl\|fn\|type\|const\)\>/
syn keyword rustAwait await syn keyword rustAwait await
syn match rustKeyword /\<try\>!\@!/ display
syn keyword rustPubScopeCrate crate contained syn keyword rustPubScopeCrate crate contained
syn match rustPubScopeDelim /[()]/ contained syn match rustPubScopeDelim /[()]/ contained

View File

@@ -187,6 +187,7 @@ syntax region swiftEscapedReservedWord start="`" end="`" oneline
syntax keyword swiftAttributes syntax keyword swiftAttributes
\ @_exported \ @_exported
\ @_functionBuilder \ @_functionBuilder
\ @_implementationOnly
\ @_silgen_name \ @_silgen_name
\ @assignment \ @assignment
\ @autoclosure \ @autoclosure

View File

@@ -7,6 +7,9 @@ if exists('b:current_syntax')
finish finish
endif endif
let s:cpo_save = &cpo
set cpo&vim
" Identifiers are made up of alphanumeric characters, underscores, and " Identifiers are made up of alphanumeric characters, underscores, and
" hyphens. " hyphens.
if has('patch-7.4.1142') if has('patch-7.4.1142')
@@ -4830,10 +4833,9 @@ syn keyword terraSection connection output variable terraform locals
syn keyword terraValueBool true false on off yes no syn keyword terraValueBool true false on off yes no
syn keyword terraTodo contained TODO FIXME XXX BUG syn keyword terraTodo contained TODO FIXME XXX BUG
syn cluster terraCommentGroup contains=terraTodo syn region terraComment start="/\*" end="\*/" contains=terraTodo,@Spell
syn region terraComment start="/\*" end="\*/" contains=@terraCommentGroup,@Spell syn region terraComment start="#" end="$" contains=terraTodo,@Spell
syn region terraComment start="#" end="$" contains=@terraCommentGroup,@Spell syn region terraComment start="//" end="$" contains=terraTodo,@Spell
syn region terraComment start="//" end="$" contains=@terraCommentGroup,@Spell
syn keyword terraResource resource nextgroup=terraResourceTypeStr skipwhite syn keyword terraResource resource nextgroup=terraResourceTypeStr skipwhite
syn region terraResourceTypeStr start=/"/ end=/"/ contains=terraResourceTypeBI nextgroup=terraResourceName skipwhite syn region terraResourceTypeStr start=/"/ end=/"/ contains=terraResourceTypeBI nextgroup=terraResourceName skipwhite
@@ -4864,16 +4866,13 @@ syn match terraValueDec "\<[0-9]\+\([kKmMgG]b\?\)\?\>"
syn match terraValueHexaDec "\<0x[0-9a-f]\+\([kKmMgG]b\?\)\?\>" syn match terraValueHexaDec "\<0x[0-9a-f]\+\([kKmMgG]b\?\)\?\>"
syn match terraBraces "[\[\]]" syn match terraBraces "[\[\]]"
""" skip \" in strings. """ skip \" and \\ in strings.
""" we may also want to pass \\" into a function to escape quotes. syn region terraValueString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=terraStringInterp
syn region terraValueString start=/"/ skip=/\\\+"/ end=/"/ contains=terraStringInterp syn region terraStringInterp matchgroup=terraBraces start=/\${/ end=/}/ contained contains=ALL
syn region terraStringInterp matchgroup=terraBrackets start=/\${/ end=/}/ contains=terraValueFunction,terraValueVarSubscript,terraStringInterp contained
syn region terraHereDocText start=/<<-\?\z([a-z0-9A-Z]\+\)/ end=/^\s*\z1/ contains=terraStringInterp syn region terraHereDocText start=/<<-\?\z([a-z0-9A-Z]\+\)/ end=/^\s*\z1/ contains=terraStringInterp
"" TODO match keywords here, not a-z+ "" TODO match keywords here, not a-z+
syn region terraValueFunction matchgroup=terraBrackets start=/[a-z]\+(/ end=/)/ contains=terraValueString,terraValueFunction,terraValueVarSubscript contained syn match terraValueFunction "[a-z]\+(\@="
" User variables or module outputs can be lists or maps, and accessed with
" var.map["foo"]
syn region terraValueVarSubscript start=/\(\<var\|\<module\)\.[a-z0-9_-]\+\[/ end=/\]/ contains=terraValueString,terraValueFunction,terraValueVarSubscript contained
""" HCL2 """ HCL2
syn keyword terraContent content syn keyword terraContent content
@@ -4892,7 +4891,6 @@ syn region terraBlock matchgroup=terraBraces start="{" end="}" fold transparent
hi def link terraComment Comment hi def link terraComment Comment
hi def link terraTodo Todo hi def link terraTodo Todo
hi def link terraBrackets Operator
hi def link terraProvider Structure hi def link terraProvider Structure
hi def link terraBraces Delimiter hi def link terraBraces Delimiter
hi def link terraProviderName String hi def link terraProviderName String
@@ -4905,7 +4903,6 @@ hi def link terraDataName String
hi def link terraDataTypeBI Tag hi def link terraDataTypeBI Tag
hi def link terraDataTypeStr String hi def link terraDataTypeStr String
hi def link terraSection Structure hi def link terraSection Structure
hi def link terraStringInterp Identifier
hi def link terraValueBool Boolean hi def link terraValueBool Boolean
hi def link terraValueDec Number hi def link terraValueDec Number
hi def link terraValueHexaDec Number hi def link terraValueHexaDec Number
@@ -4915,8 +4912,7 @@ hi def link terraProvisioner Structure
hi def link terraProvisionerName String hi def link terraProvisionerName String
hi def link terraModule Structure hi def link terraModule Structure
hi def link terraModuleName String hi def link terraModuleName String
hi def link terraValueFunction Identifier hi def link terraValueFunction Function
hi def link terraValueVarSubscript Identifier
hi def link terraDynamic Structure hi def link terraDynamic Structure
hi def link terraDynamicName String hi def link terraDynamicName String
hi def link terraContent Structure hi def link terraContent Structure
@@ -4929,4 +4925,7 @@ hi def link terraValueNull Constant
let b:current_syntax = 'terraform' let b:current_syntax = 'terraform'
let &cpo = s:cpo_save
unlet s:cpo_save
endif endif

268
syntax/vlang.vim Normal file
View File

@@ -0,0 +1,268 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'v') == -1
" Vim syntax file
" Language: V
" Maintainer: Oliver Kelton (https://github.com/ollykel)
" Last Change: 2019 Jun 13
" NOTE: largely based on go.vim, maintained by David Barnett
" see David Barnett (https://github.com/google/vim-ft-go)
" Options:
" There are some options for customizing the highlighting; the recommended
" settings are the default values, but you can write:
" let OPTION_NAME = 0
" in your ~/.vimrc file to disable particular options. You can also write:
" let OPTION_NAME = 1
" to enable particular options. At present, all options default to on.
"
" - g:v_highlight_array_whitespace_error
" Highlights white space after "[]".
" - g:v_highlight_chan_whitespace_error
" Highlights white space around the communications operator that don't
" follow the standard style.
" Highlights commonly used library types (io.Reader, etc.).
" - g:v_highlight_space_tab_error
" Highlights instances of tabs following spaces.
" - g:v_highlight_trailing_whitespace_error
" Highlights trailing white space.
" Quit when a (custom) syntax file was already loaded
if exists('b:current_syntax')
finish
endif
if !exists('g:v_highlight_array_whitespace_error')
let g:v_highlight_array_whitespace_error = 1
endif
if !exists('g:v_highlight_chan_whitespace_error')
let g:v_highlight_chan_whitespace_error = 1
endif
if !exists('g:v_highlight_space_tab_error')
let g:v_highlight_space_tab_error = 1
endif
if !exists('g:v_highlight_trailing_whitespace_error')
let g:v_highlight_trailing_whitespace_error = 1
endif
if !exists('g:v_highlight_function_calls')
let g:v_highlight_function_calls = 1
endif
if !exists('g:v_highlight_fields')
let g:v_highlight_fields = 1
endif
syn case match
syn match vDeclType "\<\(struct\|interface\)\>"
syn keyword vDirective module import
syn keyword vDeclaration pub mut const type enum
syn region vIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
syn match vIncluded display contained "<[^>]*>"
syn match vFlagDefinition display contained "\s\i[^\n]*"
syn match vInclude display "^\s*\zs\(%:\|#\)\s*include\>\s*["<]" contains=vIncluded
syn match vFlag display "^\s*\zs\(%:\|#\)\s*flag\>\s*[^\n]*" contains=vFlagDefinition
syn region vShebang display start=/^#!/ end=/$/
hi def link vDirective Statement
hi def link vDeclaration Keyword
hi def link vDeclType Keyword
hi def link vInclude Include
hi def link vFlag Include
hi def link vIncluded vString
hi def link vFlagDefinition vString
hi def link vShebang Include
" Keywords within functions
syn keyword vStatement defer go goto return break continue fallthrough
syn keyword vConditional if else switch match or
syn keyword vLabel case default
syn keyword vRepeat for in
syn match vCodeGen /$if\>/
syn match vCodeGen /\.fields\>/
syn match vCodeGen /\.$\i*\>/
hi def link vStatement Statement
hi def link vConditional Conditional
hi def link vLabel Label
hi def link vRepeat Repeat
hi def link vCodeGen Identifier
" Predefined types
syn keyword vType chan map bool string error voidptr
syn keyword vSignedInts int i8 i16 i32 i64 rune intptr
syn keyword vUnsignedInts byte uint u8 u16 u32 u64 byteptr
syn keyword vFloats f32 f64 floatptr
syn keyword vComplexes complex64 complex128
hi def link vType Type
hi def link vSignedInts Type
hi def link vUnsignedInts Type
hi def link vFloats Type
hi def link vComplexes Type
" Treat fn specially: it's a declaration at the start of a line, but a type
" elsewhere. Order matters here.
" syn match vType /\<fn\>/
syn match vDeclaration /\<fn\>/
syn match vDeclaration contained /\<fn\>/
" Predefined functions and values
syn keyword vBuiltins assert C cap complex copy delete exit imag
syn keyword vBuiltins print println eprint eprintln print_backtrace
syn keyword vBuiltins float_calloc ok memdup range_int real recover
syn keyword vBuiltins malloc byte_calloc float_calloc
syn keyword vBuiltins isok isnil panic on_panic
syn keyword vConstants iota true false
syn match vBuiltins /\<json\.\(encode\|decode\)\>/
hi def link vBuiltins Keyword
hi def link vConstants Keyword
" Comments; their contents
syn keyword vTodo contained TODO FIXME XXX BUG
syn cluster vCommentGroup contains=vTodo
syn region vComment start="/\*" end="\*/" contains=@vCommentGroup,@Spell
syn region vComment start="//" end="$" contains=@vCommentGroup,@Spell
hi def link vComment Comment
hi def link vTodo Todo
" Go escapes
syn match vEscapeOctal display contained "\\[0-7]\{3}"
syn match vEscapeVar display contained "\$[0-9A-Za-z\.]*"
syn match vEscapeVar display contained "\${[^}]*}"
syn match vEscapeC display contained +\\[abfnrtv\\'"]+
syn match vEscapeX display contained "\\x\x\{2}"
syn match vEscapeU display contained "\\u\x\{4}"
syn match vEscapeBigU display contained "\\U\x\{8}"
syn match vEscapeError display contained +\\[^0-7xuUabfnrtv\\'"]+
hi def link vEscapeOctal vSpecialString
hi def link vEscapeVar vSpecialString
hi def link vEscapeC vSpecialString
hi def link vEscapeX vSpecialString
hi def link vEscapeU vSpecialString
hi def link vEscapeBigU vSpecialString
hi def link vSpecialString Special
hi def link vEscapeError Error
" Strings and their contents
syn cluster vStringGroup contains=vEscapeOctal,vEscapeVar,vEscapeC,vEscapeX,vEscapeU,vEscapeBigU,vEscapeError
syn region vString start=+"+ skip=+\\\\\|\\'+ end=+"+ contains=@vStringGroup
syn region vRawString start=+`+ end=+`+
hi def link vString String
hi def link vRawString String
" Characters; their contents
syn cluster vCharacterGroup contains=vEscapeOctal,vEscapeC,vEscapeVar,vEscapeX,vEscapeU,vEscapeBigU
syn region vCharacter start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@vCharacterGroup
hi def link vCharacter Character
" Regions
syn region vBlock start="{" end="}" transparent fold
syn region vParen start='(' end=')' transparent
" Integers
syn match vDecimalInt "\<\d\+\([Ee]\d\+\)\?\>"
syn match vHexadecimalInt "\<0x\x\+\>"
syn match vOctalInt "\<0\o\+\>"
syn match vOctalError "\<0\o*[89]\d*\>"
hi def link vDecimalInt Integer
hi def link vHexadecimalInt Integer
hi def link vOctalInt Integer
hi def link Integer Number
" Floating point
syn match vFloat "\<\d\+\.\d*\([Ee][-+]\d\+\)\?\>"
syn match vFloat "\<\.\d\+\([Ee][-+]\d\+\)\?\>"
syn match vFloat "\<\d\+[Ee][-+]\d\+\>"
hi def link vFloat Float
" Imaginary literals
syn match vImaginary "\<\d\+i\>"
syn match vImaginary "\<\d\+\.\d*\([Ee][-+]\d\+\)\?i\>"
syn match vImaginary "\<\.\d\+\([Ee][-+]\d\+\)\?i\>"
syn match vImaginary "\<\d\+[Ee][-+]\d\+i\>"
hi def link vImaginary Number
" Generics
syn match vGenericBrackets display contained "[<>]"
syn match vInterfaceDeclaration display "\s*\zsinterface\s*\i*\s*<[^>]*>" contains=vDeclType,vGenericBrackets
syn match vStructDeclaration display "\s*\zsstruct\s*\i*\s*<[^>]*>" contains=vDeclType,vGenericBrackets
" vFunctionName only appears when v_highlight_function_calls set
syn match vFuncDeclaration display "\s*\zsfn\s*\i*\s*<[^>]*>" contains=vFunctionName,vDeclaration,vGenericBrackets
hi def link vGenericBrackets Identifier
" Spaces after "[]"
if v_highlight_array_whitespace_error != 0
syn match vSpaceError display "\(\[\]\)\@<=\s\+"
endif
" Spacing errors around the 'chan' keyword
if v_highlight_chan_whitespace_error != 0
" receive-only annotation on chan type
syn match vSpaceError display "\(<-\)\@<=\s\+\(chan\>\)\@="
" send-only annotation on chan type
syn match vSpaceError display "\(\<chan\)\@<=\s\+\(<-\)\@="
" value-ignoring receives in a few contexts
syn match vSpaceError display "\(\(^\|[={(,;]\)\s*<-\)\@<=\s\+"
endif
" Space-tab error
if v_highlight_space_tab_error != 0
syn match vSpaceError display " \+\t"me=e-1
endif
" Trailing white space error
if v_highlight_trailing_whitespace_error != 0
syn match vSpaceError display excludenl "\s\+$"
endif
hi def link vSpaceError Error
" Function calls and Fields are from: https://github.com/fatih/vim-go/blob/master/syntax/go.vim
" Function calls;
if v_highlight_function_calls
syn match vFunctionCall /\w\+\ze\s*(/ contains=vBuiltins,vDeclaration
syn match vFunctionName display contained /\s\w\+/
hi def link vFunctionName Special
endif
hi def link vFunctionCall Special
" Fields;
if v_highlight_fields
" 1. Match a sequence of word characters coming after a '.'
" 2. Require the following but dont match it: ( \@= see :h E59)
" - The symbols: / - + * % OR
" - The symbols: [] {} <> ) OR
" - The symbols: \n \r space OR
" - The symbols: , : .
" 3. Have the start of highlight (hs) be the start of matched
" pattern (s) offsetted one to the right (+1) (see :h E401)
syn match vField /\.\w\+\
\%(\%([\/\-\+*%]\)\|\
\%([\[\]{}<\>\)]\)\|\
\%([\!=\^|&]\)\|\
\%([\n\r\ ]\)\|\
\%([,\:.]\)\)\@=/hs=s+1
endif
hi def link vField Identifier
" Search backwards for a global declaration to start processing the syntax.
"syn sync match vSync grouphere NONE /^\(const\|var\|type\|func\)\>/
" There's a bug in the implementation of grouphere. For now, use the
" following as a more expensive/less precise workaround.
syn sync minlines=500
let b:current_syntax = 'vlang'
" vim: sw=2 sts=2 et
endif

View File

@@ -33,17 +33,17 @@ syn match zigBuiltinFn "\v\@(addWithOverflow|ArgType|atomicLoad|bitCast|breakpoi
syn match zigBuiltinFn "\v\@(alignCast|alignOf|cDefine|cImport|cInclude)>" syn match zigBuiltinFn "\v\@(alignCast|alignOf|cDefine|cImport|cInclude)>"
syn match zigBuiltinFn "\v\@(cUndef|canImplicitCast|clz|cmpxchgWeak|cmpxchgStrong|compileError)>" syn match zigBuiltinFn "\v\@(cUndef|canImplicitCast|clz|cmpxchgWeak|cmpxchgStrong|compileError)>"
syn match zigBuiltinFn "\v\@(compileLog|ctz|popCount|divExact|divFloor|divTrunc)>" syn match zigBuiltinFn "\v\@(compileLog|ctz|popCount|divExact|divFloor|divTrunc)>"
syn match zigBuiltinFn "\v\@(embedFile|export|tagName|TagType|errorName)>" syn match zigBuiltinFn "\v\@(embedFile|export|tagName|TagType|errorName|call)>"
syn match zigBuiltinFn "\v\@(errorReturnTrace|fence|fieldParentPtr|field|unionInit)>" syn match zigBuiltinFn "\v\@(errorReturnTrace|fence|fieldParentPtr|field|unionInit)>"
syn match zigBuiltinFn "\v\@(frameAddress|import|inlineCall|newStackCall|asyncCall|intToPtr|IntType)>" syn match zigBuiltinFn "\v\@(frameAddress|import|newStackCall|asyncCall|intToPtr|IntType)>"
syn match zigBuiltinFn "\v\@(maxValue|memberCount|memberName|memberType|as)>" syn match zigBuiltinFn "\v\@(maxValue|memberCount|memberName|memberType|as)>"
syn match zigBuiltinFn "\v\@(memcpy|memset|minValue|mod|mulWithOverflow|splat)>" syn match zigBuiltinFn "\v\@(memcpy|memset|minValue|mod|mulWithOverflow|splat)>"
syn match zigBuiltinFn "\v\@(noInlineCall|bitOffsetOf|byteOffsetOf|OpaqueType|panic|ptrCast)>" syn match zigBuiltinFn "\v\@(bitOffsetOf|byteOffsetOf|OpaqueType|panic|ptrCast)>"
syn match zigBuiltinFn "\v\@(ptrToInt|rem|returnAddress|setCold|Type|shuffle)>" syn match zigBuiltinFn "\v\@(ptrToInt|rem|returnAddress|setCold|Type|shuffle)>"
syn match zigBuiltinFn "\v\@(setRuntimeSafety|setEvalBranchQuota|setFloatMode)>" syn match zigBuiltinFn "\v\@(setRuntimeSafety|setEvalBranchQuota|setFloatMode)>"
syn match zigBuiltinFn "\v\@(setGlobalLinkage|setGlobalSection|shlExact|This|hasDecl|hasField)>" syn match zigBuiltinFn "\v\@(setGlobalLinkage|setGlobalSection|shlExact|This|hasDecl|hasField)>"
syn match zigBuiltinFn "\v\@(shlWithOverflow|shrExact|sizeOf|sqrt|byteSwap|subWithOverflow|intCast|floatCast|intToFloat|floatToInt|boolToInt|errSetCast)>" syn match zigBuiltinFn "\v\@(shlWithOverflow|shrExact|sizeOf|sqrt|byteSwap|subWithOverflow|intCast|floatCast|intToFloat|floatToInt|boolToInt|errSetCast)>"
syn match zigBuiltinFn "\v\@(truncate|typeId|typeInfo|typeName|typeOf|atomicRmw|bytesToSlice|sliceToBytes)>" syn match zigBuiltinFn "\v\@(truncate|typeId|typeInfo|typeName|TypeOf|atomicRmw|bytesToSlice|sliceToBytes)>"
syn match zigBuiltinFn "\v\@(intToError|errorToInt|intToEnum|enumToInt|setAlignStack|frame|Frame|frameSize|bitReverse|Vector)>" syn match zigBuiltinFn "\v\@(intToError|errorToInt|intToEnum|enumToInt|setAlignStack|frame|Frame|frameSize|bitReverse|Vector)>"
syn match zigBuiltinFn "\v\@(sin|cos|exp|exp2|ln|log2|log10|fabs|floor|ceil|trunc|round)>" syn match zigBuiltinFn "\v\@(sin|cos|exp|exp2|ln|log2|log10|fabs|floor|ceil|trunc|round)>"