summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--after/ftplugin/tsx.vim (renamed from after/ftplugin/typescript.vim)0
-rw-r--r--after/ftplugin/typescriptreact.vim2
-rw-r--r--after/indent/tsx.vim (renamed from after/indent/typescript.vim)0
-rw-r--r--after/indent/typescriptreact.vim2
-rw-r--r--after/syntax/javascript/graphql.vim55
-rw-r--r--after/syntax/javascriptreact/graphql.vim5
-rw-r--r--after/syntax/jsx_pretty.vim2
-rw-r--r--after/syntax/tsx.vim63
-rw-r--r--after/syntax/typescript.vim60
-rw-r--r--after/syntax/typescript/graphql.vim23
-rw-r--r--after/syntax/typescriptreact.vim2
-rw-r--r--after/syntax/typescriptreact/graphql.vim5
-rw-r--r--after/syntax/vue/graphql.vim5
-rw-r--r--autoload/csv.vim6
-rw-r--r--autoload/go/config.vim21
-rw-r--r--autoload/graphql.vim33
-rw-r--r--ftdetect/polyglot.vim23
-rw-r--r--ftplugin/dhall.vim14
-rw-r--r--ftplugin/graphql.vim21
-rw-r--r--indent/graphql.vim21
-rw-r--r--indent/rst.vim14
-rw-r--r--syntax/c.vim109
-rw-r--r--syntax/cpp.vim19
-rw-r--r--syntax/graphql.vim41
-rw-r--r--syntax/meson.vim1
-rw-r--r--syntax/ocpbuild.vim54
-rw-r--r--syntax/ocpbuildroot.vim57
-rw-r--r--syntax/qml.vim17
-rw-r--r--syntax/terraform.vim11
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