Compare commits

...

5 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
36 changed files with 594 additions and 395 deletions

View File

@@ -1,205 +0,0 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
" vim: ts=4 sw=4:
" folding for Markdown headers, both styles (atx- and setex-)
" http://daringfireball.net/projects/markdown/syntax#header
"
" this code can be placed in file
" $HOME/.vim/after/ftplugin/markdown.vim
"
" original version from Steve Losh's gist: https://gist.github.com/1038710
function! s:is_mkdCode(lnum)
let name = synIDattr(synID(a:lnum, 1, 0), 'name')
return (name =~ '^mkd\%(Code$\|Snippet\)' || name != '' && name !~ '^\%(mkd\|html\)')
endfunction
if get(g:, "vim_markdown_folding_style_pythonic", 0)
function! Foldexpr_markdown(lnum)
let l1 = getline(a:lnum)
"~~~~~ keep track of fenced code blocks ~~~~~
"If we hit a code block fence
if l1 =~ '````*' || l1 =~ '\~\~\~\~*'
" toggle the variable that says if we're in a code block
if b:fenced_block == 0
let b:fenced_block = 1
elseif b:fenced_block == 1
let b:fenced_block = 0
endif
" else, if we're caring about front matter
elseif g:vim_markdown_frontmatter == 1
" if we're in front matter and not on line 1
if b:front_matter == 1 && a:lnum > 2
let l0 = getline(a:lnum-1)
" if the previous line fenced front matter
if l0 == '---'
" we must not be in front matter
let b:front_matter = 0
endif
" else, if we're on line one
elseif a:lnum == 1
" if we hit a front matter fence
if l1 == '---'
" we're in the front matter
let b:front_matter = 1
endif
endif
endif
" if we're in a code block or front matter
if b:fenced_block == 1 || b:front_matter == 1
if a:lnum == 1
" fold any 'preamble'
return '>1'
else
" keep previous foldlevel
return '='
endif
endif
let l2 = getline(a:lnum+1)
" if the next line starts with two or more '='
" and is not code
if l2 =~ '^==\+\s*' && !s:is_mkdCode(a:lnum+1)
" next line is underlined (level 1)
return '>0'
" else, if the nex line starts with two or more '-'
" and is not code
elseif l2 =~ '^--\+\s*' && !s:is_mkdCode(a:lnum+1)
" next line is underlined (level 2)
return '>1'
endif
"if we're on a non-code line starting with a pound sign
if l1 =~ '^#' && !s:is_mkdCode(a:lnum)
" set the fold level to the number of hashes -1
" return '>'.(matchend(l1, '^#\+') - 1)
" set the fold level to the number of hashes
return '>'.(matchend(l1, '^#\+'))
" else, if we're on line 1
elseif a:lnum == 1
" fold any 'preamble'
return '>1'
else
" keep previous foldlevel
return '='
endif
endfunction
function! Foldtext_markdown()
let line = getline(v:foldstart)
let has_numbers = &number || &relativenumber
let nucolwidth = &fdc + has_numbers * &numberwidth
let windowwidth = winwidth(0) - nucolwidth - 6
let foldedlinecount = v:foldend - v:foldstart
let line = strpart(line, 0, windowwidth - 2 -len(foldedlinecount))
let line = substitute(line, '\%("""\|''''''\)', '', '')
let fillcharcount = windowwidth - len(line) - len(foldedlinecount) + 1
return line . ' ' . repeat("-", fillcharcount) . ' ' . foldedlinecount
endfunction
else " vim_markdown_folding_style_pythonic == 0
function! Foldexpr_markdown(lnum)
if (a:lnum == 1)
let l0 = ''
else
let l0 = getline(a:lnum-1)
endif
" keep track of fenced code blocks
if l0 =~ '````*' || l0 =~ '\~\~\~\~*'
if b:fenced_block == 0
let b:fenced_block = 1
elseif b:fenced_block == 1
let b:fenced_block = 0
endif
elseif g:vim_markdown_frontmatter == 1
if b:front_matter == 1
if l0 == '---'
let b:front_matter = 0
endif
elseif a:lnum == 2
if l0 == '---'
let b:front_matter = 1
endif
endif
endif
if b:fenced_block == 1 || b:front_matter == 1
" keep previous foldlevel
return '='
endif
let l2 = getline(a:lnum+1)
if l2 =~ '^==\+\s*' && !s:is_mkdCode(a:lnum+1)
" next line is underlined (level 1)
return '>1'
elseif l2 =~ '^--\+\s*' && !s:is_mkdCode(a:lnum+1)
" next line is underlined (level 2)
if s:vim_markdown_folding_level >= 2
return '>1'
else
return '>2'
endif
endif
let l1 = getline(a:lnum)
if l1 =~ '^#' && !s:is_mkdCode(a:lnum)
" fold level according to option
if s:vim_markdown_folding_level == 1 || matchend(l1, '^#\+') > s:vim_markdown_folding_level
if a:lnum == line('$')
return matchend(l1, '^#\+') - 1
else
return -1
endif
else
" headers are not folded
return 0
endif
endif
if l0 =~ '^#' && !s:is_mkdCode(a:lnum-1)
" previous line starts with hashes
return '>'.matchend(l0, '^#\+')
else
" keep previous foldlevel
return '='
endif
endfunction
endif
let b:fenced_block = 0
let b:front_matter = 0
let s:vim_markdown_folding_level = get(g:, "vim_markdown_folding_level", 1)
function! s:MarkdownSetupFolding()
if !get(g:, "vim_markdown_folding_disabled", 0)
if get(g:, "vim_markdown_folding_style_pythonic", 0)
if get(g:, "vim_markdown_override_foldtext", 1)
setlocal foldtext=Foldtext_markdown()
endif
endif
setlocal foldexpr=Foldexpr_markdown(v:lnum)
setlocal foldmethod=expr
endif
endfunction
function! s:MarkdownSetupFoldLevel()
if get(g:, "vim_markdown_folding_style_pythonic", 0)
" set default foldlevel
execute "setlocal foldlevel=".s:vim_markdown_folding_level
endif
endfunction
call s:MarkdownSetupFoldLevel()
call s:MarkdownSetupFolding()
augroup Mkd
" These autocmds need to be kept in sync with the autocmds calling
" s:MarkdownRefreshSyntax in ftplugin/markdown.vim.
autocmd BufWinEnter,BufWritePost <buffer> call s:MarkdownSetupFolding()
autocmd InsertEnter,InsertLeave <buffer> call s:MarkdownSetupFolding()
autocmd CursorHold,CursorHoldI <buffer> call s:MarkdownSetupFolding()
augroup END
endif

View File

@@ -1,5 +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) 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/typescript.vim source <sfile>:h/tsx.vim
endif endif

View File

@@ -1,5 +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) 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/typescript.vim source <sfile>:h/tsx.vim
endif 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, '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

@@ -1,28 +1,63 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim syntax file
"
" Language: javascript.jsx
" Maintainer: MaxMellon <maxmellon1994@gmail.com>
" Depends: leafgarland/typescript-vim
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if get(g:, 'vim_jsx_pretty_disable_tsx', 0)
finish
endif
let s:jsx_cpo = &cpo
set cpo&vim
syntax case match
" GraphQL Support
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
endif endif
syn include @GraphQLSyntax syntax/graphql.vim
if exists('s:current_syntax') if exists('s:current_syntax')
let b:current_syntax = s:current_syntax let b:current_syntax = s:current_syntax
endif endif
let s:tags = '\%(' . join(graphql#javascript_tags(), '\|') . '\)' " refine the typescript line comment
syntax region typescriptLineComment start=+//+ end=/$/ contains=@Spell,typescriptCommentTodo,typescriptRef extend keepend
exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,typescriptTemplateSubstitution extend' for syntax_name in ['tsxRegion', 'tsxFragment']
exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString' if hlexists(syntax_name)
exe 'syntax clear ' . syntax_name
endif
endfor
" Support expression interpolation ((${...})) inside template strings. if !hlexists('typescriptTypeCast')
syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=typescriptTemplateSubstitution containedin=graphqlFold keepend " add a typescriptBlock group for typescript
syntax region typescriptBlock
\ matchgroup=typescriptBraces
\ start="{"
\ end="}"
\ contained
\ extend
\ contains=@typescriptExpression,typescriptBlock
\ fold
hi def link typescriptTypeBrackets typescriptOpSymbols
endif
hi def link graphqlTemplateString typescriptTemplate runtime syntax/jsx_pretty.vim
hi def link graphqlTemplateExpression typescriptTemplateSubstitution 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
syn cluster typescriptExpression add=graphqlTaggedTemplate let b:current_syntax = 'typescript.tsx'
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
let &cpo = s:jsx_cpo
unlet s:jsx_cpo
endif endif

View File

@@ -1,60 +0,0 @@
if !exists('g:polyglot_disabled') || !(index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'typescript') != -1 || index(g:polyglot_disabled, 'jsx') != -1)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Vim syntax file
"
" Language: javascript.jsx
" Maintainer: MaxMellon <maxmellon1994@gmail.com>
" Depends: leafgarland/typescript-vim
"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if get(g:, 'vim_jsx_pretty_disable_tsx', 0)
finish
endif
let s:jsx_cpo = &cpo
set cpo&vim
syntax case match
if exists('b:current_syntax')
let s:current_syntax = b:current_syntax
unlet b:current_syntax
endif
if exists('s:current_syntax')
let b:current_syntax = s:current_syntax
endif
" refine the typescript line comment
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')
" add a typescriptBlock group for typescript
syntax region typescriptBlock
\ matchgroup=typescriptBraces
\ start="{"
\ end="}"
\ contained
\ extend
\ contains=@typescriptExpression,typescriptBlock
\ fold
endif
syntax cluster typescriptExpression add=jsxRegion,typescriptParens
runtime syntax/jsx_pretty.vim
let b:current_syntax = 'typescript.tsx'
let &cpo = s:jsx_cpo
unlet s:jsx_cpo
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

View File

@@ -1,5 +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) 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/typescript.vim source <sfile>:h/tsx.vim
endif 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

@@ -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,6 +527,10 @@ 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
@@ -524,6 +539,10 @@ function! go#config#GoplsEnabled() abort
return get(g:, 'go_gopls_enabled', 1) return get(g:, 'go_gopls_enabled', 1)
endfunction 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))

2
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 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/

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 " 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

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

@@ -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>

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

@@ -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

@@ -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

@@ -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

@@ -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][_A-Z0-9]*\>" 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

@@ -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

@@ -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,qmlStringS,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

@@ -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')
@@ -4863,9 +4866,8 @@ 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=terraBraces start=/\${/ end=/}/ contained contains=ALL
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
@@ -4923,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

View File

@@ -43,7 +43,7 @@ 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)>"