diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2019-12-31 14:05:09 +0100 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2019-12-31 14:05:09 +0100 | 
| commit | b8a5504021e0d21310bc603855ac8107828b5759 (patch) | |
| tree | 2f2bf182b686597e7cc4c4f1b7d35881f9993f55 | |
| parent | cea0d08a062478503814e51aa21c6486a0dd1b21 (diff) | |
| download | vim-polyglot-b8a5504021e0d21310bc603855ac8107828b5759.tar.gz vim-polyglot-b8a5504021e0d21310bc603855ac8107828b5759.zip | |
Update
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 | 
