diff options
Diffstat (limited to '')
29 files changed, 531 insertions, 155 deletions
diff --git a/after/ftplugin/typescript.vim b/after/ftplugin/tsx.vim index e29d1e41..e29d1e41 100644 --- a/after/ftplugin/typescript.vim +++ b/after/ftplugin/tsx.vim diff --git a/after/ftplugin/typescriptreact.vim b/after/ftplugin/typescriptreact.vim index 931839b1..223f77c5 100644 --- a/after/ftplugin/typescriptreact.vim +++ b/after/ftplugin/typescriptreact.vim @@ -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) -source <sfile>:h/typescript.vim +source <sfile>:h/tsx.vim endif diff --git a/after/indent/typescript.vim b/after/indent/tsx.vim index dd8ee271..dd8ee271 100644 --- a/after/indent/typescript.vim +++ b/after/indent/tsx.vim diff --git a/after/indent/typescriptreact.vim b/after/indent/typescriptreact.vim index 931839b1..223f77c5 100644 --- a/after/indent/typescriptreact.vim +++ b/after/indent/typescriptreact.vim @@ -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) -source <sfile>:h/typescript.vim +source <sfile>:h/tsx.vim endif diff --git a/after/syntax/javascript/graphql.vim b/after/syntax/javascript/graphql.vim index bf3ee41d..1c5732ca 100644 --- a/after/syntax/javascript/graphql.vim +++ b/after/syntax/javascript/graphql.vim @@ -1,5 +1,28 @@ 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') let s:current_syntax = b:current_syntax unlet b:current_syntax @@ -11,17 +34,31 @@ endif let s:tags = '\%(' . join(graphql#javascript_tags(), '\|') . '\)' -exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend' -exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString' +if graphql#has_syntax_group('jsTemplateExpression') + " 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 + + hi def link graphqlTemplateString jsTemplateString + hi def link graphqlTaggedTemplate jsTaggedTemplate + hi def link graphqlTemplateExpression jsTemplateExpression -" Support expression interpolation ((${...})) inside template strings. -syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=jsTemplateExpression containedin=graphqlFold keepend + syn cluster jsExpression add=graphqlTaggedTemplate + syn cluster graphqlTaggedTemplate add=graphqlTemplateString +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 -hi def link graphqlTemplateString jsTemplateString -hi def link graphqlTaggedTemplate jsTaggedTemplate -hi def link graphqlTemplateExpression jsTemplateExpression + hi def link graphqlTemplateString javaScriptStringT + hi def link graphqlTaggedTemplate javaScriptEmbed + hi def link graphqlTemplateExpression javaScriptEmbed -syn cluster jsExpression add=graphqlTaggedTemplate -syn cluster graphqlTaggedTemplate add=graphqlTemplateString + syn cluster htmlJavaScript add=graphqlTaggedTemplate + syn cluster javaScriptEmbededExpr add=graphqlTaggedTemplate + syn cluster graphqlTaggedTemplate add=graphqlTemplateString +endif endif diff --git a/after/syntax/javascriptreact/graphql.vim b/after/syntax/javascriptreact/graphql.vim new file mode 100644 index 00000000..c86f9d23 --- /dev/null +++ b/after/syntax/javascriptreact/graphql.vim @@ -0,0 +1,5 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 + +runtime! after/syntax/javascript/graphql.vim + +endif diff --git a/after/syntax/jsx_pretty.vim b/after/syntax/jsx_pretty.vim index 546e9d48..b2cf858a 100644 --- a/after/syntax/jsx_pretty.vim +++ b/after/syntax/jsx_pretty.vim @@ -72,7 +72,7 @@ syntax region jsxExpressionBlock \ end=+}+ \ contained \ 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> " ~ diff --git a/after/syntax/tsx.vim b/after/syntax/tsx.vim index 863da121..36854168 100644 --- a/after/syntax/tsx.vim +++ b/after/syntax/tsx.vim @@ -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') let s:current_syntax = b:current_syntax unlet b:current_syntax endif -syn include @GraphQLSyntax syntax/graphql.vim + if exists('s:current_syntax') let b:current_syntax = s:current_syntax endif -let s:tags = '\%(' . join(graphql#javascript_tags(), '\|') . '\)' - -exec 'syntax region graphqlTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\`+ end=+`+ contains=@GraphQLSyntax,typescriptTemplateSubstitution extend' -exec 'syntax match graphqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=graphqlTemplateString' - -" Support expression interpolation ((${...})) inside template strings. -syntax region graphqlTemplateExpression start=+${+ end=+}+ contained contains=typescriptTemplateSubstitution containedin=graphqlFold keepend +" 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 + hi def link typescriptTypeBrackets typescriptOpSymbols +endif -hi def link graphqlTemplateString typescriptTemplate -hi def link graphqlTemplateExpression typescriptTemplateSubstitution +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 -syn cluster typescriptExpression add=graphqlTaggedTemplate -syn cluster graphqlTaggedTemplate add=graphqlTemplateString +let b:current_syntax = 'typescript.tsx' +let &cpo = s:jsx_cpo +unlet s:jsx_cpo endif diff --git a/after/syntax/typescript.vim b/after/syntax/typescript.vim deleted file mode 100644 index 8b00fb45..00000000 --- a/after/syntax/typescript.vim +++ /dev/null @@ -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 diff --git a/after/syntax/typescript/graphql.vim b/after/syntax/typescript/graphql.vim index a5d6a9ce..f30c4efd 100644 --- a/after/syntax/typescript/graphql.vim +++ b/after/syntax/typescript/graphql.vim @@ -1,5 +1,28 @@ 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') let s:current_syntax = b:current_syntax unlet b:current_syntax diff --git a/after/syntax/typescriptreact.vim b/after/syntax/typescriptreact.vim index 931839b1..223f77c5 100644 --- a/after/syntax/typescriptreact.vim +++ b/after/syntax/typescriptreact.vim @@ -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) -source <sfile>:h/typescript.vim +source <sfile>:h/tsx.vim endif diff --git a/after/syntax/typescriptreact/graphql.vim b/after/syntax/typescriptreact/graphql.vim new file mode 100644 index 00000000..62604d20 --- /dev/null +++ b/after/syntax/typescriptreact/graphql.vim @@ -0,0 +1,5 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 + +runtime! after/syntax/typescript/graphql.vim + +endif diff --git a/after/syntax/vue/graphql.vim b/after/syntax/vue/graphql.vim new file mode 100644 index 00000000..c86f9d23 --- /dev/null +++ b/after/syntax/vue/graphql.vim @@ -0,0 +1,5 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 + +runtime! after/syntax/javascript/graphql.vim + +endif diff --git a/autoload/csv.vim b/autoload/csv.vim index a035e3d5..1fbf7c2a 100644 --- a/autoload/csv.vim +++ b/autoload/csv.vim @@ -122,7 +122,7 @@ fu! csv#Init(start, end, ...) "{{{3 " Enable vartabs for tab delimited files if b:delimiter=="\t" && has("vartabs")&& !exists("b:csv_fixed_width_cols") if get(b:, 'col_width', []) ==# [] - call csv#CalculateColumnWidth(line('$')) + call csv#CalculateColumnWidth(line('$'), 1) endif let &l:vts=join(b:col_width, ',') let g:csv_no_conceal=1 @@ -636,7 +636,7 @@ fu! csv#ArrangeCol(first, last, bang, limit, ...) range "{{{3 endif let cur=winsaveview() " 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 && exists("b:col_width") " Unarrange, so that if csv_arrange_align has changed @@ -670,7 +670,7 @@ fu! csv#ArrangeCol(first, last, bang, limit, ...) range "{{{3 endif if !exists("b:col_width") - call csv#CalculateColumnWidth(row) + call csv#CalculateColumnWidth(row, 1) endif " abort on empty file diff --git a/autoload/go/config.vim b/autoload/go/config.vim index 3dc4422f..d4ba03e4 100644 --- a/autoload/go/config.vim +++ b/autoload/go/config.vim @@ -84,7 +84,18 @@ function! go#config#StatuslineDuration() abort endfunction 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 function! go#config#PlayBrowserCommand() abort @@ -516,6 +527,10 @@ function! go#config#GoplsFuzzyMatching() abort return get(g:, 'go_gopls_fuzzy_matching', 1) endfunction +function! go#config#GoplsStaticCheck() abort + return get(g:, 'go_gopls_staticcheck', 0) +endfunction + function! go#config#GoplsUsePlaceholders() abort return get(g:, 'go_gopls_use_placeholders', 0) endfunction @@ -524,6 +539,10 @@ 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 " compatibility reasons. if exists("g:go_gorename_prefill") && g:go_gorename_prefill == 1 diff --git a/autoload/graphql.vim b/autoload/graphql.vim index 976e9362..820a83c3 100644 --- a/autoload/graphql.vim +++ b/autoload/graphql.vim @@ -1,13 +1,36 @@ 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 " Maintainer: Jon Parise <jon@indelible.org> -if exists('g:autoloaded_graphql') - finish -endif -let g:autoloaded_graphql = 1 +function! graphql#has_syntax_group(group) abort + try + silent execute 'silent highlight ' . a:group + catch + return v:false + endtry + return v:true +endfunction function! graphql#javascript_tags() abort return get(g:, 'graphql_javascript_tags', ['gql', 'graphql', 'Relay.QL']) diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index 480ea023..e2452071 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -519,6 +519,29 @@ endif if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1 augroup filetypedetect " 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 au BufRead,BufNewFile *.graphql,*.graphqls,*.gql setfiletype graphql augroup end diff --git a/ftplugin/dhall.vim b/ftplugin/dhall.vim index 3e7c2d0a..d09f4c31 100644 --- a/ftplugin/dhall.vim +++ b/ftplugin/dhall.vim @@ -32,6 +32,20 @@ if exists('g:dhall_strip_whitespace') 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 au BufNewFile,BufRead *.dhall setl shiftwidth=2 augroup END diff --git a/ftplugin/graphql.vim b/ftplugin/graphql.vim index e6c59d92..df6004fb 100644 --- a/ftplugin/graphql.vim +++ b/ftplugin/graphql.vim @@ -1,6 +1,25 @@ 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 " Maintainer: Jon Parise <jon@indelible.org> diff --git a/indent/graphql.vim b/indent/graphql.vim index 94e1726a..48090bbd 100644 --- a/indent/graphql.vim +++ b/indent/graphql.vim @@ -1,6 +1,25 @@ 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 " Maintainer: Jon Parise <jon@indelible.org> diff --git a/indent/rst.vim b/indent/rst.vim index df7287ea..8e228dfe 100644 --- a/indent/rst.vim +++ b/indent/rst.vim @@ -20,6 +20,13 @@ endif let s:itemization_pattern = '^\s*[-*+]\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() let lnum = prevnonblank(v:lnum - 1) @@ -30,6 +37,13 @@ function GetRSTIndent() let ind = indent(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 let ind += 2 elseif line =~ s:enumeration_pattern diff --git a/syntax/c.vim b/syntax/c.vim index fd201c4e..ff1cf9db 100644 --- a/syntax/c.vim +++ b/syntax/c.vim @@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c/c++') == -1 " Vim syntax file " Language: C " 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 if exists("b:current_syntax") @@ -15,6 +15,14 @@ set cpo&vim 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 syn keyword cStatement goto break return continue asm syn keyword cLabel case default @@ -131,7 +139,7 @@ if exists("c_no_curly_error") syn match cParenError display ")" syn match cErrInParen display contained "^^<%\|^%>" 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 syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell syn match cParenError display ")" @@ -214,7 +222,7 @@ if exists("c_comment_strings") syn match cCommentSkip contained "^\s*\*\($\|\s\+\)" 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 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") " Use "extend" here to have preprocessor lines not terminate halfway a " comment. @@ -233,6 +241,7 @@ endif " keep a // comment separately, it terminates a preproc. conditional syn match cCommentError display "\*/" syn match cCommentStartError display "/\*"me=e-1 contained +syn match cWrongComTail display "\*/" syn keyword cOperator sizeof if exists("c_gnu") @@ -282,6 +291,22 @@ if !exists("c_no_c11") syn keyword cOperator _Static_assert static_assert syn keyword cStorageClass _Thread_local thread_local 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 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 SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX endif - syn keyword cConstant FLT_RADIX FLT_ROUNDS - syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON - syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON - syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON - syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP - 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 + syn keyword cConstant FLT_RADIX FLT_ROUNDS FLT_DIG FLT_MANT_DIG FLT_EPSILON DBL_DIG DBL_MANT_DIG DBL_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_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_MIN_10_EXP LDBL_MAX_10_EXP HUGE_VAL CLOCKS_PER_SEC NULL LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY + syn keyword cConstant LC_NUMERIC LC_TIME SIG_DFL SIG_ERR SIG_IGN SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM " Add POSIX signals as well... - syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP - syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV - syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU - syn keyword cConstant SIGUSR1 SIGUSR2 - 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 + syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV + syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 + syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF FOPEN_MAX FILENAME_MAX L_tmpnam + syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET TMP_MAX stderr stdin stdout EXIT_FAILURE EXIT_SUCCESS RAND_MAX " POSIX 2001 - syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG - syn keyword cConstant SIGVTALRM SIGXCPU SIGXFSZ + syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG SIGVTALRM SIGXCPU SIGXFSZ " non-POSIX signals syn keyword cConstant SIGWINCH SIGINFO - " Add POSIX errors as well - syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY - syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT - syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR - syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV - syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS - syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM - syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV + " Add POSIX errors as well. List comes from: + " http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html + syn keyword cConstant E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF + syn keyword cConstant EBADMSG EBUSY ECANCELED ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK + syn keyword cConstant EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTUNREACH EIDRM EILSEQ + syn keyword cConstant EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE + syn keyword cConstant EMULTIHOP ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA + 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 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 @@ -371,17 +384,17 @@ if !exists("c_no_if0") 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 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 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") - 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 - 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 - 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 cCppOutSkip contained start="^\s*\zs\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\zs\(%:\|#\)\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 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*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip + 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 syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ 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 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 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") @@ -452,6 +472,7 @@ hi def link cErrInBracket cError hi def link cCommentError cError hi def link cCommentStartError cError hi def link cSpaceError cError +hi def link cWrongComTail cError hi def link cSpecialError cError hi def link cCurlyError cError hi def link cOperator Operator diff --git a/syntax/cpp.vim b/syntax/cpp.vim index c224a013..5ccc7d3d 100644 --- a/syntax/cpp.vim +++ b/syntax/cpp.vim @@ -4,6 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c/c++') == -1 " Language: C++ " Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) " Previous Maintainer: Ken Shan <ccshan@post.harvard.edu> +" Last Change: 2017 Jun 05 " quit when a syntax file was already loaded 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_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE 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 " C++ 14 extensions @@ -54,6 +57,21 @@ if !exists("cpp_no_cpp14") syn case match 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++ syn match cppMinMax "[<>]?" @@ -72,6 +90,7 @@ hi def link cppConstant Constant hi def link cppRawStringDelimiter Delimiter hi def link cppRawString String hi def link cppNumber Number +hi def link cppModule Include let b:current_syntax = "cpp" diff --git a/syntax/graphql.vim b/syntax/graphql.vim index 25efe508..9cfac1a6 100644 --- a/syntax/graphql.vim +++ b/syntax/graphql.vim @@ -1,6 +1,25 @@ 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 " Maintainer: Jon Parise <jon@indelible.org> @@ -8,20 +27,23 @@ if exists('b:current_syntax') finish endif +syn case match + syn match graphqlComment "#.*$" contains=@Spell syn match graphqlOperator "=" display syn match graphqlOperator "!" display syn match graphqlOperator "|" display +syn match graphqlOperator "&" display syn match graphqlOperator "\M..." display syn keyword graphqlBoolean true false syn keyword graphqlNull null syn match graphqlNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>" display 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 input interface subscription nextgroup=graphqlType skipwhite @@ -35,7 +57,16 @@ syn match graphqlDirective "\<@\h\w*\>" display syn match graphqlVariable "\<\$\h\w*\>" display syn match graphqlName "\<\h\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 @@ -52,8 +83,8 @@ hi def link graphqlNull Keyword hi def link graphqlNumber Number hi def link graphqlString String -hi def link graphqlConstant Constant hi def link graphqlDirective PreProc +hi def link graphqlDirectiveLocation Special hi def link graphqlName Identifier hi def link graphqlMetaFields Special hi def link graphqlKeyword Keyword diff --git a/syntax/meson.vim b/syntax/meson.vim index a84a08f1..9451fae3 100644 --- a/syntax/meson.vim +++ b/syntax/meson.vim @@ -119,6 +119,7 @@ syn keyword mesonBuiltin \ subdir \ subdir_done \ subproject + \ summary \ target_machine \ test \ vcs_tag diff --git a/syntax/ocpbuild.vim b/syntax/ocpbuild.vim new file mode 100644 index 00000000..98b0ab3c --- /dev/null +++ b/syntax/ocpbuild.vim @@ -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 diff --git a/syntax/ocpbuildroot.vim b/syntax/ocpbuildroot.vim new file mode 100644 index 00000000..48dc476a --- /dev/null +++ b/syntax/ocpbuildroot.vim @@ -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 diff --git a/syntax/qml.vim b/syntax/qml.vim index 602a76f5..760a5dea 100644 --- a/syntax/qml.vim +++ b/syntax/qml.vim @@ -1,5 +1,6 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'qml') == -1 + " Vim syntax file " Language: QML " Maintainer: Peter Hoeg <peter@hoeg.com> @@ -29,7 +30,7 @@ endif 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 match qmlLineComment "\/\/.*" contains=@Spell,qmlCommentTodo syn match qmlCommentSkip "^[ \t]*\*\($\|[ \t]\+\)" @@ -37,6 +38,9 @@ syn region qmlComment start="/\*" end="\*/" contains=@Spell,qmlComme syn match qmlSpecial "\\\d\d\d\|\\." syn region qmlStringD 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 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 qmlBoolean true false 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 qmlException try catch finally throw syn keyword qmlMessage alert confirm prompt status @@ -72,9 +76,10 @@ if get(g:, 'qml_fold', 0) setlocal foldmethod=syntax setlocal foldtext=getline(v:foldstart) else - syn keyword qmlFunction function - syn match qmlBraces "[{}\[\]]" - syn match qmlParens "[()]" + syn keyword qmlFunction function + syn match qmlArrowFunction "=>" + syn match qmlBraces "[{}\[\]]" + syn match qmlParens "[()]" endif syn sync fromstart @@ -100,6 +105,7 @@ if version >= 508 || !exists("did_qml_syn_inits") HiLink qmlSpecial Special HiLink qmlStringS String HiLink qmlStringD String + HiLink qmlStringT String HiLink qmlCharacter Character HiLink qmlNumber Number HiLink qmlConditional Conditional @@ -111,6 +117,7 @@ if version >= 508 || !exists("did_qml_syn_inits") HiLink qmlObjectLiteralType Type HiLink qmlStatement Statement HiLink qmlFunction Function + HiLink qmlArrowFunction Function HiLink qmlBraces Function HiLink qmlError Error HiLink qmlNull Keyword diff --git a/syntax/terraform.vim b/syntax/terraform.vim index 452329b9..03b20c2c 100644 --- a/syntax/terraform.vim +++ b/syntax/terraform.vim @@ -7,6 +7,9 @@ if exists('b:current_syntax') finish endif +let s:cpo_save = &cpo +set cpo&vim + " Identifiers are made up of alphanumeric characters, underscores, and " hyphens. 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 terraBraces "[\[\]]" -""" skip \" in strings. -""" we may also want to pass \\" into a function to escape quotes. -syn region terraValueString start=/"/ skip=/\\\+"/ end=/"/ contains=terraStringInterp +""" skip \" and \\ in strings. +syn region terraValueString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=terraStringInterp syn region terraStringInterp matchgroup=terraBraces start=/\${/ end=/}/ contained contains=ALL 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 &cpo = s:cpo_save +unlet s:cpo_save + endif |