Compare commits

...

29 Commits

Author SHA1 Message Date
Dan Reif
1f34e0adcf Update (periodic rebuild) 2018-06-05 13:50:18 -07:00
Adam Stankiewicz
a26134de3c Add graphql_javascript_tags, fixes #303 2018-05-10 18:59:56 +02:00
Dan Reif
e2404449e4 Merge pull request #301 from timfeirg:feature/graphql 2018-05-08 10:28:33 -07:00
Dan Reif
dc8b2f45de applescript: vim-scripts -> mityu 2018-05-08 10:19:22 -07:00
CH-DanReif
aa5502c32e Merge pull request #286 from idbrii/improve-applescript
Update applescript to one that provides ftdetect
2018-05-08 10:18:12 -07:00
Dan Reif
e13e64d9c4 Update (periodic rebuild) 2018-05-08 10:17:30 -07:00
CH-DanReif
17a69ab565 Merge pull request #300 from sheerun/shellcheck_build_cleanup
Cleanup `build` syntax a bit, aided by `shellcheck(1)`
2018-05-08 10:04:17 -07:00
David Briscoe
da27f4c529 Update applescript to one that provides ftdetect
Current applescript defines a syntax file, but doesn't setup an
applescript filetype to apply the syntax.

This one does ftdetect and indent. Its ftplugin for running applescript
through osascript is excluded.

It uses an identical syntax file to the existing one.
2018-05-03 14:30:55 -07:00
CH-DanReif
cdd0ef41a6 And now it's 2018.... 2018-05-01 11:54:32 -07:00
Dan Reif
4be5fd3094 Cleanup build syntax a bit, aided by shellcheck(1) 2018-04-30 20:02:14 -07:00
Dan Reif
bde56bc8f7 Support autoload config file for golang
Fixes #299
2018-04-30 19:41:18 -07:00
Dan Reif
d9b11ed072 Allow use of # to skip packages being built (for testing) 2018-04-30 16:43:12 -07:00
Dan Reif
565b8b8a2c set et on build 2018-04-30 14:57:13 -07:00
Dan Reif
9f13bb7354 Update README with slightly more verbose contribution guidelines 2018-04-30 12:55:50 -07:00
Dan Reif
7408b2a34a Update (switch wdwoods->kurayama for systemd)
See https://github.com/sheerun/vim-polyglot/pull/267
2018-04-30 12:22:26 -07:00
Chris Weyl
faf6999c44 Use upstream of systemd plugin
While not immediately apparent, wdwoods is actually the author of the
original work kurayama's repo is based on.
2018-04-30 12:20:04 -07:00
CH-DanReif
e9fc23a0c1 Merge pull request #281 from djpowers/patch-1
Fix typo in README
2018-04-30 12:12:25 -07:00
Dan Reif
3e0c887365 Update (periodic rebuild)
I originally meant to run this before adding haproxy, but accidentally
pushed that into my branch.  If you'd like to see that content, it's at
414ad25c3a.
2018-04-30 12:00:42 -07:00
CH-DanReif
b4d7993e7e Add haproxy to polyglot, check for directory existence before globbing it (#291)
Add haproxy to polyglot, check for directory existence before globbing it
2018-04-30 11:55:17 -07:00
CH-DanReif
fb8c5fa8e9 Merge pull request #293 from CH-DanReif/disable_individual_ftdetect
Allow disabling individual ftdetects via `g:polyglot_disabled`
2018-04-30 11:19:20 -07:00
Dan Reif
ddc64d8db2 Don't actually update ftdetect/polyglot.vim
It was only in the original commit because I wanted to demonstrate the
changes that would be made.  Revert it back out now to make this a
clean, svelte, easy-to-merge PR.
2018-04-16 11:36:02 -07:00
Dan Reif
98f90bced5 Allow disabling of individual ftdetect rules via g:polyglot_disabled 2018-04-16 11:31:57 -07:00
David Briscoe
cab6866e21 Increase test file parsing timeout (#288)
There's been several PRs that inexplicably failed tests.

PR #279 (applescript) failed with "should parse test.em file" despite
the exact same PR #286 passing (I've removed one of them, sorry again
about that).

PR #268 (pandoc) failed with "parse test.erb file" but doesn't mess with
eruby.

PR #281 (readme) failed with "should parse test.jsx file" but it's a one
word change to the readme!

My assumption is that vim startup on Travis is near the edge of the
timeout so we're getting false failures. (I'm not familiar with
Vimrunner or rspec, but I assume this code is just testing that vim
doesn't throw errors one edit and automatically exits at the end of the
block.)
2018-04-03 12:30:51 +02:00
Dave Powers
a7e2b8a700 Fix typo in README 2018-03-08 16:34:01 -05:00
Adam Stankiewicz
96c5c20e41 Include indentation setting for markdown, fixes #270 2018-02-06 11:16:48 +08:00
Adam Stankiewicz
18efda3933 Update 2018-02-06 11:15:01 +08:00
Adam Stankiewicz
bfc6ed9fba Fix filetype detection by extension, #262 2018-01-10 23:54:03 +01:00
Adam Stankiewicz
58709c49f6 Update 2018-01-10 23:50:02 +01:00
Adam Stankiewicz
3d5b784fa5 Add example how to install this plugin, closes #260 2018-01-07 23:08:39 +01:00
101 changed files with 5123 additions and 2533 deletions

View File

@@ -1,4 +1,4 @@
# vim-polyglot [![Build Status][travis-img-url]][travis-url] [![Maintenance](https://img.shields.io/maintenance/yes/2017.svg?maxAge=2592000)]() # vim-polyglot [![Build Status][travis-img-url]][travis-url] [![Maintenance](https://img.shields.io/maintenance/yes/2018.svg?maxAge=2592000)]()
[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.svg [travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.svg
[travis-url]: https://travis-ci.org/sheerun/vim-polyglot [travis-url]: https://travis-ci.org/sheerun/vim-polyglot
@@ -21,6 +21,12 @@ A collection of language packs for Vim.
1. Install [Pathogen](https://github.com/tpope/vim-pathogen), [Vundle](https://github.com/VundleVim/Vundle.vim), [NeoBundle](https://github.com/Shougo/neobundle.vim), or [Plug](https://github.com/junegunn/vim-plug) package manager for Vim. 1. Install [Pathogen](https://github.com/tpope/vim-pathogen), [Vundle](https://github.com/VundleVim/Vundle.vim), [NeoBundle](https://github.com/Shougo/neobundle.vim), or [Plug](https://github.com/junegunn/vim-plug) package manager for Vim.
2. Use this repository as submodule or package. 2. Use this repository as submodule or package.
For example when using [Plug](https://github.com/junegunn/vim-plug):
```
Plug 'sheerun/vim-polyglot'
```
Optionally download one of the [releases](https://github.com/sheerun/vim-polyglot/releases) and unpack it directly under `~/.vim` directory. Optionally download one of the [releases](https://github.com/sheerun/vim-polyglot/releases) and unpack it directly under `~/.vim` directory.
You can also use Vim 8 built-in package manager: You can also use Vim 8 built-in package manager:
@@ -38,7 +44,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [ansible](https://github.com/pearofducks/ansible-vim) (syntax, indent, ftplugin) - [ansible](https://github.com/pearofducks/ansible-vim) (syntax, indent, ftplugin)
- [apiblueprint](https://github.com/sheerun/apiblueprint.vim) (syntax) - [apiblueprint](https://github.com/sheerun/apiblueprint.vim) (syntax)
- [applescript](https://github.com/vim-scripts/applescript.vim) (syntax) - [applescript](https://github.com/mityu/vim-applescript) (syntax, indent)
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent) - [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent)
- [asciidoc](https://github.com/asciidoc/vim-asciidoc) (syntax) - [asciidoc](https://github.com/asciidoc/vim-asciidoc) (syntax)
- [autohotkey](https://github.com/hnamikaw/vim-autohotkey) (indent) - [autohotkey](https://github.com/hnamikaw/vim-autohotkey) (indent)
@@ -69,9 +75,11 @@ If you need full functionality of any plugin, please use it directly with your p
- [gmpl](https://github.com/maelvalais/gmpl.vim) (syntax) - [gmpl](https://github.com/maelvalais/gmpl.vim) (syntax)
- [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (syntax) - [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (syntax)
- [go](https://github.com/fatih/vim-go) (syntax, compiler, indent) - [go](https://github.com/fatih/vim-go) (syntax, compiler, indent)
- [graphql](https://github.com/jparise/vim-graphql) (syntax, indent, ftplugin)
- [groovy](https://github.com/vim-scripts/groovy.vim) (syntax) - [groovy](https://github.com/vim-scripts/groovy.vim) (syntax)
- [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin) - [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin)
- [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, indent, ftplugin) - [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, indent, ftplugin)
- [haproxy](https://github.com/CH-DanReif/haproxy.vim) (syntax)
- [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, ftplugin) - [haskell](https://github.com/neovimhaskell/haskell-vim) (syntax, indent, ftplugin)
- [haxe](https://github.com/yaymukund/vim-haxe) (syntax) - [haxe](https://github.com/yaymukund/vim-haxe) (syntax)
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin) - [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin)
@@ -91,7 +99,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [livescript](https://github.com/gkz/vim-ls) (syntax, indent, compiler, ftplugin) - [livescript](https://github.com/gkz/vim-ls) (syntax, indent, compiler, ftplugin)
- [lua](https://github.com/tbastos/vim-lua) (syntax, indent) - [lua](https://github.com/tbastos/vim-lua) (syntax, indent)
- [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin) - [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin)
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax) - [markdown](https://github.com/plasticboy/vim-markdown) (syntax, indent)
- [mathematica](https://github.com/rsmenon/vim-mathematica) (syntax, ftplugin) - [mathematica](https://github.com/rsmenon/vim-mathematica) (syntax, ftplugin)
- [nginx](https://github.com/chr4/nginx.vim) (syntax, indent, ftplugin) - [nginx](https://github.com/chr4/nginx.vim) (syntax, indent, ftplugin)
- [nim](https://github.com/zah/nim.vim) (syntax, compiler, indent) - [nim](https://github.com/zah/nim.vim) (syntax, compiler, indent)
@@ -129,7 +137,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin) - [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin)
- [swift](https://github.com/keith/swift.vim) (syntax, indent, ftplugin) - [swift](https://github.com/keith/swift.vim) (syntax, indent, ftplugin)
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (syntax) - [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (syntax)
- [systemd](https://github.com/kurayama/systemd-vim-syntax) (syntax) - [systemd](https://github.com/wgwoods/vim-systemd-syntax) (syntax)
- [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, ftplugin) - [terraform](https://github.com/hashivim/vim-terraform) (syntax, indent, ftplugin)
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin) - [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin)
- [thrift](https://github.com/solarnz/thrift.vim) (syntax) - [thrift](https://github.com/solarnz/thrift.vim) (syntax)
@@ -163,13 +171,18 @@ Individual language packs can be disabled by setting `g:polyglot_disabled` as fo
let g:polyglot_disabled = ['css'] let g:polyglot_disabled = ['css']
``` ```
Note that disabiling languages won't make in general your vim startup any faster / slower (only for specific file type). Vim-polyglot is selection of language plugins that are loaded only on demand. Note that disabling languages won't make in general your vim startup any faster / slower (only for specific file type). Vim-polyglot is selection of language plugins that are loaded only on demand.
## Contributing ## Contributing
Language packs are periodically updated using automated `build` script. Language packs are periodically updated using automated `build` script.
Feel free to add your language, and send pull-request. Feel free to add your language, and send pull-request. In your pull request, please include:
1. How you chose the particular repo from which to pull support for this language.
2. An updated https://github.com/sheerun/vim-polyglot/blob/master/build .
3. If at all possible, absolutely nothing else (in particular, please don't run `build` and include that in your PR).
The easier it is to validate that the new language won't do anything wacky, the faster it'll be merged. In particular, languages that utilize global plugins (loaded for every filetype), or plugins with dangerous features (like `call` based on the contents of a file being edited), will never be merged, as they will be slow or dangerous, respectively.
## License ## License

View File

@@ -21,7 +21,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
" Highlight function names. " Highlight function names.
" ----------------------------------------------------------------------------- " -----------------------------------------------------------------------------
if !exists('g:cpp_no_function_highlight') if !exists('g:cpp_no_function_highlight')
syn match cCustomParen "(" contains=cParen contains=cCppParen syn match cCustomParen transparent "(" contains=cParen contains=cCppParen
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
hi def link cCustomFunc Function hi def link cCustomFunc Function
endif endif
@@ -32,7 +32,7 @@ endif
if exists('g:cpp_member_variable_highlight') && g:cpp_member_variable_highlight if exists('g:cpp_member_variable_highlight') && g:cpp_member_variable_highlight
syn match cCustomDot "\." contained syn match cCustomDot "\." contained
syn match cCustomPtr "->" contained syn match cCustomPtr "->" contained
syn match cCustomMemVar "\(\.\|->\)\w\+" contains=cCustomDot,cCustomPtr syn match cCustomMemVar "\(\.\|->\)\h\w*" contains=cCustomDot,cCustomPtr
hi def link cCustomMemVar Function hi def link cCustomMemVar Function
endif endif

View File

@@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
" Language: C++ Additions " Language: C++ Additions
" Maintainer: Jon Haggblad <jon@haeggblad.com> " Maintainer: Jon Haggblad <jon@haeggblad.com>
" URL: http://www.haeggblad.com " URL: http://www.haeggblad.com
" Last Change: 12 Oct 2016 " Last Change: 1 Feb 2018
" Version: 0.6 " Version: 0.6
" Changelog: " Changelog:
" 0.1 - initial version. " 0.1 - initial version.
@@ -37,7 +37,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c++11') == -1
" Functions " Functions
if !exists('g:cpp_no_function_highlight') if !exists('g:cpp_no_function_highlight')
syn match cCustomParen "(" contains=cParen contains=cCppParen syn match cCustomParen transparent "(" contains=cParen contains=cCppParen
syn match cCustomFunc "\w\+\s*(\@=" syn match cCustomFunc "\w\+\s*(\@="
hi def link cCustomFunc Function hi def link cCustomFunc Function
endif endif
@@ -855,6 +855,37 @@ syntax keyword cppSTLconstant WEOF
syntax keyword cppSTLconstant WCHAR_MIN syntax keyword cppSTLconstant WCHAR_MIN
syntax keyword cppSTLconstant WCHAR_MAX syntax keyword cppSTLconstant WCHAR_MAX
" locale
syntax keyword cppSTLtype locale
syntax keyword cppSTLtype ctype_base
syntax keyword cppSTLtype codecvt_base
syntax keyword cppSTLtype messages_base
syntax keyword cppSTLtype time_base
syntax keyword cppSTLtype money_base
syntax keyword cppSTLtype ctype
syntax keyword cppSTLtype codecvt
syntax keyword cppSTLtype collate
syntax keyword cppSTLtype messages
syntax keyword cppSTLtype time_get
syntax keyword cppSTLtype time_put
syntax keyword cppSTLtype num_get
syntax keyword cppSTLtype num_put
syntax keyword cppSTLtype numpunct
syntax keyword cppSTLtype money_get
syntax keyword cppSTLtype money_put
syntax keyword cppSTLtype moneypunct
syntax keyword cppSTLtype ctype_byname
syntax keyword cppSTLtype codecvt_byname
syntax keyword cppSTLtype messages_byname
syntax keyword cppSTLtype collate_byname
syntax keyword cppSTLtype time_get_byname
syntax keyword cppSTLtype time_put_byname
syntax keyword cppSTLtype numpunct_byname
syntax keyword cppSTLtype moneypunct_byname
syntax keyword cppSTLfunction use_facet
syntax keyword cppSTLfunction has_facet
syntax keyword cppSTLfunction isspace isblank iscntrl isupper islower isalpha
syntax keyword cppSTLfunction isdigit ispunct isxdigit isalnum isprint isgraph
if !exists("cpp_no_cpp11") if !exists("cpp_no_cpp11")
syntax keyword cppSTLconstant nullptr syntax keyword cppSTLconstant nullptr
@@ -1766,6 +1797,9 @@ if !exists("cpp_no_cpp17")
syntax keyword cppSTLfunction do_deallocate syntax keyword cppSTLfunction do_deallocate
syntax keyword cppSTLfunction do_is_equal syntax keyword cppSTLfunction do_is_equal
" mutex
syntax keyword cppSTLtype scoped_lock
" new " new
syntax keyword cppSTLconstant hardware_destructive_interference_size syntax keyword cppSTLconstant hardware_destructive_interference_size
syntax keyword cppSTLconstant hardware_constructive_interference_size syntax keyword cppSTLconstant hardware_constructive_interference_size
@@ -1804,7 +1838,7 @@ if !exists("cpp_no_cpp17")
syntax keyword cppSTLbool is_error_code_enum_v syntax keyword cppSTLbool is_error_code_enum_v
syntax keyword cppSTLbool is_error_condition_enum_v syntax keyword cppSTLbool is_error_condition_enum_v
" thread " shared_mutex
syntax keyword cppSTLtype shared_mutex syntax keyword cppSTLtype shared_mutex
" tuple " tuple
@@ -1879,6 +1913,16 @@ if !exists("cpp_no_cpp17")
syntax keyword cppSTLbool conjunction_v syntax keyword cppSTLbool conjunction_v
syntax keyword cppSTLbool disjunction_v syntax keyword cppSTLbool disjunction_v
syntax keyword cppSTLbool negation_v syntax keyword cppSTLbool negation_v
syntax keyword cppSTLbool has_unique_object_representations_v
syntax keyword cppSTLbool is_swappable_v
syntax keyword cppSTLbool is_swappable_with_v
syntax keyword cppSTLbool is_nothrow_swappable_v
syntax keyword cppSTLbool is_nothrow_swappable_with_v
syntax keyword cppSTLbool is_invocable_v
syntax keyword cppSTLbool is_invocable_r_v
syntax keyword cppSTLbool is_nothrow_invocable_v
syntax keyword cppSTLbool is_nothrow_invocable_r_v
syntax keyword cppSTLbool is_aggregate_v
syntax keyword cppSTLconstant alignment_of_v syntax keyword cppSTLconstant alignment_of_v
syntax keyword cppSTLconstant rank_v syntax keyword cppSTLconstant rank_v
syntax keyword cppSTLconstant extent_v syntax keyword cppSTLconstant extent_v
@@ -1888,6 +1932,19 @@ if !exists("cpp_no_cpp17")
syntax keyword cppSTLtype conjunction syntax keyword cppSTLtype conjunction
syntax keyword cppSTLtype disjunction syntax keyword cppSTLtype disjunction
syntax keyword cppSTLtype negation syntax keyword cppSTLtype negation
syntax keyword cppSTLtype void_t
syntax keyword cppSTLtype has_unique_object_representations
syntax keyword cppSTLtype is_swappable
syntax keyword cppSTLtype is_swappable_with
syntax keyword cppSTLtype is_nothrow_swappable
syntax keyword cppSTLtype is_nothrow_swappable_with
syntax keyword cppSTLtype is_invocable
syntax keyword cppSTLtype is_invocable_r
syntax keyword cppSTLtype is_nothrow_invocable
syntax keyword cppSTLtype is_nothrow_invocable_r
syntax keyword cppSTLtype invoke_result
syntax keyword cppSTLtype invoke_result_t
syntax keyword cppSTLtype is_aggregate
" unordered_map, unordered_set, unordered_multimap, unordered_multiset " unordered_map, unordered_set, unordered_multimap, unordered_multiset
syntax keyword cppSTLtype node_type syntax keyword cppSTLtype node_type
@@ -1921,6 +1978,12 @@ if !exists("cpp_no_cpp17")
endif " C++17 endif " C++17
if !exists("cpp_no_cpp20")
" type_traits
syntax keyword cppSTLtype remove_cvref remove_cvref_t
endif
if exists('g:cpp_concepts_highlight') && g:cpp_concepts_highlight if exists('g:cpp_concepts_highlight') && g:cpp_concepts_highlight
syntax keyword cppStatement concept syntax keyword cppStatement concept
syntax keyword cppStorageClass requires syntax keyword cppStorageClass requires

View File

@@ -0,0 +1,21 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
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
syntax region graphqlTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`+ contains=@GraphQLSyntax,jsTemplateExpression,jsSpecial extend
exec 'syntax match graphqlTaggedTemplate +\%(' . join(g:graphql_javascript_tags, '\|') . '\)\%(`\)\@=+ nextgroup=graphqlTemplateString'
hi def link graphqlTemplateString jsTemplateString
hi def link graphqlTaggedTemplate jsTaggedTemplate
syn cluster jsExpression add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
endif

View File

@@ -0,0 +1,20 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
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
syntax region graphqlTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`+ contains=@GraphQLSyntax,typescriptTemplateTag extend
exec 'syntax match graphqlTaggedTemplate +\%(' . join(g:graphql_javascript_tags, '\|') . '\)\%(`\)\@=+ nextgroup=graphqlTemplateString'
hi def link graphqlTemplateString typescriptTemplate
syn cluster typescriptExpression add=graphqlTaggedTemplate
syn cluster graphqlTaggedTemplate add=graphqlTemplateString
endif

View File

@@ -26,7 +26,7 @@ syn match yamlBlock "[\[\]\{\}\|\>]"
syn region yamlComment start="\#" end="$" syn region yamlComment start="\#" end="$"
syn match yamlIndicator "#YAML:\S\+" syn match yamlIndicator "#YAML:\S\+"
syn region yamlString start="\%(^\| \)\zs'" end="'\ze\%( \|$\)" skip="\\'" syn region yamlString start="\(^\|\s\|\[\|\,\|\-\)'" end="'" skip="\\'"
syn region yamlString start='"' end='"' skip='\\"' contains=yamlEscape syn region yamlString start='"' end='"' skip='\\"' contains=yamlEscape
syn match yamlEscape +\\[abfnrtv'"\\]+ contained syn match yamlEscape +\\[abfnrtv'"\\]+ contained
syn match yamlEscape "\\\o\o\=\o\=" contained syn match yamlEscape "\\\o\o\=\o\=" contained

89
autoload/cargo.vim Normal file
View File

@@ -0,0 +1,89 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
function! cargo#cmd(args)
silent! clear
if !a:args
execute "!" . "cargo ". a:args
else
echom "Missing arguments"
endif
endfunction
function! cargo#build(args)
silent! clear
if !a:args
execute "!" . "cargo build " . a:args
else
execute "!" . "cargo build"
endif
silent! clear
execute "!" . "cargo build"
endfunction
function! cargo#clean(args)
silent! clear
if !a:args
execute "!" . "cargo clean " . a:args
else
execute "!" . "cargo clean"
endif
silent! clear
execute "!" . "cargo clean"
endfunction
function! cargo#doc(args)
silent! clear
if !a:args
execute "!" . "cargo doc " . a:args
else
execute "!" . "cargo doc"
endif
endfunction
function! cargo#new(args)
silent! clear
if !a:args
execute "!cargo new " . a:args
:cd `=a:args`
else
echom "Missing arguments"
endif
endfunction
function! cargo#init(args)
silent! clear
if !a:args
execute "!" . "cargo init " . a:args
else
execute "!" . "cargo init"
endif
endfunction
function! cargo#run(args)
silent! clear
if !a:args
execute "!" . "cargo run " . a:args
else
execute "!" . "cargo run"
endif
endfunction
function! cargo#test(args)
silent! clear
if !a:args
execute "!" . "cargo test " . a:args
else
execute "!" . "cargo test"
endif
endfunction
function! cargo#bench(args)
silent! clear
if !a:args
execute "!" . "cargo bench " . a:args
else
execute "!" . "cargo bench"
endif
endfunction
endif

View File

@@ -3,11 +3,21 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim
let s:V = vital#of('crystal') let s:V = vital#crystal#new()
let s:P = s:V.import('Process') let s:P = s:V.import('Process')
let s:J = s:V.import('Web.JSON')
let s:C = s:V.import('ColorEcho') let s:C = s:V.import('ColorEcho')
if exists('*json_decode')
function! s:decode_json(text) abort
return json_decode(a:text)
endfunction
else
let s:J = s:V.import('Web.JSON')
function! s:decode_json(text) abort
return s:J.decode(a:text)
endfunction
endif
function! s:echo_error(msg, ...) abort function! s:echo_error(msg, ...) abort
echohl ErrorMsg echohl ErrorMsg
if a:0 == 0 if a:0 == 0
@@ -102,7 +112,7 @@ function! crystal_lang#jump_to_definition(file, pos) abort
return s:echo_error(cmd_result.output) return s:echo_error(cmd_result.output)
endif endif
let impl = s:J.decode(cmd_result.output) let impl = s:decode_json(cmd_result.output)
if impl.status !=# 'ok' if impl.status !=# 'ok'
return s:echo_error(impl.message) return s:echo_error(impl.message)
endif endif
@@ -149,7 +159,6 @@ endfunction
function! crystal_lang#complete(findstart, base) abort function! crystal_lang#complete(findstart, base) abort
if a:findstart if a:findstart
echom 'find start'
return s:find_completion_start() return s:find_completion_start()
endif endif
@@ -158,7 +167,7 @@ function! crystal_lang#complete(findstart, base) abort
return return
endif endif
let contexts = s:J.decode(cmd_result.output) let contexts = s:decode_json(cmd_result.output)
if contexts.status !=# 'ok' if contexts.status !=# 'ok'
return return
endif endif
@@ -271,59 +280,34 @@ function! crystal_lang#format_string(code, ...) abort
return output return output
endfunction endfunction
function! s:get_saved_states() abort " crystal_lang#format(option_str [, on_save])
let result = {} function! crystal_lang#format(option_str, ...) abort
let fname = bufname('%')
let current_winnr = winnr()
for i in range(1, winnr('$'))
let bufnr = winbufnr(i)
if bufnr == -1
continue
endif
if bufname(bufnr) ==# fname
execute i 'wincmd w'
let result[i] = {
\ 'pos': getpos('.'),
\ 'screen': winsaveview()
\ }
endif
endfor
execute current_winnr 'wincmd w'
return result
endfunction
function! crystal_lang#format(option_str) abort
if !executable(g:crystal_compiler_command) if !executable(g:crystal_compiler_command)
" Finish command silently " Finish command silently
return return
endif endif
let formatted = crystal_lang#format_string(join(getline(1, '$'), "\n"), a:option_str) let on_save = a:0 > 0 ? a:1 : 0
let formatted = substitute(formatted, '\n$', '', '')
let sel_save = &l:selection let before = join(getline(1, '$'), "\n")
let ve_save = &virtualedit let formatted = crystal_lang#format_string(before, a:option_str)
let &l:selection = 'inclusive' if !on_save
let &virtualedit = '' let after = substitute(formatted, '\n$', '', '')
let [save_g_reg, save_g_regtype] = [getreg('g'), getregtype('g')] if before ==# after
let windows_save = s:get_saved_states() return
endif
endif
try let view_save = winsaveview()
call setreg('g', formatted, 'v') let pos_save = getpos('.')
silent normal! gg0vG$"gp let lines = split(formatted, '\n')
finally silent! undojoin
call setreg('g', save_g_reg, save_g_regtype) if line('$') > len(lines)
let &l:selection = sel_save execute len(lines) . ',$delete' '_'
let &virtualedit = ve_save endif
let winnr = winnr() call setline(1, lines)
for winnr in keys(windows_save) call winrestview(view_save)
let w = windows_save[winnr] call setpos('.', pos_save)
execute winnr 'wincmd w'
call setpos('.', w.pos)
call winrestview(w.screen)
endfor
execute winnr 'wincmd w'
endtry
endfunction endfunction
let &cpo = s:save_cpo let &cpo = s:save_cpo

View File

@@ -22,6 +22,7 @@ function! dart#fmt(q_args) abort
if executable('dartfmt') if executable('dartfmt')
let buffer_content = join(getline(1, '$'), "\n") let buffer_content = join(getline(1, '$'), "\n")
let joined_lines = system(printf('dartfmt %s', a:q_args), buffer_content) let joined_lines = system(printf('dartfmt %s', a:q_args), buffer_content)
if buffer_content ==# joined_lines[:-2] | return | endif
if 0 == v:shell_error if 0 == v:shell_error
let win_view = winsaveview() let win_view = winsaveview()
let lines = split(joined_lines, "\n") let lines = split(joined_lines, "\n")
@@ -129,6 +130,15 @@ function! s:PackageMap() abort
return [v:true, map] return [v:true, map]
endfunction endfunction
" Toggle whether dartfmt is run on save or not.
function! dart#ToggleFormatOnSave() abort
if get(g:, "dart_format_on_save", 0)
let g:dart_format_on_save = 0
return
endif
let g:dart_format_on_save = 1
endfunction
" Finds a file name '.packages' in the cwd, or in any directory above the open " Finds a file name '.packages' in the cwd, or in any directory above the open
" file. " file.
" "

View File

@@ -18,11 +18,15 @@ function! elixir#indent#indent(lnum)
call s:debug("==> Indenting line " . lnum) call s:debug("==> Indenting line " . lnum)
call s:debug("text = '" . text . "'") call s:debug("text = '" . text . "'")
let [_, curs_lnum, curs_col, _] = getpos('.')
call cursor(lnum, 0)
let handlers = [ let handlers = [
\'top_of_file', \'top_of_file',
\'starts_with_end', \'starts_with_end',
\'starts_with_mid_or_end_block_keyword', \'starts_with_mid_or_end_block_keyword',
\'following_trailing_do', \'following_trailing_do',
\'following_trailing_rocket',
\'following_trailing_binary_operator', \'following_trailing_binary_operator',
\'starts_with_pipe', \'starts_with_pipe',
\'starts_with_close_bracket', \'starts_with_close_bracket',
@@ -37,11 +41,13 @@ function! elixir#indent#indent(lnum)
let indent = function('elixir#indent#handle_'.handler)(lnum, text, prev_nb_lnum, prev_nb_text) let indent = function('elixir#indent#handle_'.handler)(lnum, text, prev_nb_lnum, prev_nb_text)
if indent != -1 if indent != -1
call s:debug('line '.lnum.': elixir#indent#handle_'.handler.' returned '.indent) call s:debug('line '.lnum.': elixir#indent#handle_'.handler.' returned '.indent)
call cursor(curs_lnum, curs_col)
return indent return indent
endif endif
endfor endfor
call s:debug("defaulting") call s:debug("defaulting")
call cursor(curs_lnum, curs_col)
return 0 return 0
endfunction endfunction
@@ -166,7 +172,7 @@ function! s:get_base_indent(lnum, text)
elseif s:ends_with(a:text, data_structure_close, a:lnum) elseif s:ends_with(a:text, data_structure_close, a:lnum)
let data_structure_open = '\%(\[\|{\|(\)' let data_structure_open = '\%(\[\|{\|(\)'
let close_match_idx = match(a:text, data_structure_close . '\s*$') let close_match_idx = match(a:text, data_structure_close . '\s*$')
let _move = cursor(a:lnum, close_match_idx + 1) call cursor(a:lnum, close_match_idx + 1)
let [open_match_lnum, open_match_col] = searchpairpos(data_structure_open, '', data_structure_close, 'bnW') let [open_match_lnum, open_match_col] = searchpairpos(data_structure_open, '', data_structure_close, 'bnW')
let open_match_text = getline(open_match_lnum) let open_match_text = getline(open_match_lnum)
return s:get_base_indent(open_match_lnum, open_match_text) return s:get_base_indent(open_match_lnum, open_match_text)
@@ -175,7 +181,6 @@ function! s:get_base_indent(lnum, text)
endif endif
endfunction endfunction
" TODO: @jbodah 2017-03-31: remove
function! elixir#indent#handle_following_trailing_do(lnum, text, prev_nb_lnum, prev_nb_text) function! elixir#indent#handle_following_trailing_do(lnum, text, prev_nb_lnum, prev_nb_text)
if s:ends_with(a:prev_nb_text, s:keyword('do'), a:prev_nb_lnum) if s:ends_with(a:prev_nb_text, s:keyword('do'), a:prev_nb_lnum)
if s:starts_with(a:text, s:keyword('end'), a:lnum) if s:starts_with(a:text, s:keyword('end'), a:lnum)
@@ -188,6 +193,14 @@ function! elixir#indent#handle_following_trailing_do(lnum, text, prev_nb_lnum, p
endif endif
endfunction endfunction
function! elixir#indent#handle_following_trailing_rocket(lnum, text, prev_nb_lnum, prev_nb_text)
if s:ends_with(a:prev_nb_text, '->', a:prev_nb_lnum)
return indent(a:prev_nb_lnum) + s:sw()
else
return -1
endif
endfunction
function! elixir#indent#handle_following_trailing_binary_operator(lnum, text, prev_nb_lnum, prev_nb_text) function! elixir#indent#handle_following_trailing_binary_operator(lnum, text, prev_nb_lnum, prev_nb_text)
let binary_operator = '\%(=\|<>\|>>>\|<=\|||\|+\|\~\~\~\|-\|&&\|<<<\|/\|\^\^\^\|\*\)' let binary_operator = '\%(=\|<>\|>>>\|<=\|||\|+\|\~\~\~\|-\|&&\|<<<\|/\|\^\^\^\|\*\)'

436
autoload/go/config.vim Normal file
View File

@@ -0,0 +1,436 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
function! go#config#AutodetectGopath() abort
return get(g:, 'go_autodetect_gopath', 0)
endfunction
function! go#config#ListTypeCommands() abort
return get(g:, 'go_list_type_commands', {})
endfunction
function! go#config#VersionWarning() abort
return get(g:, 'go_version_warning', 1)
endfunction
function! go#config#BuildTags() abort
return get(g:, 'go_build_tags', '')
endfunction
function! go#config#SetBuildTags(value) abort
if a:value is ''
silent! unlet g:go_build_tags
return
endif
let g:go_build_tags = a:value
endfunction
function! go#config#TestTimeout() abort
return get(g:, 'go_test_timeout', '10s')
endfunction
function! go#config#TestShowName() abort
return get(g:, 'go_test_show_name', 0)
endfunction
function! go#config#TermHeight() abort
return get(g:, 'go_term_height', winheight(0))
endfunction
function! go#config#TermWidth() abort
return get(g:, 'go_term_width', winwidth(0))
endfunction
function! go#config#TermMode() abort
return get(g:, 'go_term_mode', 'vsplit')
endfunction
function! go#config#TermEnabled() abort
return get(g:, 'go_term_enabled', 0)
endfunction
function! go#config#SetTermEnabled(value) abort
let g:go_term_enabled = a:value
endfunction
function! go#config#TemplateUsePkg() abort
return get(g:, 'go_template_use_pkg', 0)
endfunction
function! go#config#TemplateTestFile() abort
return get(g:, 'go_template_test_file', "hello_world_test.go")
endfunction
function! go#config#TemplateFile() abort
return get(g:, 'go_template_file', "hello_world.go")
endfunction
function! go#config#StatuslineDuration() abort
return get(g:, 'go_statusline_duration', 60000)
endfunction
function! go#config#SnippetEngine() abort
return get(g:, 'go_snippet_engine', 'automatic')
endfunction
function! go#config#PlayBrowserCommand() abort
if go#util#IsWin()
let go_play_browser_command = '!start rundll32 url.dll,FileProtocolHandler %URL%'
elseif go#util#IsMac()
let go_play_browser_command = 'open %URL%'
elseif executable('xdg-open')
let go_play_browser_command = 'xdg-open %URL%'
elseif executable('firefox')
let go_play_browser_command = 'firefox %URL% &'
elseif executable('chromium')
let go_play_browser_command = 'chromium %URL% &'
else
let go_play_browser_command = ''
endif
return get(g:, 'go_play_browser_command', go_play_browser_command)
endfunction
function! go#config#MetalinterDeadline() abort
" gometalinter has a default deadline of 5 seconds only when asynchronous
" jobs are not supported.
let deadline = '5s'
if go#util#has_job() && has('lambda')
let deadline = ''
endif
return get(g:, 'go_metalinter_deadline', deadline)
endfunction
function! go#config#ListType() abort
return get(g:, 'go_list_type', '')
endfunction
function! go#config#ListAutoclose() abort
return get(g:, 'go_list_autoclose', 1)
endfunction
function! go#config#InfoMode() abort
return get(g:, 'go_info_mode', 'gocode')
endfunction
function! go#config#GuruScope() abort
let scope = get(g:, 'go_guru_scope', [])
if !empty(scope)
" strip trailing slashes for each path in scope. bug:
" https://github.com/golang/go/issues/14584
let scopes = go#util#StripTrailingSlash(scope)
endif
return scope
endfunction
function! go#config#SetGuruScope(scope) abort
if empty(a:scope)
if exists('g:go_guru_scope')
unlet g:go_guru_scope
endif
else
let g:go_guru_scope = a:scope
endif
endfunction
function! go#config#GocodeUnimportedPackages() abort
return get(g:, 'go_gocode_unimported_packages', 0)
endfunction
let s:sock_type = (has('win32') || has('win64')) ? 'tcp' : 'unix'
function! go#config#GocodeSocketType() abort
return get(g:, 'go_gocode_socket_type', s:sock_type)
endfunction
function! go#config#GocodeProposeBuiltins() abort
return get(g:, 'go_gocode_propose_builtins', 1)
endfunction
function! go#config#GocodeAutobuild() abort
return get(g:, 'go_gocode_autobuild', 1)
endfunction
function! go#config#EchoCommandInfo() abort
return get(g:, 'go_echo_command_info', 1)
endfunction
function! go#config#DocUrl() abort
let godoc_url = get(g:, 'go_doc_url', 'https://godoc.org')
if godoc_url isnot 'https://godoc.org'
" strip last '/' character if available
let last_char = strlen(godoc_url) - 1
if godoc_url[last_char] == '/'
let godoc_url = strpart(godoc_url, 0, last_char)
endif
" custom godoc installations expect /pkg before package names
let godoc_url .= "/pkg"
endif
return godoc_url
endfunction
function! go#config#DefReuseBuffer() abort
return get(g:, 'go_def_reuse_buffer', 0)
endfunction
function! go#config#DefMode() abort
return get(g:, 'go_def_mode', 'guru')
endfunction
function! go#config#DeclsIncludes() abort
return get(g:, 'go_decls_includes', 'func,type')
endfunction
function! go#config#Debug() abort
return get(g:, 'go_debug', [])
endfunction
function! go#config#DebugWindows() abort
return get(g:, 'go_debug_windows', {
\ 'stack': 'leftabove 20vnew',
\ 'out': 'botright 10new',
\ 'vars': 'leftabove 30vnew',
\ }
\ )
endfunction
function! go#config#DebugAddress() abort
return get(g:, 'go_debug_address', '127.0.0.1:8181')
endfunction
function! go#config#DebugCommands() abort
" make sure g:go_debug_commands is set so that it can be added to easily.
let g:go_debug_commands = get(g:, 'go_debug_commands', {})
return g:go_debug_commands
endfunction
function! go#config#SetDebugDiag(value) abort
let g:go_debug_diag = a:value
endfunction
function! go#config#AutoSameids() abort
return get(g:, 'go_auto_sameids', 0)
endfunction
function! go#config#SetAutoSameids(value) abort
let g:go_auto_sameids = a:value
endfunction
function! go#config#AddtagsTransform() abort
return get(g:, 'go_addtags_transform', "snakecase")
endfunction
function! go#config#TemplateAutocreate() abort
return get(g:, "go_template_autocreate", 1)
endfunction
function! go#config#SetTemplateAutocreate(value) abort
let g:go_template_autocreate = a:value
endfunction
function! go#config#MetalinterCommand() abort
return get(g:, "go_metalinter_command", "")
endfunction
function! go#config#MetalinterAutosaveEnabled() abort
return get(g:, 'go_metalinter_autosave_enabled', ['vet', 'golint'])
endfunction
function! go#config#MetalinterEnabled() abort
return get(g:, "go_metalinter_enabled", ['vet', 'golint', 'errcheck'])
endfunction
function! go#config#MetalinterDisabled() abort
return get(g:, "go_metalinter_disabled", [])
endfunction
function! go#config#GolintBin() abort
return get(g:, "go_golint_bin", "golint")
endfunction
function! go#config#ErrcheckBin() abort
return get(g:, "go_errcheck_bin", "errcheck")
endfunction
function! go#config#MetalinterAutosave() abort
return get(g:, "go_metalinter_autosave", 0)
endfunction
function! go#config#SetMetalinterAutosave(value) abort
let g:go_metalinter_autosave = a:value
endfunction
function! go#config#ListHeight() abort
return get(g:, "go_list_height", 0)
endfunction
function! go#config#FmtAutosave() abort
return get(g:, "go_fmt_autosave", 1)
endfunction
function! go#config#SetFmtAutosave(value) abort
let g:go_fmt_autosave = a:value
endfunction
function! go#config#AsmfmtAutosave() abort
return get(g:, "go_asmfmt_autosave", 0)
endfunction
function! go#config#SetAsmfmtAutosave(value) abort
let g:go_asmfmt_autosave = a:value
endfunction
function! go#config#DocMaxHeight() abort
return get(g:, "go_doc_max_height", 20)
endfunction
function! go#config#AutoTypeInfo() abort
return get(g:, "go_auto_type_info", 0)
endfunction
function! go#config#SetAutoTypeInfo(value) abort
let g:go_auto_type_info = a:value
endfunction
function! go#config#AlternateMode() abort
return get(g:, "go_alternate_mode", "edit")
endfunction
function! go#config#DeclsMode() abort
return get(g:, "go_decls_mode", "")
endfunction
function! go#config#DocCommand() abort
return get(g:, "go_doc_command", ["godoc"])
endfunction
function! go#config#FmtCommand() abort
return get(g:, "go_fmt_command", "gofmt")
endfunction
function! go#config#FmtOptions() abort
return get(g:, "go_fmt_options", {})
endfunction
function! go#config#FmtFailSilently() abort
return get(g:, "go_fmt_fail_silently", 0)
endfunction
function! go#config#FmtExperimental() abort
return get(g:, "go_fmt_experimental", 0 )
endfunction
function! go#config#PlayOpenBrowser() abort
return get(g:, "go_play_open_browser", 1)
endfunction
function! go#config#GorenameBin() abort
return get(g:, "go_gorename_bin", "gorename")
endfunction
function! go#config#GorenamePrefill() abort
return get(g:, "go_gorename_prefill", 'expand("<cword>") =~# "^[A-Z]"' .
\ '? go#util#pascalcase(expand("<cword>"))' .
\ ': go#util#camelcase(expand("<cword>"))')
endfunction
function! go#config#TextobjIncludeFunctionDoc() abort
return get(g:, "go_textobj_include_function_doc", 1)
endfunction
function! go#config#TextobjIncludeVariable() abort
return get(g:, "go_textobj_include_variable", 1)
endfunction
function! go#config#BinPath() abort
return get(g:, "go_bin_path", "")
endfunction
function! go#config#HighlightArrayWhitespaceError() abort
return get(g:, 'go_highlight_array_whitespace_error', 0)
endfunction
function! go#config#HighlightChanWhitespaceError() abort
return get(g:, 'go_highlight_chan_whitespace_error', 0)
endfunction
function! go#config#HighlightExtraTypes() abort
return get(g:, 'go_highlight_extra_types', 0)
endfunction
function! go#config#HighlightSpaceTabError() abort
return get(g:, 'go_highlight_space_tab_error', 0)
endfunction
function! go#config#HighlightTrailingWhitespaceError() abort
return get(g:, 'go_highlight_trailing_whitespace_error', 0)
endfunction
function! go#config#HighlightOperators() abort
return get(g:, 'go_highlight_operators', 0)
endfunction
function! go#config#HighlightFunctions() abort
return get(g:, 'go_highlight_functions', 0)
endfunction
function! go#config#HighlightFunctionArguments() abort
return get(g:, 'go_highlight_function_arguments', 0)
endfunction
function! go#config#HighlightFunctionCalls() abort
return get(g:, 'go_highlight_function_calls', 0)
endfunction
function! go#config#HighlightFields() abort
return get(g:, 'go_highlight_fields', 0)
endfunction
function! go#config#HighlightTypes() abort
return get(g:, 'go_highlight_types', 0)
endfunction
function! go#config#HighlightBuildConstraints() abort
return get(g:, 'go_highlight_build_constraints', 0)
endfunction
function! go#config#HighlightStringSpellcheck() abort
return get(g:, 'go_highlight_string_spellcheck', 1)
endfunction
function! go#config#HighlightFormatStrings() abort
return get(g:, 'go_highlight_format_strings', 1)
endfunction
function! go#config#HighlightGenerateTags() abort
return get(g:, 'go_highlight_generate_tags', 0)
endfunction
function! go#config#HighlightVariableAssignments() abort
return get(g:, 'go_highlight_variable_assignments', 0)
endfunction
function! go#config#HighlightVariableDeclarations() abort
return get(g:, 'go_highlight_variable_declarations', 0)
endfunction
function go#config#FoldEnable(...) abort
if a:0 > 0
return index(go#config#FoldEnable(), a:1) > -1
endif
return get(g:, 'go_fold_enable', ['block', 'import', 'varconst', 'package_comment'])
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
unlet g:go_gorename_prefill
endif
" vim: sw=2 ts=2 et
endif

31
autoload/vifm/globals.vim Normal file
View File

@@ -0,0 +1,31 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
" common functions for vifm plugin related to globals
" Maintainer: xaizek <xaizek@posteo.net>
" Last Change: January 02, 2018
" Initializes global variables to defaults unless they are already set
function! vifm#globals#Init()
if !exists('g:vifm_exec')
let g:vifm_exec = 'vifm'
endif
if !exists('g:vifm_exec_args')
let g:vifm_exec_args = ''
endif
if !exists('g:vifm_term')
if has('win32')
if filereadable('C:\Windows\system32\cmd.exe')
let g:vifm_term = 'C:\Windows\system32\cmd.exe /C'
else
" If don't find use the integrate shell it work too
let g:vifm_term = ''
endif
else
let g:vifm_term = 'xterm -e'
endif
endif
endfunction
endif

View File

@@ -1,16 +0,0 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
function! vital#of(name) abort
let files = globpath(&runtimepath, 'autoload/vital/' . a:name . '.vital')
let file = split(files, "\n")
if empty(file)
throw 'vital: version file not found: ' . a:name
endif
let ver = readfile(file[0], 'b')
if empty(ver)
throw 'vital: invalid version file: ' . a:name
endif
return vital#_{substitute(ver[0], '\W', '', 'g')}#new()
endfunction
endif

View File

@@ -1,313 +1,13 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
let s:self_version = expand('<sfile>:t:r') let s:_plugin_name = expand('<sfile>:t:r')
let s:self_file = expand('<sfile>')
" Note: The extra argument to globpath() was added in Patch 7.2.051. function! vital#{s:_plugin_name}#new() abort
let s:globpath_third_arg = v:version > 702 || v:version == 702 && has('patch51') return vital#{s:_plugin_name[1:]}#new()
let s:loaded = {}
let s:cache_module_path = {}
let s:cache_sid = {}
let s:_vital_files_cache_runtimepath = ''
let s:_vital_files_cache = []
let s:_unify_path_cache = {}
function! s:import(name, ...) abort
let target = {}
let functions = []
for a in a:000
if type(a) == type({})
let target = a
elseif type(a) == type([])
let functions = a
endif
unlet a
endfor
let module = s:_import(a:name)
if empty(functions)
call extend(target, module, 'keep')
else
for f in functions
if has_key(module, f) && !has_key(target, f)
let target[f] = module[f]
endif
endfor
endif
return target
endfunction endfunction
function! s:load(...) dict abort function! vital#{s:_plugin_name}#function(funcname) abort
for arg in a:000 silent! return function(a:funcname)
let [name; as] = type(arg) == type([]) ? arg[: 1] : [arg, arg]
let target = split(join(as, ''), '\W\+')
let dict = self
let dict_type = type({})
while !empty(target)
let ns = remove(target, 0)
if !has_key(dict, ns)
let dict[ns] = {}
endif
if type(dict[ns]) == dict_type
let dict = dict[ns]
else
unlet dict
break
endif
endwhile
if exists('dict')
call extend(dict, s:_import(name))
endif
unlet arg
endfor
return self
endfunction
function! s:unload() abort
let s:loaded = {}
let s:cache_sid = {}
let s:cache_module_path = {}
endfunction
function! s:exists(name) abort
return s:_get_module_path(a:name) !=# ''
endfunction
function! s:search(pattern) abort
let paths = s:_vital_files(a:pattern)
let modules = sort(map(paths, 's:_file2module(v:val)'))
return s:_uniq(modules)
endfunction
function! s:expand_modules(entry, all) abort
if type(a:entry) == type([])
let candidates = s:_concat(map(copy(a:entry), 's:search(v:val)'))
if empty(candidates)
throw printf('vital: Any of module %s is not found', string(a:entry))
endif
if eval(join(map(copy(candidates), 'has_key(a:all, v:val)'), '+'))
let modules = []
else
let modules = [candidates[0]]
endif
else
let modules = s:search(a:entry)
if empty(modules)
throw printf('vital: Module %s is not found', a:entry)
endif
endif
call filter(modules, '!has_key(a:all, v:val)')
for module in modules
let a:all[module] = 1
endfor
return modules
endfunction
function! s:_import(name) abort
if type(a:name) == type(0)
return s:_build_module(a:name)
endif
let path = s:_get_module_path(a:name)
if path ==# ''
throw 'vital: module not found: ' . a:name
endif
let sid = s:_get_sid_by_script(path)
if !sid
try
execute 'source' fnameescape(path)
catch /^Vim\%((\a\+)\)\?:E484/
throw 'vital: module not found: ' . a:name
catch /^Vim\%((\a\+)\)\?:E127/
" Ignore.
endtry
let sid = s:_get_sid_by_script(path)
endif
return s:_build_module(sid)
endfunction
function! s:_get_module_path(name) abort
let key = a:name . '_'
if has_key(s:cache_module_path, key)
return s:cache_module_path[key]
endif
if s:_is_absolute_path(a:name) && filereadable(a:name)
return a:name
endif
if a:name ==# ''
let paths = [s:self_file]
elseif a:name =~# '\v^\u\w*%(\.\u\w*)*$'
let paths = s:_vital_files(a:name)
else
throw 'vital: Invalid module name: ' . a:name
endif
call filter(paths, 'filereadable(expand(v:val, 1))')
let path = get(paths, 0, '')
let s:cache_module_path[key] = path
return path
endfunction
function! s:_get_sid_by_script(path) abort
if has_key(s:cache_sid, a:path)
return s:cache_sid[a:path]
endif
let path = s:_unify_path(a:path)
for line in filter(split(s:_redir('scriptnames'), "\n"),
\ 'stridx(v:val, s:self_version) > 0')
let list = matchlist(line, '^\s*\(\d\+\):\s\+\(.\+\)\s*$')
if !empty(list) && s:_unify_path(list[2]) ==# path
let s:cache_sid[a:path] = list[1] - 0
return s:cache_sid[a:path]
endif
endfor
return 0
endfunction
function! s:_file2module(file) abort
let filename = fnamemodify(a:file, ':p:gs?[\\/]?/?')
let tail = matchstr(filename, 'autoload/vital/_\w\+/\zs.*\ze\.vim$')
return join(split(tail, '[\\/]\+'), '.')
endfunction
if filereadable(expand('<sfile>:r') . '.VIM')
" resolve() is slow, so we cache results.
" Note: On windows, vim can't expand path names from 8.3 formats.
" So if getting full path via <sfile> and $HOME was set as 8.3 format,
" vital load duplicated scripts. Below's :~ avoid this issue.
function! s:_unify_path(path) abort
if has_key(s:_unify_path_cache, a:path)
return s:_unify_path_cache[a:path]
endif
let value = tolower(fnamemodify(resolve(fnamemodify(
\ a:path, ':p')), ':~:gs?[\\/]?/?'))
let s:_unify_path_cache[a:path] = value
return value
endfunction
else
function! s:_unify_path(path) abort
return resolve(fnamemodify(a:path, ':p:gs?[\\/]?/?'))
endfunction
endif
if s:globpath_third_arg
function! s:_runtime_files(path) abort
return split(globpath(&runtimepath, a:path, 1), "\n")
endfunction
else
function! s:_runtime_files(path) abort
return split(globpath(&runtimepath, a:path), "\n")
endfunction
endif
function! s:_vital_files(pattern) abort
if s:_vital_files_cache_runtimepath !=# &runtimepath
let path = printf('autoload/vital/%s/**/*.vim', s:self_version)
let s:_vital_files_cache = s:_runtime_files(path)
let mod = ':p:gs?[\\/]\+?/?'
call map(s:_vital_files_cache, 'fnamemodify(v:val, mod)')
let s:_vital_files_cache_runtimepath = &runtimepath
endif
let target = substitute(a:pattern, '\.', '/', 'g')
let target = substitute(target, '\*', '[^/]*', 'g')
let regexp = printf('autoload/vital/%s/%s.vim', s:self_version, target)
return filter(copy(s:_vital_files_cache), 'v:val =~# regexp')
endfunction
" Copy from System.Filepath
if has('win16') || has('win32') || has('win64')
function! s:_is_absolute_path(path) abort
return a:path =~? '^[a-z]:[/\\]'
endfunction
else
function! s:_is_absolute_path(path) abort
return a:path[0] ==# '/'
endfunction
endif
function! s:_build_module(sid) abort
if has_key(s:loaded, a:sid)
return copy(s:loaded[a:sid])
endif
let functions = s:_get_functions(a:sid)
let prefix = '<SNR>' . a:sid . '_'
let module = {}
for func in functions
let module[func] = function(prefix . func)
endfor
if has_key(module, '_vital_created')
call module._vital_created(module)
endif
let export_module = filter(copy(module), 'v:key =~# "^\\a"')
let s:loaded[a:sid] = get(g:, 'vital_debug', 0) ? module : export_module
if has_key(module, '_vital_loaded')
let V = vital#{s:self_version}#new()
call module._vital_loaded(V)
endif
return copy(s:loaded[a:sid])
endfunction
if exists('+regexpengine')
function! s:_get_functions(sid) abort
let funcs = s:_redir(printf("function /\\%%#=2^\<SNR>%d_", a:sid))
let map_pat = '<SNR>' . a:sid . '_\zs\w\+'
return map(split(funcs, "\n"), 'matchstr(v:val, map_pat)')
endfunction
else
function! s:_get_functions(sid) abort
let prefix = '<SNR>' . a:sid . '_'
let funcs = s:_redir('function')
let filter_pat = '^\s*function ' . prefix
let map_pat = prefix . '\zs\w\+'
return map(filter(split(funcs, "\n"),
\ 'stridx(v:val, prefix) > 0 && v:val =~# filter_pat'),
\ 'matchstr(v:val, map_pat)')
endfunction
endif
if exists('*uniq')
function! s:_uniq(list) abort
return uniq(a:list)
endfunction
else
function! s:_uniq(list) abort
let i = len(a:list) - 1
while 0 < i
if a:list[i] ==# a:list[i - 1]
call remove(a:list, i)
let i -= 2
else
let i -= 1
endif
endwhile
return a:list
endfunction
endif
function! s:_concat(lists) abort
let result_list = []
for list in a:lists
let result_list += list
endfor
return result_list
endfunction
function! s:_redir(cmd) abort
let [save_verbose, save_verbosefile] = [&verbose, &verbosefile]
set verbose=0 verbosefile=
redir => res
silent! execute a:cmd
redir END
let [&verbose, &verbosefile] = [save_verbose, save_verbosefile]
return res
endfunction
function! vital#{s:self_version}#new() abort
return s:_import('')
endfunction endfunction
endif endif

View File

@@ -1,5 +1,14 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___'
function! s:_SID() abort
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
endfunction
execute join(['function! vital#_crystal#ColorEcho#import() abort', printf("return map({'get_echorizer': '', 'echo': '', 'is_available': ''}, \"vital#_crystal#function('<SNR>%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n")
delfunction s:_SID
" ___vital___
scriptencoding utf-8 scriptencoding utf-8
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim

View File

@@ -1,5 +1,14 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___'
function! s:_SID() abort
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
endfunction
execute join(['function! vital#_crystal#Data#List#import() abort', printf("return map({'combinations': '', 'and': '', 'sort_by': '', 'foldr1': '', 'sort': '', 'flatten': '', 'has_index': '', 'find_indices': '', 'any': '', 'unshift': '', 'span': '', 'pop': '', 'binary_search': '', 'uniq_by': '', 'or': '', 'all': '', 'zip': '', 'find_last_index': '', 'find': '', 'partition': '', 'shift': '', 'permutations': '', 'break': '', 'max_by': '', 'foldl': '', 'foldr': '', 'find_index': '', 'drop_while': '', 'group_by': '', 'take_while': '', 'conj': '', 'push': '', 'char_range': '', 'cons': '', 'foldl1': '', 'intersect': '', 'concat': '', 'map_accum': '', 'clear': '', 'has_common_items': '', 'product': '', 'zip_fill': '', 'uniq': '', 'has': '', 'min_by': '', 'with_index': ''}, \"vital#_crystal#function('<SNR>%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n")
delfunction s:_SID
" ___vital___
" Utilities for list. " Utilities for list.
let s:save_cpo = &cpo let s:save_cpo = &cpo
@@ -175,6 +184,11 @@ function! s:take_while(f, xs) abort
return s:span(a:f, a:xs)[0] return s:span(a:f, a:xs)[0]
endfunction endfunction
" similar to Haskell's Data.List.dropWhile
function! s:drop_while(f, xs) abort
return s:span(a:f, a:xs)[1]
endfunction
" similar to Haskell's Data.List.partition " similar to Haskell's Data.List.partition
function! s:partition(f, xs) abort function! s:partition(f, xs) abort
return [filter(copy(a:xs), a:f), filter(copy(a:xs), '!(' . a:f . ')')] return [filter(copy(a:xs), a:f), filter(copy(a:xs), '!(' . a:f . ')')]
@@ -271,14 +285,22 @@ endfunction
" similar to Ruby's detect or Haskell's find. " similar to Ruby's detect or Haskell's find.
function! s:find(list, default, f) abort function! s:find(list, default, f) abort
let l:Call = type(a:f) is type(function('function'))
\ ? function('call')
\ : function('s:_call_string_expr')
for x in a:list for x in a:list
if eval(substitute(a:f, 'v:val', string(x), 'g')) if l:Call(a:f, [x])
return x return x
endif endif
endfor endfor
return a:default return a:default
endfunction endfunction
function! s:_call_string_expr(expr, args) abort
return map([a:args[0]], a:expr)[0]
endfunction
" Returns the index of the first element which satisfies the given expr. " Returns the index of the first element which satisfies the given expr.
function! s:find_index(xs, f, ...) abort function! s:find_index(xs, f, ...) abort
let len = len(a:xs) let len = len(a:xs)
@@ -426,7 +448,7 @@ function! s:combinations(list, r) abort
if a:r > len(a:list) if a:r > len(a:list)
return [] return []
elseif a:r < 0 elseif a:r < 0
throw 'vital: Data:List: {r} must be non-negative integer' throw 'vital: Data.List: {r} must be non-negative integer'
endif endif
let n = len(a:list) let n = len(a:list)
let result = [] let result = []

View File

@@ -1,5 +1,14 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___'
function! s:_SID() abort
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
endfunction
execute join(['function! vital#_crystal#Data#String#import() abort', printf("return map({'starts_with': '', 'split3': '', 'replace_first': '', 'chop': '', 'unescape': '', 'split_posix_text': '', 'replace': '', 'scan': '', 'strwidthpart': '', 'common_head': '', 'reverse': '', 'escape_pattern': '', 'trim_end': '', '_vital_depends': '', 'wrap': '', 'join_posix_lines': '', 'contains_multibyte': '', 'truncate_skipping': '', 'split_leftright': '', 'ends_with': '', 'nsplit': '', 'strwidthpart_reverse': '', 'unescape_pattern': '', 'levenshtein_distance': '', 'trim_start': '', 'justify_equal_spacing': '', 'nr2hex': '', 'iconv': '', 'pad_left': '', 'nr2enc_char': '', 'lines': '', 'repair_posix_text': '', 'nr2byte': '', 'trim': '', 'diffidx': '', 'truncate': '', 'split_by_displaywidth': '', '_vital_created': '', 'padding_by_displaywidth': '', 'hash': '', 'chomp': '', 'pad_between_letters': '', 'dstring': '', 'pad_both_sides': '', 'substitute_last': '', 'pad_right': '', 'remove_ansi_sequences': '', '_vital_loaded': ''}, \"vital#_crystal#function('<SNR>%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n")
delfunction s:_SID
" ___vital___
" Utilities for string. " Utilities for string.
let s:save_cpo = &cpo let s:save_cpo = &cpo
@@ -7,12 +16,21 @@ set cpo&vim
function! s:_vital_loaded(V) abort function! s:_vital_loaded(V) abort
let s:V = a:V let s:V = a:V
let s:P = s:V.import('Prelude')
let s:L = s:V.import('Data.List') let s:L = s:V.import('Data.List')
endfunction endfunction
function! s:_vital_depends() abort function! s:_vital_depends() abort
return ['Prelude', 'Data.List'] return ['Data.List']
endfunction
function! s:_vital_created(module) abort
" Expose script-local funcref
if exists('s:strchars')
let a:module.strchars = s:strchars
endif
if exists('s:wcswidth')
let a:module.wcswidth = s:wcswidth
endif
endfunction endfunction
" Substitute a:from => a:to by string. " Substitute a:from => a:to by string.
@@ -61,7 +79,7 @@ function! s:common_head(strs) abort
endif endif
let strs = len == 2 ? a:strs : sort(copy(a:strs)) let strs = len == 2 ? a:strs : sort(copy(a:strs))
let pat = substitute(strs[0], '.', '\="[" . escape(submatch(0), "^\\") . "]"', 'g') let pat = substitute(strs[0], '.', '\="[" . escape(submatch(0), "^\\") . "]"', 'g')
return pat == '' ? '' : matchstr(strs[-1], '\C^\%[' . pat . ']') return pat ==# '' ? '' : matchstr(strs[-1], '\C^\%[' . pat . ']')
endfunction endfunction
" Split to two elements of List. ([left, right]) " Split to two elements of List. ([left, right])
@@ -130,9 +148,7 @@ endfunction
" even if a:str contains multibyte character(s). " even if a:str contains multibyte character(s).
" s:strchars(str) {{{ " s:strchars(str) {{{
if exists('*strchars') if exists('*strchars')
function! s:strchars(str) abort let s:strchars = function('strchars')
return strchars(a:str)
endfunction
else else
function! s:strchars(str) abort function! s:strchars(str) abort
return strlen(substitute(copy(a:str), '.', 'x', 'g')) return strlen(substitute(copy(a:str), '.', 'x', 'g'))
@@ -210,7 +226,7 @@ function! s:nr2byte(nr) abort
endfunction endfunction
function! s:nr2enc_char(charcode) abort function! s:nr2enc_char(charcode) abort
if &encoding == 'utf-8' if &encoding ==# 'utf-8'
return nr2char(a:charcode) return nr2char(a:charcode)
endif endif
let char = s:nr2byte(a:charcode) let char = s:nr2byte(a:charcode)
@@ -222,7 +238,7 @@ endfunction
function! s:nr2hex(nr) abort function! s:nr2hex(nr) abort
let n = a:nr let n = a:nr
let r = "" let r = ''
while n while n
let r = '0123456789ABCDEF'[n % 16] . r let r = '0123456789ABCDEF'[n % 16] . r
let n = n / 16 let n = n / 16
@@ -318,7 +334,7 @@ function! s:levenshtein_distance(str1, str2) abort
let letters2 = split(a:str2, '\zs') let letters2 = split(a:str2, '\zs')
let length1 = len(letters1) let length1 = len(letters1)
let length2 = len(letters2) let length2 = len(letters2)
let distances = map(range(1, length1 + 1), 'map(range(1, length2 + 1), "0")') let distances = map(range(1, length1 + 1), 'map(range(1, length2 + 1), ''0'')')
for i1 in range(0, length1) for i1 in range(0, length1)
let distances[i1][0] = i1 let distances[i1][0] = i1
@@ -373,7 +389,7 @@ function! s:split_by_displaywidth(expr, width, float, is_wrap) abort
let text = '' let text = ''
while cs_index < len(cs) while cs_index < len(cs)
if cs[cs_index] is "\n" if cs[cs_index] is# "\n"
let text = s:padding_by_displaywidth(text, a:width, a:float) let text = s:padding_by_displaywidth(text, a:width, a:float)
let lines += [text] let lines += [text]
let text = '' let text = ''
@@ -394,7 +410,7 @@ function! s:split_by_displaywidth(expr, width, float, is_wrap) abort
if a:is_wrap if a:is_wrap
if a:width < w if a:width < w
if a:width < strdisplaywidth(cs[cs_index]) if a:width < strdisplaywidth(cs[cs_index])
while get(cs, cs_index, "\n") isnot "\n" while get(cs, cs_index, "\n") isnot# "\n"
let cs_index += 1 let cs_index += 1
endwhile endwhile
continue continue
@@ -403,7 +419,7 @@ function! s:split_by_displaywidth(expr, width, float, is_wrap) abort
endif endif
endif endif
else else
while get(cs, cs_index, "\n") isnot "\n" while get(cs, cs_index, "\n") isnot# "\n"
let cs_index += 1 let cs_index += 1
endwhile endwhile
continue continue
@@ -440,8 +456,9 @@ function! s:truncate(str, width) abort
" http://github.com/mattn/googlereader-vim/tree/master " http://github.com/mattn/googlereader-vim/tree/master
if a:str =~# '^[\x00-\x7f]*$' if a:str =~# '^[\x00-\x7f]*$'
return len(a:str) < a:width ? return len(a:str) < a:width
\ printf('%-'.a:width.'s', a:str) : strpart(a:str, 0, a:width) \ ? printf('%-' . a:width . 's', a:str)
\ : strpart(a:str, 0, a:width)
endif endif
let ret = a:str let ret = a:str
@@ -471,57 +488,20 @@ function! s:truncate_skipping(str, max, footer_width, separator) abort
endfunction endfunction
function! s:strwidthpart(str, width) abort function! s:strwidthpart(str, width) abort
if a:width <= 0 let str = tr(a:str, "\t", ' ')
return '' let vcol = a:width + 2
endif return matchstr(str, '.*\%<' . (vcol < 0 ? 0 : vcol) . 'v')
let strarr = split(a:str, '\zs')
let width = s:wcswidth(a:str)
let index = len(strarr)
let diff = (index + 1) / 2
let rightindex = index - 1
while width > a:width
let index = max([rightindex - diff + 1, 0])
let partwidth = s:wcswidth(join(strarr[(index):(rightindex)], ''))
if width - partwidth >= a:width || diff <= 1
let width -= partwidth
let rightindex = index - 1
endif
if diff > 1
let diff = diff / 2
endif
endwhile
return index ? join(strarr[:index - 1], '') : ''
endfunction endfunction
function! s:strwidthpart_reverse(str, width) abort function! s:strwidthpart_reverse(str, width) abort
if a:width <= 0 let str = tr(a:str, "\t", ' ')
return '' let vcol = s:wcswidth(str) - a:width
endif return matchstr(str, '\%>' . (vcol < 0 ? 0 : vcol) . 'v.*')
let strarr = split(a:str, '\zs')
let width = s:wcswidth(a:str)
let strlen = len(strarr)
let diff = (strlen + 1) / 2
let leftindex = 0
let index = -1
while width > a:width
let index = min([leftindex + diff, strlen]) - 1
let partwidth = s:wcswidth(join(strarr[(leftindex):(index)], ''))
if width - partwidth >= a:width || diff <= 1
let width -= partwidth
let leftindex = index + 1
endif
if diff > 1
let diff = diff / 2
endif
endwhile
return index < strlen ? join(strarr[(index + 1):], '') : ''
endfunction endfunction
if v:version >= 703 if v:version >= 703
" Use builtin function. " Use builtin function.
function! s:wcswidth(str) abort let s:wcswidth = function('strwidth')
return strwidth(a:str)
endfunction
else else
function! s:wcswidth(str) abort function! s:wcswidth(str) abort
if a:str =~# '^[\x00-\x7f]*$' if a:str =~# '^[\x00-\x7f]*$'
@@ -564,9 +544,88 @@ else
endfunction endfunction
endif endif
function! s:remove_ansi_sequences(text) abort
return substitute(a:text, '\e\[\%(\%(\d\+;\)*\d\+\)\?[mK]', '', 'g')
endfunction
function! s:escape_pattern(str) abort
" escape characters for no-magic
return escape(a:str, '^$~.*[]\')
endfunction
function! s:unescape_pattern(str) abort
" unescape characters for no-magic
return s:unescape(a:str, '^$~.*[]\')
endfunction
function! s:unescape(str, chars) abort
let chars = map(split(a:chars, '\zs'), 'escape(v:val, ''^$~.*[]\'')')
return substitute(a:str, '\\\(' . join(chars, '\|') . '\)', '\1', 'g')
endfunction
function! s:iconv(expr, from, to) abort
if a:from ==# '' || a:to ==# '' || a:from ==? a:to
return a:expr
endif
let result = iconv(a:expr, a:from, a:to)
return empty(result) ? a:expr : result
endfunction
" NOTE:
" A definition of a TEXT file is "A file that contains characters organized
" into one or more lines."
" A definition of a LINE is "A sequence of zero or more non- <newline>s
" plus a terminating <newline>"
" That's why {stdin} always ends with <newline> ideally. However, there are
" some programs which does not follow the POSIX rule and a Vim's way to join
" List into TEXT; join({text}, "\n"); does not add <newline> to the end of
" the last line.
" That's why add a trailing <newline> if it does not exist.
" REF:
" http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_392
" http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_205
" :help split()
" NOTE:
" it does nothing if the text is a correct POSIX text
function! s:repair_posix_text(text, ...) abort
let newline = get(a:000, 0, "\n")
return a:text =~# '\n$' ? a:text : a:text . newline
endfunction
" NOTE:
" A definition of a TEXT file is "A file that contains characters organized
" into one or more lines."
" A definition of a LINE is "A sequence of zero or more non- <newline>s
" plus a terminating <newline>"
" REF:
" http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_392
" http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_205
function! s:join_posix_lines(lines, ...) abort
let newline = get(a:000, 0, "\n")
return join(a:lines, newline) . newline
endfunction
" NOTE:
" A definition of a TEXT file is "A file that contains characters organized
" into one or more lines."
" A definition of a LINE is "A sequence of zero or more non- <newline>s
" plus a terminating <newline>"
" TEXT into List; split({text}, '\r\?\n', 1); add an extra empty line at the
" end of List because the end of TEXT ends with <newline> and keepempty=1 is
" specified. (btw. keepempty=0 cannot be used because it will remove
" emptylines in the head and the tail).
" That's why removing a trailing <newline> before proceeding to 'split' is required
" REF:
" http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_392
" http://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap03.html#tag_03_205
function! s:split_posix_text(text, ...) abort
let newline = get(a:000, 0, '\r\?\n')
let text = substitute(a:text, newline . '$', '', '')
return split(text, newline, 1)
endfunction
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0: " vim:set et ts=2 sts=2 sw=2 tw=0:
endif endif

View File

@@ -1,389 +0,0 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
let s:save_cpo = &cpo
set cpo&vim
if v:version ># 703 ||
\ (v:version is 703 && has('patch465'))
function! s:glob(expr) abort
return glob(a:expr, 1, 1)
endfunction
else
function! s:glob(expr) abort
let R = glob(a:expr, 1)
return split(R, '\n')
endfunction
endif
function! s:globpath(path, expr) abort
let R = globpath(a:path, a:expr, 1)
return split(R, '\n')
endfunction
" Wrapper functions for type().
let [
\ s:__TYPE_NUMBER,
\ s:__TYPE_STRING,
\ s:__TYPE_FUNCREF,
\ s:__TYPE_LIST,
\ s:__TYPE_DICT,
\ s:__TYPE_FLOAT] = [
\ type(3),
\ type(""),
\ type(function('tr')),
\ type([]),
\ type({}),
\ has('float') ? type(str2float('0')) : -1]
" __TYPE_FLOAT = -1 when -float
" This doesn't match to anything.
" Number or Float
function! s:is_numeric(Value) abort
let _ = type(a:Value)
return _ ==# s:__TYPE_NUMBER
\ || _ ==# s:__TYPE_FLOAT
endfunction
" Number
function! s:is_number(Value) abort
return type(a:Value) ==# s:__TYPE_NUMBER
endfunction
" Float
function! s:is_float(Value) abort
return type(a:Value) ==# s:__TYPE_FLOAT
endfunction
" String
function! s:is_string(Value) abort
return type(a:Value) ==# s:__TYPE_STRING
endfunction
" Funcref
function! s:is_funcref(Value) abort
return type(a:Value) ==# s:__TYPE_FUNCREF
endfunction
" List
function! s:is_list(Value) abort
return type(a:Value) ==# s:__TYPE_LIST
endfunction
" Dictionary
function! s:is_dict(Value) abort
return type(a:Value) ==# s:__TYPE_DICT
endfunction
function! s:truncate_skipping(str, max, footer_width, separator) abort
call s:_warn_deprecated("truncate_skipping", "Data.String.truncate_skipping")
let width = s:wcswidth(a:str)
if width <= a:max
let ret = a:str
else
let header_width = a:max - s:wcswidth(a:separator) - a:footer_width
let ret = s:strwidthpart(a:str, header_width) . a:separator
\ . s:strwidthpart_reverse(a:str, a:footer_width)
endif
return s:truncate(ret, a:max)
endfunction
function! s:truncate(str, width) abort
" Original function is from mattn.
" http://github.com/mattn/googlereader-vim/tree/master
call s:_warn_deprecated("truncate", "Data.String.truncate")
if a:str =~# '^[\x00-\x7f]*$'
return len(a:str) < a:width ?
\ printf('%-'.a:width.'s', a:str) : strpart(a:str, 0, a:width)
endif
let ret = a:str
let width = s:wcswidth(a:str)
if width > a:width
let ret = s:strwidthpart(ret, a:width)
let width = s:wcswidth(ret)
endif
if width < a:width
let ret .= repeat(' ', a:width - width)
endif
return ret
endfunction
function! s:strwidthpart(str, width) abort
call s:_warn_deprecated("strwidthpart", "Data.String.strwidthpart")
if a:width <= 0
return ''
endif
let ret = a:str
let width = s:wcswidth(a:str)
while width > a:width
let char = matchstr(ret, '.$')
let ret = ret[: -1 - len(char)]
let width -= s:wcswidth(char)
endwhile
return ret
endfunction
function! s:strwidthpart_reverse(str, width) abort
call s:_warn_deprecated("strwidthpart_reverse", "Data.String.strwidthpart_reverse")
if a:width <= 0
return ''
endif
let ret = a:str
let width = s:wcswidth(a:str)
while width > a:width
let char = matchstr(ret, '^.')
let ret = ret[len(char) :]
let width -= s:wcswidth(char)
endwhile
return ret
endfunction
if v:version >= 703
" Use builtin function.
function! s:wcswidth(str) abort
call s:_warn_deprecated("wcswidth", "Data.String.wcswidth")
return strwidth(a:str)
endfunction
else
function! s:wcswidth(str) abort
call s:_warn_deprecated("wcswidth", "Data.String.wcswidth")
if a:str =~# '^[\x00-\x7f]*$'
return strlen(a:str)
end
let mx_first = '^\(.\)'
let str = a:str
let width = 0
while 1
let ucs = char2nr(substitute(str, mx_first, '\1', ''))
if ucs == 0
break
endif
let width += s:_wcwidth(ucs)
let str = substitute(str, mx_first, '', '')
endwhile
return width
endfunction
" UTF-8 only.
function! s:_wcwidth(ucs) abort
let ucs = a:ucs
if (ucs >= 0x1100
\ && (ucs <= 0x115f
\ || ucs == 0x2329
\ || ucs == 0x232a
\ || (ucs >= 0x2e80 && ucs <= 0xa4cf
\ && ucs != 0x303f)
\ || (ucs >= 0xac00 && ucs <= 0xd7a3)
\ || (ucs >= 0xf900 && ucs <= 0xfaff)
\ || (ucs >= 0xfe30 && ucs <= 0xfe6f)
\ || (ucs >= 0xff00 && ucs <= 0xff60)
\ || (ucs >= 0xffe0 && ucs <= 0xffe6)
\ || (ucs >= 0x20000 && ucs <= 0x2fffd)
\ || (ucs >= 0x30000 && ucs <= 0x3fffd)
\ ))
return 2
endif
return 1
endfunction
endif
let s:is_windows = has('win16') || has('win32') || has('win64') || has('win95')
let s:is_cygwin = has('win32unix')
let s:is_mac = !s:is_windows && !s:is_cygwin
\ && (has('mac') || has('macunix') || has('gui_macvim') ||
\ (!isdirectory('/proc') && executable('sw_vers')))
let s:is_unix = has('unix')
function! s:is_windows() abort
return s:is_windows
endfunction
function! s:is_cygwin() abort
return s:is_cygwin
endfunction
function! s:is_mac() abort
return s:is_mac
endfunction
function! s:is_unix() abort
return s:is_unix
endfunction
function! s:_warn_deprecated(name, alternative) abort
try
echohl Error
echomsg "Prelude." . a:name . " is deprecated! Please use " . a:alternative . " instead."
finally
echohl None
endtry
endfunction
function! s:smart_execute_command(action, word) abort
execute a:action . ' ' . (a:word == '' ? '' : '`=a:word`')
endfunction
function! s:escape_file_searching(buffer_name) abort
return escape(a:buffer_name, '*[]?{}, ')
endfunction
function! s:escape_pattern(str) abort
return escape(a:str, '~"\.^$[]*')
endfunction
function! s:getchar(...) abort
let c = call('getchar', a:000)
return type(c) == type(0) ? nr2char(c) : c
endfunction
function! s:getchar_safe(...) abort
let c = s:input_helper('getchar', a:000)
return type(c) == type("") ? c : nr2char(c)
endfunction
function! s:input_safe(...) abort
return s:input_helper('input', a:000)
endfunction
function! s:input_helper(funcname, args) abort
let success = 0
if inputsave() !=# success
throw 'vital: Prelude: inputsave() failed'
endif
try
return call(a:funcname, a:args)
finally
if inputrestore() !=# success
throw 'vital: Prelude: inputrestore() failed'
endif
endtry
endfunction
function! s:set_default(var, val) abort
if !exists(a:var) || type({a:var}) != type(a:val)
let {a:var} = a:val
endif
endfunction
function! s:substitute_path_separator(path) abort
return s:is_windows ? substitute(a:path, '\\', '/', 'g') : a:path
endfunction
function! s:path2directory(path) abort
return s:substitute_path_separator(isdirectory(a:path) ? a:path : fnamemodify(a:path, ':p:h'))
endfunction
function! s:_path2project_directory_git(path) abort
let parent = a:path
while 1
let path = parent . '/.git'
if isdirectory(path) || filereadable(path)
return parent
endif
let next = fnamemodify(parent, ':h')
if next == parent
return ''
endif
let parent = next
endwhile
endfunction
function! s:_path2project_directory_svn(path) abort
let search_directory = a:path
let directory = ''
let find_directory = s:escape_file_searching(search_directory)
let d = finddir('.svn', find_directory . ';')
if d == ''
return ''
endif
let directory = fnamemodify(d, ':p:h:h')
" Search parent directories.
let parent_directory = s:path2directory(
\ fnamemodify(directory, ':h'))
if parent_directory != ''
let d = finddir('.svn', parent_directory . ';')
if d != ''
let directory = s:_path2project_directory_svn(parent_directory)
endif
endif
return directory
endfunction
function! s:_path2project_directory_others(vcs, path) abort
let vcs = a:vcs
let search_directory = a:path
let find_directory = s:escape_file_searching(search_directory)
let d = finddir(vcs, find_directory . ';')
if d == ''
return ''
endif
return fnamemodify(d, ':p:h:h')
endfunction
function! s:path2project_directory(path, ...) abort
let is_allow_empty = get(a:000, 0, 0)
let search_directory = s:path2directory(a:path)
let directory = ''
" Search VCS directory.
for vcs in ['.git', '.bzr', '.hg', '.svn']
if vcs ==# '.git'
let directory = s:_path2project_directory_git(search_directory)
elseif vcs ==# '.svn'
let directory = s:_path2project_directory_svn(search_directory)
else
let directory = s:_path2project_directory_others(vcs, search_directory)
endif
if directory != ''
break
endif
endfor
" Search project file.
if directory == ''
for d in ['build.xml', 'prj.el', '.project', 'pom.xml', 'package.json',
\ 'Makefile', 'configure', 'Rakefile', 'NAnt.build',
\ 'P4CONFIG', 'tags', 'gtags']
let d = findfile(d, s:escape_file_searching(search_directory) . ';')
if d != ''
let directory = fnamemodify(d, ':p:h')
break
endif
endfor
endif
if directory == ''
" Search /src/ directory.
let base = s:substitute_path_separator(search_directory)
if base =~# '/src/'
let directory = base[: strridx(base, '/src/') + 3]
endif
endif
if directory == '' && !is_allow_empty
" Use original path.
let directory = search_directory
endif
return s:substitute_path_separator(directory)
endfunction
let &cpo = s:save_cpo
unlet s:save_cpo
" vim:set et ts=2 sts=2 sw=2 tw=0:
endif

View File

@@ -1,5 +1,14 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___'
function! s:_SID() abort
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
endfunction
execute join(['function! vital#_crystal#Process#import() abort', printf("return map({'shellescape': '', 'has_vimproc': '', 'system': '', 'iconv': '', 'spawn': '', 'get_last_status': ''}, \"vital#_crystal#function('<SNR>%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n")
delfunction s:_SID
" ___vital___
" TODO: move all comments to doc file. " TODO: move all comments to doc file.
" "
" "
@@ -21,62 +30,36 @@ let s:need_trans = v:version < 704 || (v:version == 704 && !has('patch122'))
let s:TYPE_DICT = type({}) let s:TYPE_DICT = type({})
let s:TYPE_LIST = type([]) let s:TYPE_LIST = type([])
let s:TYPE_STRING = type("") let s:TYPE_STRING = type('')
" Execute program in the background from Vim.
" Return an empty string always.
"
" If a:expr is a List, shellescape() each argument.
" If a:expr is a String, the arguments are passed as-is.
"
" Windows:
" Using :!start , execute program without via cmd.exe.
" Spawning 'expr' with 'noshellslash'
" keep special characters from unwanted expansion.
" (see :help shellescape())
"
" Unix:
" using :! , execute program in the background by shell.
function! s:spawn(expr, ...) abort function! s:spawn(expr, ...) abort
let shellslash = 0 if type(a:expr) is s:TYPE_LIST
if s:is_windows let special = 1
let shellslash = &l:shellslash let cmdline = join(map(a:expr, 's:shellescape(v:val, special)'), ' ')
setlocal noshellslash elseif type(a:expr) is s:TYPE_STRING
let cmdline = a:expr
if a:0 && a:1
" for :! command
let cmdline = substitute(cmdline, '\([!%#]\|<[^<>]\+>\)', '\\\1', 'g')
endif
else
throw 'vital: Process: invalid argument (value type:' . type(a:expr) . ')'
endif
if s:is_windows
silent execute '!start' cmdline
else
silent execute '!' cmdline '&'
endif endif
try
if type(a:expr) is s:TYPE_LIST
let special = 1
let cmdline = join(map(a:expr, 'shellescape(v:val, special)'), ' ')
elseif type(a:expr) is s:TYPE_STRING
let cmdline = a:expr
if a:0 && a:1
" for :! command
let cmdline = substitute(cmdline, '\([!%#]\|<[^<>]\+>\)', '\\\1', 'g')
endif
else
throw 'Process.spawn(): invalid argument (value type:'.type(a:expr).')'
endif
if s:is_windows
silent execute '!start' cmdline
else
silent execute '!' cmdline '&'
endif
finally
if s:is_windows
let &l:shellslash = shellslash
endif
endtry
return '' return ''
endfunction endfunction
" iconv() wrapper for safety. " iconv() wrapper for safety.
function! s:iconv(expr, from, to) abort function! s:iconv(expr, from, to) abort
if a:from == '' || a:to == '' || a:from ==? a:to if a:from ==# '' || a:to ==# '' || a:from ==? a:to
return a:expr return a:expr
endif endif
let result = iconv(a:expr, a:from, a:to) let result = iconv(a:expr, a:from, a:to)
return result != '' ? result : a:expr return result !=# '' ? result : a:expr
endfunction endfunction
" Check vimproc. " Check vimproc.
@@ -128,7 +111,7 @@ function! s:system(str, ...) abort
elseif type(a:1) is s:TYPE_STRING elseif type(a:1) is s:TYPE_STRING
let args += [s:iconv(a:1, &encoding, 'char')] let args += [s:iconv(a:1, &encoding, 'char')]
else else
throw 'Process.system(): invalid argument (value type:'.type(a:1).')' throw 'vital: Process: invalid argument (value type:' . type(a:1) . ')'
endif endif
elseif a:0 >= 2 elseif a:0 >= 2
" {command} [, {input} [, {timeout}]] " {command} [, {input} [, {timeout}]]
@@ -145,13 +128,16 @@ function! s:system(str, ...) abort
elseif type(a:str) is s:TYPE_STRING elseif type(a:str) is s:TYPE_STRING
let command = a:str let command = a:str
else else
throw 'Process.system(): invalid argument (value type:'.type(a:str).')' throw 'vital: Process: invalid argument (value type:' . type(a:str) . ')'
endif endif
if s:need_trans if s:need_trans
let command = s:iconv(command, &encoding, 'char') let command = s:iconv(command, &encoding, 'char')
endif endif
let args = [command] + args let args = [command] + args
if background && (use_vimproc || !s:is_windows) if background && (use_vimproc || !s:is_windows)
if has('nvim')
throw "vital: Process: neovim's system() doesn't support background(&) process (cmdline:" . string(a:str) . ')'
endif
let args[0] = args[0] . ' &' let args[0] = args[0] . ' &'
endif endif
@@ -167,8 +153,14 @@ function! s:get_last_status() abort
endfunction endfunction
if s:is_windows if s:is_windows
function! s:shellescape(command) abort function! s:shellescape(...) abort
return substitute(a:command, '[&()[\]{}^=;!''+,`~]', '^\0', 'g') try
let shellslash = &shellslash
set noshellslash
return call('shellescape', a:000)
finally
let &shellslash = shellslash
endtry
endfunction endfunction
else else
function! s:shellescape(...) abort function! s:shellescape(...) abort

View File

@@ -1,5 +1,14 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" ___vital___
" NOTE: lines between '" ___vital___' is generated by :Vitalize.
" Do not mofidify the code nor insert new lines before '" ___vital___'
function! s:_SID() abort
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
endfunction
execute join(['function! vital#_crystal#Web#JSON#import() abort', printf("return map({'decode': '', '_vital_depends': '', '_vital_created': '', 'encode': '', '_vital_loaded': ''}, \"vital#_crystal#function('<SNR>%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n")
delfunction s:_SID
" ___vital___
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim
@@ -15,11 +24,6 @@ function! s:_null() abort
return 0 return 0
endfunction endfunction
let s:const = {}
let s:const.true = function('s:_true')
let s:const.false = function('s:_false')
let s:const.null = function('s:_null')
function! s:_resolve(val, prefix) abort function! s:_resolve(val, prefix) abort
let t = type(a:val) let t = type(a:val)
if t == type('') if t == type('')
@@ -36,6 +40,13 @@ endfunction
function! s:_vital_created(module) abort function! s:_vital_created(module) abort
" define constant variables " define constant variables
if !exists('s:const')
let s:const = {}
let s:const.true = function('s:_true')
let s:const.false = function('s:_false')
let s:const.null = function('s:_null')
lockvar s:const
endif
call extend(a:module, s:const) call extend(a:module, s:const)
endfunction endfunction
@@ -55,7 +66,7 @@ function! s:decode(json, ...) abort
let settings = extend({ let settings = extend({
\ 'use_token': 0, \ 'use_token': 0,
\}, get(a:000, 0, {})) \}, get(a:000, 0, {}))
let json = iconv(a:json, "utf-8", &encoding) let json = iconv(a:json, 'utf-8', &encoding)
let json = join(split(json, "\n"), '') let json = join(split(json, "\n"), '')
let json = substitute(json, '\\u34;', '\\"', 'g') let json = substitute(json, '\\u34;', '\\"', 'g')
let json = substitute(json, '\\u\(\x\x\x\x\)', '\=s:string.nr2enc_char("0x".submatch(1))', 'g') let json = substitute(json, '\\u\(\x\x\x\x\)', '\=s:string.nr2enc_char("0x".submatch(1))', 'g')
@@ -75,7 +86,11 @@ endfunction
" @vimlint(EVL102, 0, l:true) " @vimlint(EVL102, 0, l:true)
" @vimlint(EVL102, 0, l:false) " @vimlint(EVL102, 0, l:false)
function! s:encode(val) abort function! s:encode(val, ...) abort
let settings = extend({
\ 'indent': 0,
\}, get(a:000, 0, {})
\)
if type(a:val) == 0 if type(a:val) == 0
return a:val return a:val
elseif type(a:val) == 1 elseif type(a:val) == 1
@@ -83,7 +98,7 @@ function! s:encode(val) abort
let json = substitute(json, "\r", '\\r', 'g') let json = substitute(json, "\r", '\\r', 'g')
let json = substitute(json, "\n", '\\n', 'g') let json = substitute(json, "\n", '\\n', 'g')
let json = substitute(json, "\t", '\\t', 'g') let json = substitute(json, "\t", '\\t', 'g')
return iconv(json, &encoding, "utf-8") return iconv(json, &encoding, 'utf-8')
elseif type(a:val) == 2 elseif type(a:val) == 2
if s:const.true == a:val if s:const.true == a:val
return 'true' return 'true'
@@ -96,14 +111,69 @@ function! s:encode(val) abort
return string(a:val) return string(a:val)
endif endif
elseif type(a:val) == 3 elseif type(a:val) == 3
return '[' . join(map(copy(a:val), 's:encode(v:val)'), ',') . ']' return s:_encode_list(a:val, settings)
elseif type(a:val) == 4 elseif type(a:val) == 4
return '{' . join(map(keys(a:val), 's:encode(v:val).":".s:encode(a:val[v:val])'), ',') . '}' return s:_encode_dict(a:val, settings)
else else
return string(a:val) return string(a:val)
endif endif
endfunction endfunction
" @vimlint(EVL102, 1, l:ns)
function! s:_encode_list(val, settings) abort
if empty(a:val)
return '[]'
elseif !a:settings.indent
let encoded_candidates = map(copy(a:val), 's:encode(v:val, a:settings)')
return printf('[%s]', join(encoded_candidates, ','))
else
let previous_indent = get(a:settings, '_previous_indent')
let indent = previous_indent + a:settings.indent
let ns = extend(copy(a:settings), {
\ '_previous_indent': indent,
\})
let encoded_candidates = map(
\ copy(a:val),
\ printf('''%s'' . s:encode(v:val, ns)', repeat(' ', indent)),
\)
return printf(
\ "[\n%s\n%s]",
\ join(encoded_candidates, ",\n"),
\ repeat(' ', previous_indent)
\)
endif
endfunction
" @vimlint(EVL102, 0, l:ns)
" @vimlint(EVL102, 1, l:ns)
function! s:_encode_dict(val, settings) abort
if empty(a:val)
return '{}'
elseif !a:settings.indent
let encoded_candidates = map(keys(a:val),
\ 's:encode(v:val, a:settings) . '':'' . s:encode(a:val[v:val], a:settings)'
\)
return printf('{%s}', join(encoded_candidates, ','))
else
let previous_indent = get(a:settings, '_previous_indent')
let indent = previous_indent + a:settings.indent
let ns = extend(copy(a:settings), {
\ '_previous_indent': indent,
\})
let encoded_candidates = map(keys(a:val),
\ printf(
\ '''%s'' . s:encode(v:val, ns) . '': '' . s:encode(a:val[v:val], ns)',
\ repeat(' ', indent),
\ ),
\)
return printf("{\n%s\n%s}",
\ join(encoded_candidates, ",\n"),
\ repeat(' ', previous_indent),
\)
endif
endfunction
" @vimlint(EVL102, 0, l:ns)
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo

332
autoload/vital/crystal.vim Normal file
View File

@@ -0,0 +1,332 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
let s:plugin_name = expand('<sfile>:t:r')
let s:vital_base_dir = expand('<sfile>:h')
let s:project_root = expand('<sfile>:h:h:h')
let s:is_vital_vim = s:plugin_name is# 'vital'
let s:loaded = {}
let s:cache_sid = {}
" function() wrapper
if v:version > 703 || v:version == 703 && has('patch1170')
function! s:_function(fstr) abort
return function(a:fstr)
endfunction
else
function! s:_SID() abort
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
endfunction
let s:_s = '<SNR>' . s:_SID() . '_'
function! s:_function(fstr) abort
return function(substitute(a:fstr, 's:', s:_s, 'g'))
endfunction
endif
function! vital#{s:plugin_name}#new() abort
return s:new(s:plugin_name)
endfunction
function! vital#{s:plugin_name}#import(...) abort
if !exists('s:V')
let s:V = s:new(s:plugin_name)
endif
return call(s:V.import, a:000, s:V)
endfunction
let s:Vital = {}
function! s:new(plugin_name) abort
let base = deepcopy(s:Vital)
let base._plugin_name = a:plugin_name
return base
endfunction
function! s:vital_files() abort
if !exists('s:vital_files')
let s:vital_files = map(
\ s:is_vital_vim ? s:_global_vital_files() : s:_self_vital_files(),
\ 'fnamemodify(v:val, ":p:gs?[\\\\/]?/?")')
endif
return copy(s:vital_files)
endfunction
let s:Vital.vital_files = s:_function('s:vital_files')
function! s:import(name, ...) abort dict
let target = {}
let functions = []
for a in a:000
if type(a) == type({})
let target = a
elseif type(a) == type([])
let functions = a
endif
unlet a
endfor
let module = self._import(a:name)
if empty(functions)
call extend(target, module, 'keep')
else
for f in functions
if has_key(module, f) && !has_key(target, f)
let target[f] = module[f]
endif
endfor
endif
return target
endfunction
let s:Vital.import = s:_function('s:import')
function! s:load(...) abort dict
for arg in a:000
let [name; as] = type(arg) == type([]) ? arg[: 1] : [arg, arg]
let target = split(join(as, ''), '\W\+')
let dict = self
let dict_type = type({})
while !empty(target)
let ns = remove(target, 0)
if !has_key(dict, ns)
let dict[ns] = {}
endif
if type(dict[ns]) == dict_type
let dict = dict[ns]
else
unlet dict
break
endif
endwhile
if exists('dict')
call extend(dict, self._import(name))
endif
unlet arg
endfor
return self
endfunction
let s:Vital.load = s:_function('s:load')
function! s:unload() abort dict
let s:loaded = {}
let s:cache_sid = {}
unlet! s:vital_files
endfunction
let s:Vital.unload = s:_function('s:unload')
function! s:exists(name) abort dict
if a:name !~# '\v^\u\w*%(\.\u\w*)*$'
throw 'vital: Invalid module name: ' . a:name
endif
return s:_module_path(a:name) isnot# ''
endfunction
let s:Vital.exists = s:_function('s:exists')
function! s:search(pattern) abort dict
let paths = s:_extract_files(a:pattern, self.vital_files())
let modules = sort(map(paths, 's:_file2module(v:val)'))
return s:_uniq(modules)
endfunction
let s:Vital.search = s:_function('s:search')
function! s:plugin_name() abort dict
return self._plugin_name
endfunction
let s:Vital.plugin_name = s:_function('s:plugin_name')
function! s:_self_vital_files() abort
let builtin = printf('%s/__%s__/', s:vital_base_dir, s:plugin_name)
let installed = printf('%s/_%s/', s:vital_base_dir, s:plugin_name)
let base = builtin . ',' . installed
return split(globpath(base, '**/*.vim', 1), "\n")
endfunction
function! s:_global_vital_files() abort
let pattern = 'autoload/vital/__*__/**/*.vim'
return split(globpath(&runtimepath, pattern, 1), "\n")
endfunction
function! s:_extract_files(pattern, files) abort
let tr = {'.': '/', '*': '[^/]*', '**': '.*'}
let target = substitute(a:pattern, '\.\|\*\*\?', '\=tr[submatch(0)]', 'g')
let regexp = printf('autoload/vital/[^/]\+/%s.vim$', target)
return filter(a:files, 'v:val =~# regexp')
endfunction
function! s:_file2module(file) abort
let filename = fnamemodify(a:file, ':p:gs?[\\/]?/?')
let tail = matchstr(filename, 'autoload/vital/_\w\+/\zs.*\ze\.vim$')
return join(split(tail, '[\\/]\+'), '.')
endfunction
" @param {string} name e.g. Data.List
function! s:_import(name) abort dict
if has_key(s:loaded, a:name)
return copy(s:loaded[a:name])
endif
let module = self._get_module(a:name)
if has_key(module, '_vital_created')
call module._vital_created(module)
endif
let export_module = filter(copy(module), 'v:key =~# "^\\a"')
" Cache module before calling module.vital_loaded() to avoid cyclic
" dependences but remove the cache if module._vital_loaded() fails.
" let s:loaded[a:name] = export_module
let s:loaded[a:name] = export_module
if has_key(module, '_vital_loaded')
try
call module._vital_loaded(vital#{s:plugin_name}#new())
catch
unlet s:loaded[a:name]
throw 'vital: fail to call ._vital_loaded(): ' . v:exception
endtry
endif
return copy(s:loaded[a:name])
endfunction
let s:Vital._import = s:_function('s:_import')
" s:_get_module() returns module object wihch has all script local functions.
function! s:_get_module(name) abort dict
let funcname = s:_import_func_name(self.plugin_name(), a:name)
try
return call(funcname, [])
catch /^Vim\%((\a\+)\)\?:E117/
return s:_get_builtin_module(a:name)
endtry
endfunction
function! s:_get_builtin_module(name) abort
return s:sid2sfuncs(s:_module_sid(a:name))
endfunction
if s:is_vital_vim
" For vital.vim, we can use s:_get_builtin_module directly
let s:Vital._get_module = s:_function('s:_get_builtin_module')
else
let s:Vital._get_module = s:_function('s:_get_module')
endif
function! s:_import_func_name(plugin_name, module_name) abort
return printf('vital#_%s#%s#import', a:plugin_name, s:_dot_to_sharp(a:module_name))
endfunction
function! s:_module_sid(name) abort
let path = s:_module_path(a:name)
if !filereadable(path)
throw 'vital: module not found: ' . a:name
endif
let vital_dir = s:is_vital_vim ? '__\w\+__' : printf('_\{1,2}%s\%%(__\)\?', s:plugin_name)
let base = join([vital_dir, ''], '[/\\]\+')
let p = base . substitute('' . a:name, '\.', '[/\\\\]\\+', 'g')
let sid = s:_sid(path, p)
if !sid
call s:_source(path)
let sid = s:_sid(path, p)
if !sid
throw printf('vital: cannot get <SID> from path: %s', path)
endif
endif
return sid
endfunction
function! s:_module_path(name) abort
return get(s:_extract_files(a:name, s:vital_files()), 0, '')
endfunction
function! s:_module_sid_base_dir() abort
return s:is_vital_vim ? &rtp : s:project_root
endfunction
function! s:_dot_to_sharp(name) abort
return substitute(a:name, '\.', '#', 'g')
endfunction
function! s:_source(path) abort
execute 'source' fnameescape(a:path)
endfunction
" @vimlint(EVL102, 1, l:_)
" @vimlint(EVL102, 1, l:__)
function! s:_sid(path, filter_pattern) abort
let unified_path = s:_unify_path(a:path)
if has_key(s:cache_sid, unified_path)
return s:cache_sid[unified_path]
endif
for line in filter(split(s:_execute(':scriptnames'), "\n"), 'v:val =~# a:filter_pattern')
let [_, sid, path; __] = matchlist(line, '^\s*\(\d\+\):\s\+\(.\+\)\s*$')
if s:_unify_path(path) is# unified_path
let s:cache_sid[unified_path] = sid
return s:cache_sid[unified_path]
endif
endfor
return 0
endfunction
" We want to use a execute() builtin function instead of s:_execute(),
" however there is a bug in execute().
" execute() returns empty string when it is called in
" completion function of user defined ex command.
" https://github.com/vim-jp/issues/issues/1129
function! s:_execute(cmd) abort
let [save_verbose, save_verbosefile] = [&verbose, &verbosefile]
set verbose=0 verbosefile=
redir => res
silent! execute a:cmd
redir END
let [&verbose, &verbosefile] = [save_verbose, save_verbosefile]
return res
endfunction
if filereadable(expand('<sfile>:r') . '.VIM') " is case-insensitive or not
let s:_unify_path_cache = {}
" resolve() is slow, so we cache results.
" Note: On windows, vim can't expand path names from 8.3 formats.
" So if getting full path via <sfile> and $HOME was set as 8.3 format,
" vital load duplicated scripts. Below's :~ avoid this issue.
function! s:_unify_path(path) abort
if has_key(s:_unify_path_cache, a:path)
return s:_unify_path_cache[a:path]
endif
let value = tolower(fnamemodify(resolve(fnamemodify(
\ a:path, ':p')), ':~:gs?[\\/]?/?'))
let s:_unify_path_cache[a:path] = value
return value
endfunction
else
function! s:_unify_path(path) abort
return resolve(fnamemodify(a:path, ':p:gs?[\\/]?/?'))
endfunction
endif
" copied and modified from Vim.ScriptLocal
let s:SNR = join(map(range(len("\<SNR>")), '"[\\x" . printf("%0x", char2nr("\<SNR>"[v:val])) . "]"'), '')
function! s:sid2sfuncs(sid) abort
let fs = split(s:_execute(printf(':function /^%s%s_', s:SNR, a:sid)), "\n")
let r = {}
let pattern = printf('\m^function\s<SNR>%d_\zs\w\{-}\ze(', a:sid)
for fname in map(fs, 'matchstr(v:val, pattern)')
let r[fname] = function(s:_sfuncname(a:sid, fname))
endfor
return r
endfunction
"" Return funcname of script local functions with SID
function! s:_sfuncname(sid, funcname) abort
return printf('<SNR>%s_%s', a:sid, a:funcname)
endfunction
if exists('*uniq')
function! s:_uniq(list) abort
return uniq(a:list)
endfunction
else
function! s:_uniq(list) abort
let i = len(a:list) - 1
while 0 < i
if a:list[i] ==# a:list[i - 1]
call remove(a:list, i)
endif
let i -= 1
endwhile
return a:list
endfunction
endif
endif

View File

@@ -1,7 +1,7 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
crystal crystal
a977489 bee84ae23effb0510137ad177e98c94d8b3657a6
Process Process
Web.JSON Web.JSON

View File

@@ -94,44 +94,61 @@ let landmark_role = [
\ ] \ ]
" Ref: https://www.w3.org/TR/dpub-aria-1.0/ " Ref: https://www.w3.org/TR/dpub-aria-1.0/
" Version: W3C Candidate Recommendation 15 December 2016 " Version: W3C Recommendation 14 December 2017
let dpub_role = [ let dpub_role = [
\ 'dpub-abstract', \ 'doc-abstract',
\ 'dpub-afterword', \ 'doc-acknowledgments',
\ 'dpub-appendix', \ 'doc-afterword',
\ 'dpub-biblioentry', \ 'doc-appendix',
\ 'dpub-bibliography', \ 'doc-backlink',
\ 'dpub-biblioref', \ 'doc-biblioentry',
\ 'dpub-chapter', \ 'doc-bibliography',
\ 'dpub-cover', \ 'doc-biblioref',
\ 'dpub-epilogue', \ 'doc-chapter',
\ 'dpub-footnote', \ 'doc-colophon',
\ 'dpub-footnotes', \ 'doc-conclusion',
\ 'dpub-foreword', \ 'doc-cover',
\ 'dpub-glossary', \ 'doc-credit',
\ 'dpub-glossdef', \ 'doc-credits',
\ 'dpub-glossref', \ 'doc-dedication',
\ 'dpub-glossterm', \ 'doc-endnote',
\ 'dpub-index', \ 'doc-endnotes',
\ 'dpub-locator', \ 'doc-epigraph',
\ 'dpub-noteref', \ 'doc-epilogue',
\ 'dpub-notice', \ 'doc-errata',
\ 'dpub-pagebreak', \ 'doc-example',
\ 'dpub-pagelist', \ 'doc-footnote',
\ 'dpub-part', \ 'doc-foreword',
\ 'dpub-preface', \ 'doc-glossary',
\ 'dpub-prologue', \ 'doc-glossref',
\ 'dpub-pullquote', \ 'doc-index',
\ 'dpub-qna', \ 'doc-introduction',
\ 'dpub-subtitle', \ 'doc-noteref',
\ 'dpub-tip', \ 'doc-notice',
\ 'dpub-title', \ 'doc-pagebreak',
\ 'dpub-toc' \ 'doc-pagelist',
\ 'doc-part',
\ 'doc-preface',
\ 'doc-prologue',
\ 'doc-pullquote',
\ 'doc-qna',
\ 'doc-subtitle',
\ 'doc-tip',
\ 'doc-toc'
\ ]
" Ref: https://www.w3.org/TR/graphics-aria-1.0/
" Version: W3C Candidate Recommendation 29 March 2018
let graphic_role = [
\ 'graphics-document',
\ 'graphics-object',
\ 'graphics-symbol'
\ ] \ ]
let role = extend(widget_role, document_structure) let role = extend(widget_role, document_structure)
let role = extend(role, landmark_role) let role = extend(role, landmark_role)
let role = extend(role, dpub_role) let role = extend(role, dpub_role)
let role = extend(role, graphic_role)
" https://www.w3.org/TR/wai-aria-1.1/#states_and_properties " https://www.w3.org/TR/wai-aria-1.1/#states_and_properties
let global_states_and_properties = { let global_states_and_properties = {

View File

@@ -62,7 +62,7 @@ let charset = [
\ 'windows-1256', 'windows-1257', 'windows-1258', 'TIS-620', ] \ 'windows-1256', 'windows-1257', 'windows-1258', 'TIS-620', ]
" }}} " }}}
let autofill_tokens = ['on', 'off', 'name', 'honorific-prefix', 'given-name', 'additional-name', 'family-name', 'honorific-suffix', 'nickname', 'username', 'new-password', 'current-password', 'organization-title', 'organization', 'street-address', 'address-line1', 'address-line2', 'address-line3', 'address-level4', 'address-level3', 'address-level2', 'address-level1', 'country', 'country-name', 'postal-code', 'cc-name', 'cc-given-name', 'cc-additional-name', 'cc-family-name', 'cc-number', 'cc-exp', 'cc-exp-month', 'cc-exp-year', 'cc-csc', 'cc-type', 'transaction-currency', 'transaction-amount', 'language', 'bday', 'bday-day', 'bday-month', 'bday-year', 'sex', 'url', 'photo'] let autofill_tokens = ['on', 'off', 'name', 'honorific-prefix', 'given-name', 'additional-name', 'family-name', 'honorific-suffix', 'nickname', 'organization-title', 'username', 'new-password', 'current-password', 'organization', 'street-address', 'address-line1', 'address-line2', 'address-line3', 'address-level4', 'address-level3', 'address-level2', 'address-level1', 'country', 'country-name', 'postal-code', 'cc-name', 'cc-given-name', 'cc-additional-name', 'cc-family-name', 'cc-number', 'cc-exp', 'cc-exp-month', 'cc-exp-year', 'cc-csc', 'cc-type', 'transaction-currency', 'transaction-amount', 'language', 'bday', 'bday-day', 'bday-month', 'bday-year', 'sex', 'url', 'photo', 'tel', 'tel-country-code', 'tel-national', 'tel-area-code', 'tel-local', 'tel-local-prefix', 'tel-local-suffix', 'tel-extension', 'email', 'impp']
" Attributes_and_Settings: {{{ " Attributes_and_Settings: {{{
let core_attributes = {'accesskey': [], 'class': [], 'contenteditable': ['true', 'false', ''], 'contextmenu': [], 'dir': ['ltr', 'rtl'], 'draggable': ['true', 'false'], 'hidden': ['hidden', ''], 'id': [], 'is': [], 'lang': lang_tag, 'spellcheck': ['true', 'false', ''], 'style': [], 'tabindex': [], 'title': []} let core_attributes = {'accesskey': [], 'class': [], 'contenteditable': ['true', 'false', ''], 'contextmenu': [], 'dir': ['ltr', 'rtl'], 'draggable': ['true', 'false'], 'hidden': ['hidden', ''], 'id': [], 'is': [], 'lang': lang_tag, 'spellcheck': ['true', 'false', ''], 'style': [], 'tabindex': [], 'title': []}
@@ -82,6 +82,7 @@ let attributes_value = {
\ 'action': ['URL', ''], \ 'action': ['URL', ''],
\ 'allowfullscreen': ['Bool', ''], \ 'allowfullscreen': ['Bool', ''],
\ 'allowpaymentrequest': ['Bool', ''], \ 'allowpaymentrequest': ['Bool', ''],
\ 'allowpresentation': ['Bool', ''],
\ 'allowusermedia': ['Bool', ''], \ 'allowusermedia': ['Bool', ''],
\ 'alt': ['Text', ''], \ 'alt': ['Text', ''],
\ 'async': ['Bool', ''], \ 'async': ['Bool', ''],
@@ -190,7 +191,7 @@ let attributes_value = {
\ } \ }
if g:html5_event_handler_attributes_complete == 1 if g:html5_event_handler_attributes_complete == 1
let event_handler_attributes = {'onabort': [], 'onblur': [], 'oncanplay': [], 'oncanplaythrough': [], 'onchange': [], 'onclick': [], 'oncontextmenu': [], 'ondblclick': [], 'ondrag': [], 'ondragend': [], 'ondragenter': [], 'ondragleave': [], 'ondragover': [], 'ondragstart': [], 'ondrop': [], 'ondurationchange': [], 'onemptied': [], 'onended': [], 'onerror': [], 'onfocus': [], 'onformchange': [], 'onforminput': [], 'oninput': [], 'oninvalid': [], 'onkeydown': [], 'onkeypress': [], 'onkeyup': [], 'onload': [], 'onloadeddata': [], 'onloadedmetadata': [], 'onloadstart': [], 'onmousedown': [], 'onmousemove': [], 'onmouseout': [], 'onmouseover': [], 'onmouseup': [], 'onmousewheel': [], 'onpause': [], 'onplay': [], 'onplaying': [], 'onprogress': [], 'onratechange': [], 'onreadystatechange': [], 'onscroll': [], 'onseeked': [], 'onseeking': [], 'onselect': [], 'onshow': [], 'onstalled': [], 'onsubmit': [], 'onsuspend': [], 'ontimeupdate': [], 'onvolumechange': [], 'onwaiting': []} let event_handler_attributes = {'onabort': [], 'onblur': [], 'oncanplay': [], 'oncanplaythrough': [], 'onchange': [], 'onclick': [], 'oncontextmenu': [], 'ondblclick': [], 'ondrag': [], 'ondragend': [], 'ondragenter': [], 'ondragleave': [], 'ondragover': [], 'ondragstart': [], 'ondrop': [], 'ondurationchange': [], 'onemptied': [], 'onended': [], 'onerror': [], 'onfocus': [], 'onformchange': [], 'onforminput': [], 'oninput': [], 'oninvalid': [], 'onkeydown': [], 'onkeypress': [], 'onkeyup': [], 'onload': [], 'onloadeddata': [], 'onloadedmetadata': [], 'onloadstart': [], 'onmousedown': [], 'onmousemove': [], 'onmouseout': [], 'onmouseover': [], 'onmouseup': [], 'onmousewheel': [], 'onpause': [], 'onplay': [], 'onplaying': [], 'onprogress': [], 'onratechange': [], 'onreadystatechange': [], 'onscroll': [], 'onseeked': [], 'onseeking': [], 'onselect': [], 'onshow': [], 'onstalled': [], 'onsubmit': [], 'onsuspend': [], 'ontimeupdate': [], 'onvolumechange': [], 'onwaiting': [], 'onselectstart': [], 'onselectchange': []}
let global_attributes = extend(global_attributes, event_handler_attributes) let global_attributes = extend(global_attributes, event_handler_attributes)
let body_attributes = {'onafterprint': [], 'onbeforeprint': [], 'onbeforeunload': [], 'onblur': [], 'onerror': [], 'onfocus': [], 'onhashchange': [], 'onload': [], 'onmessage': [], 'onoffline': [], 'ononline': [], 'onpopstate': [], 'onredo': [], 'onresize': [], 'onstorage': [], 'onundo': [], 'onunload': []} let body_attributes = {'onafterprint': [], 'onbeforeprint': [], 'onbeforeunload': [], 'onblur': [], 'onerror': [], 'onfocus': [], 'onhashchange': [], 'onload': [], 'onmessage': [], 'onoffline': [], 'ononline': [], 'onpopstate': [], 'onredo': [], 'onresize': [], 'onstorage': [], 'onundo': [], 'onunload': []}
@@ -213,6 +214,8 @@ if g:html5_event_handler_attributes_complete == 1
\ 'ondragleave': ['Script', ''], \ 'ondragleave': ['Script', ''],
\ 'ondragover': ['Script', ''], \ 'ondragover': ['Script', ''],
\ 'ondragstart': ['Script', ''], \ 'ondragstart': ['Script', ''],
\ 'onselectstart': ['Script', ''],
\ 'onselectchange': ['Script', ''],
\ 'ondrop': ['Script', ''], \ 'ondrop': ['Script', ''],
\ 'ondurationchange': ['Script', ''], \ 'ondurationchange': ['Script', ''],
\ 'onemptied': ['Script', ''], \ 'onemptied': ['Script', ''],
@@ -373,6 +376,8 @@ let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|t
let crossorigin = ['anonymous', 'use-credentials'] let crossorigin = ['anonymous', 'use-credentials']
let referrerpolicy = ['no-referrer', 'no-referrer-when-downgrade', 'same-origin', 'origin', 'strict-origin', 'origin-when-cross-origin', 'strict-origin-when-cross-origin', 'unsafe-url']
let g:xmldata_html5 = { let g:xmldata_html5 = {
\ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'], \ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'],
@@ -391,7 +396,7 @@ let g:xmldata_html5 = {
\ ], \ ],
\ 'area': [ \ 'area': [
\ [], \ [],
\ extend(copy(global_attributes), {'alt': [], 'href': [], 'target': [], 'rel': linktypes, 'media': [], 'hreflang': lang_tag, 'type': [], 'shape': ['rect', 'circle', 'poly', 'default'], 'coords': [], 'referrerpolicy': ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'unsafe-url']}) \ extend(copy(global_attributes), {'alt': [], 'href': [], 'target': [], 'rel': linktypes, 'media': [], 'hreflang': lang_tag, 'type': [], 'shape': ['rect', 'circle', 'poly', 'default'], 'coords': [], 'referrerpolicy': referrerpolicy})
\ ], \ ],
\ 'article': [ \ 'article': [
\ flow_elements + ['style'], \ flow_elements + ['style'],
@@ -489,6 +494,10 @@ let g:xmldata_html5 = {
\ filter(copy(phrasing_elements), "!(v:val =~ 'dfn')"), \ filter(copy(phrasing_elements), "!(v:val =~ 'dfn')"),
\ global_attributes \ global_attributes
\ ], \ ],
\ 'dialog': [
\ flow_elements,
\ extend(copy(global_attributes), {'open': []})
\ ],
\ 'div': [ \ 'div': [
\ flow_elements + ['style'], \ flow_elements + ['style'],
\ global_attributes \ global_attributes
@@ -579,11 +588,11 @@ let g:xmldata_html5 = {
\ ], \ ],
\ 'iframe': [ \ 'iframe': [
\ [], \ [],
\ extend(copy(global_attributes), {'src': [], 'srcdoc': [], 'name': [], 'width': [], 'height': [], 'sandbox': ['allow-same-origin', 'allow-forms', 'allow-scripts'], 'seamless': ['seamless', ''], 'referrerpolicy': ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'unsafe-url'], 'allowfullscreen': [], 'allowpaymentrequest': [], 'allowusermedia': []}) \ extend(copy(global_attributes), {'src': [], 'srcdoc': [], 'name': [], 'width': [], 'height': [], 'sandbox': ['allow-same-origin', 'allow-forms', 'allow-scripts'], 'seamless': ['seamless', ''], 'referrerpolicy': referrerpolicy, 'allowfullscreen': [], 'allowpaymentrequest': [], 'allowpresentation': [], 'allowusermedia': []})
\ ], \ ],
\ 'img': [ \ 'img': [
\ [], \ [],
\ extend(copy(global_attributes), {'src': [], 'alt': [], 'height': [], 'width': [], 'decoding': ['async', 'sync', 'auto'], 'usemap': [], 'ismap': ['ismap', ''], 'referrerpolicy': ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'unsafe-url'], 'crossorigin': ['anonymous', 'use-credentials']}) \ extend(copy(global_attributes), {'src': [], 'alt': [], 'height': [], 'width': [], 'decoding': ['async', 'sync', 'auto'], 'usemap': [], 'ismap': ['ismap', ''], 'referrerpolicy': referrerpolicy, 'crossorigin': ['anonymous', 'use-credentials']})
\ ], \ ],
\ 'input': [ \ 'input': [
\ [], \ [],
@@ -615,7 +624,7 @@ let g:xmldata_html5 = {
\ ], \ ],
\ 'link': [ \ 'link': [
\ [], \ [],
\ extend(copy(global_attributes), {'href': [], 'rel': linkreltypes, 'hreflang': lang_tag, 'media': [], 'type': [], 'sizes': ['any'], 'referrerpolicy': ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'unsafe-url'], 'crossorigin': crossorigin, 'preload': ['preload', ''], 'prefetch': ['prefetch', '']}) \ extend(copy(global_attributes), {'href': [], 'rel': linkreltypes, 'hreflang': lang_tag, 'media': [], 'type': [], 'sizes': ['any'], 'referrerpolicy': referrerpolicy, 'crossorigin': crossorigin, 'preload': ['preload', ''], 'prefetch': ['prefetch', ''], 'as': ['report', 'document', 'document', 'object', 'embed', 'audio', 'font', 'image', 'audioworklet', 'paintworklet', 'script', 'serviceworker', 'sharedworker', 'worker', 'style', 'track', 'video', 'image', 'manifest', 'xslt', 'fetch', '']})
\ ], \ ],
\ 'main': [ \ 'main': [
\ flow_elements + ['style'], \ flow_elements + ['style'],

120
build
View File

@@ -3,41 +3,44 @@
set -E set -E
DIRS="syntax indent compiler autoload ftplugin after/syntax after/indent after/ftplugin" DIRS="syntax indent compiler autoload ftplugin after/syntax after/indent after/ftplugin"
# shellcheck disable=SC2034
DIRS_BASIC="syntax compiler indent after/syntax after/indent" DIRS_BASIC="syntax compiler indent after/syntax after/indent"
# shellcheck disable=SC2034
DIRS_ALL="syntax indent compiler autoload ftplugin after" DIRS_ALL="syntax indent compiler autoload ftplugin after"
DIRS_SYNTAX="syntax after/syntax" # shellcheck disable=SC2034
DIRS_SYNTAX="syntax indent after/syntax after/indent"
DIRS_JAVASCRIPT="${DIRS} extras" DIRS_JAVASCRIPT="${DIRS} extras"
DIRS_RM="$DIRS_JAVASCRIPT" read -r -a DIRS_RM <<<"$DIRS_JAVASCRIPT"
OUTPUT="" OUTPUT=""
output() { output() {
OUTPUT="$OUTPUT$1" OUTPUT="$OUTPUT$1"
printf -- "$1" echo -n "$1"
} }
download() { download() {
for pack in $1; do for pack in $1; do
path="$(printf "$pack" | cut -d ':' -f 2)" path="$(cut -d ':' -f 2 <<<"$pack")"
dir="tmp/$(printf "$path" | cut -d '/' -f 2)" dir="tmp/$(cut -d '/' -f 2 <<<"$path")"
rm -rf "$dir" rm -rf "$dir"
(mkdir -p "$dir" && curl --silent -L https://codeload.github.com/$path/tar.gz/master | tar -zx -C "$dir" --strip 1 && printf '.') & (mkdir -p "$dir" && curl --silent -L "https://codeload.github.com/$path/tar.gz/master" | tar -zx -C "$dir" --strip 1 && printf '.') &
done done
wait wait
} }
extract() { extract() {
printf "\n" echo
cat config.vim >> tmp/polyglot.vim cat config.vim >> tmp/polyglot.vim
for pack in $1; do for pack in $1; do
name="$(printf "$pack" | cut -d ':' -f 1)" name="$(cut -d ':' -f 1 <<<"$pack")"
path="$(printf "$pack" | cut -d ':' -f 2)" path="$(cut -d ':' -f 2 <<<"$pack")"
dir="tmp/$(printf "$path" | cut -d '/' -f 2)" dir="tmp/$(cut -d '/' -f 2 <<<"$path")"
directories="DIRS$(printf "$pack" | cut -d ':' -f 3)" directories="DIRS$(cut -d ':' -f 3 <<<"$pack")"
subtree="$(printf "$pack" | cut -d ':' -f 4)" subtree="$(cut -d ':' -f 4 <<<"$pack")"
output "- [$name](https://github.com/$path) (" output "- [$name](https://github.com/$path) ("
subdirs="" subdirs=""
@@ -52,21 +55,29 @@ extract() {
fi fi
done done
output "${subdirs##, })\n" # syntax for go.vim depends on autoload for go.vim, but we exclude the
# autoload always and the ftplugin because it's too complex. FML.
if (echo "julia coffee-script elixir fish git plantuml scala swift" | fgrep -q "$name"); then if [ "${pack%%:*}" = "go" ]; then
echo "Skipping ftdetect installation of $name" copy_file "${dir}${subtree}" "${dir}${subtree}/autoload/go/config.vim" "${name}"
continue
fi fi
for f in ${dir}/ftdetect/*; do output "${subdirs##, })"$'\n'
(
echo "augroup filetypedetect"; if (echo "julia coffee-script elixir fish git plantuml scala swift" | grep -qF "$name"); then
echo '" '"$pack"; echo "Skipping ftdetect installation of $name" >&2
cat "${f}"; continue
echo "augroup END"; fi
echo
) >> tmp/polyglot.vim; [ -d "${dir}/ftdetect" ] && for f in "${dir}/ftdetect/"*; do
cat <<EOF >> tmp/polyglot.vim
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, '${pack%%:*}') == -1
augroup filetypedetect
" ${pack%%:*}, from ${f##*/ftdetect/} in ${pack#*:}
$(cat "${f}")
augroup end
endif
EOF
done done
done done
@@ -74,37 +85,54 @@ extract() {
mv tmp/polyglot.vim ftdetect/ mv tmp/polyglot.vim ftdetect/
for pack in $1; do for pack in $1; do
name="$(printf "$pack" | cut -d ':' -f 1)" name="$(cut -d ':' -f 1 <<<"$pack")"
path="$(printf "$pack" | cut -d ':' -f 2)" path="$(cut -d ':' -f 2 <<<"$pack")"
dir="tmp/$(printf "$path" | cut -d '/' -f 2)" dir="tmp/$(cut -d '/' -f 2 <<<"$path")"
subtree="$(printf "$pack" | cut -d ':' -f 4)" subtree="$(cut -d ':' -f 4 <<<"$pack")"
if [ -d "$dir${subtree:-/}plugin" ]; then if [ -d "$dir${subtree:-/}plugin" ]; then
printf "Possible error (plugin directory exists): $path\n" echo "Possible error (plugin directory exists): $path" >&2
fi fi
done done
} }
copy_dir() { copy_dir() {
for file in $(find "$1/$2" -name '*.vim' -o -name '*.vital'); do find "$1/$2" \( -name '*.vim' -o -name '*.vital' \) -print0 | while read -r -d $'\0' file; do
file_path="$(dirname "${file##$1/}")" copy_file "$1" "$file" "$3"
mkdir -p "$file_path"
touch "$file_path/$(basename "$file")"
# Use comma instead of / to handle cases like c/c++
sed -e "s,%%PACK%%,$3," -e "/%%CONTENT%%/{r $file" -e "d;}" plugin_guard.vim.template >> $file_path/$(basename "$file")
done done
} }
update_readme() { copy_file() {
OLD_README="$(cat README.md)" ## $1 is the build dir (e.g. tmp/vim-go)
## $2 is the full file path, as returned by `find` (e.g. tmp/vim-go/indent/go.vim)
## $3 is the name of the package (so that we can detect if it's disabled at runtime)
local tmp_dir="$1"
local file_in_tmp="$2"
local file_basename="${2##*/}"
local file_path="${file_in_tmp##$tmp_dir/}" # Just this file's (full) path
file_path="${file_path%/*}" # Minus the actual name of the file
local file_in_dst="${file_path}/${file_basename}" # Could also be ${file_in_tmp##$tmp_dir/}
local package_name="$3"
if [ "${file_in_tmp##$tmp_dir/}" != "${file_in_dst}" ]; then
echo "Failure in logic in build script; '${file_in_tmp##$tmp_dir/}' != '${file_in_dst}'. Bailing." >&2
exit 1
fi
mkdir -p "${file_path}"
touch "$file_in_dst"
# Use comma instead of / to handle cases like c/c++
sed -e "s,%%PACK%%,${package_name}," -e "/%%CONTENT%%/{r ${file_in_tmp}" -e "d;}" plugin_guard.vim.template >> "$file_in_dst"
}
update_readme() {
ed README.md <<- EOF ed README.md <<- EOF
/Language packs /Language packs
+2kb +2kb
/## /##
'b,-2c 'b,-2c
$(printf -- "$OUTPUT" | sort) $(echo -n "$OUTPUT" | sort)
. .
w w
q q
@@ -114,7 +142,7 @@ EOF
PACKS=" PACKS="
apiblueprint:sheerun/apiblueprint.vim apiblueprint:sheerun/apiblueprint.vim
applescript:vim-scripts/applescript.vim applescript:mityu/vim-applescript:_SYNTAX
asciidoc:asciidoc/vim-asciidoc asciidoc:asciidoc/vim-asciidoc
yaml:stephpy/vim-yaml yaml:stephpy/vim-yaml
ansible:pearofducks/ansible-vim ansible:pearofducks/ansible-vim
@@ -147,9 +175,11 @@ PACKS="
glsl:tikhomirov/vim-glsl glsl:tikhomirov/vim-glsl
gnuplot:vim-scripts/gnuplot-syntax-highlighting gnuplot:vim-scripts/gnuplot-syntax-highlighting
go:fatih/vim-go:_BASIC go:fatih/vim-go:_BASIC
graphql:jparise/vim-graphql
groovy:vim-scripts/groovy.vim groovy:vim-scripts/groovy.vim
haml:sheerun/vim-haml haml:sheerun/vim-haml
handlebars:mustache/vim-mustache-handlebars handlebars:mustache/vim-mustache-handlebars
haproxy:CH-DanReif/haproxy.vim
haskell:neovimhaskell/haskell-vim haskell:neovimhaskell/haskell-vim
haxe:yaymukund/vim-haxe haxe:yaymukund/vim-haxe
html5:othree/html5.vim html5:othree/html5.vim
@@ -207,7 +237,7 @@ PACKS="
stylus:wavded/vim-stylus stylus:wavded/vim-stylus
swift:keith/swift.vim swift:keith/swift.vim
sxhkd:baskerville/vim-sxhkdrc sxhkd:baskerville/vim-sxhkdrc
systemd:kurayama/systemd-vim-syntax systemd:wgwoods/vim-systemd-syntax
terraform:hashivim/vim-terraform terraform:hashivim/vim-terraform
textile:timcharper/textile.vim textile:timcharper/textile.vim
thrift:solarnz/thrift.vim thrift:solarnz/thrift.vim
@@ -227,12 +257,12 @@ PACKS="
" "
rm -rf tmp rm -rf tmp
rm -rf $DIRS_RM rm -rf "${DIRS_RM[@]}"
mkdir tmp mkdir tmp
printf "Downloading packs..." printf "Downloading packs..."
download "$PACKS" download "$(sed '/^#/d' <<<"$PACKS")"
extract "$PACKS" extract "$(sed '/^#/d' <<<"$PACKS")"
update_readme update_readme
rm -rf tmp rm -rf tmp

15
compiler/credo.vim Normal file
View File

@@ -0,0 +1,15 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
if exists('current_compiler')
finish
endif
let current_compiler = 'credo'
if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet errorformat=%f:%l:\ %t:\ %m
CompilerSet makeprg=mix\ credo\ suggest\ --format=flycheck
endif

View File

@@ -30,8 +30,8 @@ CompilerSet errorformat=
\%W%f:%l:\ warning:\ %m, \%W%f:%l:\ warning:\ %m,
\%E%f:%l:in\ %*[^:]:\ %m, \%E%f:%l:in\ %*[^:]:\ %m,
\%E%f:%l:\ %m, \%E%f:%l:\ %m,
\%-C%\tfrom\ %f:%l:in\ %.%#, \%-C%\t%\\d%#:%#\ %#from\ %f:%l:in\ %.%#,
\%-Z%\tfrom\ %f:%l, \%-Z%\t%\\d%#:%#\ %#from\ %f:%l,
\%-Z%p^, \%-Z%p^,
\%-G%.%# \%-G%.%#

15
compiler/mix.vim Normal file
View File

@@ -0,0 +1,15 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
if exists('current_compiler')
finish
endif
let current_compiler = 'mix'
if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet errorformat=%A%t%*[^:]:\ %m,%C%f:%l:\ %m,%C%f:%l,%Z
CompilerSet makeprg=mix
endif

View File

@@ -13,7 +13,7 @@ endif
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo-=C set cpo-=C
CompilerSet makeprg=nim\ c\ --verbosity:0\ $*\ %:p CompilerSet makeprg=nim\ c\ --verbosity:0\ --listfullpaths\ $*\ %:p
CompilerSet errorformat= CompilerSet errorformat=
\%-GHint:\ %m, \%-GHint:\ %m,

View File

@@ -22,12 +22,12 @@ CompilerSet makeprg=rake
CompilerSet errorformat= CompilerSet errorformat=
\%D(in\ %f), \%D(in\ %f),
\%\\s%#from\ %f:%l:%m, \%\\s%#%\\d%#:%#\ %#from\ %f:%l:%m,
\%\\s%#from\ %f:%l:, \%\\s%#%\\d%#:%#\ %#from\ %f:%l:,
\%\\s%##\ %f:%l:%m%\\&%.%#%\\D:%\\d%#:%.%#, \%\\s%##\ %f:%l:%m%\\&%.%#%\\D:%\\d%\\+:%.%#,
\%\\s%##\ %f:%l%\\&%.%#%\\D:%\\d%#, \%\\s%##\ %f:%l%\\&%.%#%\\D:%\\d%\\+,
\%\\s%#[%f:%l:\ %#%m%\\&%.%#%\\D:%\\d%#:%.%#, \%\\s%#[%f:%l:\ %#%m%\\&%.%#%\\D:%\\d%\\+:%.%#,
\%\\s%#%f:%l:\ %#%m%\\&%.%#%\\D:%\\d%#:%.%#, \%\\s%#%f:%l:\ %#%m%\\&%.%#%\\D:%\\d%\\+:%.%#,
\%\\s%#%f:%l:, \%\\s%#%f:%l:,
\%m\ [%f:%l]:, \%m\ [%f:%l]:,
\%+Erake\ aborted!, \%+Erake\ aborted!,

View File

@@ -25,7 +25,7 @@ CompilerSet errorformat=
\%E%.%#:in\ `load':\ %f:%l:%m, \%E%.%#:in\ `load':\ %f:%l:%m,
\%E%f:%l:in\ `%*[^']':\ %m, \%E%f:%l:in\ `%*[^']':\ %m,
\%-Z\ \ \ \ \ %\\+\#\ %f:%l:%.%#, \%-Z\ \ \ \ \ %\\+\#\ %f:%l:%.%#,
\%E\ \ %\\d%\\+)%.%#, \%E\ \ \ \ \ Failure/Error:\ %m,
\%C\ \ \ \ \ %m, \%C\ \ \ \ \ %m,
\%C%\\s%#, \%C%\\s%#,
\%-G%.%# \%-G%.%#

View File

@@ -23,21 +23,21 @@ set cpo-=C
" default settings runs script normally " default settings runs script normally
" add '-c' switch to run syntax check only: " add '-c' switch to run syntax check only:
" "
" CompilerSet makeprg=ruby\ -wc\ $* " CompilerSet makeprg=ruby\ -c
" "
" or add '-c' at :make command line: " or add '-c' at :make command line:
" "
" :make -c %<CR> " :make -c %<CR>
" "
CompilerSet makeprg=ruby\ -w\ $* CompilerSet makeprg=ruby
CompilerSet errorformat= CompilerSet errorformat=
\%+E%f:%l:\ parse\ error, \%+E%f:%l:\ parse\ error,
\%W%f:%l:\ warning:\ %m, \%W%f:%l:\ warning:\ %m,
\%E%f:%l:in\ %*[^:]:\ %m, \%E%f:%l:in\ %*[^:]:\ %m,
\%E%f:%l:\ %m, \%E%f:%l:\ %m,
\%-C%\tfrom\ %f:%l:in\ %.%#, \%-C%\t%\\d%#:%#\ %#from\ %f:%l:in\ %.%#,
\%-Z%\tfrom\ %f:%l, \%-Z%\t%\\d%#:%#\ %#from\ %f:%l,
\%-Z%p^, \%-Z%p^,
\%-G%.%# \%-G%.%#

View File

@@ -25,4 +25,51 @@ augroup filetypedetect
endif endif
autocmd BufRead,BufNewFile *.jl set filetype=julia autocmd BufRead,BufNewFile *.jl set filetype=julia
" coffeescript
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
autocmd BufNewFile,BufRead *._coffee set filetype=coffee
autocmd BufNewFile,BufRead *.litcoffee set filetype=litcoffee
autocmd BufNewFile,BufRead *.coffee.md set filetype=litcoffee
" elixir
au BufRead,BufNewFile *.ex,*.exs call s:setf('elixir')
au BufRead,BufNewFile *.eex call s:setf('eelixir')
" fish
autocmd BufRead,BufNewFile *.fish setfiletype fish
autocmd BufRead fish_funced_*_*.fish call search('^$')
autocmd BufRead,BufNewFile ~/.config/fish/fish_{read_,}history setfiletype yaml
autocmd BufRead,BufNewFile ~/.config/fish/fishd.* setlocal readonly
autocmd BufNewFile ~/.config/fish/functions/*.fish
\ call append(0, ['function '.expand('%:t:r'),
\'',
\'end']) |
\ 2
" git
autocmd BufNewFile,BufRead *.git/{,modules/**/,worktrees/*/}{COMMIT_EDIT,TAG_EDIT,MERGE_,}MSG set ft=gitcommit
autocmd BufNewFile,BufRead *.git/config,.gitconfig,gitconfig,.gitmodules set ft=gitconfig
autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig
autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig
autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase
autocmd BufNewFile,BufRead .gitsendemail.* set ft=gitsendemail
" plantuml
autocmd BufRead,BufNewFile *.pu,*.uml,*.plantuml setfiletype plantuml | set filetype=plantuml
" scala
au BufRead,BufNewFile *.scala,*.sc set filetype=scala
au BufRead,BufNewFile *.sbt setfiletype sbt.scala
" swift
autocmd BufNewFile,BufRead *.swift set filetype=swift
augroup END augroup END
" Fix for https://github.com/sheerun/vim-polyglot/issues/236#issuecomment-387984954
if (!exists('g:graphql_javascript_tags'))
let g:graphql_javascript_tags = ['gql', 'graphql', 'Relay.QL']
endif

View File

@@ -29,10 +29,11 @@ syntax region jsFlowReturnGroup contained matchgroup=jsFlowNoise start=/</ e
syntax match jsFlowReturnOrOp contained /\s*|\s*/ skipwhite skipempty nextgroup=@jsFlowReturnCluster syntax match jsFlowReturnOrOp contained /\s*|\s*/ skipwhite skipempty nextgroup=@jsFlowReturnCluster
syntax match jsFlowWildcardReturn contained /*/ skipwhite skipempty nextgroup=jsFuncBlock syntax match jsFlowWildcardReturn contained /*/ skipwhite skipempty nextgroup=jsFuncBlock
syntax region jsFlowFunctionGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncArgs syntax region jsFlowFunctionGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncArgs
syntax region jsFlowClassGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassBlock syntax region jsFlowClassGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsClassBlock
syntax region jsFlowClassFunctionGroup contained matchgroup=jsFlowNoise start=/</ end=/>/ contains=@jsFlowCluster skipwhite skipempty nextgroup=jsFuncArgs
syntax region jsFlowTypeStatement start=/type\%(\s\+\k\)\@=/ end=/=\@=/ contains=jsFlowTypeOperator oneline skipwhite skipempty nextgroup=jsFlowTypeValue keepend syntax region jsFlowTypeStatement start=/\(opaque\s\+\)\?type\%(\s\+\k\)\@=/ end=/=\@=/ contains=jsFlowTypeOperator oneline skipwhite skipempty nextgroup=jsFlowTypeValue keepend
syntax region jsFlowTypeValue contained matchgroup=jsFlowNoise start=/=/ end=/[\n;]/ contains=@jsFlowCluster,jsFlowGroup,jsFlowMaybe syntax region jsFlowTypeValue contained matchgroup=jsFlowNoise start=/=/ end=/[\n;]/ contains=@jsFlowCluster,jsFlowGroup,jsFlowMaybe
syntax match jsFlowTypeOperator contained /=/ containedin=jsFlowTypeValue syntax match jsFlowTypeOperator contained /=/ containedin=jsFlowTypeValue
syntax match jsFlowTypeOperator contained /=/ syntax match jsFlowTypeOperator contained /=/
@@ -83,6 +84,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
HiLink jsFlowReturnGroup jsFlowGroup HiLink jsFlowReturnGroup jsFlowGroup
HiLink jsFlowFunctionGroup PreProc HiLink jsFlowFunctionGroup PreProc
HiLink jsFlowClassGroup PreProc HiLink jsFlowClassGroup PreProc
HiLink jsFlowClassFunctionGroup PreProc
HiLink jsFlowArrowArguments PreProc HiLink jsFlowArrowArguments PreProc
HiLink jsFlowArrow PreProc HiLink jsFlowArrow PreProc
HiLink jsFlowReturnArrow PreProc HiLink jsFlowReturnArrow PreProc

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1
if exists('+regexpengine') && ('&regexpengine' == 0) if exists('+regexpengine') && ('&regexpengine' == 0)
setlocal regexpengine=1 setlocal regexpengine=1
endif endif
set isfname+=@-@
set path+=./../templates,./../files,templates,files set path+=./../templates,./../files,templates,files
endif endif

View File

@@ -1,9 +0,0 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
if exists("g:loaded_haskellvim_cabal")
finish
endif
let g:loaded_haskellvim_cabal = 1
endif

View File

@@ -50,18 +50,17 @@ command! -buffer -nargs=* CrystalHierarchy echo crystal_lang#type_hierarchy(expa
command! -buffer -nargs=? CrystalSpecSwitch call crystal_lang#switch_spec_file(<f-args>) command! -buffer -nargs=? CrystalSpecSwitch call crystal_lang#switch_spec_file(<f-args>)
command! -buffer -nargs=? CrystalSpecRunAll call crystal_lang#run_all_spec(<f-args>) command! -buffer -nargs=? CrystalSpecRunAll call crystal_lang#run_all_spec(<f-args>)
command! -buffer -nargs=? CrystalSpecRunCurrent call crystal_lang#run_current_spec(<f-args>) command! -buffer -nargs=? CrystalSpecRunCurrent call crystal_lang#run_current_spec(<f-args>)
command! -buffer -nargs=* -bar CrystalFormat call crystal_lang#format(<q-args>) command! -buffer -nargs=* -bar CrystalFormat call crystal_lang#format(<q-args>, 0)
nnoremap <Plug>(crystal-jump-to-definition) :<C-u>CrystalDef<CR> nnoremap <buffer><Plug>(crystal-jump-to-definition) :<C-u>CrystalDef<CR>
nnoremap <Plug>(crystal-show-context) :<C-u>CrystalContext<CR> nnoremap <buffer><Plug>(crystal-show-context) :<C-u>CrystalContext<CR>
nnoremap <Plug>(crystal-spec-switch) :<C-u>CrystalSpecSwitch<CR> nnoremap <buffer><Plug>(crystal-spec-switch) :<C-u>CrystalSpecSwitch<CR>
nnoremap <Plug>(crystal-spec-run-all) :<C-u>CrystalSpecRunAll<CR> nnoremap <buffer><Plug>(crystal-spec-run-all) :<C-u>CrystalSpecRunAll<CR>
nnoremap <Plug>(crystal-spec-run-current) :<C-u>CrystalSpecRunCurrent<CR> nnoremap <buffer><Plug>(crystal-spec-run-current) :<C-u>CrystalSpecRunCurrent<CR>
nnoremap <Plug>(crystal-format) :<C-u>CrystalFormat<CR> nnoremap <buffer><Plug>(crystal-format) :<C-u>CrystalFormat<CR>
augroup plugin-ft-crystal augroup plugin-ft-crystal
autocmd! autocmd BufWritePre <buffer> if g:crystal_auto_format | call crystal_lang#format('', 1) | endif
autocmd BufWritePre <buffer> if g:crystal_auto_format | CrystalFormat | endif
augroup END augroup END
if get(g:, 'crystal_define_mappings', 1) if get(g:, 'crystal_define_mappings', 1)

View File

@@ -1,12 +1,12 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
if (exists("b:did_ftplugin")) if exists('b:did_ftplugin')
finish finish
endif endif
let b:did_ftplugin = 1 let b:did_ftplugin = 1
" Matchit support " Matchit support
if exists("loaded_matchit") && !exists("b:match_words") if exists('loaded_matchit') && !exists('b:match_words')
let b:match_ignorecase = 0 let b:match_ignorecase = 0
let b:match_words = '\:\@<!\<\%(do\|fn\)\:\@!\>' . let b:match_words = '\:\@<!\<\%(do\|fn\)\:\@!\>' .
@@ -32,9 +32,26 @@ let &l:path =
setlocal includeexpr=elixir#util#get_filename(v:fname) setlocal includeexpr=elixir#util#get_filename(v:fname)
setlocal suffixesadd=.ex,.exs,.eex,.erl,.yrl,.hrl setlocal suffixesadd=.ex,.exs,.eex,.erl,.yrl,.hrl
let &l:define = 'def\(macro\|guard\|delegate\)\=p\='
silent! setlocal formatoptions-=t formatoptions+=croqlj silent! setlocal formatoptions-=t formatoptions+=croqlj
let b:undo_ftplugin = 'setlocal sw< sts< et< isk< com< cms< path< inex< sua< '. let b:block_begin = '\<\(do$\|fn\>\)'
\ '| unlet! b:match_ignorecase b:match_words' let b:block_end = '\<end\>'
nnoremap <buffer> <silent> <expr> ]] ':silent keeppatterns /'.b:block_begin.'<CR>'
nnoremap <buffer> <silent> <expr> [[ ':silent keeppatterns ?'.b:block_begin.'<CR>'
nnoremap <buffer> <silent> <expr> ][ ':silent keeppatterns /'.b:block_end .'<CR>'
nnoremap <buffer> <silent> <expr> [] ':silent keeppatterns ?'.b:block_end .'<CR>'
onoremap <buffer> <silent> <expr> ]] ':silent keeppatterns /'.b:block_begin.'<CR>'
onoremap <buffer> <silent> <expr> [[ ':silent keeppatterns ?'.b:block_begin.'<CR>'
onoremap <buffer> <silent> <expr> ][ ':silent keeppatterns /'.b:block_end .'<CR>'
onoremap <buffer> <silent> <expr> [] ':silent keeppatterns ?'.b:block_end .'<CR>'
silent! setlocal formatoptions-=t formatoptions+=croqlj
let b:undo_ftplugin = 'setlocal sw< sts< et< isk< com< cms< path< inex< sua< def<'.
\ '| unlet! b:match_ignorecase b:match_words b:block_begin b:block_end'
endif endif

View File

@@ -43,14 +43,14 @@ setlocal comments=:--
setlocal commentstring=--\ %s setlocal commentstring=--\ %s
" Commands " Commands
command -buffer -nargs=? -complete=file ElmMake call elm#Make(<f-args>) command! -buffer -nargs=? -complete=file ElmMake call elm#Make(<f-args>)
command -buffer ElmMakeMain call elm#Make("Main.elm") command! -buffer ElmMakeMain call elm#Make("Main.elm")
command -buffer -nargs=? -complete=file ElmTest call elm#Test(<f-args>) command! -buffer -nargs=? -complete=file ElmTest call elm#Test(<f-args>)
command -buffer ElmRepl call elm#Repl() command! -buffer ElmRepl call elm#Repl()
command -buffer ElmErrorDetail call elm#ErrorDetail() command! -buffer ElmErrorDetail call elm#ErrorDetail()
command -buffer ElmShowDocs call elm#ShowDocs() command! -buffer ElmShowDocs call elm#ShowDocs()
command -buffer ElmBrowseDocs call elm#BrowseDocs() command! -buffer ElmBrowseDocs call elm#BrowseDocs()
command -buffer ElmFormat call elm#Format() command! -buffer ElmFormat call elm#Format()
if get(g:, 'elm_setup_keybindings', 1) if get(g:, 'elm_setup_keybindings', 1)
nmap <buffer> <LocalLeader>m <Plug>(elm-make) nmap <buffer> <LocalLeader>m <Plug>(elm-make)

20
ftplugin/graphql.vim Normal file
View File

@@ -0,0 +1,20 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Vim filetype plugin
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if (exists('b:did_ftplugin'))
finish
endif
let b:did_ftplugin = 1
setlocal comments=:#
setlocal commentstring=#\ %s
setlocal formatoptions-=t
setlocal iskeyword+=$,@-@
setlocal softtabstop=2
setlocal shiftwidth=2
setlocal expandtab
endif

View File

@@ -1,20 +0,0 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
if exists("g:loaded_haskellvim_haskell")
finish
endif
let g:loaded_haskellvim_haskell = 1
function! haskell#sortImports(line1, line2)
exe a:line1 . "," . a:line2 . "sort /import\\s\\+\\(qualified\\s\\+\\)\\?/"
endfunction
function! haskell#formatImport(line1, line2)
exec a:line1 . ",". a:line2 . "s/import\\s\\+\\([A-Z].*\\)/import \\1"
endfunction
command! -buffer -range HaskellSortImports call haskell#sortImports(<line1>, <line2>)
command! -buffer -range HaskellFormatImport call haskell#formatImport(<line1>, <line2>)
endif

View File

@@ -2,11 +2,13 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
" Mail file type extension to pick files for attachments via vifm " Mail file type extension to pick files for attachments via vifm
" Maintainer: xaizek <xaizek@posteo.net> " Maintainer: xaizek <xaizek@posteo.net>
" Last Change: January 23, 2016 " Last Change: January 02, 2018
" Insert attachment picked via vifm after 'Subject' header " Insert attachment picked via vifm after 'Subject' header
function! s:AddMailAttacments() function! s:AddMailAttachments()
" TODO: reduce duplication between this file and plugins/vifm.vim call vifm#globals#Init()
" XXX: similar code is in plugins/vifm.vim, but it's different in details
let l:listf = tempname() let l:listf = tempname()
if !has('nvim') if !has('nvim')
@@ -26,7 +28,7 @@ function! s:AddMailAttacments()
else else
" Work around handicapped neovim... " Work around handicapped neovim...
let callback = { 'listf': l:listf } let callback = { 'listf': l:listf }
function! callback.on_exit(id, code) function! callback.on_exit(id, code, event)
buffer # buffer #
silent! bdelete! # silent! bdelete! #
call s:HandleRunResults(a:code, self.listf) call s:HandleRunResults(a:code, self.listf)
@@ -59,7 +61,7 @@ function! s:HandleRunResults(exitcode, listf)
call delete(a:listf) call delete(a:listf)
endfunction endfunction
nnoremap <buffer> <silent> <localleader>a :call <sid>AddMailAttacments()<cr> nnoremap <buffer> <silent> <localleader>a :call <sid>AddMailAttachments()<cr>
" vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 : " vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 :

View File

@@ -11,7 +11,12 @@ endif
let b:did_ftplugin = 1 let b:did_ftplugin = 1
setlocal comments=:# setlocal
setlocal commentstring=#\ %s \ comments=:#
\ commentstring=#\ %s
\ shiftwidth=2
\ softtabstop=2
\ expandtab
\ iskeyword+=-
endif endif

View File

@@ -1,6 +1,6 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'purescript') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'purescript') == -1
setlocal comments=s1fl:{-,mb:\ \ ,ex:-},:-- setlocal comments=s1fl:{-,mb:\ \ ,ex:-},:--\ \|,:--
setlocal include=^import setlocal include=^import
setlocal includeexpr=printf('%s.purs',substitute(v:fname,'\\.','/','g')) setlocal includeexpr=printf('%s.purs',substitute(v:fname,'\\.','/','g'))

View File

@@ -46,7 +46,7 @@ endif
setlocal formatoptions-=t formatoptions+=croql setlocal formatoptions-=t formatoptions+=croql
setlocal include=^\\s*\\<\\(load\\>\\\|require\\>\\\|autoload\\s*:\\=[\"']\\=\\h\\w*[\"']\\=,\\) setlocal include=^\\s*\\<\\(load\\>\\\|require\\>\\\|autoload\\s*:\\=[\"']\\=\\h\\w*[\"']\\=,\\)
setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'\%(\.rb\)\=$','.rb','') setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'\\%(\\.rb\\)\\=$','.rb','')
setlocal suffixesadd=.rb setlocal suffixesadd=.rb
if exists("&ofu") && has("ruby") if exists("&ofu") && has("ruby")
@@ -151,7 +151,7 @@ let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< tags< kp<"
function! s:map(mode, flags, map) abort function! s:map(mode, flags, map) abort
let from = matchstr(a:map, '\S\+') let from = matchstr(a:map, '\S\+')
if empty(mapcheck(from, a:mode)) if empty(mapcheck(from, a:mode))
exe a:mode.'map' '<buffer>'.(a:0 ? a:1 : '') a:map exe a:mode.'map' '<buffer>' a:map
let b:undo_ftplugin .= '|sil! '.a:mode.'unmap <buffer> '.from let b:undo_ftplugin .= '|sil! '.a:mode.'unmap <buffer> '.from
endif endif
endfunction endfunction

View File

@@ -31,8 +31,6 @@ else
endif endif
unlet s:delims unlet s:delims
let b:undo_ftplugin = ""
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo

View File

@@ -12,6 +12,27 @@ setlocal comments=s:{#,ex:#}
setlocal formatoptions+=tcqln setlocal formatoptions+=tcqln
" setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+ " setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+
if exists('b:match_words')
let b:twigMatchWords = [
\ ['block', 'endblock'],
\ ['for', 'endfor'],
\ ['macro', 'endmacro'],
\ ['if', 'elseif', 'else', 'endif'],
\ ['set', 'endset']
\]
for s:element in b:twigMatchWords
let s:pattern = ''
for s:tag in s:element[:-2]
if s:pattern != ''
let s:pattern .= ':'
endif
let s:pattern .= '{%\s*\<' . s:tag . '\>\s*\%(.*=\)\@![^}]\{-}%}'
endfor
let s:pattern .= ':{%\s*\<' . s:element[-1:][0] . '\>\s*.\{-}%}'
let b:match_words .= ',' . s:pattern
endfor
endif
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
let b:undo_ftplugin .= "|setlocal comments< formatoptions<" let b:undo_ftplugin .= "|setlocal comments< formatoptions<"
else else

81
indent/applescript.vim Normal file
View File

@@ -0,0 +1,81 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'applescript') == -1
"Plugin Name: applescript indent file.
"Author: mityu
"Last Change: 02-May-2017.
let s:cpo_save=&cpo
set cpo&vim
setlocal indentexpr=GetAppleScriptIndent()
setlocal indentkeys+=0=end,0=else,=error
func! GetAppleScriptIndent()
let l:ignorecase_save=&ignorecase
try
let &ignorecase=0
return s:returnAppleScriptIndent()
finally
let &ignorecase=l:ignorecase_save
endtry
endfunc
func! s:returnAppleScriptIndent()
let l:current_text=getline(v:lnum)
let l:prev_line=prevnonblank(v:lnum-1)
"At the start of the file, use 0 indent.
if l:prev_line==0
return 0
endif
let l:prev_line_save=l:prev_line
let l:prev_line=s:prev_non_connected_line(l:prev_line)
let l:indent=indent(l:prev_line)
if l:prev_line_save-l:prev_line==1
"連結開始
let l:indent+=shiftwidth()*2
elseif l:prev_line_save-l:prev_line>=2
"絶賛連結中
"その時は前の行のインデントをそのまま流用する
return indent(l:prev_line_save)
elseif l:prev_line_save==l:prev_line && s:doesOrderConnect(getline(l:prev_line-1))
"前の行が連結される行の最終行の場合
let l:prev_line=s:prev_non_connected_line(l:prev_line-1)
if l:prev_line==0 | let l:prev_line=1 | endif
let l:indent=indent(l:prev_line)
endif
let l:prev_text=getline(l:prev_line)
if l:prev_text=~'^\s*\(on\|\(tell\(.*\<to\>\)\@!\)\|repeat\|try\|if\|else\)'
let l:indent+=shiftwidth()
endif
if l:current_text=~'^\s*\(end\|else\|on\serror\)'
let l:indent-=shiftwidth()
endif
return l:indent
endfunc
func! s:prev_non_connected_line(line)
let l:prev_line=prevnonblank(a:line)
while l:prev_line>0 && s:doesOrderConnect(getline(l:prev_line))
let l:prev_line-=1
endwhile
return l:prev_line
endfunc
func! s:doesOrderConnect(text)
return a:text=~'¬$'
endfunc
let &cpo=s:cpo_save
unlet s:cpo_save
" vim: foldmethod=marker
endif

View File

@@ -9,14 +9,13 @@ setlocal nolisp
setlocal autoindent setlocal autoindent
setlocal indentexpr=GetCaddyfileIndent(v:lnum) setlocal indentexpr=GetCaddyfileIndent(v:lnum)
setlocal indentkeys+=<:>,0=},0=) setlocal indentkeys+=<:>,0=},0=)
" setlocal cindent
if exists('*shiftwidth') if exists('*shiftwidth')
func s:sw() function! s:sw()
return shiftwidth() return shiftwidth()
endfunc endfunc
else else
func s:sw() function! s:sw()
return &sw return &sw
endfunc endfunc
endif endif

81
indent/graphql.vim Normal file
View File

@@ -0,0 +1,81 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Vim indent file
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('b:did_indent')
finish
endif
let b:did_indent = 1
setlocal autoindent
setlocal nocindent
setlocal nolisp
setlocal nosmartindent
setlocal indentexpr=GetGraphQLIndent()
setlocal indentkeys=0{,0},0),0[,0],0#,!^F,o,O,e
" If our indentation function already exists, we have nothing more to do.
if exists('*GetGraphQLIndent')
finish
endif
let s:cpo_save = &cpoptions
set cpoptions&vim
" Check if the character at lnum:col is inside a string.
function s:InString(lnum, col)
return synIDattr(synID(a:lnum, a:col, 1), 'name') is# 'graphqlString'
endfunction
function GetGraphQLIndent()
" If this is the first non-blank line, we have nothing more to do because
" all of our indentation rules are based on matching against earlier lines.
let l:prevlnum = prevnonblank(v:lnum - 1)
if l:prevlnum == 0
return 0
endif
let l:line = getline(v:lnum)
" If this line contains just a closing bracket, find its matching opening
" bracket and indent the closing backet to match.
let l:col = matchend(l:line, '^\s*[]})]')
if l:col > 0 && !s:InString(v:lnum, l:col)
let l:bracket = l:line[l:col - 1]
call cursor(v:lnum, l:col)
if l:bracket is# '}'
let l:matched = searchpair('{', '', '}', 'bW')
elseif l:bracket is# ']'
let l:matched = searchpair('\[', '', '\]', 'bW')
elseif l:bracket is# ')'
let l:matched = searchpair('(', '', ')', 'bW')
else
let l:matched = -1
endif
return l:matched > 0 ? indent(l:matched) : virtcol('.') - 1
endif
" If we're inside of a multiline string, continue with the same indentation.
if s:InString(v:lnum, matchend(l:line, '^\s*') + 1)
return indent(v:lnum)
endif
" If the previous line contained an opening bracket, and we are still in it,
" add indent depending on the bracket type.
if getline(l:prevlnum) =~# '[[{(]\s*$'
return indent(l:prevlnum) + shiftwidth()
endif
" Default to the existing indentation level.
return indent(l:prevlnum)
endfunction
let &cpoptions = s:cpo_save
unlet s:cpo_save
endif

View File

@@ -42,12 +42,6 @@ if !exists('g:haskell_indent_let')
let g:haskell_indent_let = 4 let g:haskell_indent_let = 4
endif endif
if !exists('g:haskell_indent_let_no_in')
" let x = 0
" x
let g:haskell_indent_let_no_in = 4
endif
if !exists('g:haskell_indent_where') if !exists('g:haskell_indent_where')
" where f :: Int -> Int " where f :: Int -> Int
" >>>>>>f x = x " >>>>>>f x = x
@@ -73,7 +67,7 @@ if !exists('g:haskell_indent_guard')
endif endif
setlocal indentexpr=GetHaskellIndent() setlocal indentexpr=GetHaskellIndent()
setlocal indentkeys=0},0),0],!^F,o,O,0=where,0=let,0=deriving,<space> setlocal indentkeys=!^F,o,O,0{,0},0(,0),0[,0],0,,0=where,0=let,0=deriving,0=in\ ,0=::\ ,0=\-\>\ ,0=\=\>\ ,0=\|\ ,=\=\
function! s:isInBlock(hlstack) function! s:isInBlock(hlstack)
return index(a:hlstack, 'haskellDelimiter') > -1 || index(a:hlstack, 'haskellParens') > -1 || index(a:hlstack, 'haskellBrackets') > -1 || index(a:hlstack, 'haskellBlock') > -1 || index(a:hlstack, 'haskellBlockComment') > -1 || index(a:hlstack, 'haskellPragma') > -1 return index(a:hlstack, 'haskellDelimiter') > -1 || index(a:hlstack, 'haskellParens') > -1 || index(a:hlstack, 'haskellBrackets') > -1 || index(a:hlstack, 'haskellBlock') > -1 || index(a:hlstack, 'haskellBlockComment') > -1 || index(a:hlstack, 'haskellPragma') > -1
@@ -115,25 +109,26 @@ endfunction
" backtrack to find guard clause " backtrack to find guard clause
function! s:indentGuard(pos, prevline) function! s:indentGuard(pos, prevline)
let l:l = a:prevline let l:l = a:prevline
let l:c = 1 let l:c = v:lnum - 1
let l:s = indent(l:c)
while v:lnum != l:c while l:c >= 1
" empty line, stop looking if l:s == 0 && strlen(l:l) > 0
if l:l =~ '^$' " top-level start, stop looking
return a:pos return g:haskell_indent_guard
" guard found elseif l:l =~ '^\s\+[|,=]\s\+'
elseif l:l =~ '^\s*|\s\+' " guard block found
return match(l:l, '|') return match(l:l, '[|,=]')
" found less deeper indentation (not starting with `,` or `=`)
" stop looking
else else
let l:m = match(l:l, '\S') if l:s > 0 && l:s <= a:pos
if l:l !~ '^\s*[=,]' && l:m <= a:pos " found less deeper indentation (not starting with `,` or `=`)
return l:m + g:haskell_indent_guard " stop looking
return l:s + g:haskell_indent_guard
endif endif
endif endif
let l:c += 1 let l:c -= 1
let l:l = getline(v:lnum - l:c) let l:l = getline(l:c)
let l:s = indent(l:c)
endwhile endwhile
return -1 return -1
@@ -196,7 +191,7 @@ function! GetHaskellIndent()
" operator at end of previous line " operator at end of previous line
if l:prevline =~ '[!#$%&*+./<>?@\\^|~-]\s*$' if l:prevline =~ '[!#$%&*+./<>?@\\^|~-]\s*$'
return match(l:prevline, '\S') + &shiftwidth return indent(v:lnum - 1) + &shiftwidth
endif endif
" let foo = " let foo =
@@ -207,7 +202,7 @@ function! GetHaskellIndent()
" let x = 1 in " let x = 1 in
" >>>>x " >>>>x
if l:prevline =~ '\C\<let\>\s\+.\+\<in\>\?$' && l:line !~ '\C^\s*\<in\>' if l:prevline =~ '\C\<let\>.\{-}\<in\>\s*$' && l:line !~ '\C^\s*\<in\>'
return match(l:prevline, '\C\<let\>') + g:haskell_indent_let return match(l:prevline, '\C\<let\>') + g:haskell_indent_let
endif endif
@@ -215,9 +210,6 @@ function! GetHaskellIndent()
" let y = 2 " let y = 2
" "
" let x = 1 " let x = 1
" >in x
"
" let x = 1
" >>>>y = 2 " >>>>y = 2
" "
" let x = 1 " let x = 1
@@ -228,21 +220,11 @@ function! GetHaskellIndent()
if s:isSYN('haskellLet', v:lnum - 1, l:s + 1) if s:isSYN('haskellLet', v:lnum - 1, l:s + 1)
return l:s return l:s
endif endif
elseif l:line =~ '\C^\s*\<in\>'
let l:s = match(l:prevline, '\C\<let\>')
if s:isSYN('haskellLet', v:lnum - 1, l:s + 1)
return l:s + g:haskell_indent_in
endif
elseif l:line =~ '\s=\s' elseif l:line =~ '\s=\s'
let l:s = match(l:prevline, '\C\<let\>') let l:s = match(l:prevline, '\C\<let\>')
if s:isSYN('haskellLet', v:lnum - 1, l:s + 1) if s:isSYN('haskellLet', v:lnum - 1, l:s + 1)
return l:s + g:haskell_indent_let return l:s + g:haskell_indent_let
endif endif
else
let l:s = match(l:prevline, '\C\<let\>')
if s:isSYN('haskellLet', v:lnum - 1, l:s + 1)
return l:s + g:haskell_indent_let_no_in
endif
endif endif
endif endif
@@ -263,7 +245,7 @@ function! GetHaskellIndent()
" >>foo " >>foo
" "
if l:prevline =~ '\C\<where\>\s*$' if l:prevline =~ '\C\<where\>\s*$'
return match(l:prevline, '\S') + get(g:, 'haskell_indent_after_bare_where', &shiftwidth) return indent(v:lnum - 1) + get(g:, 'haskell_indent_after_bare_where', &shiftwidth)
endif endif
" do " do
@@ -272,7 +254,7 @@ function! GetHaskellIndent()
" foo = " foo =
" >>bar " >>bar
if l:prevline =~ '\C\(\<do\>\|=\)\s*$' if l:prevline =~ '\C\(\<do\>\|=\)\s*$'
return match(l:prevline, '\S') + &shiftwidth return indent(v:lnum - 1) + &shiftwidth
endif endif
" do foo " do foo
@@ -288,7 +270,7 @@ function! GetHaskellIndent()
" >>bar -> quux " >>bar -> quux
if l:prevline =~ '\C\<case\>.\+\<of\>\s*$' if l:prevline =~ '\C\<case\>.\+\<of\>\s*$'
if get(g:,'haskell_indent_case_alternative', 0) if get(g:,'haskell_indent_case_alternative', 0)
return match(l:prevline, '\S') + &shiftwidth return indent(v:lnum - 1) + &shiftwidth
else else
return match(l:prevline, '\C\<case\>') + g:haskell_indent_case return match(l:prevline, '\C\<case\>') + g:haskell_indent_case
endif endif
@@ -296,9 +278,20 @@ function! GetHaskellIndent()
"" where foo "" where foo
"" >>>>>>bar "" >>>>>>bar
""
"" where foo :: Int
"" >>>>>>>>>>-> Int
""
"" where foo x
"" >>>>>>>>|
if l:prevline =~ '\C\<where\>\s\+\S\+.*$' if l:prevline =~ '\C\<where\>\s\+\S\+.*$'
if l:line =~ '^\s*[=-]>\s' && l:prevline =~ ' :: ' if l:line =~ '^\s*[=-]>\s' && l:prevline =~ ' :: '
return match(l:prevline, ':: ') return match(l:prevline, ':: ')
elseif l:line =~ '^\s*|\s'
let l:s = match(l:prevline, '\C\<where\>')
if s:isSYN('haskellWhere', v:lnum - 1, l:s + 1)
return l:s + g:haskell_indent_where + g:haskell_indent_guard
endif
else else
let l:s = match(l:prevline, '\C\<where\>') let l:s = match(l:prevline, '\C\<where\>')
if s:isSYN('haskellWhere', v:lnum - 1, l:s + 1) if s:isSYN('haskellWhere', v:lnum - 1, l:s + 1)
@@ -309,8 +302,8 @@ function! GetHaskellIndent()
" newtype Foo = Foo " newtype Foo = Foo
" >>deriving " >>deriving
if l:prevline =~ '\C\s*\<\(newtype\|data\)\>[^{]\+' && l:line =~ '\C^\s*\<deriving\>' if l:prevline =~ '\C^\s*\<\(newtype\|data\)\>[^{]\+' && l:line =~ '\C^\s*\<deriving\>'
return match(l:prevline, '\S') + &shiftwidth return indent(v:lnum - 1) + &shiftwidth
endif endif
" foo :: Int " foo :: Int
@@ -352,9 +345,9 @@ function! GetHaskellIndent()
else else
let l:m = matchstr(l:line, '^\s*\zs\<\S\+\>\ze') let l:m = matchstr(l:line, '^\s*\zs\<\S\+\>\ze')
let l:l = l:prevline let l:l = l:prevline
let l:c = 1 let l:c = v:lnum - 1
while v:lnum != l:c while l:c >= 1
" fun decl " fun decl
if l:l =~ ('^\s*' . l:m . '\(\s*::\|\n\s\+::\)') if l:l =~ ('^\s*' . l:m . '\(\s*::\|\n\s\+::\)')
let l:s = match(l:l, l:m) let l:s = match(l:l, l:m)
@@ -367,8 +360,8 @@ function! GetHaskellIndent()
elseif l:l =~ '^$' elseif l:l =~ '^$'
return 0 return 0
endif endif
let l:c += 1 let l:c -= 1
let l:l = getline(v:lnum - l:c) let l:l = getline(l:c)
endwhile endwhile
return 0 return 0
@@ -414,8 +407,8 @@ function! GetHaskellIndent()
" foo " foo
" >>{ " >>{
if l:line =~ '^\s*{ ' if l:line =~ '^\s*{'
let l:s = match(l:prevline, '\S') let l:s = indent(v:lnum - 1)
if l:s >= 0 if l:s >= 0
return l:s + &shiftwidth return l:s + &shiftwidth
endif endif
@@ -433,14 +426,27 @@ function! GetHaskellIndent()
return match(l:prevline, 'in') - g:haskell_indent_in return match(l:prevline, 'in') - g:haskell_indent_in
endif endif
return match(l:prevline, '\S') + get(g:, 'haskell_indent_before_where', &shiftwidth) return indent(v:lnum - 1) + get(g:, 'haskell_indent_before_where', &shiftwidth)
endif endif
" let x = 1 " let x = 1
" y = 2 " y = 2
" >in x + 1 " >in x + 1
if l:line =~ '\C^\s*\<in\>' if l:line =~ '\C^\s*\<in\>'
return match(l:prevline, '\S') - (4 - g:haskell_indent_in) let l:s = 0
let l:c = v:lnum - 1
while l:s <= 0 && l:c >= 1
let l:l = getline(l:c)
let l:s = match(l:l, '\C\<let\>')
if l:s >= 1 && s:isSYN('haskellLet', l:c, l:s + 1)
break
elseif l:l =~ '^\S'
return -1
endif
let l:c -= 1
endwhile
return l:s + g:haskell_indent_in
endif endif
" data Foo " data Foo
@@ -485,7 +491,7 @@ function! GetHaskellIndent()
" foo " foo
" >>:: Int " >>:: Int
if l:line =~ '^\s*::\s' if l:line =~ '^\s*::\s'
return match(l:prevline, '\S') + &shiftwidth return indent(v:lnum - 1) + &shiftwidth
endif endif
" indent closing brace, paren or bracket " indent closing brace, paren or bracket

File diff suppressed because it is too large Load Diff

View File

@@ -89,22 +89,22 @@ function s:SynAt(l,c)
endfunction endfunction
function s:ParseCino(f) function s:ParseCino(f)
let [divider, n, cstr] = [0] + matchlist(&cino, let [s, n, divider] = [strridx(&cino, a:f)+1, '', 0]
\ '\%(.*,\)\=\%(\%d'.char2nr(a:f).'\(-\)\=\([.s0-9]*\)\)\=')[1:2] while s && &cino[ s ] =~ '[^,]'
for c in split(cstr,'\zs') if &cino[ s ] == '.'
if c == '.' && !divider
let divider = 1 let divider = 1
elseif c ==# 's' elseif &cino[ s ] ==# 's'
if n !~ '\d' if n !~ '\d'
return n . s:sw() + 0 return n . s:sw() + 0
endif endif
let n = str2nr(n) * s:sw() let n = str2nr(n) * s:sw()
break break
else else
let [n, divider] .= [c, 0] let [n, divider] .= [&cino[ s ], 0]
endif endif
endfor let s += 1
return str2nr(n) / max([str2nr(divider),1]) endwhile
return str2nr(n) / max([divider, 1])
endfunction endfunction
" Optimized {skip} expr, only callable from the search loop which " Optimized {skip} expr, only callable from the search loop which
@@ -208,18 +208,15 @@ function s:ExprCol()
let bal = 0 let bal = 0
while s:SearchLoop('[{}?:]','bW',s:skip_expr) while s:SearchLoop('[{}?:]','bW',s:skip_expr)
if s:LookingAt() == ':' if s:LookingAt() == ':'
if getline('.')[col('.')-2] == ':' let bal -= !search('\m:\%#','bW')
call cursor(0,col('.')-1)
continue
endif
let bal -= 1
elseif s:LookingAt() == '?' elseif s:LookingAt() == '?'
if getline('.')[col('.'):col('.')+1] =~ '^\.\d\@!' if getline('.')[col('.'):col('.')+1] =~ '^\.\d\@!'
continue " ?. conditional chain, not ternary start
elseif !bal elseif !bal
return 1 return 1
else
let bal += 1
endif endif
let bal += 1
elseif s:LookingAt() == '{' elseif s:LookingAt() == '{'
return !s:IsBlock() return !s:IsBlock()
elseif !s:GetPair('{','}','bW',s:skip_expr) elseif !s:GetPair('{','}','bW',s:skip_expr)
@@ -250,7 +247,7 @@ function s:Balanced(lnum,line)
let pos = match(a:line, '[][(){}]') let pos = match(a:line, '[][(){}]')
while pos != -1 while pos != -1
if s:SynAt(a:lnum,pos + 1) !~? b:syng_strcom if s:SynAt(a:lnum,pos + 1) !~? b:syng_strcom
let l:open += match(' ' . a:line[pos],'[[({]') let l:open += matchend(a:line[pos],'[[({]')
if l:open < 0 if l:open < 0
return return
endif endif
@@ -271,10 +268,7 @@ function s:OneScope()
return s:Pure('s:PreviousToken') != '.' return s:Pure('s:PreviousToken') != '.'
elseif strpart(getline('.'),col('.')-2,2) == '=>' elseif strpart(getline('.'),col('.')-2,2) == '=>'
call cursor(0,col('.')-1) call cursor(0,col('.')-1)
if s:PreviousToken() == ')' return s:PreviousToken() != ')' || s:GetPair('(', ')', 'bW', s:skip_expr)
return s:GetPair('(', ')', 'bW', s:skip_expr)
endif
return 1
endif endif
endfunction endfunction
@@ -299,9 +293,9 @@ endfunction
" encloses the entire context, 'cont' if whether a:firstline is a continued " encloses the entire context, 'cont' if whether a:firstline is a continued
" expression, which could have started in a braceless context " expression, which could have started in a braceless context
function s:IsContOne(cont) function s:IsContOne(cont)
let [l:num, b_l] = [b:js_cache[1] + !b:js_cache[1], 0] let [l:num, pind] = b:js_cache[1] ?
let pind = b:js_cache[1] ? indent(b:js_cache[1]) + s:sw() : 0 \ [b:js_cache[1], indent(b:js_cache[1]) + s:sw()] : [1,0]
let ind = indent('.') + !a:cont let [ind, b_l] = [indent('.') + !a:cont, 0]
while line('.') > l:num && ind > pind || line('.') == l:num while line('.') > l:num && ind > pind || line('.') == l:num
if indent('.') < ind && s:OneScope() if indent('.') < ind && s:OneScope()
let b_l += 1 let b_l += 1
@@ -319,8 +313,8 @@ function s:IsContOne(cont)
endfunction endfunction
function s:IsSwitch() function s:IsSwitch()
call call('cursor',b:js_cache[1:]) return search(printf('\m\C\%%%dl\%%%dc%s',b:js_cache[1],b:js_cache[2],
return search('\m\C\%#.\_s*\%(\%(\/\/.*\_$\|\/\*\_.\{-}\*\/\)\@>\_s*\)*\%(case\|default\)\>','nWc'.s:z) \ '{\_s*\%(\%(\/\/.*\_$\|\/\*\_.\{-}\*\/\)\@>\_s*\)*\%(case\|default\)\>'),'nW'.s:z)
endfunction endfunction
" https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader " https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader
@@ -370,16 +364,16 @@ function GetJavascriptIndent()
return -1 return -1
endif endif
let s:l1 = max([0,prevnonblank(v:lnum) - (s:rel ? 2000 : 1000), let nest = get(get(b:,'hi_indent',{}),'blocklnr')
\ get(get(b:,'hi_indent',{}),'blocklnr')]) let s:l1 = max([0, prevnonblank(v:lnum) - (s:rel ? 2000 : 1000), nest])
call cursor(v:lnum,1) call cursor(v:lnum,1)
if s:PreviousToken() is '' if s:PreviousToken() is ''
return return
endif endif
let [l:lnum, pline] = [line('.'), getline('.')[:col('.')-1]] let [l:lnum, lcol, pline] = getpos('.')[1:2] + [getline('.')[:col('.')-1]]
let l:line = substitute(l:line,'^\s*','','') let l:line = substitute(l:line,'^\s*','','')
let l:line_raw = l:line let l:line_s = l:line[0]
if l:line[:1] == '/*' if l:line[:1] == '/*'
let l:line = substitute(l:line,'^\%(\/\*.\{-}\*\/\s*\)*','','') let l:line = substitute(l:line,'^\%(\/\*.\{-}\*\/\s*\)*','','')
endif endif
@@ -429,7 +423,7 @@ function GetJavascriptIndent()
endif endif
endif endif
if idx == -1 && pline[-1:] !~ '[{;]' if idx == -1 && pline[-1:] !~ '[{;]'
call cursor(l:lnum, len(pline)) call cursor(l:lnum, lcol)
let sol = matchstr(l:line,s:opfirst) let sol = matchstr(l:line,s:opfirst)
if sol is '' || sol == '/' && s:SynAt(v:lnum, if sol is '' || sol == '/' && s:SynAt(v:lnum,
\ 1 + len(getline(v:lnum)) - len(l:line)) =~? 'regex' \ 1 + len(getline(v:lnum)) - len(l:line)) =~? 'regex'
@@ -445,14 +439,15 @@ function GetJavascriptIndent()
else else
let is_op = s:sw() let is_op = s:sw()
endif endif
call cursor(l:lnum, len(pline)) call cursor(l:lnum, lcol)
let b_l = s:Nat(s:IsContOne(is_op) - (!is_op && l:line =~ '^{')) * s:sw() let b_l = s:Nat(s:IsContOne(is_op) - (!is_op && l:line =~ '^{')) * s:sw()
endif endif
elseif idx.s:LookingAt().&cino =~ '^-1(.*(' && (search('\m\S','nbW',num) || s:ParseCino('U')) elseif idx == -1 && s:LookingAt() == '(' && &cino =~ '(' &&
\ (search('\m\S','nbW',num) || s:ParseCino('U'))
let pval = s:ParseCino('(') let pval = s:ParseCino('(')
if !pval if !pval
let [Wval, vcol] = [s:ParseCino('W'), virtcol('.')] let [Wval, vcol] = [s:ParseCino('W'), virtcol('.')]
if search('\m\S','W',num) if search('\m'.get(g:,'javascript_indent_W_pat','\S'),'W',num)
return s:ParseCino('w') ? vcol : virtcol('.')-1 return s:ParseCino('w') ? vcol : virtcol('.')-1
endif endif
return Wval ? s:Nat(num_ind + Wval) : vcol return Wval ? s:Nat(num_ind + Wval) : vcol
@@ -462,7 +457,7 @@ function GetJavascriptIndent()
" main return " main return
if l:line =~ '^[])}]\|^|}' if l:line =~ '^[])}]\|^|}'
if l:line_raw[0] == ')' if l:line_s == ')'
if s:ParseCino('M') if s:ParseCino('M')
return indent(l:lnum) return indent(l:lnum)
elseif num && &cino =~# 'm' && !s:ParseCino('m') elseif num && &cino =~# 'm' && !s:ParseCino('m')
@@ -472,6 +467,8 @@ function GetJavascriptIndent()
return num_ind return num_ind
elseif num elseif num
return s:Nat(num_ind + get(l:,'case_offset',s:sw()) + l:switch_offset + b_l + is_op) return s:Nat(num_ind + get(l:,'case_offset',s:sw()) + l:switch_offset + b_l + is_op)
elseif nest
return indent(nextnonblank(nest+1)) + b_l + is_op
endif endif
return b_l + is_op return b_l + is_op
endfunction endfunction

View File

@@ -21,19 +21,19 @@ if exists("*GetJuliaIndent")
finish finish
endif endif
let s:skipPatterns = '\<julia\%(Comprehension\%(For\|If\)\|RangeEnd\|CommentL\|\%([bsv]\|ip\|big\|MIME\|Shell\|Printf\|Doc\)\=String\|RegEx\|SymbolS\?\)\>' let s:skipPatterns = '\<julia\%(Comprehension\%(For\|If\)\|RangeEnd\|Comment[LM]\|\%([bsv]\|ip\|big\|MIME\|Shell\|Printf\|Doc\)\=String\|RegEx\|SymbolS\?\)\>'
function JuliaMatch(lnum, str, regex, st, ...) function JuliaMatch(lnum, str, regex, st, ...)
let s = a:st let s = a:st
let e = a:0 > 0 ? a:1 : -1 let e = a:0 > 0 ? a:1 : -1
while 1 while 1
let f = match(a:str, a:regex, s) let f = match(a:str, '\C' . a:regex, s)
if e >= 0 && f >= e if e >= 0 && f >= e
return -1 return -1
endif endif
if f >= 0 if f >= 0
let attr = synIDattr(synID(a:lnum,f+1,1),"name") let attr = synIDattr(synID(a:lnum,f+1,1),"name")
if attr =~ s:skipPatterns if attr =~# s:skipPatterns
let s = f+1 let s = f+1
continue continue
endif endif
@@ -84,7 +84,7 @@ function GetJuliaNestingStruct(lnum, ...)
let i = JuliaMatch(a:lnum, line, '@\@<!\<else\>', s) let i = JuliaMatch(a:lnum, line, '@\@<!\<else\>', s)
if i >= 0 && i == fb if i >= 0 && i == fb
let s = i+1 let s = i+1
if len(blocks_stack) > 0 && blocks_stack[-1] =~ '\<\%(else\)\=if\>' if len(blocks_stack) > 0 && blocks_stack[-1] =~# '\<\%(else\)\=if\>'
let blocks_stack[-1] = 'else' let blocks_stack[-1] = 'else'
else else
call add(blocks_stack, 'else') call add(blocks_stack, 'else')
@@ -135,7 +135,7 @@ function GetJuliaNestingStruct(lnum, ...)
let i = JuliaMatch(a:lnum, line, '@\@<!\<\%(while\|for\|\%(staged\)\?function\|macro\|begin\|\%(mutable\s\+\)\?struct\|\%(\%(abstract\|primitive\)\s\+\)\?type\|immutable\|let\|quote\|do\)\>', s) let i = JuliaMatch(a:lnum, line, '@\@<!\<\%(while\|for\|\%(staged\)\?function\|macro\|begin\|\%(mutable\s\+\)\?struct\|\%(\%(abstract\|primitive\)\s\+\)\?type\|immutable\|let\|quote\|do\)\>', s)
if i >= 0 && i == fb if i >= 0 && i == fb
if match(line, '\<\%(mutable\|abstract\|primitive\)', i) != -1 if match(line, '\C\<\%(mutable\|abstract\|primitive\)', i) != -1
let s = i+11 let s = i+11
else else
let s = i+1 let s = i+1
@@ -290,16 +290,11 @@ function LastBlockIndent(lnum)
endfunction endfunction
function GetJuliaIndent() function GetJuliaIndent()
let s:save_ignorecase = &ignorecase
set noignorecase
" Find a non-blank line above the current line. " Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1) let lnum = prevnonblank(v:lnum - 1)
" At the start of the file use zero indent. " At the start of the file use zero indent.
if lnum == 0 if lnum == 0
let &ignorecase = s:save_ignorecase
unlet s:save_ignorecase
return 0 return 0
endif endif
@@ -387,8 +382,6 @@ function GetJuliaIndent()
let num_closed_blocks -= 1 let num_closed_blocks -= 1
endwhile endwhile
let &ignorecase = s:save_ignorecase
unlet s:save_ignorecase
return ind return ind
endfunction endfunction

79
indent/markdown.vim Normal file
View File

@@ -0,0 +1,79 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
if exists("b:did_indent") | finish | endif
let b:did_indent = 1
setlocal indentexpr=GetMarkdownIndent()
setlocal nolisp
setlocal autoindent
" Automatically insert bullets
setlocal formatoptions+=r
" Do not automatically insert bullets when auto-wrapping with text-width
setlocal formatoptions-=c
" Accept various markers as bullets
setlocal comments=b:*,b:+,b:-
" Automatically continue blockquote on line break
setlocal comments+=b:>
" Only define the function once
if exists("*GetMarkdownIndent") | finish | endif
function! s:IsMkdCode(lnum)
let name = synIDattr(synID(a:lnum, 1, 0), 'name')
return (name =~ '^mkd\%(Code$\|Snippet\)' || name != '' && name !~ '^\%(mkd\|html\)')
endfunction
function! s:IsLiStart(line)
return a:line !~ '^ *\([*-]\)\%( *\1\)\{2}\%( \|\1\)*$' &&
\ a:line =~ '^\s*[*+-] \+'
endfunction
function! s:IsHeaderLine(line)
return a:line =~ '^\s*#'
endfunction
function! s:IsBlankLine(line)
return a:line =~ '^$'
endfunction
function! s:PrevNonBlank(lnum)
let i = a:lnum
while i > 1 && s:IsBlankLine(getline(i))
let i -= 1
endwhile
return i
endfunction
function GetMarkdownIndent()
if v:lnum > 2 && s:IsBlankLine(getline(v:lnum - 1)) && s:IsBlankLine(getline(v:lnum - 2))
return 0
endif
let list_ind = get(g:, "vim_markdown_new_list_item_indent", 4)
" Find a non-blank line above the current line.
let lnum = s:PrevNonBlank(v:lnum - 1)
" At the start of the file use zero indent.
if lnum == 0 | return 0 | endif
let ind = indent(lnum)
let line = getline(lnum) " Last line
let cline = getline(v:lnum) " Current line
if s:IsLiStart(cline)
" Current line is the first line of a list item, do not change indent
return indent(v:lnum)
elseif s:IsHeaderLine(cline) && !s:IsMkdCode(v:lnum)
" Current line is the header, do not indent
return 0
elseif s:IsLiStart(line)
if s:IsMkdCode(lnum)
return ind
else
" Last line is the first line of a list item, increase indent
return ind + list_ind
end
else
return ind
endif
endfunction
endif

View File

@@ -33,6 +33,12 @@ function! GetNixIndent()
return 0 return 0
endif endif
" Skip indentation for single line comments explicitly, in case a
" comment was just inserted (eg. visual block mode)
if getline(v:lnum) =~ '^\s*#'
return indent(v:lnum)
endif
if synIDattr(synID(v:lnum, 1, 1), "name") !~ s:skip_syntax if synIDattr(synID(v:lnum, 1, 1), "name") !~ s:skip_syntax
let current_line = getline(v:lnum) let current_line = getline(v:lnum)
let last_line = getline(lnum) let last_line = getline(lnum)
@@ -63,7 +69,7 @@ function! GetNixIndent()
let ind = indent(v:lnum) let ind = indent(v:lnum)
let bslnum = searchpair('''''', '', '''''', 'bnW', let bslnum = searchpair('''''', '', '''''', 'bnW',
\ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "InterpolationSpecial$"') \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "StringSpecial$"')
if ind <= indent(bslnum) if ind <= indent(bslnum)
let ind = indent(bslnum) + &sw let ind = indent(bslnum) + &sw

View File

@@ -42,11 +42,15 @@ endfunction
function! s:IsExcludedFromIndentAtPosition(line, column) function! s:IsExcludedFromIndentAtPosition(line, column)
let name = s:SyntaxNameAtPosition(a:line, a:column) let name = s:SyntaxNameAtPosition(a:line, a:column)
return name ==# "swiftComment" || name ==# "swiftString" return s:IsSyntaxNameExcludedFromIndent(name)
endfunction endfunction
function! s:IsExcludedFromIndent() function! s:IsExcludedFromIndent()
return s:SyntaxName() ==# "swiftComment" || s:SyntaxName() ==# "swiftString" return s:IsSyntaxNameExcludedFromIndent(s:SyntaxName())
endfunction
function! s:IsSyntaxNameExcludedFromIndent(name)
return a:name ==# "swiftComment" || a:name ==# "swiftString" || a:name ==# "swiftInterpolatedWrapper" || a:name ==# "swiftMultilineInterpolatedWrapper" || a:name ==# "swiftMultilineString"
endfunction endfunction
function! s:IsCommentLine(lnum) function! s:IsCommentLine(lnum)
@@ -103,10 +107,10 @@ function! SwiftIndent(...)
return indent(openingSquare) + shiftwidth() return indent(openingSquare) + shiftwidth()
endif endif
if line =~ ":$" if line =~ ":$" && (line =~ '^\s*case\W' || line =~ '^\s*default\W')
let switch = search("switch", "bWn") let switch = search("switch", "bWn")
return indent(switch) return indent(switch)
elseif previous =~ ":$" elseif previous =~ ":$" && (previous =~ '^\s*case\W' || previous =~ '^\s*default\W')
return previousIndent + shiftwidth() return previousIndent + shiftwidth()
endif endif
@@ -133,12 +137,26 @@ function! SwiftIndent(...)
return previousIndent + shiftwidth() return previousIndent + shiftwidth()
elseif line =~ "}.*{" elseif line =~ "}.*{"
let openingBracket = searchpair("{", "", "}", "bWn", "s:IsExcludedFromIndent()") let openingBracket = searchpair("{", "", "}", "bWn", "s:IsExcludedFromIndent()")
let bracketLine = getline(openingBracket)
let numOpenParensBracketLine = s:NumberOfMatches("(", bracketLine, openingBracket)
let numCloseParensBracketLine = s:NumberOfMatches(")", bracketLine, openingBracket)
if numOpenParensBracketLine > numCloseParensBracketLine
let line = line(".")
let column = col(".")
call cursor(openingParen, column)
let openingParenCol = searchpairpos("(", "", ")", "bWn", "s:IsExcludedFromIndent()")[1]
call cursor(line, column)
return openingParenCol
endif
return indent(openingBracket) return indent(openingBracket)
elseif currentCloseBrackets > currentOpenBrackets elseif currentCloseBrackets > currentOpenBrackets
let column = col(".") let column = col(".")
call cursor(line("."), 1) let line = line(".")
call cursor(line, 1)
let openingBracket = searchpair("{", "", "}", "bWn", "s:IsExcludedFromIndent()") let openingBracket = searchpair("{", "", "}", "bWn", "s:IsExcludedFromIndent()")
call cursor(line("."), column) call cursor(line, column)
let bracketLine = getline(openingBracket) let bracketLine = getline(openingBracket)
@@ -151,8 +169,23 @@ function! SwiftIndent(...)
let openingParen = searchpair("(", "", ")", "bWn", "s:IsExcludedFromIndent()") let openingParen = searchpair("(", "", ")", "bWn", "s:IsExcludedFromIndent()")
call cursor(line, column) call cursor(line, column)
return indent(openingParen) return indent(openingParen)
elseif numOpenParensBracketLine > numCloseParensBracketLine
let line = line(".")
let column = col(".")
call cursor(openingParen, column)
let openingParenCol = searchpairpos("(", "", ")", "bWn", "s:IsExcludedFromIndent()")[1]
call cursor(line, column)
return openingParenCol
endif endif
return indent(openingBracket) return indent(openingBracket)
elseif line =~ '^\s*)$'
let line = line(".")
let column = col(".")
call cursor(line, 1)
let openingParen = searchpair("(", "", ")", "bWn", "s:IsExcludedFromIndent()")
call cursor(line, column)
return indent(openingParen)
else else
" - Current line is blank, and the user presses 'o' " - Current line is blank, and the user presses 'o'
return previousIndent return previousIndent
@@ -196,8 +229,19 @@ function! SwiftIndent(...)
return previousIndent + shiftwidth() return previousIndent + shiftwidth()
endif endif
let previousParen = match(previous, "(") let previousParen = match(previous, '\v\($')
return indent(previousParen) + shiftwidth() if previousParen != -1
return previousIndent + shiftwidth()
endif
let line = line(".")
let column = col(".")
call cursor(previousNum, col([previousNum, "$"]))
let previousParen = searchpairpos("(", "", ")", "cbWn", "s:IsExcludedFromIndent()")
call cursor(line, column)
" Match the last non escaped paren on the previous line
return previousParen[1]
endif endif
if numOpenBrackets > numCloseBrackets if numOpenBrackets > numCloseBrackets
@@ -206,7 +250,7 @@ function! SwiftIndent(...)
call cursor(previousNum, column) call cursor(previousNum, column)
let openingParen = searchpair("(", "", ")", "bWn", "s:IsExcludedFromIndent()") let openingParen = searchpair("(", "", ")", "bWn", "s:IsExcludedFromIndent()")
call cursor(line, column) call cursor(line, column)
return indent(openingParen) + shiftwidth() return openingParen + 1
endif endif
" - Previous line has close then open braces, indent previous + 1 'sw' " - Previous line has close then open braces, indent previous + 1 'sw'
@@ -226,11 +270,23 @@ function! SwiftIndent(...)
" - Line above has (unmatched) open paren, next line needs indent " - Line above has (unmatched) open paren, next line needs indent
if numOpenParens > 0 if numOpenParens > 0
let savePosition = getcurpos() let savePosition = getcurpos()
let lastColumnOfPreviousLine = col([previousNum, "$"]) - 1
" Must be at EOL because open paren has to be above (left of) the cursor " Must be at EOL because open paren has to be above (left of) the cursor
call cursor(previousNum, [previousNum, col("$")]) call cursor(previousNum, lastColumnOfPreviousLine)
let previousParen = searchpair("(", "", ")", "cbWn", "s:IsExcludedFromIndent()") let previousParen = searchpairpos("(", "", ")", "cbWn", "s:IsExcludedFromIndent()")[1]
" If the paren on the last line is the last character, indent the contents
" at shiftwidth + previous indent
if previousParen == lastColumnOfPreviousLine
return previousIndent + shiftwidth()
endif
" The previous line opens a closure and doesn't close it
if numOpenBrackets > numCloseBrackets
return previousParen + shiftwidth()
endif
call setpos(".", savePosition) call setpos(".", savePosition)
return indent(previousParen) + shiftwidth() return previousParen
endif endif
return cindent return cindent

View File

@@ -11,7 +11,7 @@ describe "My Vim plugin" do
extensions.each do |ext| extensions.each do |ext|
it "should parse #{ext} file" do it "should parse #{ext} file" do
Timeout::timeout(5) do Timeout::timeout(15) do
write_file "#{ext}", "" write_file "#{ext}", ""
vim.edit "#{ext}" vim.edit "#{ext}"
vim.insert "sample" vim.insert "sample"

View File

@@ -3,24 +3,125 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jenkins') == -1
runtime syntax/groovy.vim runtime syntax/groovy.vim
syn keyword jenkinsfileBuiltInVariable currentBuild syn keyword jenkinsfileBuiltInVariable currentBuild
syn keyword jenkinsfileSection pipeline agent stages steps
syn keyword jenkinsfileDirective environment options parameters triggers stage tools input when
syn keyword jenkinsfileOption contained buildDiscarder disableConcurrentBuilds overrideIndexTriggers skipDefaultCheckout nextgroup=jenkinsfileOptionParams
syn keyword jenkinsfileOption contained skipStagesAfterUnstable checkoutToSubdirectory timeout retry timestamps nextgroup=jenkinsfileOptionParams
syn region jenkinsfileOptionParams contained start="(" end=")" transparent contains=@groovyTop
syn match jenkinsfileOptionO /[a-zA-Z]\+([^)]*)/ contains=jenkinsfileOption,jenkinsfileOptionParams transparent containedin=groovyParenT1
syn keyword jenkinsfileCoreStep checkout syn keyword jenkinsfileCoreStep checkout
syn keyword jenkinsfileCoreStep docker skipwhite nextgroup=jenkinsFileDockerConfigBlock
syn keyword jenkinsfileCoreStep node syn keyword jenkinsfileCoreStep node
syn keyword jenkinsfileCoreStep scm syn keyword jenkinsfileCoreStep scm
syn keyword jenkinsfileCoreStep sh syn keyword jenkinsfileCoreStep sh
syn keyword jenkinsfileCoreStep stage syn keyword jenkinsfileCoreStep stage
syn keyword jenkinsfileCoreStep parallel
syn keyword jenkinsfileCoreStep steps
syn keyword jenkinsfileCoreStep step syn keyword jenkinsfileCoreStep step
syn keyword jenkinsfileCoreStep tool syn keyword jenkinsfileCoreStep tool
syn keyword jenkinsfilePluginStep docker " TODO: These should probably be broken out.
syn keyword jenkinsfilePluginStep emailext syn keyword jenkinsfileCoreStep post always changed failure success unstable aborted
syn keyword jenkinsfilePluginStep exwsAllocate
syn keyword jenkinsfilePluginStep exws
syn keyword jenkinsfilePluginStep httpRequest
syn keyword jenkinsfilePluginStep junit
hi link jenkinsfileCoreStep Function syn region jenkinsFileDockerConfigBlock contained start="{" end="}" contains=groovyString,jenkinsfileDockerKeyword transparent
hi link jenkinsfilePluginStep Include syn keyword jenkinsFileDockerKeyword contained image args dockerfile additionalBuildArgs
hi link jenkinsfileBuiltInVariable Identifier
syn keyword jenkinsfilePipelineStep Applitools ArtifactoryGradleBuild Consul MavenDescriptorStep OneSky VersionNumber
syn keyword jenkinsfilePipelineStep ViolationsToBitbucketServer ViolationsToGitHub ViolationsToGitLab _OcAction _OcContextInit
syn keyword jenkinsfilePipelineStep _OcWatch acceptGitLabMR acsDeploy activateDTConfiguration addBadge addErrorBadge
syn keyword jenkinsfilePipelineStep addGitLabMRComment addInfoBadge addInteractivePromotion addShortText addWarningBadge
syn keyword jenkinsfilePipelineStep allure anchore androidApkMove androidApkUpload androidLint ansiColor ansiblePlaybook
syn keyword jenkinsfilePipelineStep ansibleTower ansibleVault appMonBuildEnvironment appMonPublishTestResults appMonRegisterTestRun
syn keyword jenkinsfilePipelineStep applatix approveReceivedEvent approveRequestedEvent aqua archive archiveArtifacts
syn keyword jenkinsfilePipelineStep arestocats artifactResolver artifactoryDistributeBuild artifactoryDownload artifactoryMavenBuild
syn keyword jenkinsfilePipelineStep artifactoryPromoteBuild artifactoryUpload awaitDeployment awaitDeploymentCompletion
syn keyword jenkinsfilePipelineStep awsCodeBuild awsIdentity azureCLI azureDownload azureFunctionAppPublish azureUpload
syn keyword jenkinsfilePipelineStep azureVMSSUpdate azureVMSSUpdateInstances azureWebAppPublish backlogPullRequest bat
syn keyword jenkinsfilePipelineStep bearychatSend benchmark bitbucketStatusNotify blazeMeterTest build buildBamboo buildImage
syn keyword jenkinsfilePipelineStep bzt cache catchError cbt cbtScreenshotsTest cbtSeleniumTest cfInvalidate cfnCreateChangeSet
syn keyword jenkinsfilePipelineStep cfnDelete cfnDeleteStackSet cfnDescribe cfnExecuteChangeSet cfnExports cfnUpdate
syn keyword jenkinsfilePipelineStep cfnUpdateStackSet cfnValidate changeAsmVer checkstyle chefSinatraStep cifsPublisher
syn keyword jenkinsfilePipelineStep cleanWs cleanup cloudshareDockerMachine cm cmake cmakeBuild cobertura codefreshLaunch
syn keyword jenkinsfilePipelineStep codefreshRun codescene codesonar collectEnv conanAddRemote conanAddUser configFileProvider
syn keyword jenkinsfilePipelineStep container containerLog contrastAgent contrastVerification copy copyArtifacts coverityResults
syn keyword jenkinsfilePipelineStep cpack createDeploymentEvent createEnvironment createEvent createMemoryDump createSummary
syn keyword jenkinsfilePipelineStep createThreadDump crxBuild crxDeploy crxDownload crxReplicate crxValidate ctest ctmInitiatePipeline
syn keyword jenkinsfilePipelineStep ctmPostPiData ctmSetPiData cucumber cucumberSlackSend currentNamespace debianPbuilder
syn keyword jenkinsfilePipelineStep deleteDir dependencyCheckAnalyzer dependencyCheckPublisher dependencyCheckUpdateOnly
syn keyword jenkinsfilePipelineStep dependencyTrackPublisher deployAPI deployArtifacts deployLambda dingding dir disk
syn keyword jenkinsfilePipelineStep dockerFingerprintFrom dockerFingerprintRun dockerNode dockerPullStep dockerPushStep
syn keyword jenkinsfilePipelineStep dockerPushWithProxyStep doktor downloadProgetPackage downstreamPublisher dropbox
syn keyword jenkinsfilePipelineStep dry ec2 ec2ShareAmi echo ecrLogin emailext emailextrecipients envVarsForTool error
syn keyword jenkinsfilePipelineStep evaluateGate eventSourceLambda executeCerberusCampaign exportPackages exportProjects
syn keyword jenkinsfilePipelineStep exws exwsAllocate figlet fileExists fileOperations findFiles findbugs fingerprint
syn keyword jenkinsfilePipelineStep flywayrunner ftp ftpPublisher gatlingArchive getArtifactoryServer getContext getLastChangesPublisher
syn keyword jenkinsfilePipelineStep git gitbisect githubNotify gitlabBuilds gitlabCommitStatus googleCloudBuild googleStorageDownload
syn keyword jenkinsfilePipelineStep googleStorageUpload gprbuild greet hipchatSend http httpRequest hub_detect hub_scan
syn keyword jenkinsfilePipelineStep hub_scan_failure hubotApprove hubotSend importPackages importProjects inNamespace
syn keyword jenkinsfilePipelineStep inSession initConanClient input invokeLambda isUnix ispwOperation ispwRegisterWebhook
syn keyword jenkinsfilePipelineStep ispwWaitForWebhook jacoco jdbc jiraAddComment jiraAddWatcher jiraAssignIssue jiraAssignableUserSearch
syn keyword jenkinsfilePipelineStep jiraComment jiraDeleteAttachment jiraDeleteIssueLink jiraDeleteIssueRemoteLink jiraDeleteIssueRemoteLinks
syn keyword jenkinsfilePipelineStep jiraDownloadAttachment jiraEditComment jiraEditComponent jiraEditIssue jiraEditVersion
syn keyword jenkinsfilePipelineStep jiraGetAttachmentInfo jiraGetComment jiraGetComments jiraGetComponent jiraGetComponentIssueCount
syn keyword jenkinsfilePipelineStep jiraGetFields jiraGetIssue jiraGetIssueLink jiraGetIssueLinkTypes jiraGetIssueRemoteLink
syn keyword jenkinsfilePipelineStep jiraGetIssueRemoteLinks jiraGetIssueTransitions jiraGetIssueWatches jiraGetProject
syn keyword jenkinsfilePipelineStep jiraGetProjectComponents jiraGetProjectStatuses jiraGetProjectVersions jiraGetProjects
syn keyword jenkinsfilePipelineStep jiraGetVersion jiraIssueSelector jiraJqlSearch jiraLinkIssues jiraNewComponent jiraNewIssue
syn keyword jenkinsfilePipelineStep jiraNewIssueRemoteLink jiraNewIssues jiraNewVersion jiraNotifyIssue jiraSearch jiraTransitionIssue
syn keyword jenkinsfilePipelineStep jiraUploadAttachment jiraUserSearch jmhReport jobDsl junit klocworkBuildSpecGeneration
syn keyword jenkinsfilePipelineStep klocworkIncremental klocworkIntegrationStep1 klocworkIntegrationStep2 klocworkIssueSync
syn keyword jenkinsfilePipelineStep klocworkQualityGateway klocworkWrapper kubernetesApply kubernetesDeploy lastChanges
syn keyword jenkinsfilePipelineStep library libraryResource liquibaseDbDoc liquibaseRollback liquibaseUpdate listAWSAccounts
syn keyword jenkinsfilePipelineStep livingDocs loadRunnerTest lock logstashSend mail marathon mattermostSend memoryMap
syn keyword jenkinsfilePipelineStep milestone mockLoad newArtifactoryServer newBuildInfo newGradleBuild newMavenBuild
syn keyword jenkinsfilePipelineStep nexusArtifactUploader nexusPolicyEvaluation nexusPublisher node nodejs nodesByLabel
syn keyword jenkinsfilePipelineStep notifyBitbucket notifyDeploymon notifyOTC nunit nvm octoPerfTest office365ConnectorSend
syn keyword jenkinsfilePipelineStep openTasks openshiftBuild openshiftCreateResource openshiftDeleteResourceByJsonYaml
syn keyword jenkinsfilePipelineStep openshiftDeleteResourceByKey openshiftDeleteResourceByLabels openshiftDeploy openshiftExec
syn keyword jenkinsfilePipelineStep openshiftImageStream openshiftScale openshiftTag openshiftVerifyBuild openshiftVerifyDeployment
syn keyword jenkinsfilePipelineStep openshiftVerifyService openstackMachine osfBuilderSuiteForSFCCDeploy p4 p4approve
syn keyword jenkinsfilePipelineStep p4publish p4sync p4tag p4unshelve pagerduty parasoftFindings pcBuild pdrone perfReport
syn keyword jenkinsfilePipelineStep perfSigReports perfpublisher plot pmd podTemplate powershell pragprog pretestedIntegrationPublisher
syn keyword jenkinsfilePipelineStep properties protecodesc publishATX publishBrakeman publishBuildInfo publishBuildRecord
syn keyword jenkinsfilePipelineStep publishConfluence publishDeployRecord publishETLogs publishEventQ publishGenerators
syn keyword jenkinsfilePipelineStep publishHTML publishLambda publishLastChanges publishSQResults publishStoplight publishTMS
syn keyword jenkinsfilePipelineStep publishTRF publishTestResult publishTraceAnalysis publishUNIT publishValgrind pullPerfSigReports
syn keyword jenkinsfilePipelineStep puppetCode puppetHiera puppetJob puppetQuery pushImage pushToCloudFoundry pwd pybat
syn keyword jenkinsfilePipelineStep pysh qc queryModuleBuildRequest questavrm r radargunreporting rancher readFile readJSON
syn keyword jenkinsfilePipelineStep readManifest readMavenPom readProperties readTrusted readXml readYaml realtimeJUnit
syn keyword jenkinsfilePipelineStep registerWebhook release resolveScm retry rocketSend rtp runConanCommand runFromAlmBuilder
syn keyword jenkinsfilePipelineStep runLoadRunnerScript runValgrind s3CopyArtifact s3Delete s3Download s3FindFiles s3Upload
syn keyword jenkinsfilePipelineStep salt sauce saucePublisher sauceconnect script selectRun sendCIMessage sendDeployableMessage
syn keyword jenkinsfilePipelineStep serviceNow_attachFile serviceNow_attachZip serviceNow_createChange serviceNow_getCTask
syn keyword jenkinsfilePipelineStep serviceNow_getChangeState serviceNow_updateChangeItem setAccountAlias setGerritReview
syn keyword jenkinsfilePipelineStep setGitHubPullRequestStatus sh sha1 signAndroidApks silkcentral silkcentralCollectResults
syn keyword jenkinsfilePipelineStep slackSend sleep sloccountPublish snsPublish snykSecurity sonarToGerrit sparkSend
syn keyword jenkinsfilePipelineStep splitTests springBoot sscm sseBuild sseBuildAndPublish sshPublisher sshagent stage
syn keyword jenkinsfilePipelineStep startET startSandbox startSession startTS stash step stepcounter stopET stopSandbox
syn keyword jenkinsfilePipelineStep stopSession stopTS submitJUnitTestResultsToqTest submitModuleBuildRequest svChangeModeStep
syn keyword jenkinsfilePipelineStep svDeployStep svExportStep svUndeployStep svn tagImage task teamconcert tee testFolder
syn keyword jenkinsfilePipelineStep testPackage testProject testiniumExecution themisRefresh themisReport throttle time
syn keyword jenkinsfilePipelineStep timeout timestamps tm tool touch triggerInputStep triggerJob typetalkSend uftScenarioLoad
syn keyword jenkinsfilePipelineStep unarchive unstash unzip updateBotPush updateGitlabCommitStatus updateIdP updateTrustPolicy
syn keyword jenkinsfilePipelineStep upload-pgyer uploadProgetPackage uploadToIncappticConnect vSphere validateDeclarativePipeline
syn keyword jenkinsfilePipelineStep vmanagerLaunch waitForCIMessage waitForJob waitForQualityGate waitForWebhook waitUntil
syn keyword jenkinsfilePipelineStep walk waptProReport warnings whitesource winRMClient withAWS withAnt withContext withCoverityEnv
syn keyword jenkinsfilePipelineStep withCredentials withDockerContainer withDockerRegistry withDockerServer withEnv withKafkaLog
syn keyword jenkinsfilePipelineStep withKubeConfig withMaven withNPM withPod withPythonEnv withSCM withSandbox withSonarQubeEnv
syn keyword jenkinsfilePipelineStep withTypetalk wrap writeFile writeJSON writeMavenPom writeProperties writeXml writeYaml
syn keyword jenkinsfilePipelineStep ws xUnitImporter xUnitUploader xldCreatePackage xldDeploy xldPublishPackage xlrCreateRelease
syn keyword jenkinsfilePipelineStep xrayScanBuild zip
hi link jenkinsfileSection Statement
hi link jenkinsfileDirective jenkinsfileSection
hi link jenkinsfileOption Function
hi link jenkinsfileCoreStep Function
hi link jenkinsfilePipelineStep Include
hi link jenkinsfileBuiltInVariable Identifier
hi link jenkinsFileDockerKeyword jenkinsfilePipelineStep
let b:current_syntax = "Jenkinsfile" let b:current_syntax = "Jenkinsfile"

View File

@@ -3,28 +3,23 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1
" Vim syntax file " Vim syntax file
" Language: Ansible YAML/Jinja templates " Language: Ansible YAML/Jinja templates
" Maintainer: Dave Honneffer <pearofducks@gmail.com> " Maintainer: Dave Honneffer <pearofducks@gmail.com>
" Last Change: 2015.09.06 " Last Change: 2018.02.08
if exists("b:current_syntax")
finish
endif
if !exists("main_syntax") if !exists("main_syntax")
let main_syntax = 'yaml' let main_syntax = 'yaml'
endif endif
let b:current_syntax = '' if exists('b:current_syntax')
unlet b:current_syntax let s:current_syntax=b:current_syntax
runtime! syntax/yaml.vim unlet b:current_syntax
endif
let b:current_syntax = ''
unlet b:current_syntax
syntax include @Yaml syntax/yaml.vim
let b:current_syntax = ''
unlet b:current_syntax
syntax include @Jinja syntax/jinja2.vim syntax include @Jinja syntax/jinja2.vim
if exists('s:current_syntax')
let b:current_syntax=s:current_syntax
endif
" Jinja " Jinja
" ================================ " ================================
@@ -39,6 +34,12 @@ highlight link jinjaVarDelim Delimiter
" YAML " YAML
" ================================ " ================================
if exists("g:ansible_yamlKeyName")
let s:yamlKey = g:ansible_yamlKeyName
else
let s:yamlKey = "yamlBlockMappingKey"
endif
" Reset some YAML to plain styling " Reset some YAML to plain styling
" the number 80 in Ansible isn't any more important than the word root " the number 80 in Ansible isn't any more important than the word root
highlight link yamlInteger NONE highlight link yamlInteger NONE
@@ -46,58 +47,9 @@ highlight link yamlBool NONE
highlight link yamlFlowString NONE highlight link yamlFlowString NONE
" but it does make sense we visualize quotes easily " but it does make sense we visualize quotes easily
highlight link yamlFlowStringDelimiter Delimiter highlight link yamlFlowStringDelimiter Delimiter
" This is only found in stephypy/vim-yaml, since it's one line it isn't worth
fun! s:normal_keywords_highlight(name) " making conditional
if a:name == 'Comment' highlight link yamlConstant NONE
highlight link ansible_normal_keywords Comment
elseif a:name == 'Constant'
highlight link ansible_normal_keywords Constant
elseif a:name == 'Identifier'
highlight link ansible_normal_keywords Identifier
elseif a:name == 'Statement'
highlight link ansible_normal_keywords Statement
elseif a:name == 'PreProc'
highlight link ansible_normal_keywords PreProc
elseif a:name == 'Type'
highlight link ansible_normal_keywords Type
elseif a:name == 'Special'
highlight link ansible_normal_keywords Special
elseif a:name == 'Underlined'
highlight link ansible_normal_keywords Underlined
elseif a:name == 'Ignore'
highlight link ansible_normal_keywords Ignore
elseif a:name == 'Error'
highlight link ansible_normal_keywords Error
elseif a:name == 'Todo'
highlight link ansible_normal_keywords Todo
endif
endfun
fun! s:with_keywords_highlight(name)
if a:name == 'Comment'
highlight link ansible_with_keywords Comment
elseif a:name == 'Constant'
highlight link ansible_with_keywords Constant
elseif a:name == 'Identifier'
highlight link ansible_with_keywords Identifier
elseif a:name == 'Statement'
highlight link ansible_with_keywords Statement
elseif a:name == 'PreProc'
highlight link ansible_with_keywords PreProc
elseif a:name == 'Type'
highlight link ansible_with_keywords Type
elseif a:name == 'Special'
highlight link ansible_with_keywords Special
elseif a:name == 'Underlined'
highlight link ansible_with_keywords Underlined
elseif a:name == 'Ignore'
highlight link ansible_with_keywords Ignore
elseif a:name == 'Error'
highlight link ansible_with_keywords Error
elseif a:name == 'Todo'
highlight link ansible_with_keywords Todo
endif
endfun
fun! s:attribute_highlight(attributes) fun! s:attribute_highlight(attributes)
if a:attributes =~ 'a' if a:attributes =~ 'a'
@@ -121,7 +73,7 @@ else
endif endif
if exists("g:ansible_name_highlight") if exists("g:ansible_name_highlight")
syn keyword ansible_name name containedin=yamlBlockMappingKey contained execute 'syn keyword ansible_name name containedin='.s:yamlKey.' contained'
if g:ansible_name_highlight =~ 'd' if g:ansible_name_highlight =~ 'd'
highlight link ansible_name Comment highlight link ansible_name Comment
else else
@@ -129,24 +81,24 @@ if exists("g:ansible_name_highlight")
endif endif
endif endif
syn keyword ansible_debug_keywords debug containedin=yamlBlockMappingKey contained execute 'syn keyword ansible_debug_keywords debug containedin='.s:yamlKey.' contained'
highlight link ansible_debug_keywords Debug highlight link ansible_debug_keywords Debug
if exists("g:ansible_extra_keywords_highlight") if exists("g:ansible_extra_keywords_highlight")
syn keyword ansible_extra_special_keywords register always_run changed_when failed_when no_log args vars delegate_to ignore_errors containedin=yamlBlockMappingKey contained execute 'syn keyword ansible_extra_special_keywords register always_run changed_when failed_when no_log args vars delegate_to ignore_errors containedin='.s:yamlKey.' contained'
highlight link ansible_extra_special_keywords Statement highlight link ansible_extra_special_keywords Statement
endif endif
syn keyword ansible_normal_keywords include include_tasks import_tasks until retries delay when only_if become become_user block rescue always notify containedin=yamlBlockMappingKey contained execute 'syn keyword ansible_normal_keywords include include_tasks import_tasks until retries delay when only_if become become_user block rescue always notify containedin='.s:yamlKey.' contained'
if exists("g:ansible_normal_keywords_highlight") if exists("g:ansible_normal_keywords_highlight")
call s:normal_keywords_highlight(g:ansible_normal_keywords_highlight) execute 'highlight link ansible_normal_keywords '.g:ansible_normal_keywords_highlight
else else
highlight link ansible_normal_keywords Statement highlight link ansible_normal_keywords Statement
endif endif
syn match ansible_with_keywords "\vwith_.+" containedin=yamlBlockMappingKey contained execute 'syn match ansible_with_keywords "\vwith_.+" containedin='.s:yamlKey.' contained'
if exists("g:ansible_with_keywords_highlight") if exists("g:ansible_with_keywords_highlight")
call s:with_keywords_highlight(g:ansible_with_keywords_highlight) execute 'highlight link ansible_with_keywords '.g:ansible_with_keywords_highlight
else else
highlight link ansible_with_keywords Statement highlight link ansible_with_keywords Statement
endif endif

View File

@@ -1,31 +0,0 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1
" Vim syntax file
" Language: Ansible YAML/Jinja templates
" Maintainer: Dave Honneffer <pearofducks@gmail.com>
" Last Change: 2015.09.06
if exists("b:current_syntax")
finish
endif
if !exists("main_syntax")
let main_syntax = 'jinja2'
endif
let b:current_syntax = ''
unlet b:current_syntax
runtime! syntax/jinja2.vim
if exists("g:ansible_extra_syntaxes")
let s:extra_syntax = split(g:ansible_extra_syntaxes)
for syntax_name in s:extra_syntax
let b:current_syntax = ''
unlet b:current_syntax
execute 'runtime!' "syntax/" . syntax_name
endfor
endif
let b:current_syntax = "ansible_template"
endif

View File

@@ -33,12 +33,12 @@ syn region bladeComment matchgroup=bladeDelimiter start="{{--" end="--}}" c
syn keyword bladeKeyword @if @elseif @foreach @forelse @for @while @can @cannot @elsecan @elsecannot @include syn keyword bladeKeyword @if @elseif @foreach @forelse @for @while @can @cannot @elsecan @elsecannot @include
\ @includeIf @each @inject @extends @section @stack @push @unless @yield @parent @hasSection @break @continue \ @includeIf @each @inject @extends @section @stack @push @unless @yield @parent @hasSection @break @continue
\ @unset @lang @choice @component @slot @prepend \ @unset @lang @choice @component @slot @prepend @json @isset @auth @guest @switch @case @includeFirst @empty
\ nextgroup=bladePhpParenBlock skipwhite containedin=ALLBUT,@bladeExempt \ nextgroup=bladePhpParenBlock skipwhite containedin=ALLBUT,@bladeExempt
syn keyword bladeKeyword @else @endif @endunless @endfor @endforeach @empty @endforelse @endwhile @endcan syn keyword bladeKeyword @else @endif @endunless @endfor @endforeach @endforelse @endwhile @endcan
\ @endcannot @stop @append @endsection @endpush @show @overwrite @verbatim @endverbatim @endcomponent \ @endcannot @stop @append @endsection @endpush @show @overwrite @verbatim @endverbatim @endcomponent
\ @endslot @endprepend \ @endslot @endprepend @endisset @endempty @endauth @endguest @endswitch
\ containedin=ALLBUT,@bladeExempt \ containedin=ALLBUT,@bladeExempt
if exists('g:blade_custom_directives') if exists('g:blade_custom_directives')

View File

@@ -7,7 +7,7 @@ if exists("b:current_syntax")
finish finish
endif endif
syn match caddyDirective "^\s*\([a-z]\+\)" nextgroup=caddyDirectiveArgs skipwhite syn match caddyDirective "^\s*\([a-zA-Z0-9_]\+\)" nextgroup=caddyDirectiveArgs skipwhite
syn region caddyDirectiveArgs start="" end="\({\|#\|$\)"me=s-1 oneline contained contains=caddyPlaceholder,caddyString nextgroup=caddyDirectiveBlock skipwhite syn region caddyDirectiveArgs start="" end="\({\|#\|$\)"me=s-1 oneline contained contains=caddyPlaceholder,caddyString nextgroup=caddyDirectiveBlock skipwhite
syn region caddyDirectiveBlock start="{" skip="\\}" end="}" contained contains=caddySubdirective,caddyComment syn region caddyDirectiveBlock start="{" skip="\\}" end="}" contained contains=caddySubdirective,caddyComment

View File

@@ -19,22 +19,38 @@ else
endif endif
syn keyword carpSyntax def defn let do if while ref address set! the syn keyword carpSyntax def defn let do if while ref address set! the
syn keyword carpSyntax defmacro defdynamic quote car cdr cons list array syn keyword carpSyntax defmacro defdynamic quote cons list array
syn keyword carpSyntax expand deftype register system-include register-type syn keyword carpSyntax expand deftype register system-include register-type
syn keyword carpSyntax defmodule copy use module defalias definterface eval syn keyword carpSyntax defmodule copy use module defalias definterface eval
syn keyword carpSyntax expand instantiate type info help quit env build run syn keyword carpSyntax expand instantiate type info help quit env build run
syn keyword carpSyntax cat use project-set! local-include system-include syn keyword carpSyntax cat project-set! local-include
syn keyword carpSyntax add-cflag add-lib project load reload syn keyword carpSyntax add-cflag add-lib project load reload let-do ignore
syn keyword carpSyntax fmt mac-only linux-only windows-only use-all when
syn keyword carpSyntax unless defn-do comment forever-do case and* or*
syn keyword carpSyntax str* println* break doc sig hidden private
syn match carpSyntax "\vc(a|d){1,4}r"
syn keyword carpFunc Int Float Double Bool String Char Array Fn Ref Long syn keyword carpFunc Int Float Double Bool String Char Array Fn Ref Long λ
syn keyword carpFunc Pattern
syn keyword carpFunc not or and + - * / = /= >= <= > < inc dec syn keyword carpFunc not or and + - * / = /= >= <= > < inc dec
syn keyword carpFunc println print get-line from-string mod seed random syn keyword carpFunc println print get-line from-string mod random
syn keyword carpFunc random-between str mask delete append count duplicate syn keyword carpFunc random-between str mask delete append length duplicate
syn keyword carpFunc cstr chars from-chars to-int from-int sin cos sqrt acos syn keyword carpFunc cstr chars from-chars to-int from-int sin cos sqrt acos
syn keyword carpFunc atan2 exit time srand for cond floor abs neg to-float syn keyword carpFunc atan2 exit time seed-random for cond floor abs sort-with
syn keyword carpFunc subarray prefix-array suffix-array reverse sum min max
syn keyword carpFunc first last reduce format zero read-file bit-shift-left
syn keyword carpFunc bit-shift-right bit-and bit-or bit-xor bit-not safe-add
syn keyword carpFunc safe-sub safe-mul even? odd? cmp allocate repeat-indexed
syn keyword carpFunc sanitize-addresses memory-balance reset-memory-balance!
syn keyword carpFunc log-memory-balance! memory-logged assert-balanced trace
syn keyword carpFunc pi e swap! update! char-at tail head split-by words lines
syn keyword carpFunc pad-left pad-right count-char empty? random-sized substring
syn keyword carpFunc prefix-string suffix-string starts-with? ends-with?
syn keyword carpFunc string-join free sleep-seconds sleep-micros substitute
syn keyword carpFunc neg to-float match matches? find global-match match-str
syn keyword carpFunc from-float tan asin atan cosh sinh tanh exp frexp ldexp syn keyword carpFunc from-float tan asin atan cosh sinh tanh exp frexp ldexp
syn keyword carpFunc log log10 modf pow ceil clamp approx refstr foreach syn keyword carpFunc log log10 modf pow ceil clamp approx refstr foreach
syn keyword carpFunc => ==> repeat nth replicate range raw aset aset! count syn keyword carpFunc => ==> repeat nth replicate range raw aset aset!
syn keyword carpFunc push-back pop-back sort index-of element-count syn keyword carpFunc push-back pop-back sort index-of element-count
@@ -60,8 +76,9 @@ syn region carpStruc matchgroup=Delimiter start="("rs=s+1 matchgroup=Delimiter e
syn region carpStruc matchgroup=Delimiter start="\["rs=s+1 matchgroup=Delimiter end="\]"re=e-1 contains=@carpNormal syn region carpStruc matchgroup=Delimiter start="\["rs=s+1 matchgroup=Delimiter end="\]"re=e-1 contains=@carpNormal
syn region carpString start=/\%(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/ syn region carpString start=/\%(\\\)\@<!"/ skip=/\\[\\"]/ end=/"/
syn region carpPattern start=/\%(\\\)\@<!\#"/ skip=/\\[\\"]/ end=/"/
syn cluster carpNormal add=carpError,carpStruc,carpString syn cluster carpNormal add=carpError,carpStruc,carpString,carpPattern
syn cluster carpQuotedOrNormal add=carpString syn cluster carpQuotedOrNormal add=carpString
syn match carpNumber "\<[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?[lf]\?\>" contains=carpContainedNumberError syn match carpNumber "\<[-+]\?\(\d\+\|\d\+#*\.\|\d*\.\d\+\)#*\(/\d\+#*\)\?[lf]\?\>" contains=carpContainedNumberError
@@ -101,6 +118,7 @@ if version >= 508 || !exists("carp_syntax_init")
HiLink carpCopy Function HiLink carpCopy Function
HiLink carpString String HiLink carpString String
HiLink carpPattern String
HiLink carpChar Character HiLink carpChar Character
HiLink carpBoolean Boolean HiLink carpBoolean Boolean

View File

@@ -21,8 +21,10 @@ endif
let s:keepcpo= &cpo let s:keepcpo= &cpo
set cpo&vim set cpo&vim
syn region cmakeComment start="#" end="$" contains=cmakeTodo,cmakeLuaComment,@Spell syn region cmakeBracketArgument start="\[\z(=\?\|=[0-9]*\)\[" end="\]\z1\]" contains=cmakeTodo,@Spell
syn region cmakeLuaComment start="\[\z(=*\)\[" end="\]\z1\]" contains=cmakeTodo,@Spell
syn region cmakeComment start="#" end="$" contains=cmakeTodo,@Spell
syn region cmakeBracketComment start="#\[\z(=\?\|=[0-9]*\)\[" end="\]\z1\]" contains=cmakeTodo,@Spell
syn match cmakeEscaped /\(\\\\\|\\"\|\\n\|\\t\)/ contained syn match cmakeEscaped /\(\\\\\|\\"\|\\n\|\\t\)/ contained
syn region cmakeRegistry start="\[" end="]" contained oneline contains=cmakeTodo,cmakeEscaped syn region cmakeRegistry start="\[" end="]" contained oneline contains=cmakeTodo,cmakeEscaped
@@ -358,6 +360,8 @@ syn keyword cmakeTodo
\ TODO FIXME XXX \ TODO FIXME XXX
\ contained \ contained
hi def link cmakeBracketArgument String
hi def link cmakeBracketComment Comment
hi def link cmakeCommand Function hi def link cmakeCommand Function
hi def link cmakeCommandConditional Conditional hi def link cmakeCommandConditional Conditional
hi def link cmakeCommandDeprecated WarningMsg hi def link cmakeCommandDeprecated WarningMsg
@@ -367,7 +371,6 @@ hi def link cmakeEnvironment Special
hi def link cmakeEscaped Special hi def link cmakeEscaped Special
hi def link cmakeGeneratorExpression WarningMsg hi def link cmakeGeneratorExpression WarningMsg
hi def link cmakeGeneratorExpressions Constant hi def link cmakeGeneratorExpressions Constant
hi def link cmakeLuaComment Comment
hi def link cmakeModule Include hi def link cmakeModule Include
hi def link cmakeProperty Constant hi def link cmakeProperty Constant
hi def link cmakeRegistry Underlined hi def link cmakeRegistry Underlined

View File

@@ -34,7 +34,7 @@ hi def link coffeeConditional Conditional
syn match coffeeException /\<\%(try\|catch\|finally\)\>/ display syn match coffeeException /\<\%(try\|catch\|finally\)\>/ display
hi def link coffeeException Exception hi def link coffeeException Exception
syn match coffeeKeyword /\<\%(new\|in\|of\|by\|and\|or\|not\|is\|isnt\|class\|extends\|super\|do\|yield\|debugger\|import\|export\|default\|await\)\>/ syn match coffeeKeyword /\<\%(new\|in\|of\|from\|by\|and\|or\|not\|is\|isnt\|class\|extends\|super\|do\|yield\|debugger\|import\|export\|default\|await\)\>/
\ display \ display
" The `own` keyword is only a keyword after `for`. " The `own` keyword is only a keyword after `for`.
syn match coffeeKeyword /\<for\s\+own\>/ contained containedin=coffeeRepeat syn match coffeeKeyword /\<for\s\+own\>/ contained containedin=coffeeRepeat

View File

@@ -2,7 +2,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
" Language: Crystal " Language: Crystal
" Based on Ruby syntax highlight " Based on Ruby syntax highlight
" which is made by Mirko Nasato and Doug Kearns " which was made by Mirko Nasato and Doug Kearns
" --------------------------------------------- " ---------------------------------------------
if exists('b:current_syntax') if exists('b:current_syntax')
@@ -66,9 +66,9 @@ syn match crystalRegexpSpecial "\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" co
syn match crystalRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display syn match crystalRegexpSpecial "\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display
syn match crystalRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display syn match crystalRegexpSpecial "\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display
syn cluster crystalStringSpecial contains=crystalInterpolation,crystalNoInterpolation,crystalStringEscape syn cluster crystalStringSpecial contains=crystalInterpolation,crystalNoInterpolation,crystalStringEscape
syn cluster crystalExtendedStringSpecial contains=@crystalStringSpecial,crystalNestedParentheses,crystalNestedCurlyBraces,crystalNestedAngleBrackets,crystalNestedSquareBrackets syn cluster crystalExtendedStringSpecial contains=@crystalStringSpecial,crystalNestedParentheses,crystalNestedCurlyBraces,crystalNestedAngleBrackets,crystalNestedSquareBrackets
syn cluster crystalRegexpSpecial contains=crystalInterpolation,crystalNoInterpolation,crystalStringEscape,crystalRegexpSpecial,crystalRegexpEscape,crystalRegexpBrackets,crystalRegexpCharClass,crystalRegexpDot,crystalRegexpQuantifier,crystalRegexpAnchor,crystalRegexpParens,crystalRegexpComment syn cluster crystalRegexpSpecial contains=crystalInterpolation,crystalNoInterpolation,crystalStringEscape,crystalRegexpSpecial,crystalRegexpEscape,crystalRegexpBrackets,crystalRegexpCharClass,crystalRegexpDot,crystalRegexpQuantifier,crystalRegexpAnchor,crystalRegexpParens,crystalRegexpComment
" Numbers and ASCII Codes " Numbers and ASCII Codes
syn match crystalASCIICode "\%(\w\|[]})\"'/]\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)" syn match crystalASCIICode "\%(\w\|[]})\"'/]\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)"
@@ -129,7 +129,7 @@ syn region crystalString matchgroup=crystalStringDelimiter start="\"" end="\"" s
syn region crystalString matchgroup=crystalStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@crystalStringSpecial fold syn region crystalString matchgroup=crystalStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@crystalStringSpecial fold
" Character " Character
syn match crystalCharLiteral "'\%([^\\]\|\\[abefnrstv'\\]\|\\\o\{1,3}\|\\x\x\{1,2}\|\\u\x\{4}\)'" contained display syn match crystalCharLiteral "'\%([^\\]\|\\[abefnrstv'\\]\|\\\o\{1,3}\|\\x\x\{1,2}\|\\u\x\{4}\)'" contains=crystalStringEscape display
" Generalized Single Quoted String, Symbol and Array of Strings " Generalized Single Quoted String, Symbol and Array of Strings
syn region crystalString matchgroup=crystalStringDelimiter start="%[qwi]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region crystalString matchgroup=crystalStringDelimiter start="%[qwi]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold

View File

@@ -18,25 +18,15 @@ syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDec
syn match elixirComment '#.*' contains=elixirTodo,@Spell syn match elixirComment '#.*' contains=elixirTodo,@Spell
syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>' contains=elixirUnusedVariable,elixirKernelFunction syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>' contains=elixirUnusedVariable
syn match elixirKeyword '\(\.\)\@<!\<\(for\|case\|when\|with\|cond\|if\|unless\|try\|receive\|send\)\>' syn match elixirKeyword '\(\.\)\@<!\<\(for\|case\|when\|with\|cond\|if\|unless\|try\|receive\|after\|rescue\|catch\|else\|quote\|unquote\|super\|unquote_splicing\)\>:\@!'
syn match elixirKeyword '\(\.\)\@<!\<\(exit\|raise\|throw\|after\|rescue\|catch\|else\)\>'
syn match elixirKeyword '\(\.\)\@<!\<\(quote\|unquote\|super\|spawn\|spawn_link\|spawn_monitor\)\>'
" Kernel functions
syn keyword elixirKernelFunction contained is_atom is_binary is_bitstring is_boolean is_float
syn keyword elixirKernelFunction contained is_function is_integer is_list is_map is_nil
syn keyword elixirKernelFunction contained is_number is_pid is_port is_reference is_tuple
syn keyword elixirKernelFunction contained abs binary_part bit_size byte_size div elem hd length
syn keyword elixirKernelFunction contained map_size node rem round tl trunc tuple_size
syn keyword elixirInclude import require alias use syn keyword elixirInclude import require alias use
syn keyword elixirSelf self syn keyword elixirSelf self
" This unfortunately also matches function names in function calls syn match elixirUnusedVariable contained '\%(\.\)\@<!\<_\w*\>\%((\)\@!'
syn match elixirUnusedVariable contained '\v%(^|[^.])@<=<_\w*>'
syn match elixirOperator '\v\.@<!<%(and|or|in|not)>' syn match elixirOperator '\v\.@<!<%(and|or|in|not)>'
syn match elixirOperator '!==\|!=\|!' syn match elixirOperator '!==\|!=\|!'
@@ -88,16 +78,16 @@ syn region elixirString matchgroup=elixirStringDelimiter start=+\z('\)+ end=+
syn region elixirString matchgroup=elixirStringDelimiter start=+\z("\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=@Spell,@elixirStringContained syn region elixirString matchgroup=elixirStringDelimiter start=+\z("\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=@Spell,@elixirStringContained
syn region elixirString matchgroup=elixirStringDelimiter start=+\z('''\)+ end=+^\s*\z1+ contains=@Spell,@elixirStringContained syn region elixirString matchgroup=elixirStringDelimiter start=+\z('''\)+ end=+^\s*\z1+ contains=@Spell,@elixirStringContained
syn region elixirString matchgroup=elixirStringDelimiter start=+\z("""\)+ end=+^\s*\z1+ contains=@Spell,@elixirStringContained syn region elixirString matchgroup=elixirStringDelimiter start=+\z("""\)+ end=+^\s*\z1+ contains=@Spell,@elixirStringContained
syn region elixirInterpolation matchgroup=elixirInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,elixirKernelFunction,elixirComment,@elixirNotTop syn region elixirInterpolation matchgroup=elixirInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,elixirComment,@elixirNotTop
syn match elixirAtomInterpolated ':\("\)\@=' contains=elixirString syn match elixirAtomInterpolated ':\("\)\@=' contains=elixirString
syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)" syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)"
syn region elixirBlock matchgroup=elixirBlockDefinition start="\<do\>:\@!" end="\<end\>" contains=ALLBUT,elixirKernelFunction,@elixirNotTop fold syn region elixirBlock matchgroup=elixirBlockDefinition start="\<do\>:\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirElseBlock matchgroup=elixirBlockDefinition start="\<else\>:\@!" end="\<end\>" contains=ALLBUT,elixirKernelFunction,@elixirNotTop fold syn region elixirElseBlock matchgroup=elixirBlockDefinition start="\<else\>:\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirAnonymousFunction matchgroup=elixirBlockDefinition start="\<fn\>" end="\<end\>" contains=ALLBUT,elixirKernelFunction,@elixirNotTop fold syn region elixirAnonymousFunction matchgroup=elixirBlockDefinition start="\<fn\>" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirAtom,elixirPseudoVariable,elixirAlias,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirAtomInterpolated,elixirRegex,elixirString,elixirStringDelimiter,elixirRegexDelimiter,elixirInterpolationDelimiter,elixirSigil,elixirAnonymousFunction syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirAtom,elixirPseudoVariable,elixirAlias,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirAtomInterpolated,elixirRegex,elixirString,elixirStringDelimiter,elixirRegexDelimiter,elixirInterpolationDelimiter,elixirSigil,elixirAnonymousFunction,elixirComment
syn match elixirDelimEscape "\\[(<{\[)>}\]/\"'|]" transparent display contained contains=NONE syn match elixirDelimEscape "\\[(<{\[)>}\]/\"'|]" transparent display contained contains=NONE
@@ -143,6 +133,8 @@ syn region elixirDocString matchgroup=elixirSigilDelimiter start=+\%(@\w*doc\s\
" Defines " Defines
syn match elixirDefine '\<def\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl syn match elixirDefine '\<def\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
syn match elixirPrivateDefine '\<defp\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl syn match elixirPrivateDefine '\<defp\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
syn match elixirGuard '\<defguard\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
syn match elixirPrivateGuard '\<defguardp\>\(:\)\@!' nextgroup=elixirFunctionDeclaration skipwhite skipnl
syn match elixirModuleDefine '\<defmodule\>\(:\)\@!' nextgroup=elixirModuleDeclaration skipwhite skipnl syn match elixirModuleDefine '\<defmodule\>\(:\)\@!' nextgroup=elixirModuleDeclaration skipwhite skipnl
syn match elixirProtocolDefine '\<defprotocol\>\(:\)\@!' nextgroup=elixirProtocolDeclaration skipwhite skipnl syn match elixirProtocolDefine '\<defprotocol\>\(:\)\@!' nextgroup=elixirProtocolDeclaration skipwhite skipnl
syn match elixirImplDefine '\<defimpl\>\(:\)\@!' nextgroup=elixirImplDeclaration skipwhite skipnl syn match elixirImplDefine '\<defimpl\>\(:\)\@!' nextgroup=elixirImplDeclaration skipwhite skipnl
@@ -165,8 +157,8 @@ syn match elixirRecordDeclaration "[^[:space:];#<]\+" contained con
syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
syn region elixirDelegateDeclaration start='\[' end='\]' contained contains=elixirFunctionDeclaration skipwhite skipnl syn region elixirDelegateDeclaration start='\[' end='\]' contained contains=elixirFunctionDeclaration skipwhite skipnl
syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
" ExUnit " ExUnit
@@ -174,9 +166,11 @@ syn match elixirExUnitMacro "\(^\s*\)\@<=\<\(test\|describe\|setup\|setup_all\|
syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(assert\|assert_in_delta\|assert_raise\|assert_receive\|assert_received\|catch_error\)\>" syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(assert\|assert_in_delta\|assert_raise\|assert_receive\|assert_received\|catch_error\)\>"
syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(catch_exit\|catch_throw\|flunk\|refute\|refute_in_delta\|refute_receive\|refute_received\)\>" syn match elixirExUnitAssert "\(^\s*\)\@<=\<\(catch_exit\|catch_throw\|flunk\|refute\|refute_in_delta\|refute_receive\|refute_received\)\>"
hi def link elixirBlockDefinition Keyword hi def link elixirBlockDefinition Define
hi def link elixirDefine Define hi def link elixirDefine Define
hi def link elixirPrivateDefine Define hi def link elixirPrivateDefine Define
hi def link elixirGuard Define
hi def link elixirPrivateGuard Define
hi def link elixirModuleDefine Define hi def link elixirModuleDefine Define
hi def link elixirProtocolDefine Define hi def link elixirProtocolDefine Define
hi def link elixirImplDefine Define hi def link elixirImplDefine Define
@@ -196,9 +190,8 @@ hi def link elixirMacroDeclaration Macro
hi def link elixirInclude Include hi def link elixirInclude Include
hi def link elixirComment Comment hi def link elixirComment Comment
hi def link elixirTodo Todo hi def link elixirTodo Todo
hi def link elixirKeyword Keyword hi def link elixirKeyword Define
hi def link elixirExUnitAssert Keyword hi def link elixirExUnitAssert Keyword
hi def link elixirKernelFunction Keyword
hi def link elixirOperator Operator hi def link elixirOperator Operator
hi def link elixirAtom Constant hi def link elixirAtom Constant
hi def link elixirPseudoVariable Constant hi def link elixirPseudoVariable Constant

View File

@@ -7,13 +7,13 @@ if exists('b:current_syntax')
endif endif
" Keywords " Keywords
syn keyword elmConditional case else if of then syn keyword elmConditional else if of then
syn keyword elmAlias alias syn keyword elmAlias alias
syn keyword elmTypedef type port let in syn keyword elmTypedef contained type port
syn keyword elmImport exposing as import module where syn keyword elmImport exposing as import module where
" Operators " Operators
syn match elmOperator "\([-!#$%`&\*\+./<=>\?@\\^|~:]\|\<_\>\)" syn match elmOperator contained "\([-!#$%`&\*\+./<=>\?@\\^|~:]\|\<_\>\)"
" Types " Types
syn match elmType "\<[A-Z][0-9A-Za-z_'-]*" syn match elmType "\<[A-Z][0-9A-Za-z_'-]*"
@@ -29,7 +29,7 @@ syn match elmTupleFunction "\((,\+)\)"
" Comments " Comments
syn keyword elmTodo TODO FIXME XXX contained syn keyword elmTodo TODO FIXME XXX contained
syn match elmLineComment "--.*" contains=elmTodo,@spell syn match elmLineComment "--.*" contains=elmTodo,@spell
syn region elmComment matchgroup=elmComment start="{-|\=" end="-}" contains=elmTodo,elmComment,@spell syn region elmComment matchgroup=elmComment start="{-|\=" end="-}" contains=elmTodo,elmComment,@spell fold
" Strings " Strings
syn match elmStringEscape "\\u[0-9a-fA-F]\{4}" contained syn match elmStringEscape "\\u[0-9a-fA-F]\{4}" contained
@@ -45,6 +45,16 @@ syn match elmFloat "\(\<\d\+\.\d\+\>\)"
" Identifiers " Identifiers
syn match elmTopLevelDecl "^\s*[a-zA-Z][a-zA-z0-9_]*\('\)*\s\+:\s\+" contains=elmOperator syn match elmTopLevelDecl "^\s*[a-zA-Z][a-zA-z0-9_]*\('\)*\s\+:\s\+" contains=elmOperator
" Folding
syn region elmTopLevelTypedef start="type" end="\n\(\n\n\)\@=" contains=ALL fold
syn region elmTopLevelFunction start="^[a-zA-Z].\+\n[a-zA-Z].\+=" end="^\(\n\+\)\@=" contains=ALL fold
syn region elmCaseBlock matchgroup=elmCaseBlockDefinition start="^\z\(\s\+\)\<case\>" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\n\z1\@!\(\n\n\)\@=" contains=ALL fold
syn region elmCaseItemBlock start="^\z\(\s\+\).\+->$" end="^\z1\@!\W\@=" end="\(\n\n\z1\@!\)\@=" end="\(\n\z1\S\)\@=" contains=ALL fold
syn region elmLetBlock matchgroup=elmLetBlockDefinition start="\<let\>" end="\<in\>" contains=ALL fold
hi def link elmCaseBlockDefinition Conditional
hi def link elmCaseBlockItemDefinition Conditional
hi def link elmLetBlockDefinition TypeDef
hi def link elmTopLevelDecl Function hi def link elmTopLevelDecl Function
hi def link elmTupleFunction Normal hi def link elmTupleFunction Normal
hi def link elmTodo Todo hi def link elmTodo Todo

View File

@@ -81,6 +81,7 @@ syn match erlangGlobalFuncRef '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\
syn match erlangVariable '\<[A-Z_][[:alnum:]_@]*' syn match erlangVariable '\<[A-Z_][[:alnum:]_@]*'
syn match erlangMacro '??\=[[:alnum:]_@]\+' syn match erlangMacro '??\=[[:alnum:]_@]\+'
syn match erlangMacro '\%(-define(\)\@<=[[:alnum:]_@]\+' syn match erlangMacro '\%(-define(\)\@<=[[:alnum:]_@]\+'
syn region erlangQuotedMacro start=/??\=\s*'/ end=/'/ contains=erlangQuotedAtomModifier
syn match erlangMap '#' syn match erlangMap '#'
syn match erlangRecord '#\s*\l[[:alnum:]_@]*' syn match erlangRecord '#\s*\l[[:alnum:]_@]*'
syn region erlangQuotedRecord start=/#\s*'/ end=/'/ contains=erlangQuotedAtomModifier syn region erlangQuotedRecord start=/#\s*'/ end=/'/ contains=erlangQuotedAtomModifier
@@ -193,6 +194,7 @@ hi def link erlangGlobalFuncCall Function
hi def link erlangGlobalFuncRef Function hi def link erlangGlobalFuncRef Function
hi def link erlangVariable Normal hi def link erlangVariable Normal
hi def link erlangMacro Normal hi def link erlangMacro Normal
hi def link erlangQuotedMacro Normal
hi def link erlangRecord Normal hi def link erlangRecord Normal
hi def link erlangQuotedRecord Normal hi def link erlangQuotedRecord Normal
hi def link erlangMap Normal hi def link erlangMap Normal
@@ -204,6 +206,7 @@ hi def link erlangGlobalFuncCall Normal
hi def link erlangGlobalFuncRef Normal hi def link erlangGlobalFuncRef Normal
hi def link erlangVariable Identifier hi def link erlangVariable Identifier
hi def link erlangMacro Macro hi def link erlangMacro Macro
hi def link erlangQuotedMacro Macro
hi def link erlangRecord Structure hi def link erlangRecord Structure
hi def link erlangQuotedRecord Structure hi def link erlangQuotedRecord Structure
hi def link erlangMap Structure hi def link erlangMap Structure

View File

@@ -27,7 +27,9 @@ syn region gitDiff start=/^\%(@@ -\)\@=/ end=/^\%(diff --\%(git\|cc\|combined\)
syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff syn region gitDiffMerge start=/^\%(diff --\%(cc\|combined\) \)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff syn region gitDiffMerge start=/^\%(@@@@* -\)\@=/ end=/^\%(diff --\|$\)\@=/ contains=@gitDiff
syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge syn match gitDiffAdded "^ \++.*" contained containedin=gitDiffMerge
syn match gitDiffAdded "{+.*+}" contained containedin=gitDiff
syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge
syn match gitDiffRemoved "\[-.*-\]" contained containedin=gitDiff
syn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite syn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite
syn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite syn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite

View File

@@ -20,11 +20,18 @@ endif
syn include @gitcommitDiff syntax/diff.vim syn include @gitcommitDiff syntax/diff.vim
syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|#\)\@=/ fold contains=@gitcommitDiff syn region gitcommitDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^\%(diff --\|$\|#\)\@=/ fold contains=@gitcommitDiff
syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl
syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell syn match gitcommitSummary "^.\{0,50\}" contained containedin=gitcommitFirstLine nextgroup=gitcommitOverflow contains=@Spell
syn match gitcommitOverflow ".*" contained contains=@Spell syn match gitcommitOverflow ".*" contained contains=@Spell
syn match gitcommitBlank "^[^#].*" contained contains=@Spell syn match gitcommitBlank "^[^#].*" contained contains=@Spell
syn match gitcommitComment "^#.*"
if get(g:, "gitcommit_cleanup") is# "scissors"
syn match gitcommitFirstLine "\%^.*" nextgroup=gitcommitBlank skipnl
syn region gitcommitComment start=/^# -\+ >8 -\+$/ end=/\%$/ contains=gitcommitDiff
else
syn match gitcommitFirstLine "\%^[^#].*" nextgroup=gitcommitBlank skipnl
syn match gitcommitComment "^#.*"
endif
syn match gitcommitHead "^\%(# .*\n\)\+#$" contained transparent syn match gitcommitHead "^\%(# .*\n\)\+#$" contained transparent
syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite syn match gitcommitOnBranch "\%(^# \)\@<=On branch" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite
syn match gitcommitOnBranch "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite syn match gitcommitOnBranch "\%(^# \)\@<=Your branch .\{-\} '" contained containedin=gitcommitComment nextgroup=gitcommitBranch skipwhite

View File

@@ -10,18 +10,16 @@ if exists("b:current_syntax")
finish finish
endif endif
setlocal iskeyword+=-
setlocal iskeyword-=_
syn case ignore syn case ignore
syn sync minlines=10 syn sync minlines=10
syn match gitconfigComment "[#;].*" syn match gitconfigComment "[#;].*"
syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]" syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]"
syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]' syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]'
syn match gitconfigVariable "\%(^\s*\)\@<=\a\k*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite syn match gitconfigVariable "\%(^\s*\)\@<=\a[a-z0-9-]*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite
syn region gitconfigAssignment matchgroup=gitconfigNone start=+=\s*+ skip=+\\+ end=+\s*$+ contained contains=gitconfigBoolean,gitconfigNumber,gitConfigString,gitConfigEscape,gitConfigError,gitconfigComment keepend syn region gitconfigAssignment matchgroup=gitconfigNone start=+=\s*+ skip=+\\+ end=+\s*$+ contained contains=gitconfigBoolean,gitconfigNumber,gitConfigString,gitConfigEscape,gitConfigError,gitconfigComment keepend
syn keyword gitconfigBoolean true false yes no contained syn keyword gitconfigBoolean true false yes no contained
syn match gitconfigNumber "\d\+" contained syn match gitconfigNumber "\<\d\+\>" contained
syn region gitconfigString matchgroup=gitconfigDelim start=+"+ skip=+\\+ end=+"+ matchgroup=gitconfigError end=+[^\\"]\%#\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError syn region gitconfigString matchgroup=gitconfigDelim start=+"+ skip=+\\+ end=+"+ matchgroup=gitconfigError end=+[^\\"]\%#\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError
syn match gitconfigError +\\.+ contained syn match gitconfigError +\\.+ contained
syn match gitconfigEscape +\\[\\"ntb]+ contained syn match gitconfigEscape +\\[\\"ntb]+ contained

View File

@@ -11,102 +11,6 @@ if exists("b:current_syntax")
finish finish
endif endif
" Set settings to default values.
if !exists("g:go_highlight_array_whitespace_error")
let g:go_highlight_array_whitespace_error = 0
endif
if !exists("g:go_highlight_chan_whitespace_error")
let g:go_highlight_chan_whitespace_error = 0
endif
if !exists("g:go_highlight_extra_types")
let g:go_highlight_extra_types = 0
endif
if !exists("g:go_highlight_space_tab_error")
let g:go_highlight_space_tab_error = 0
endif
if !exists("g:go_highlight_trailing_whitespace_error")
let g:go_highlight_trailing_whitespace_error = 0
endif
if !exists("g:go_highlight_operators")
let g:go_highlight_operators = 0
endif
if !exists("g:go_highlight_functions")
let g:go_highlight_functions = 0
endif
if !exists("g:go_highlight_function_arguments")
let g:go_highlight_function_arguments = 0
endif
if !exists("g:go_highlight_methods")
let g:go_highlight_methods = 0
endif
if !exists("g:go_highlight_fields")
let g:go_highlight_fields = 0
endif
if !exists("g:go_highlight_types")
let g:go_highlight_types = 0
endif
if !exists("g:go_highlight_build_constraints")
let g:go_highlight_build_constraints = 0
endif
if !exists("g:go_highlight_string_spellcheck")
let g:go_highlight_string_spellcheck = 1
endif
if !exists("g:go_highlight_format_strings")
let g:go_highlight_format_strings = 1
endif
if !exists("g:go_highlight_generate_tags")
let g:go_highlight_generate_tags = 0
endif
if !exists("g:go_highlight_variable_assignments")
let g:go_highlight_variable_assignments = 0
endif
if !exists("g:go_highlight_variable_declarations")
let g:go_highlight_variable_declarations = 0
endif
let s:fold_block = 1
let s:fold_import = 1
let s:fold_varconst = 1
let s:fold_package_comment = 1
let s:fold_comment = 0
if exists("g:go_fold_enable")
" Enabled by default.
if index(g:go_fold_enable, 'block') == -1
let s:fold_block = 0
endif
if index(g:go_fold_enable, 'import') == -1
let s:fold_import = 0
endif
if index(g:go_fold_enable, 'varconst') == -1
let s:fold_varconst = 0
endif
if index(g:go_fold_enable, 'package_comment') == -1
let s:fold_package_comment = 0
endif
" Disabled by default.
if index(g:go_fold_enable, 'comment') > -1
let s:fold_comment = 1
endif
endif
syn case match syn case match
syn keyword goPackage package syn keyword goPackage package
@@ -144,7 +48,6 @@ hi def link goUnsignedInts Type
hi def link goFloats Type hi def link goFloats Type
hi def link goComplexes Type hi def link goComplexes Type
" Predefined functions and values " Predefined functions and values
syn match goBuiltins /\<\v(append|cap|close|complex|copy|delete|imag|len)\ze\(/ syn match goBuiltins /\<\v(append|cap|close|complex|copy|delete|imag|len)\ze\(/
syn match goBuiltins /\<\v(make|new|panic|print|println|real|recover)\ze\(/ syn match goBuiltins /\<\v(make|new|panic|print|println|real|recover)\ze\(/
@@ -160,7 +63,7 @@ syn keyword goTodo contained TODO FIXME XXX BUG
syn cluster goCommentGroup contains=goTodo syn cluster goCommentGroup contains=goTodo
syn region goComment start="//" end="$" contains=goGenerate,@goCommentGroup,@Spell syn region goComment start="//" end="$" contains=goGenerate,@goCommentGroup,@Spell
if s:fold_comment if go#config#FoldEnable('comment')
syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell fold syn region goComment start="/\*" end="\*/" contains=@goCommentGroup,@Spell fold
syn match goComment "\v(^\s*//.*\n)+" contains=goGenerate,@goCommentGroup,@Spell fold syn match goComment "\v(^\s*//.*\n)+" contains=goGenerate,@goCommentGroup,@Spell fold
else else
@@ -170,7 +73,7 @@ endif
hi def link goComment Comment hi def link goComment Comment
hi def link goTodo Todo hi def link goTodo Todo
if g:go_highlight_generate_tags != 0 if go#config#HighlightGenerateTags()
syn match goGenerateVariables contained /\(\$GOARCH\|\$GOOS\|\$GOFILE\|\$GOLINE\|\$GOPACKAGE\|\$DOLLAR\)\>/ syn match goGenerateVariables contained /\(\$GOARCH\|\$GOOS\|\$GOFILE\|\$GOLINE\|\$GOPACKAGE\|\$DOLLAR\)\>/
syn region goGenerate start="^\s*//go:generate" end="$" contains=goGenerateVariables syn region goGenerate start="^\s*//go:generate" end="$" contains=goGenerateVariables
hi def link goGenerate PreProc hi def link goGenerate PreProc
@@ -195,7 +98,7 @@ hi def link goEscapeError Error
" Strings and their contents " Strings and their contents
syn cluster goStringGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU,goEscapeError syn cluster goStringGroup contains=goEscapeOctal,goEscapeC,goEscapeX,goEscapeU,goEscapeBigU,goEscapeError
if g:go_highlight_string_spellcheck != 0 if go#config#HighlightStringSpellcheck()
syn region goString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@goStringGroup,@Spell syn region goString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@goStringGroup,@Spell
syn region goRawString start=+`+ end=+`+ contains=@Spell syn region goRawString start=+`+ end=+`+ contains=@Spell
else else
@@ -203,8 +106,20 @@ else
syn region goRawString start=+`+ end=+`+ syn region goRawString start=+`+ end=+`+
endif endif
if g:go_highlight_format_strings != 0 if go#config#HighlightFormatStrings()
syn match goFormatSpecifier /\([^%]\(%%\)*\)\@<=%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)*[vTtbcdoqxXUeEfgGsp]/ contained containedin=goString " [n] notation is valid for specifying explicit argument indexes
" 1. Match a literal % not preceded by a %.
" 2. Match any number of -, #, 0, space, or +
" 3. Match * or [n]* or any number or nothing before a .
" 4. Match * or [n]* or any number or nothing after a .
" 5. Match [n] or nothing before a verb
" 6. Match a formatting verb
syn match goFormatSpecifier /\
\([^%]\(%%\)*\)\
\@<=%[-#0 +]*\
\%(\%(\%(\[\d\+\]\)\=\*\)\|\d\+\)\=\
\%(\.\%(\%(\%(\[\d\+\]\)\=\*\)\|\d\+\)\=\)\=\
\%(\[\d\+\]\)\=[vTtbcdoqxXUeEfFgGsp]/ contained containedin=goString,goRawString
hi def link goFormatSpecifier goSpecialString hi def link goFormatSpecifier goSpecialString
endif endif
@@ -219,21 +134,21 @@ hi def link goCharacter Character
" Regions " Regions
syn region goParen start='(' end=')' transparent syn region goParen start='(' end=')' transparent
if s:fold_block if go#config#FoldEnable('block')
syn region goBlock start="{" end="}" transparent fold syn region goBlock start="{" end="}" transparent fold
else else
syn region goBlock start="{" end="}" transparent syn region goBlock start="{" end="}" transparent
endif endif
" import " import
if s:fold_import if go#config#FoldEnable('import')
syn region goImport start='import (' end=')' transparent fold contains=goImport,goString,goComment syn region goImport start='import (' end=')' transparent fold contains=goImport,goString,goComment
else else
syn region goImport start='import (' end=')' transparent contains=goImport,goString,goComment syn region goImport start='import (' end=')' transparent contains=goImport,goString,goComment
endif endif
" var, const " var, const
if s:fold_varconst if go#config#FoldEnable('varconst')
syn region goVar start='var (' end='^\s*)$' transparent fold syn region goVar start='var (' end='^\s*)$' transparent fold
\ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments \ contains=ALLBUT,goParen,goBlock,goFunction,goTypeName,goReceiverType,goReceiverVar,goArgumentName,goArgumentType,goSimpleArguments
syn region goConst start='const (' end='^\s*)$' transparent fold syn region goConst start='const (' end='^\s*)$' transparent fold
@@ -276,12 +191,12 @@ hi def link goImaginary Number
hi def link goImaginaryFloat Float hi def link goImaginaryFloat Float
" Spaces after "[]" " Spaces after "[]"
if g:go_highlight_array_whitespace_error != 0 if go#config#HighlightArrayWhitespaceError()
syn match goSpaceError display "\(\[\]\)\@<=\s\+" syn match goSpaceError display "\(\[\]\)\@<=\s\+"
endif endif
" Spacing errors around the 'chan' keyword " Spacing errors around the 'chan' keyword
if g:go_highlight_chan_whitespace_error != 0 if go#config#HighlightChanWhitespaceError()
" receive-only annotation on chan type " receive-only annotation on chan type
" "
" \(\<chan\>\)\@<!<- (only pick arrow when it doesn't come after a chan) " \(\<chan\>\)\@<!<- (only pick arrow when it doesn't come after a chan)
@@ -299,7 +214,7 @@ if g:go_highlight_chan_whitespace_error != 0
endif endif
" Extra types commonly seen " Extra types commonly seen
if g:go_highlight_extra_types != 0 if go#config#HighlightExtraTypes()
syn match goExtraType /\<bytes\.\(Buffer\)\>/ syn match goExtraType /\<bytes\.\(Buffer\)\>/
syn match goExtraType /\<io\.\(Reader\|ReadSeeker\|ReadWriter\|ReadCloser\|ReadWriteCloser\|Writer\|WriteCloser\|Seeker\)\>/ syn match goExtraType /\<io\.\(Reader\|ReadSeeker\|ReadWriter\|ReadCloser\|ReadWriteCloser\|Writer\|WriteCloser\|Seeker\)\>/
syn match goExtraType /\<reflect\.\(Kind\|Type\|Value\)\>/ syn match goExtraType /\<reflect\.\(Kind\|Type\|Value\)\>/
@@ -307,12 +222,12 @@ if g:go_highlight_extra_types != 0
endif endif
" Space-tab error " Space-tab error
if g:go_highlight_space_tab_error != 0 if go#config#HighlightSpaceTabError()
syn match goSpaceError display " \+\t"me=e-1 syn match goSpaceError display " \+\t"me=e-1
endif endif
" Trailing white space error " Trailing white space error
if g:go_highlight_trailing_whitespace_error != 0 if go#config#HighlightTrailingWhitespaceError()
syn match goSpaceError display excludenl "\s\+$" syn match goSpaceError display excludenl "\s\+$"
endif endif
@@ -330,7 +245,7 @@ hi def link goTodo Todo
syn match goVarArgs /\.\.\./ syn match goVarArgs /\.\.\./
" Operators; " Operators;
if g:go_highlight_operators != 0 if go#config#HighlightOperators()
" match single-char operators: - + % < > ! & | ^ * = " match single-char operators: - + % < > ! & | ^ * =
" and corresponding two-char operators: -= += %= <= >= != &= |= ^= *= == " and corresponding two-char operators: -= += %= <= >= != &= |= ^= *= ==
syn match goOperator /[-+%<>!&|^*=]=\?/ syn match goOperator /[-+%<>!&|^*=]=\?/
@@ -349,14 +264,13 @@ endif
hi def link goOperator Operator hi def link goOperator Operator
" Functions; " Functions;
if g:go_highlight_functions isnot 0 || g:go_highlight_function_arguments isnot 0 if go#config#HighlightFunctions() || go#config#HighlightFunctionArguments()
syn match goFunctionCall /\w\+\ze(/ contains=goBuiltins,goDeclaration
syn match goDeclaration /\<func\>/ nextgroup=goReceiver,goFunction,goSimpleArguments skipwhite skipnl syn match goDeclaration /\<func\>/ nextgroup=goReceiver,goFunction,goSimpleArguments skipwhite skipnl
syn match goReceiverVar /\w\+\ze\s\+\(\w\|\*\)/ nextgroup=goPointerOperator,goReceiverType skipwhite skipnl contained syn match goReceiverVar /\w\+\ze\s\+\(\w\|\*\)/ nextgroup=goPointerOperator,goReceiverType skipwhite skipnl contained
syn match goPointerOperator /\*/ nextgroup=goReceiverType contained skipwhite skipnl syn match goPointerOperator /\*/ nextgroup=goReceiverType contained skipwhite skipnl
syn match goFunction /\w\+/ nextgroup=goSimpleArguments contained skipwhite skipnl syn match goFunction /\w\+/ nextgroup=goSimpleArguments contained skipwhite skipnl
syn match goReceiverType /\w\+/ contained syn match goReceiverType /\w\+/ contained
if g:go_highlight_function_arguments isnot 0 if go#config#HighlightFunctionArguments()
syn match goSimpleArguments /(\(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goArgumentName nextgroup=goSimpleArguments skipwhite skipnl syn match goSimpleArguments /(\(\w\|\_s\|[*\.\[\],\{\}<>-]\)*)/ contained contains=goArgumentName nextgroup=goSimpleArguments skipwhite skipnl
syn match goArgumentName /\w\+\(\s*,\s*\w\+\)*\ze\s\+\(\w\|\.\|\*\|\[\)/ contained nextgroup=goArgumentType skipwhite skipnl syn match goArgumentName /\w\+\(\s*,\s*\w\+\)*\ze\s\+\(\w\|\.\|\*\|\[\)/ contained nextgroup=goArgumentType skipwhite skipnl
syn match goArgumentType /\([^,)]\|\_s\)\+,\?/ contained nextgroup=goArgumentName skipwhite skipnl syn match goArgumentType /\([^,)]\|\_s\)\+,\?/ contained nextgroup=goArgumentName skipwhite skipnl
@@ -369,22 +283,21 @@ else
syn keyword goDeclaration func syn keyword goDeclaration func
endif endif
hi def link goFunction Function hi def link goFunction Function
" Function calls;
if go#config#HighlightFunctionCalls()
syn match goFunctionCall /\w\+\ze(/ contains=goBuiltins,goDeclaration
endif
hi def link goFunctionCall Type hi def link goFunctionCall Type
" Methods;
if g:go_highlight_methods != 0
syn match goMethodCall /\.\w\+\ze(/hs=s+1
endif
hi def link goMethodCall Type
" Fields; " Fields;
if g:go_highlight_fields != 0 if go#config#HighlightFields()
syn match goField /\.\w\+\([.\ \n\r\:\)\[,]\)\@=/hs=s+1 syn match goField /\.\w\+\([.\ \n\r\:\)\[,]\)\@=/hs=s+1
endif endif
hi def link goField Identifier hi def link goField Identifier
" Structs & Interfaces; " Structs & Interfaces;
if g:go_highlight_types != 0 if go#config#HighlightTypes()
syn match goTypeConstructor /\<\w\+{\@=/ syn match goTypeConstructor /\<\w\+{\@=/
syn match goTypeDecl /\<type\>/ nextgroup=goTypeName skipwhite skipnl syn match goTypeDecl /\<type\>/ nextgroup=goTypeName skipwhite skipnl
syn match goTypeName /\w\+/ contained nextgroup=goDeclType skipwhite skipnl syn match goTypeName /\w\+/ contained nextgroup=goDeclType skipwhite skipnl
@@ -400,19 +313,19 @@ hi def link goTypeDecl Keyword
hi def link goDeclType Keyword hi def link goDeclType Keyword
" Variable Assignments " Variable Assignments
if g:go_highlight_variable_assignments != 0 if go#config#HighlightVariableAssignments()
syn match goVarAssign /\v[_.[:alnum:]]+(,\s*[_.[:alnum:]]+)*\ze(\s*([-^+|^\/%&]|\*|\<\<|\>\>|\&\^)?\=[^=])/ syn match goVarAssign /\v[_.[:alnum:]]+(,\s*[_.[:alnum:]]+)*\ze(\s*([-^+|^\/%&]|\*|\<\<|\>\>|\&\^)?\=[^=])/
hi def link goVarAssign Special hi def link goVarAssign Special
endif endif
" Variable Declarations " Variable Declarations
if g:go_highlight_variable_declarations != 0 if go#config#HighlightVariableDeclarations()
syn match goVarDefs /\v\w+(,\s*\w+)*\ze(\s*:\=)/ syn match goVarDefs /\v\w+(,\s*\w+)*\ze(\s*:\=)/
hi def link goVarDefs Special hi def link goVarDefs Special
endif endif
" Build Constraints " Build Constraints
if g:go_highlight_build_constraints != 0 if go#config#HighlightBuildConstraints()
syn match goBuildKeyword display contained "+build" syn match goBuildKeyword display contained "+build"
" Highlight the known values of GOOS, GOARCH, and other +build options. " Highlight the known values of GOOS, GOARCH, and other +build options.
syn keyword goBuildDirectives contained syn keyword goBuildDirectives contained
@@ -434,7 +347,7 @@ if g:go_highlight_build_constraints != 0
hi def link goBuildKeyword PreProc hi def link goBuildKeyword PreProc
endif endif
if g:go_highlight_build_constraints != 0 || s:fold_package_comment if go#config#HighlightBuildConstraints() || go#config#FoldEnable('package_comment')
" One or more line comments that are followed immediately by a "package" " One or more line comments that are followed immediately by a "package"
" declaration are treated like package documentation, so these must be " declaration are treated like package documentation, so these must be
" matched as comments to avoid looking like working build constraints. " matched as comments to avoid looking like working build constraints.
@@ -443,11 +356,11 @@ if g:go_highlight_build_constraints != 0 || s:fold_package_comment
exe 'syn region goPackageComment start=/\v(\/\/.*\n)+\s*package/' exe 'syn region goPackageComment start=/\v(\/\/.*\n)+\s*package/'
\ . ' end=/\v\n\s*package/he=e-7,me=e-7,re=e-7' \ . ' end=/\v\n\s*package/he=e-7,me=e-7,re=e-7'
\ . ' contains=@goCommentGroup,@Spell' \ . ' contains=@goCommentGroup,@Spell'
\ . (s:fold_package_comment ? ' fold' : '') \ . (go#config#FoldEnable('package_comment') ? ' fold' : '')
exe 'syn region goPackageComment start=/\v\/\*.*\n(.*\n)*\s*\*\/\npackage/' exe 'syn region goPackageComment start=/\v^\s*\/\*.*\n(.*\n)*\s*\*\/\npackage/'
\ . ' end=/\v\n\s*package/he=e-7,me=e-7,re=e-7' \ . ' end=/\v\*\/\n\s*package/he=e-7,me=e-7,re=e-7'
\ . ' contains=@goCommentGroup,@Spell' \ . ' contains=@goCommentGroup,@Spell'
\ . (s:fold_package_comment ? ' fold' : '') \ . (go#config#FoldEnable('package_comment') ? ' fold' : '')
hi def link goPackageComment Comment hi def link goPackageComment Comment
endif endif

17
syntax/godebugoutput.vim Normal file
View File

@@ -0,0 +1,17 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
if exists("b:current_syntax")
finish
endif
syn match godebugOutputErr '^ERR:.*'
syn match godebugOutputOut '^OUT:.*'
let b:current_syntax = "godebugoutput"
hi def link godebugOutputErr Comment
hi def link godebugOutputOut Normal
" vim: sw=2 ts=2 et
endif

View File

@@ -0,0 +1,15 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
if exists("b:current_syntax")
finish
endif
syn match godebugStacktrace '^\S\+'
let b:current_syntax = "godebugoutput"
hi def link godebugStacktrace SpecialKey
" vim: sw=2 ts=2 et
endif

View File

@@ -0,0 +1,27 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'go') == -1
if exists("b:current_syntax")
finish
endif
syn match godebugTitle '^#.*'
syn match godebugVariables '^\s*\S\+\ze:'
syn keyword goType chan map bool string error
syn keyword goSignedInts int int8 int16 int32 int64 rune
syn keyword goUnsignedInts byte uint uint8 uint16 uint32 uint64 uintptr
syn keyword goFloats float32 float64
syn keyword goComplexes complex64 complex128
syn keyword goBoolean true false
let b:current_syntax = "godebugvariables"
hi def link godebugTitle Underlined
hi def link godebugVariables Statement
hi def link goType Type
hi def link goBoolean Boolean
" vim: sw=2 ts=2 et
endif

View File

@@ -12,6 +12,8 @@ runtime! syntax/gotexttmpl.vim
runtime! syntax/html.vim runtime! syntax/html.vim
unlet b:current_syntax unlet b:current_syntax
syn cluster htmlPreproc add=gotplAction,goTplComment
let b:current_syntax = "gohtmltmpl" let b:current_syntax = "gohtmltmpl"
" vim: sw=2 ts=2 et " vim: sw=2 ts=2 et

68
syntax/graphql.vim Normal file
View File

@@ -0,0 +1,68 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
" Vim syntax file
" Language: GraphQL
" Maintainer: Jon Parise <jon@indelible.org>
if exists('b:current_syntax')
finish
endif
syn match graphqlComment "#.*$" contains=@Spell
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 keyword graphqlKeyword on nextgroup=graphqlType skipwhite
syn keyword graphqlStructure enum scalar type union nextgroup=graphqlType skipwhite
syn keyword graphqlStructure input interface subscription nextgroup=graphqlType skipwhite
syn keyword graphqlStructure implements nextgroup=graphqlType skipwhite
syn keyword graphqlStructure query mutation fragment nextgroup=graphqlName skipwhite
syn keyword graphqlStructure directive nextgroup=graphqlDirective skipwhite
syn keyword graphqlStructure extend nextgroup=graphqlStructure skipwhite
syn keyword graphqlStructure schema nextgroup=graphqlFold skipwhite
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_]\+\>" display
syn keyword graphqlMetaFields __schema __type __typename
syn region graphqlFold matchgroup=graphqlBraces start="{" end=/}\(\_s\+\ze\("\|{\)\)\@!/ transparent fold contains=ALLBUT,graphqlStructure
syn region graphqlList matchgroup=graphqlBraces start="\[" end=/]\(\_s\+\ze"\)\@!/ transparent contains=ALLBUT,graphqlDirective,graphqlStructure
hi def link graphqlComment Comment
hi def link graphqlOperator Operator
hi def link graphqlBraces Delimiter
hi def link graphqlBoolean Boolean
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 graphqlName Identifier
hi def link graphqlMetaFields Special
hi def link graphqlKeyword Keyword
hi def link graphqlStructure Structure
hi def link graphqlType Type
hi def link graphqlVariable Identifier
syn sync minlines=500
let b:current_syntax = 'graphql'
endif

360
syntax/haproxy.vim Normal file
View File

@@ -0,0 +1,360 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haproxy') == -1
" Vim syntax file
" Language: HAproxy
" Maintainer: Dan Reif
" Last Change: Mar 2, 2018
" Version: 0.5
" URL: https://github.com/CH-DanReif/haproxy.vim
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
if version >= 600
setlocal iskeyword=_,-,a-z,A-Z,48-57
else
set iskeyword=_,-,a-z,A-Z,48-57
endif
" Escaped chars
syn match hapEscape +\\\(\\\| \|n\|r\|t\|#\|x\x\x\)+
" Match whitespace at the end of a line
syn match hapNothingErr /\s\+\ze\(#.*\)\?$/ contained nextgroup=hapGreedyComment
" Match anything other than whitespace; flag as error if found. 'contained'
" because comments are valid where otherwise only hapNothing is.
syn match hapNothingErr /\s*\zs[^# \t][^#]*/ contained nextgroup=hapGreedyComment
" Comments
syn match hapComment /\(^\|\s\)#.*$/ contains=hapTodo
" `acl foo path_reg hi[#]mom` is an error because [ is unclosed. (!!!)
syn match hapGreedyComment /#.*$/ contained containedin=hapAclRemainder contains=hapTodo
syn keyword hapTodo TODO FIXME XXX contained
" `daemon#hi mom` is perfectly valid. :/
syn cluster hapNothing contains=hapNothingErr,hapGreedyComment
" Case-insensitive matching
syn case ignore
" Sections
syn match hapSection /^\s*\(global\|defaults\)/
syn match hapSection /^\s*\(backend\|frontend\|listen\|ruleset\|userlist\)/ skipwhite nextgroup=hapSectLabel
syn match hapSectLabel /\S\+/ skipwhite nextgroup=hapIp1 contained
syn match hapIp1 /\(\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)\?:\d\{1,5}/ nextgroup=hapIp2 contained
syn match hapIp2 /,\(\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)\?:\d\{1,5}/hs=s+1 nextgroup=hapIp2 contained
" Timeouts. We try to hint towards the use of 'ms' and 's' when
" g:haproxy_guess_ms_sec is set. We consider the lack of either 'ms' or 's'
" as an error when haproxy_enforce_ms_sec is set. (HAproxy's default is 'ms',
" but that arguably leads to ambiguity in the config.)
if get(g:, 'haproxy_guess_ms_sec', 1)
" Timeouts and such specified in ms, where seconds are *allowed*, but are
" probably a mistake.
syn match hapNumberMS /\d\+m\?s/ contained transparent
syn match hapError /\d\+\zss\ze/ contained containedin=hapNumberMS
endif
if get(g:, 'haproxy_enforce_ms_sec', 1)
syn match hapNumberMS /\d\+\(m\?s\)\?/ contained transparent
syn match hapError /\d\+\(m\?s\)\@!\(\D\|$\)/ contained containedin=hapNumberMS
syn match hapNumberMS /\d\+m\?s/ contained
else
syn match hapNumberMS /\d\+m\?s/ contained
endif
if get(g:, 'haproxy_guess_ms_sec', 1)
" Timeouts generally specified in whole seconds, where we want to highlight
" errant 'm's.
syn match hapNumberSec /\d\+m\?s/ contained transparent
syn match hapError /\d\+\zsm\zes/ contained containedin=hapNumberSec
endif
if get(g:, 'haproxy_enforce_ms_sec', 1)
syn match hapNumberSec /\d\+\(m\?s\)\?/ contained transparent
syn match hapError /\d\+\(m\?s\)\@!\(\D\|$\)/ contained containedin=hapNumberSec
syn match hapNumberSec /\d\+m\?s/ contained
else
syn match hapNumberSec /\d\+m\?s/ contained
endif
" Other numbers, no 'ms'.
syn match hapNumber /[0-9]\+/ contained
" Timeout types
syn keyword hapTimeoutType connect client server contained skipwhite nextgroup=hapNumberMS
" URIs
syn match hapAbsURI /\/\S*/ contained
syn match hapURI /\S*/ contained
" File paths (always absolute, and never just '/' unless you're insane)
syn match hapFilePath /\/\S\+/ contained
" SSL configuration keywords
syn match hapSSLCiphersAll /\s\+\zs.*/ contained transparent
syn match hapSSLCiphersError /.\+/ contained containedin=hapSSLCiphersAll
syn match hapSSLCiphers /\([-+!]\?[A-Z0-9-]\+[:+]\)*[-+!]\?[A-Z0-9-]\+/ contained containedin=hapSSLCiphersAll
"
" ACLs
"
" This comes first, lest it gobble up everything else.
syn match hapAclName /\S\+/ contained skipwhite nextgroup=hapAclCriterion
syn match hapAclCriterion /FALSE\|HTTP\|HTTP_1\.0\|HTTP_1\.1\|HTTP_CONTENT\|HTTP_URL_ABS\|HTTP_URL_SLASH\|HTTP_URL_STAR\|LOCALHOST\|METH_CONNECT\|METH_GET\|METH_HEAD\|METH_OPTIONS\|METH_POST\|METH_TRACE\|RDP_COOKIE\|REQ_CONTENT\|TRUE\|WAIT_END\|\(req_rdp_cookie\|s\?cook\|s\?hdr\|http_auth_group\|urlp\)\(_\(beg\|dir\|dom\|end\|len\|reg\|sub\|cnt\)\)\?([^)]*)\|\(req_ssl_[a-z]\+\|base\|method\|path\|req_ver\|resp_ver\|url\)\(_\(beg\|dir\|dom\|end\|len\|reg\|sub\|cnt\)\)\?/ contained skipwhite nextgroup=hapAclConverterOrNothing
" This one's a bit tricky. Match zero or more converters, and then *require* the
" space afterwards. Strictly speaking, deviates from the BNF, but only in
" pathological cases ('acl lolwat TRUE,upper').
syn match hapAclConverterOrNothing /\(,\(\(base64\|bool\|cpl\|debug\|even\|hex\|lower\|neg\|not\|odd\|upper\|url_dec\)\|\(add\|and\|bytes\|crc32\|da-csv-conv\|div\|djb2\|field\|http_date\|in_table\|ipmask\|json\|language\|ltime\|map\|mod\|mul\|or\|regsub\|capture-req\|capture-res\|sdbm\|sub\|table_[a-z0-9_]\+\|utime\|word\|wt6\|xor\)([^)]*)\)\)*\s\+/ contained nextgroup=hapAclFlag,hapAclFlagWithParameter,hapAclOperator
syn match hapAclFlag /-[-in]/ contained skipwhite nextgroup=hapAclFlag,hapAclFlagWithParameter,hapAclOperator
syn match hapAclFlagWithParameter /-[fmMu]/ contained skipwhite nextgroup=hapAclFlagParameter
syn match hapAclFlagParameter /\S\+/ contained skipwhite nextgroup=hapAclFlag,hapAclFlagWithParameter,hapAclOperator
syn match hapAclOperator /eq\|ge\|gt\|le\|lt/ contained skipwhite
syn match hapAclRemainder /.*/ contained transparent
" Generic tune.ssl
syn match hapParam /tune\.ssl\.[a-z0-9-]\+/
" tune.ssl where we know what follows
syn match hapParam /tune\.ssl\.default-dh-param/ skipwhite nextgroup=hapNumber
syn keyword hapSSLServerVerify none required contained skipwhite nextgroup=@hapNothing
" Keywords deprecated for at least a decade. Kill 'em.
syn keyword hapError cliexp srvexp
" Parameters
syn keyword hapParam timeout skipwhite nextgroup=hapTimeoutType
syn keyword hapParam chroot pidfile skipwhite nextgroup=hapFilePath
syn keyword hapParam clitimeout skipwhite nextgroup=hapNumberMS
syn keyword hapParam contimeout skipwhite nextgroup=hapNumberMS
syn keyword hapParam daemon debug disabled skipwhite nextgroup=@hapNothing
syn keyword hapParam enabled skipwhite nextgroup=@hapNothing
syn keyword hapParam fullconn maxconn skipwhite nextgroup=hapNumber
syn keyword hapParam gid skipwhite nextgroup=hapNumber
syn keyword hapParam group
syn keyword hapParam grace skipwhite nextgroup=hapNumberMS
syn keyword hapParam monitor-uri skipwhite nextgroup=hapAbsURI
syn keyword hapParam nbproc skipwhite nextgroup=hapNumber
syn keyword hapParam noepoll nopoll skipwhite nextgroup=@hapNothing
syn keyword hapParam quiet skipwhite nextgroup=@hapNothing
syn keyword hapParam redispatch retries skipwhite nextgroup=hapNumber
" 'add' takes exactly one string, not regexes
syn keyword hapParam reqadd reqiadd skipwhite nextgroup=hapOneStringIfUnless
syn keyword hapParam rspadd rspiadd skipwhite nextgroup=hapOneStringIfUnless
" All of these take exactly one regexp
syn match hapParam /reqi\?\(allow\|del\)/ skipwhite nextgroup=hapOneRegexpIfUnless
syn match hapParam /reqi\?\(deny\|pass\)/ skipwhite nextgroup=hapOneRegexpIfUnless
syn match hapParam /reqi\?\(tarpit\)/ skipwhite nextgroup=hapOneRegexpIfUnless
syn match hapParam /rspi\?\(del\|deny\)/ skipwhite nextgroup=hapOneRegexpIfUnless
" 'rep' is unique in taking two regexes (one search, one replace)
syn keyword hapParam reqrep reqirep skipwhite nextgroup=hapRegSearchReplIfUnless
syn keyword hapParam rsprep rspirep skipwhite nextgroup=hapRegSearchReplIfUnless
syn keyword hapParam reqsetbe reqisetbe skipwhite nextgroup=hapRegexpBE
syn keyword hapParam server source
syn keyword hapParam srvtimeout skipwhite nextgroup=hapNumberMS
syn keyword hapParam uid ulimit-n skipwhite nextgroup=hapNumber
syn keyword hapParam user
syn keyword hapParam acl skipwhite nextgroup=hapAclName
syn keyword hapParam errorloc skipwhite nextgroup=hapStatusURI
syn keyword hapParam errorloc302 errorloc303 skipwhite nextgroup=hapStatusURI
syn keyword hapParam default_backend skipwhite nextgroup=hapSectLabel
syn keyword hapParam use_backend skipwhite nextgroup=hapSectLabel
syn keyword hapParam appsession skipwhite nextgroup=hapAppSess
syn keyword hapParam bind skipwhite nextgroup=hapIp1
syn keyword hapParam balance skipwhite nextgroup=hapBalance
syn keyword hapParam cookie skipwhite nextgroup=hapCookieNam
syn keyword hapParam capture skipwhite nextgroup=hapCapture
syn keyword hapParam dispatch skipwhite nextgroup=hapIpPort
syn keyword hapParam source skipwhite nextgroup=hapIpPort
syn keyword hapParam mode skipwhite nextgroup=hapMode
syn keyword hapParam monitor-net skipwhite nextgroup=hapIPv4Mask
syn keyword hapParam option skipwhite nextgroup=hapOption
syn keyword hapParam stats skipwhite nextgroup=hapStats
syn keyword hapParam server skipwhite nextgroup=hapServerN
syn keyword hapParam source skipwhite nextgroup=hapServerEOL
syn keyword hapParam log skipwhite nextgroup=hapGLog,hapLogIp,hapFilePath
syn keyword hapParam ca-base skipwhite nextgroup=hapFilePath
syn keyword hapParam crt-base skipwhite nextgroup=hapFilePath
syn keyword hapParam ssl-default-bind-ciphers skipwhite nextgroup=hapSSLCiphersAll
syn keyword hapParam ssl-default-bind-options skipwhite nextgroup=hapGLog,hapLogIp
syn keyword hapParam ssl-server-verify skipwhite nextgroup=hapSSLServerVerify
syn keyword hapParam errorfile skipwhite nextgroup=hapStatusPath
syn keyword hapParam http-request skipwhite nextgroup=hapHttpRequestVerb
" Transparent is a Vim keyword, so we need a regexp to match it
syn match hapParam /transparent/
" Options and additional parameters
syn keyword hapAppSess len timeout contained
syn keyword hapBalance roundrobin source contained
syn keyword hapLen len contained
syn keyword hapGLog global contained
syn keyword hapMode http tcp health contained
syn keyword hapOption abortonclose allbackups checkcache clitcpka dontlognull contained
syn keyword hapOption forceclose forwardfor http-server-close contained
syn keyword hapOption httpchk httpclose httplog keepalive logasap contained
syn keyword hapOption persist srvtcpka ssl-hello-chk contained
syn keyword hapOption tcplog tcpka tcpsplice contained
syn keyword hapOption except contained skipwhite nextgroup=hapIPv4Mask
" Transparent is a Vim keyword, so we need a regexp to match it
syn match hapOption /transparent/ contained
syn keyword hapStats realm auth scope enable contained
syn keyword hapStats uri contained skipwhite nextgroup=hapAbsURI
syn keyword hapStats socket contained skipwhite nextgroup=hapFilePath
syn keyword hapStats timeout contained skipwhite nextgroup=hapNumberMS
syn keyword hapLogFac kern user mail daemon auth syslog lpr news contained skipwhite nextgroup=hapLogLvl
syn keyword hapLogFac uucp cron auth2 ftp ntp audit alert cron2 contained skipwhite nextgroup=hapLogLvl
syn keyword hapLogFac local0 local1 local2 local3 local4 local5 local6 local7 contained skipwhite nextgroup=hapLogLvl
syn keyword hapLogLvl emerg alert crit err warning notice info debug contained
syn keyword hapCookieKey rewrite insert nocache postonly indirect prefix contained skipwhite nextgroup=hapCookieKey
syn keyword hapCapture cookie contained skipwhite nextgroup=hapNameLen
syn keyword hapCapture request response contained skipwhite nextgroup=hapHeader
syn keyword hapHeader header contained skipwhite nextgroup=hapNameLen
syn keyword hapSrvKey backup cookie check inter rise fall port contained
syn keyword hapSrvKey source minconn maxconn weight usesrc contained
syn match hapStatus /\d\{3}/ contained
syn match hapStatusPath /\d\{3}/ contained skipwhite nextgroup=hapFilePath
syn match hapStatusURI /\d\{3}/ contained skipwhite nextgroup=hapURI
syn match hapIPv4Mask /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\(\/\d\{1,2}\)\?/ contained
syn match hapLogIp /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/ contained skipwhite nextgroup=hapLogFac
syn match hapIpPort /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}:\d\{1,5}/ contained
syn match hapServerAd /\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\(:[+-]\?\d\{1,5}\)\?/ contained skipwhite nextgroup=hapSrvEOL
syn match hapNameLen /\S\+/ contained skipwhite nextgroup=hapLen
syn match hapCookieNam /\S\+/ contained skipwhite nextgroup=hapCookieKey
syn match hapServerN /\S\+/ contained skipwhite nextgroup=hapServerAd
syn region hapSrvEOL start=/\S/ end=/$/ contains=hapSrvKey contained
" Brutally stolen from https://github.com/vim-perl/vim-perl:
syn match hapPerlSpecialMatch "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend
syn match hapPerlSpecialMatch "\\." extend contained contains=NONE
syn match hapPerlSpecialMatch "\\\\" contained
syn match hapPerlSpecialMatch "\\[1-9]" contained extend
syn match hapPerlSpecialMatch "\\g\%(\d\+\|{\%(-\=\d\+\|\h\w*\)}\)" contained
syn match hapPerlSpecialMatch "\\k\%(<\h\w*>\|'\h\w*'\)" contained
syn match hapPerlSpecialMatch "{\d\+\%(,\%(\d\+\)\=\)\=}" contained
syn match hapPerlSpecialMatch "\[[]-]\=[^\[\]]*[]-]\=\]" contained extend
syn match hapPerlSpecialMatch "[+*()?.]" contained
syn match hapPerlSpecialMatch "(?[#:=!]" contained
syn match hapPerlSpecialMatch "(?[impsx]*\%(-[imsx]\+\)\=)" contained
syn match hapPerlSpecialMatch "(?\%([-+]\=\d\+\|R\))" contained
syn match hapPerlSpecialMatch "(?\%(&\|P[>=]\)\h\w*)" contained
syn region hapOneRegexpIfUnless contained start=/\S/ end=/\(\ze\s\|$\)/ skip=/\\ / contains=hapPerlSpecialMatch nextgroup=hapIfUnless,@hapNothing skipwhite
syn region hapRegSearchReplIfUnless contained start=/\S/ end=/\(\s\|$\)/ skip=/\\ / contains=hapPerlSpecialMatch nextgroup=hapRegReplIfUnless skipwhite
syn region hapRegReplIfUnless contained start=/\S/ end=/$/ contains=hapComment,hapEscape,hapPerlSpecialMatch nextgroup=hapIfUnless skipwhite
syn region hapRegexpBE contained start=/\S/ end=/\(\s\|$\)/ skip=/\\ / contains=hapPerlSpecialMatch nextgroup=hapSectLabel skipwhite
"
" http-request
"
" http-request verbs that don't allow parameters
syn keyword hapHttpRequestVerb allow tarpit silent-drop contained skipwhite nextgroup=hapHttpIfUnless
" http-request verbs with optional parameters
syn keyword hapHttpRequestVerb auth deny contained skipwhite nextgroup=hapHttpIfUnless,hapHttpRequestParam
" http-request verbs with required parameters
syn keyword hapHttpRequestVerb redirect add-header set-header capture contained skipwhite nextgroup=hapHttpRequestParam
syn keyword hapHttpRequestVerb del-header set-nice set-log-level replace-header contained skipwhite nextgroup=hapHttpRequestParam
syn keyword hapHttpRequestVerb replace-value set-method set-path set-query contained skipwhite nextgroup=hapHttpRequestParam
syn keyword hapHttpRequestVerb set-uri set-tos set-mark contained skipwhite nextgroup=hapHttpRequestParam
" http-request verbs with both parenthetical arguments and required parameters
syn match hapHttpRequestVerb /\(add-acl\|del-acl\|del-map\|set-map\)([^)]*)/ contained skipwhite nextgroup=hapHttpRequestParam
syn match hapHttpRequestVerb /\(set-var\|unset-var\)([^)]*)/ contained skipwhite nextgroup=hapHttpRequestParam
syn match hapHttpRequestVerb /\(sc-inc-gpc0\|sc-set-gpt0\)([^)]*)/ contained skipwhite nextgroup=hapHttpRequestParam
" http-request verbs with parenthetical arguments, but without parameters
syn match hapHttpRequestVerb /\(unset-var\|sc-inc-gpc0\)([^)]*)/ contained skipwhite nextgroup=hapHttpIfUnless
" Listed first because we want to match this rather than hapHttpRequestParam,
" which can be just about anything (including these two keywords). 'keyword'
" is actually higher priority inside the highlighter, but we'll play it extra
" safe by doing this ordering trick, too.
syn keyword hapIfUnless if unless contained skipwhite nextgroup=hapIfUnlessCond
" A little bit of fancy footwork here, because we want to match the log-format
" parameters inside of the string separately.
syn match hapHttpRequestParam /|S\+/ contained skipwhite nextgroup=hapIfUnless,hapHttpRequestParam transparent
syn match hapHttpLogFormatStr /%\[[^][]\+\]/ contained containedin=hapHttpRequestParam
syn match hapHttpLogFormatErr /%\(\[[^][]\+\]\)\@!.*/ contained containedin=hapHttpRequestParam
syn match hapHttpRequestParamLiteral /[^%]\+/ contained containedin=hapHttpRequestParam
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version < 508
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink hapError Error
HiLink hapNothingErr hapError
HiLink hapEscape SpecialChar
HiLink hapComment Comment
HiLink hapGreedyComment Comment
HiLink hapTodo Todo
HiLink hapSection Underlined
HiLink hapSectLabel Identifier
HiLink hapParam Keyword
HiLink hapSSLCiphers String
HiLink hapSSLCiphersError Error
HiLink hapTimeoutType hapParam
HiLink hapOneRegexpIfUnless String
HiLink hapTwoRegexpsIfUnless hapRegexp
HiLink hapRegReplIfUnless hapRegexp
HiLink hapRegexpBE hapRegexp
HiLink hapPerlSpecialMatch Special
HiLink hapFilePath String
HiLink hapURI String
HiLink hapAbsURI hapURI
HiLink hapIp1 Number
HiLink hapIp2 hapIp1
HiLink hapLogIp hapIp1
HiLink hapIpPort hapIp1
HiLink hapIPv4Mask hapIp1
HiLink hapServerAd hapIp1
HiLink hapStatus Number
HiLink hapStatusPath hapStatus
HiLink hapStatusURI hapStatus
HiLink hapNumber Number
HiLink hapNumberMS hapNumber
HiLink hapNumberSec hapNumber
HiLink hapAclName Identifier
HiLink hapAclCriterion String
HiLink hapAclConverterOrNothing Special
HiLink hapAclFlag Special
HiLink hapAclFlagWithParameter Special
HiLink hapAclFlagParameter String
HiLink hapAclOperator Operator
HiLink hapAclPattern String
HiLink hapHttpRequestVerb Operator
HiLink hapIfUnless Operator
HiLink hapHttpRequestParamLiteral String
HiLink hapHttpLogFormatStr Special
HiLink hapHttpLogFormatErr Error
HiLink hapOption Operator
HiLink hapAppSess hapOption
HiLink hapBalance hapOption
HiLink hapCapture hapOption
HiLink hapCookieKey hapOption
HiLink hapHeader hapOption
HiLink hapGLog hapOption
HiLink hapLogFac hapOption
HiLink hapLogLvl hapOption
HiLink hapMode hapOption
HiLink hapStats hapOption
HiLink hapLen hapOption
HiLink hapSrvKey hapOption
delcommand HiLink
let b:current_syntax = "haproxy"
" vim: ts=8
endif

View File

@@ -38,7 +38,8 @@ syn match haskellTypeSig
\ haskellParens \ haskellParens
syn keyword haskellWhere where syn keyword haskellWhere where
syn keyword haskellLet let syn keyword haskellLet let
syn keyword haskellDeclKeyword module class instance newtype deriving in syn match HaskellDerive "\<deriving\>\(\s\+\<\(anyclass\|instance\|newtype\|stock\)\>\)\?"
syn keyword haskellDeclKeyword module class instance newtype in
syn match haskellDecl "\<\(type\|data\)\>\s\+\(\<family\>\)\?" syn match haskellDecl "\<\(type\|data\)\>\s\+\(\<family\>\)\?"
syn keyword haskellDefault default syn keyword haskellDefault default
syn keyword haskellImportKeywords import qualified safe as hiding contained syn keyword haskellImportKeywords import qualified safe as hiding contained
@@ -57,6 +58,7 @@ syn match haskellImport "^\s*\<import\>\s\+\(\<safe\>\s\+\)\?\(\<qualified\>\s\+
\ haskellType, \ haskellType,
\ haskellLineComment, \ haskellLineComment,
\ haskellBlockComment, \ haskellBlockComment,
\ haskellString,
\ haskellPragma \ haskellPragma
syn keyword haskellKeyword do case of syn keyword haskellKeyword do case of
if get(g:, 'haskell_enable_static_pointers', 0) if get(g:, 'haskell_enable_static_pointers', 0)
@@ -161,11 +163,13 @@ highlight def link haskellType Type
highlight def link haskellImportKeywords Include highlight def link haskellImportKeywords Include
if get(g:, 'haskell_classic_highlighting', 0) if get(g:, 'haskell_classic_highlighting', 0)
highlight def link haskellDeclKeyword Keyword highlight def link haskellDeclKeyword Keyword
highlight def link HaskellDerive Keyword
highlight def link haskellDecl Keyword highlight def link haskellDecl Keyword
highlight def link haskellWhere Keyword highlight def link haskellWhere Keyword
highlight def link haskellLet Keyword highlight def link haskellLet Keyword
else else
highlight def link haskellDeclKeyword Structure highlight def link haskellDeclKeyword Structure
highlight def link HaskellDerive Structure
highlight def link haskellDecl Structure highlight def link haskellDecl Structure
highlight def link haskellWhere Structure highlight def link haskellWhere Structure
highlight def link haskellLet Structure highlight def link haskellLet Structure

View File

@@ -79,6 +79,7 @@ syn keyword htmlTagName contained uplimit variance vector vectorproduct xor
" Custom Element " Custom Element
syn match htmlTagName contained "\<[a-z][-.0-9_a-z]*-[-.0-9_a-z]*\>" syn match htmlTagName contained "\<[a-z][-.0-9_a-z]*-[-.0-9_a-z]*\>"
syn match htmlTagName contained "[.0-9_a-z]\@<=-[-.0-9_a-z]*\>"
" HTML 5 arguments " HTML 5 arguments
" Core Attributes " Core Attributes
@@ -112,7 +113,7 @@ syn keyword htmlArg contained async
" <content> " <content>
syn keyword htmlArg contained select syn keyword htmlArg contained select
" <iframe> " <iframe>
syn keyword htmlArg contained seamless srcdoc sandbox allowfullscreen allowusermedia allowpaymentrequest syn keyword htmlArg contained seamless srcdoc sandbox allowfullscreen allowusermedia allowpaymentrequest allowpresentation
" <picture> " <picture>
syn keyword htmlArg contained srcset sizes syn keyword htmlArg contained srcset sizes
" <a> " <a>
@@ -128,6 +129,8 @@ syn keyword htmlArg contained prefetch
" syn keyword htmlArg contained preload " syn keyword htmlArg contained preload
" <img> " <img>
syn keyword htmlArg contained decoding syn keyword htmlArg contained decoding
" https://w3c.github.io/selection-api/#extensions-to-globaleventhandlers
syn keyword htmlArg contained onselectstart onselectionchange
" Custom Data Attributes " Custom Data Attributes
" http://w3c.github.io/html/single-page.html#embedding-custom-non-visible-data-with-the-data-attributes " http://w3c.github.io/html/single-page.html#embedding-custom-non-visible-data-with-the-data-attributes

View File

@@ -35,7 +35,7 @@ syntax match jsParensError /[)}\]]/
" Program Keywords " Program Keywords
syntax keyword jsStorageClass const var let skipwhite skipempty nextgroup=jsDestructuringBlock,jsDestructuringArray,jsVariableDef syntax keyword jsStorageClass const var let skipwhite skipempty nextgroup=jsDestructuringBlock,jsDestructuringArray,jsVariableDef
syntax match jsVariableDef contained /\<\K\k*/ skipwhite skipempty nextgroup=jsFlowDefinition syntax match jsVariableDef contained /\<\K\k*/ skipwhite skipempty nextgroup=jsFlowDefinition
syntax keyword jsOperator delete instanceof typeof void new in of skipwhite skipempty nextgroup=@jsExpression syntax keyword jsOperatorKeyword delete instanceof typeof void new in of skipwhite skipempty nextgroup=@jsExpression
syntax match jsOperator "[-!|&+<>=%/*~^]" skipwhite skipempty nextgroup=@jsExpression syntax match jsOperator "[-!|&+<>=%/*~^]" skipwhite skipempty nextgroup=@jsExpression
syntax match jsOperator /::/ skipwhite skipempty nextgroup=@jsExpression syntax match jsOperator /::/ skipwhite skipempty nextgroup=@jsExpression
syntax keyword jsBooleanTrue true syntax keyword jsBooleanTrue true
@@ -86,7 +86,7 @@ syntax match jsObjectMethodType contained /\<[gs]et\ze\s\+\K\k*/ skipwhite sk
syntax region jsObjectStringKey contained start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue syntax region jsObjectStringKey contained start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue
exe 'syntax keyword jsNull null '.(exists('g:javascript_conceal_null') ? 'conceal cchar='.g:javascript_conceal_null : '') exe 'syntax keyword jsNull null '.(exists('g:javascript_conceal_null') ? 'conceal cchar='.g:javascript_conceal_null : '')
exe 'syntax keyword jsReturn return contained '.(exists('g:javascript_conceal_return') ? 'conceal cchar='.g:javascript_conceal_return : '').' skipwhite skipempty nextgroup=@jsExpression' exe 'syntax keyword jsReturn return contained '.(exists('g:javascript_conceal_return') ? 'conceal cchar='.g:javascript_conceal_return : '').' skipwhite nextgroup=@jsExpression'
exe 'syntax keyword jsUndefined undefined '.(exists('g:javascript_conceal_undefined') ? 'conceal cchar='.g:javascript_conceal_undefined : '') exe 'syntax keyword jsUndefined undefined '.(exists('g:javascript_conceal_undefined') ? 'conceal cchar='.g:javascript_conceal_undefined : '')
exe 'syntax keyword jsNan NaN '.(exists('g:javascript_conceal_NaN') ? 'conceal cchar='.g:javascript_conceal_NaN : '') exe 'syntax keyword jsNan NaN '.(exists('g:javascript_conceal_NaN') ? 'conceal cchar='.g:javascript_conceal_NaN : '')
exe 'syntax keyword jsPrototype prototype '.(exists('g:javascript_conceal_prototype') ? 'conceal cchar='.g:javascript_conceal_prototype : '') exe 'syntax keyword jsPrototype prototype '.(exists('g:javascript_conceal_prototype') ? 'conceal cchar='.g:javascript_conceal_prototype : '')
@@ -151,7 +151,7 @@ syntax region jsFinallyBlock contained matchgroup=jsFinallyBraces s
syntax region jsSwitchBlock contained matchgroup=jsSwitchBraces start=/{/ end=/}/ contains=@jsAll,jsBlock,jsSwitchCase extend fold syntax region jsSwitchBlock contained matchgroup=jsSwitchBraces start=/{/ end=/}/ contains=@jsAll,jsBlock,jsSwitchCase extend fold
syntax region jsRepeatBlock contained matchgroup=jsRepeatBraces start=/{/ end=/}/ contains=@jsAll,jsBlock extend fold syntax region jsRepeatBlock contained matchgroup=jsRepeatBraces start=/{/ end=/}/ contains=@jsAll,jsBlock extend fold
syntax region jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/ end=/}/ contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression,jsComment extend fold syntax region jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/ end=/}/ contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression,jsComment extend fold
syntax region jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression,jsComment extend fold syntax region jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression,jsDestructuringBlock,jsComment extend fold
syntax region jsObject contained matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator,jsAsyncKeyword extend fold syntax region jsObject contained matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression,jsDecorator,jsAsyncKeyword extend fold
syntax region jsBlock matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll,jsSpreadExpression extend fold syntax region jsBlock matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll,jsSpreadExpression extend fold
syntax region jsModuleGroup contained matchgroup=jsModuleBraces start=/{/ end=/}/ contains=jsModuleKeyword,jsModuleComma,jsModuleAs,jsComment,jsFlowTypeKeyword skipwhite skipempty nextgroup=jsFrom fold syntax region jsModuleGroup contained matchgroup=jsModuleBraces start=/{/ end=/}/ contains=jsModuleKeyword,jsModuleComma,jsModuleAs,jsComment,jsFlowTypeKeyword skipwhite skipempty nextgroup=jsFrom fold
@@ -181,12 +181,12 @@ exe 'syntax match jsArrowFunction /_\ze\s*=>/ skipwhite skipempty nextgroup=j
syntax keyword jsClassKeyword contained class syntax keyword jsClassKeyword contained class
syntax keyword jsExtendsKeyword contained extends skipwhite skipempty nextgroup=@jsExpression syntax keyword jsExtendsKeyword contained extends skipwhite skipempty nextgroup=@jsExpression
syntax match jsClassNoise contained /\./ syntax match jsClassNoise contained /\./
syntax match jsClassMethodType contained /\<\%([gs]et\|static\)\ze\s\+\K\k*/ skipwhite skipempty nextgroup=jsAsyncKeyword,jsFuncName,jsClassProperty syntax match jsClassFuncName contained /\<\K\k*\ze\s*[(<]/ skipwhite skipempty nextgroup=jsFuncArgs,jsFlowClassFunctionGroup
syntax match jsClassMethodType contained /\<\%([gs]et\|static\)\ze\s\+\K\k*/ skipwhite skipempty nextgroup=jsAsyncKeyword,jsClassFuncName,jsClassProperty
syntax region jsClassDefinition start=/\<class\>/ end=/\(\<extends\>\s\+\)\@<!{\@=/ contains=jsClassKeyword,jsExtendsKeyword,jsClassNoise,@jsExpression,jsFlowClassGroup skipwhite skipempty nextgroup=jsCommentClass,jsClassBlock,jsFlowClassGroup syntax region jsClassDefinition start=/\<class\>/ end=/\(\<extends\>\s\+\)\@<!{\@=/ contains=jsClassKeyword,jsExtendsKeyword,jsClassNoise,@jsExpression,jsFlowClassGroup skipwhite skipempty nextgroup=jsCommentClass,jsClassBlock,jsFlowClassGroup
syntax match jsClassProperty contained /\<\K\k*\ze\s*=/ skipwhite skipempty nextgroup=jsClassValue,jsFlowClassDef syntax match jsClassProperty contained /\<\K\k*\ze\s*=/ skipwhite skipempty nextgroup=jsClassValue,jsFlowClassDef
syntax region jsClassValue contained start=/=/ end=/\_[;}]\@=/ contains=@jsExpression syntax region jsClassValue contained start=/=/ end=/\_[;}]\@=/ contains=@jsExpression
syntax region jsClassPropertyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsFuncArgs,jsClassValue extend syntax region jsClassPropertyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsFuncArgs,jsClassValue extend
syntax match jsClassFuncName contained /\<\K\k*\ze\s*(/ skipwhite skipempty nextgroup=jsFuncArgs
syntax region jsClassStringKey contained start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs syntax region jsClassStringKey contained start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs
" Destructuring " Destructuring
@@ -196,7 +196,7 @@ syntax match jsDestructuringAssignment contained /\k\+\ze\s*:/ skipwhit
syntax region jsDestructuringValue contained start=/=/ end=/[,}\]]\@=/ contains=@jsExpression extend syntax region jsDestructuringValue contained start=/=/ end=/[,}\]]\@=/ contains=@jsExpression extend
syntax region jsDestructuringValueAssignment contained start=/:/ end=/[,}=]\@=/ contains=jsDestructuringPropertyValue,jsDestructuringBlock,jsNoise,jsDestructuringNoise skipwhite skipempty nextgroup=jsDestructuringValue extend syntax region jsDestructuringValueAssignment contained start=/:/ end=/[,}=]\@=/ contains=jsDestructuringPropertyValue,jsDestructuringBlock,jsNoise,jsDestructuringNoise skipwhite skipempty nextgroup=jsDestructuringValue extend
syntax match jsDestructuringNoise contained /[,[\]]/ syntax match jsDestructuringNoise contained /[,[\]]/
syntax region jsDestructuringPropertyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsDestructuringValue,jsDestructuringNoise extend fold syntax region jsDestructuringPropertyComputed contained matchgroup=jsDestructuringBraces start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsDestructuringValue,jsDestructuringValueAssignment,jsDestructuringNoise extend fold
" Comments " Comments
syntax keyword jsCommentTodo contained TODO FIXME XXX TBD syntax keyword jsCommentTodo contained TODO FIXME XXX TBD
@@ -232,7 +232,7 @@ if exists("javascript_plugin_flow")
runtime extras/flow.vim runtime extras/flow.vim
endif endif
syntax cluster jsExpression contains=jsBracket,jsParen,jsObject,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsDo,jsForAwait,jsAsyncKeyword,jsStatement syntax cluster jsExpression contains=jsBracket,jsParen,jsObject,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsOperatorKeyword,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsDo,jsForAwait,jsAsyncKeyword,jsStatement
syntax cluster jsAll contains=@jsExpression,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsException,jsTry,jsNoise,jsBlockLabel syntax cluster jsAll contains=@jsExpression,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsException,jsTry,jsNoise,jsBlockLabel
" Define the default highlighting. " Define the default highlighting.
@@ -292,6 +292,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
HiLink jsArguments Special HiLink jsArguments Special
HiLink jsError Error HiLink jsError Error
HiLink jsParensError Error HiLink jsParensError Error
HiLink jsOperatorKeyword jsOperator
HiLink jsOperator Operator HiLink jsOperator Operator
HiLink jsOf Operator HiLink jsOf Operator
HiLink jsStorageClass StorageClass HiLink jsStorageClass StorageClass

View File

@@ -42,9 +42,12 @@ syn keyword javascriptDomElemFuncs load addTextTrack
syn keyword javascriptDomElemAttrs videoWidth videoHeight poster syn keyword javascriptDomElemAttrs videoWidth videoHeight poster
" drag and drop " drag and drop
syn keyword javascriptDomElemAttrs onDragStart onDragEnd onDragEnter onDragLeave onDragOver onDrag onDrop draggable dropzone syn keyword javascriptDomElemAttrs ondragstart ondragend ondragenter ondragleave ondragover ondrag ondrop draggable dropzone
" <checkbox> " <checkbox>
syn keyword javascriptDomElemAttrs indeterminate syn keyword javascriptDomElemAttrs indeterminate
" select https://w3c.github.io/selection-api/#extensions-to-globaleventhandlers
syn keyword javascriptDomElemAttrs onselectstart onselectchange
endif endif

View File

@@ -1,44 +1,17 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1 if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ansible') == -1
" Vim syntax file " Vim syntax file
" Language: Jinja template " Language: Jinja2 - with special modifications for compound-filetype
" Maintainer: Armin Ronacher <armin.ronacher@active-4.com> " compatibility
" Last Change: 2008 May 9 " Maintainer: Dave Honneffer <pearofducks@gmail.com>
" Version: 1.1 " Last Change: 2018.02.11
"
" Known Bugs:
" because of odd limitations dicts and the modulo operator
" appear wrong in the template.
"
" Changes:
"
" 2008 May 9: Added support for Jinja2 changes (new keyword rules)
" .vimrc variable to disable html highlighting
if !exists('g:jinja_syntax_html')
let g:jinja_syntax_html=1
endif
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if !exists("main_syntax") if !exists("main_syntax")
if version < 600 let main_syntax = 'jinja2'
syntax clear
elseif exists("b:current_syntax")
finish
endif
let main_syntax = 'jinja'
endif endif
" Pull in the HTML syntax. let b:current_syntax = ''
if g:jinja_syntax_html unlet b:current_syntax
if version < 600
so <sfile>:p:h/html.vim
else
runtime! syntax/html.vim
unlet b:current_syntax
endif
endif
syntax case match syntax case match
@@ -95,15 +68,8 @@ syn match jinjaStatement containedin=jinjaTagBlock contained /\<with\(out\)\?\s\
" Define the default highlighting. " Define the default highlighting.
" For version 5.7 and earlier: only when not done already if !exists("did_jinja_syn_inits")
" For version 5.8 and later: only when an item doesn't have highlighting yet command -nargs=+ HiLink hi def link <args>
if version >= 508 || !exists("did_jinja_syn_inits")
if version < 508
let did_jinja_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink jinjaPunctuation jinjaOperator HiLink jinjaPunctuation jinjaOperator
HiLink jinjaAttribute jinjaVariable HiLink jinjaAttribute jinjaVariable
@@ -130,10 +96,6 @@ if version >= 508 || !exists("did_jinja_syn_inits")
delcommand HiLink delcommand HiLink
endif endif
let b:current_syntax = "jinja" let b:current_syntax = "jinja2"
if main_syntax == 'jinja'
unlet main_syntax
endif
endif endif

View File

@@ -73,10 +73,12 @@ if (!exists("g:vim_json_warnings") || g:vim_json_warnings==1)
syn match jsonTrailingCommaError ",\_s*[}\]]" syn match jsonTrailingCommaError ",\_s*[}\]]"
" Syntax: Watch out for missing commas between elements " Syntax: Watch out for missing commas between elements
syn match jsonMissingCommaError /\("\|\]\|\d\)\zs\_s\+\ze"/ syn match jsonMissingCommaError /\("\|\]\|\d\)\zs\_s\+\ze"/
syn match jsonMissingCommaError /\(\]\|\}\)\_s\+\ze"/ "arrays/objects as values syn match jsonMissingCommaError /\(\]\|\}\)\_s\+\ze"/ "arrays/objects as values
syn match jsonMissingCommaError /}\_s\+\ze{/ "objects as elements in an array if (expand('%:e') !=? 'jsonl')
syn match jsonMissingCommaError /\(true\|false\)\_s\+\ze"/ "true/false as value syn match jsonMissingCommaError /}\_s\+\ze{/ "objects as elements in an array
endif
syn match jsonMissingCommaError /\(true\|false\)\_s\+\ze"/ "true/false as value
endif endif
" ********************************************** END OF ERROR WARNINGS " ********************************************** END OF ERROR WARNINGS

View File

@@ -112,13 +112,13 @@ else
endif endif
syntax cluster juliaTypesItemsAll contains=juliaBaseTypeBasic,juliaBaseTypeNum,juliaBaseTypeC,juliaBaseTypeError,juliaBaseTypeIter,juliaBaseTypeString,juliaBaseTypeArray,juliaBaseTypeDict,juliaBaseTypeSet,juliaBaseTypeIO,juliaBaseTypeProcess,juliaBaseTypeRange,juliaBaseTypeRegex,juliaBaseTypeFact,juliaBaseTypeFact,juliaBaseTypeSort,juliaBaseTypeRound,juliaBaseTypeSpecial,juliaBaseTypeRandom,juliaBaseTypeDisplay,juliaBaseTypeTime,juliaBaseTypeOther syntax cluster juliaTypesItemsAll contains=juliaBaseTypeBasic,juliaBaseTypeNum,juliaBaseTypeC,juliaBaseTypeError,juliaBaseTypeIter,juliaBaseTypeString,juliaBaseTypeArray,juliaBaseTypeDict,juliaBaseTypeSet,juliaBaseTypeIO,juliaBaseTypeProcess,juliaBaseTypeRange,juliaBaseTypeRegex,juliaBaseTypeFact,juliaBaseTypeFact,juliaBaseTypeSort,juliaBaseTypeRound,juliaBaseTypeSpecial,juliaBaseTypeRandom,juliaBaseTypeDisplay,juliaBaseTypeTime,juliaBaseTypeOther
syntax cluster juliaTypesItems05 contains=juliaBaseTypeIter05,juliaBaseTypeRange05 syntax cluster juliaTypesItems05 contains=juliaBaseTypeIter05,juliaBaseTypeRange05
syntax cluster juliaTypesItems0506 contains=juliaBaseTypeRange0506,juliaBaseTypeSet0506 syntax cluster juliaTypesItems0506 contains=juliaBaseTypeNum0506,juliaBaseTypeRange0506,juliaBaseTypeDict0506,juliaBaseTypeSet0506
syntax cluster juliaTypesItems0607 contains=juliaBaseTypeBasic0607,juliaBaseTypeArray0607,juliaBaseTypeSet0607,juliaBaseTypeProcess0607,juliaBaseTypeRange0607,juliaBaseTypeTime0607 syntax cluster juliaTypesItems0607 contains=juliaBaseTypeBasic0607,juliaBaseTypeArray0607,juliaBaseTypeSet0607,juliaBaseTypeProcess0607,juliaBaseTypeRange0607,juliaBaseTypeTime0607
syntax cluster juliaTypesItems07 contains=juliaBaseTypeRange07,juliaBaseTypeSet07 syntax cluster juliaTypesItems07 contains=juliaBaseTypeBasic07,juliaBaseTypeNum07,juliaBaseTypeError07,juliaBaseTypeIter07,juliaBaseTypeRange07,juliaBaseTypeArray07,juliaBaseTypeDict07,juliaBaseTypeSet07,juliaBaseTypeC07,juliaBaseTypeDisplay07,juliaBaseTypeIO07
syntax cluster juliaConstItemsAll contains=juliaConstNum,juliaConstBool,juliaConstEnv,juliaConstIO,juliaConstMMap,juliaConstC,juliaConstGeneric syntax cluster juliaConstItemsAll contains=juliaConstNum,juliaConstBool,juliaConstEnv,juliaConstMMap,juliaConstC,juliaConstGeneric
syntax cluster juliaConstItems0506 contains=juliaConstNum0506 syntax cluster juliaConstItems0506 contains=juliaConstNum0506,juliaConstIO0506
syntax cluster juliaConstItems07 contains=juliaPossibleEuler syntax cluster juliaConstItems07 contains=juliaConstGeneric07,juliaPossibleEuler,juliaConstEnv07,juliaConstIO07
if b:julia_syntax_version <= 6 if b:julia_syntax_version <= 6
syntax cluster juliaConstItems contains=@juliaConstItemsAll,@juliaConstItems0506 syntax cluster juliaConstItems contains=@juliaConstItemsAll,@juliaConstItems0506
else else
@@ -208,27 +208,37 @@ exec 'syntax match juliaOuter contained "\<outer\ze\s\+' . s:idregex . '\>"
syntax match juliaBaseTypeBasic display "\<\%(Tuple\|NTuple\|Symbol\|\%(Intrinsic\)\?Function\|Union\|Type\%(Name\|Constructor\|Var\)\?\|Any\|ANY\|Vararg\|Top\|None\|Nothing\|Ptr\|Void\|Exception\|Module\|Box\|Expr\|LambdaStaticData\|\%(Data\|Union\)Type\|\%(LineNumber\|Label\|Goto\|Quote\|Top\|Symbol\|Getfield\)Node\|\%(Weak\|Global\)\?Ref\|Associative\|Method\(Table\)\?\|GetfieldNode\|Nullable\|Pair\|Val\|TypeMap\%(Level\|Entry\)\)\>" syntax match juliaBaseTypeBasic display "\<\%(Tuple\|NTuple\|Symbol\|\%(Intrinsic\)\?Function\|Union\|Type\%(Name\|Constructor\|Var\)\?\|Any\|ANY\|Vararg\|Top\|None\|Nothing\|Ptr\|Void\|Exception\|Module\|Box\|Expr\|LambdaStaticData\|\%(Data\|Union\)Type\|\%(LineNumber\|Label\|Goto\|Quote\|Top\|Symbol\|Getfield\)Node\|\%(Weak\|Global\)\?Ref\|Associative\|Method\(Table\)\?\|GetfieldNode\|Nullable\|Pair\|Val\|TypeMap\%(Level\|Entry\)\)\>"
syntax match juliaBaseTypeBasic0607 display "\<\%(UnionAll\|CodeInfo\)\>" syntax match juliaBaseTypeBasic0607 display "\<\%(UnionAll\|CodeInfo\)\>"
syntax match juliaBaseTypeNum display "\<\%(U\?Int\%(8\|16\|32\|64\|128\)\?\|Float\%(16\|32\|64\)\|Complex\%(32\|64\|128\)\?\|Bool\|Char\|Number\|Signed\|Unsigned\|Integer\|AbstractFloat\|Real\|Rational\|Irrational\|Enum\|BigInt\|BigFloat\|MathConst\)\>" syntax match juliaBaseTypeBasic07 display "\<\%(Some\|Missing\)\>"
syntax match juliaBaseTypeNum display "\<\%(U\?Int\%(8\|16\|32\|64\|128\)\?\|Float\%(16\|32\|64\)\|Complex\|Bool\|Char\|Number\|Signed\|Unsigned\|Integer\|AbstractFloat\|Real\|Rational\|Irrational\|Enum\|BigInt\|BigFloat\|MathConst\)\>"
syntax match juliaBaseTypeNum0506 display "\<Complex\%(32\|64\|128\)\>"
syntax match juliaBaseTypeNum07 display "\<\%(AbstractIrrational\|ComplexF\%(16\|32\|64\)\)\>"
syntax match juliaBaseTypeC display "\<\%(FileOffset\|C\%(u\?\%(char\|short\|int\|long\(long\)\?\|w\?string\)\|float\|double\|\%(ptrdiff\|s\?size\|wchar\|off\|u\?intmax\)_t\)\)\>" syntax match juliaBaseTypeC display "\<\%(FileOffset\|C\%(u\?\%(char\|short\|int\|long\(long\)\?\|w\?string\)\|float\|double\|\%(ptrdiff\|s\?size\|wchar\|off\|u\?intmax\)_t\)\)\>"
syntax match juliaBaseTypeC07 display "\<Cvoid\>"
syntax match juliaBaseTypeError display "\<\%(\%(Bounds\|Divide\|Domain\|\%(Stack\)\?Overflow\|EOF\|Undef\%(Ref\|Var\)\|System\|Type\|Parse\|Argument\|Key\|Load\|Method\|Inexact\|OutOfMemory\|Init\|Assertion\|Unicode\|ReadOnlyMemory\)Error\|\%(Interrupt\|Error\|ProcessExited\|Captured\|Composite\|InvalidState\|Null\|Remote\)Exception\|DimensionMismatch\|SegmentationFault\)\>" syntax match juliaBaseTypeError display "\<\%(\%(Bounds\|Divide\|Domain\|\%(Stack\)\?Overflow\|EOF\|Undef\%(Ref\|Var\)\|System\|Type\|Parse\|Argument\|Key\|Load\|Method\|Inexact\|OutOfMemory\|Init\|Assertion\|Unicode\|ReadOnlyMemory\)Error\|\%(Interrupt\|Error\|ProcessExited\|Captured\|Composite\|InvalidState\|Null\|Remote\)Exception\|DimensionMismatch\|SegmentationFault\)\>"
syntax match juliaBaseTypeError07 display "\<\%(StringIndexError\|MissingException\)\>"
syntax match juliaBaseTypeIter display "\<\%(EachLine\|Enumerate\|Cartesian\%(Index\|Range\)\|LinSpace\)\>" syntax match juliaBaseTypeIter display "\<\%(EachLine\|Enumerate\|Cartesian\%(Index\|Range\)\|LinSpace\)\>"
syntax match juliaBaseTypeIter05 display "\<\%(Zip\|Filter\)\>" syntax match juliaBaseTypeIter05 display "\<\%(Zip\|Filter\)\>"
syntax match juliaBaseTypeIter07 display "\<CartesianIndices\>"
syntax match juliaBaseTypeString display "\<\%(DirectIndex\|Sub\|Rep\|Rev\|Abstract\)\?String\>" syntax match juliaBaseTypeString display "\<\%(DirectIndex\|Sub\|Rep\|Rev\|Abstract\)\?String\>"
syntax match juliaBaseTypeArray display "\<\%(\%(Sub\)\?Array\|\%(Abstract\|Dense\|Strided\)\?\%(Array\|Matrix\|Vec\%(tor\|OrMat\)\)\|SparseMatrixCSC\|\%(AbstractSparse\|Bit\|Shared\)\%(Array\|Vector\|Matrix\)\|\%\(D\|Bid\|\%(Sym\)\?Trid\)iagonal\|Hermitian\|Symmetric\|UniformScaling\|\%(Lower\|Upper\)Triangular\|SparseVector\|VecElement\)\>" syntax match juliaBaseTypeArray display "\<\%(\%(Sub\)\?Array\|\%(Abstract\|Dense\|Strided\)\?\%(Array\|Matrix\|Vec\%(tor\|OrMat\)\)\|SparseMatrixCSC\|\%(AbstractSparse\|Bit\|Shared\)\%(Array\|Vector\|Matrix\)\|\%\(D\|Bid\|\%(Sym\)\?Trid\)iagonal\|Hermitian\|Symmetric\|UniformScaling\|\%(Lower\|Upper\)Triangular\|SparseVector\|VecElement\)\>"
syntax match juliaBaseTypeArray0607 display "\<\%(Conj\%(Array\|Matrix\|Vector\)\|Index\%(Cartesian\|Linear\|Style\)\|PermutedDimsArray\|RowVector\)\>" syntax match juliaBaseTypeArray0607 display "\<\%(Conj\%(Array\|Matrix\|Vector\)\|Index\%(Cartesian\|Linear\|Style\)\|PermutedDimsArray\|RowVector\)\>"
syntax match juliaBaseTypeDict display "\<\%(WeakKey\|ObjectId\)\?Dict\>" syntax match juliaBaseTypeArray07 display "\<\%(BroadcastStyle\|Adjoint\|Transpose\|LinearIndices\)\>"
syntax match juliaBaseTypeDict display "\<\%(WeakKey\)\?Dict\>"
syntax match juliaBaseTypeDict0506 display "\<ObjectIdDict\>"
syntax match juliaBaseTypeDict07 display "\<IdDict\>"
syntax match juliaBaseTypeSet display "\<Set\>" syntax match juliaBaseTypeSet display "\<Set\>"
syntax match juliaBaseTypeSet0506 display "\<IntSet\>" syntax match juliaBaseTypeSet0506 display "\<IntSet\>"
syntax match juliaBaseTypeSet0607 display "\<AbstractSet\>" syntax match juliaBaseTypeSet0607 display "\<AbstractSet\>"
syntax match juliaBaseTypeSet07 display "\<BitSet\>" syntax match juliaBaseTypeSet07 display "\<\%(\%(Bit\|Key\)Set\|AbstractDict\)\>"
syntax match juliaBaseTypeIO display "\<\%(IO\%(Stream\|Buffer\|Context\)\?\|RawFD\|StatStruct\|DevNull\|FileMonitor\|PollingFileWatcher\|Timer\|Base64\%(Decode\|Encode\)Pipe\|\%(UDP\|TCP\)Socket\|\%(Abstract\)\?Channel\|BufferStream\|ReentrantLock\)\>" syntax match juliaBaseTypeIO display "\<\%(IO\%(Stream\|Buffer\|Context\)\?\|RawFD\|StatStruct\|FileMonitor\|PollingFileWatcher\|Timer\|Base64\%(Decode\|Encode\)Pipe\|\%(UDP\|TCP\)Socket\|\%(Abstract\)\?Channel\|BufferStream\|ReentrantLock\)\>"
syntax match juliaBaseTypeIO07 display "\<GenericIOBuffer\>"
syntax match juliaBaseTypeProcess display "\<\%(ProcessGroup\|Pipe\|Cmd\)\>" syntax match juliaBaseTypeProcess display "\<\%(ProcessGroup\|Pipe\|Cmd\)\>"
syntax match juliaBaseTypeProcess0607 display "\<PipeBuffer\>" syntax match juliaBaseTypeProcess0607 display "\<PipeBuffer\>"
syntax match juliaBaseTypeRange display "\<\%(Dims\|RangeIndex\|\%(Ordinal\|Step\|\%(Abstract\)\?Unit\)Range\|Colon\)\>" syntax match juliaBaseTypeRange display "\<\%(Dims\|RangeIndex\|\%(Ordinal\|Step\|\%(Abstract\)\?Unit\)Range\|Colon\)\>"
syntax match juliaBaseTypeRange05 display "\<FloatRange\>" syntax match juliaBaseTypeRange05 display "\<FloatRange\>"
syntax match juliaBaseTypeRange0506 display "\<Range\>" syntax match juliaBaseTypeRange0506 display "\<Range\>"
syntax match juliaBaseTypeRange0607 display "\<\%(ExponentialBackOff\|StepRangeLen\)\>" syntax match juliaBaseTypeRange0607 display "\<\%(ExponentialBackOff\|StepRangeLen\)\>"
syntax match juliaBaseTypeRange07 display "\<AbstractRange\>" syntax match juliaBaseTypeRange07 display "\<\(Abstract\|Lin\)Range\>"
syntax match juliaBaseTypeRegex display "\<Regex\%(Match\)\?\>" syntax match juliaBaseTypeRegex display "\<Regex\%(Match\)\?\>"
syntax match juliaBaseTypeFact display "\<Factorization\>" syntax match juliaBaseTypeFact display "\<Factorization\>"
syntax match juliaBaseTypeSort display "\<\%(Insertion\|\(Partial\)\?Quick\|Merge\)Sort\>" syntax match juliaBaseTypeSort display "\<\%(Insertion\|\(Partial\)\?Quick\|Merge\)Sort\>"
@@ -236,6 +246,7 @@ syntax match juliaBaseTypeRound display "\<Round\%(ingMode\|FromZero\|Down\|Ne
syntax match juliaBaseTypeSpecial display "\<\%(LocalProcess\|ClusterManager\)\>" syntax match juliaBaseTypeSpecial display "\<\%(LocalProcess\|ClusterManager\)\>"
syntax match juliaBaseTypeRandom display "\<\%(AbstractRNG\|MersenneTwister\|RandomDevice\)\>" syntax match juliaBaseTypeRandom display "\<\%(AbstractRNG\|MersenneTwister\|RandomDevice\)\>"
syntax match juliaBaseTypeDisplay display "\<\%(Text\(Display\)\?\|Display\|MIME\|HTML\)\>" syntax match juliaBaseTypeDisplay display "\<\%(Text\(Display\)\?\|Display\|MIME\|HTML\)\>"
syntax match juliaBaseTypeDisplay07 display "\<AbstractDisplay\>"
syntax match juliaBaseTypeTime display "\<\%(Date\%(Time\)\?\)\>" syntax match juliaBaseTypeTime display "\<\%(Date\%(Time\)\?\)\>"
syntax match juliaBaseTypeTime0607 display "\<DateFormat\>" syntax match juliaBaseTypeTime0607 display "\<DateFormat\>"
syntax match juliaBaseTypeOther display "\<\%(RemoteRef\|Task\|Condition\|VersionNumber\|IPv[46]\|SerializationState\|WorkerConfig\|Future\|RemoteChannel\|IPAddr\|Stack\%(Trace\|Frame\)\|\(Caching\|Worker\)Pool\|AbstractSerializer\)\>" syntax match juliaBaseTypeOther display "\<\%(RemoteRef\|Task\|Condition\|VersionNumber\|IPv[46]\|SerializationState\|WorkerConfig\|Future\|RemoteChannel\|IPAddr\|Stack\%(Trace\|Frame\)\|\(Caching\|Worker\)Pool\|AbstractSerializer\)\>"
@@ -250,10 +261,13 @@ syntax match juliaConstNum0506 display "\%(\<\%(eu\?\|eulergamma\|γ\|catalan\
syntax match juliaPossibleEuler "" contains=juliaEuler syntax match juliaPossibleEuler "" contains=juliaEuler
exec 'syntax match juliaEuler contained "\%(\%(^\|[' . s:nonidS_chars . ']\|' . s:operators . '\)\%([.0-9eEf_]*\d\)\?\)\@'.s:d(80).'<=\ze\%($\|[' . s:nonidS_chars . ']\|' . s:operators . '\)"' exec 'syntax match juliaEuler contained "\%(\%(^\|[' . s:nonidS_chars . ']\|' . s:operators . '\)\%([.0-9eEf_]*\d\)\?\)\@'.s:d(80).'<=\ze\%($\|[' . s:nonidS_chars . ']\|' . s:operators . '\)"'
syntax match juliaConstBool display "\<\%(true\|false\)\>" syntax match juliaConstBool display "\<\%(true\|false\)\>"
syntax match juliaConstEnv display "\<\%(ARGS\|ENV\|CPU_CORES\|OS_NAME\|ENDIAN_BOM\|LOAD_PATH\|VERSION\|JULIA_HOME\|PROGRAM_FILE\)\>" syntax match juliaConstEnv display "\<\%(ARGS\|ENV\|OS_NAME\|ENDIAN_BOM\|LOAD_PATH\|VERSION\|JULIA_HOME\|PROGRAM_FILE\)\>"
syntax match juliaConstIO display "\<\%(STD\%(OUT\|IN\|ERR\)\)\>" syntax match juliaConstEnv07 display "\<DEPOT_PATH\>"
syntax match juliaConstIO0506 display "\<\%(STD\%(OUT\|IN\|ERR\)\|DevNull\)\>"
syntax match juliaConstIO07 display "\<\%(std\%(out\|in\|err\)\|devnull\)\>"
syntax match juliaConstC display "\<\%(WORD_SIZE\|C_NULL\)\>" syntax match juliaConstC display "\<\%(WORD_SIZE\|C_NULL\)\>"
syntax match juliaConstGeneric display "\<\%(nothing\|Main\)\>" syntax match juliaConstGeneric display "\<\%(nothing\|Main\)\>"
syntax match juliaConstGeneric07 display "\<missing\>"
syntax match juliaPossibleMacro transparent "@" contains=juliaMacroCall,juliaMacroCallP,juliaPrintfMacro syntax match juliaPossibleMacro transparent "@" contains=juliaMacroCall,juliaMacroCallP,juliaPrintfMacro
@@ -442,11 +456,11 @@ for t in ["Iter", "Range"]
let h = b:julia_syntax_version == 5 ? "Type" : b:julia_syntax_version == 6 ? "juliaDeprecated" : "NONE" let h = b:julia_syntax_version == 5 ? "Type" : b:julia_syntax_version == 6 ? "juliaDeprecated" : "NONE"
exec "hi! def link juliaBaseType" . t . "05 " . h exec "hi! def link juliaBaseType" . t . "05 " . h
endfor endfor
for t in ["Range", "Set"] for t in ["Num", "Range", "Dict", "Set"]
let h = b:julia_syntax_version <= 6 ? "Type" : "juliaDeprecated" let h = b:julia_syntax_version <= 6 ? "Type" : "juliaDeprecated"
exec "hi! def link juliaBaseType" . t . "0506 " . h exec "hi! def link juliaBaseType" . t . "0506 " . h
endfor endfor
for t in ["Range", "Set"] for t in ["Range", "Dict", "Set", "Basic", "C", "Array", "Iter", "Display", "IO", "Num", "Error"]
let h = b:julia_syntax_version >= 7 ? "Type" : "NONE" let h = b:julia_syntax_version >= 7 ? "Type" : "NONE"
exec "hi! def link juliaBaseType" . t . "07 " . h exec "hi! def link juliaBaseType" . t . "07 " . h
endfor endfor
@@ -462,13 +476,19 @@ let h = b:julia_syntax_version >= 7 ? "Constant" : "NONE"
exec "hi! def link juliaEuler " . h exec "hi! def link juliaEuler " . h
hi def link juliaConstEnv Constant hi def link juliaConstEnv Constant
hi def link juliaConstIO Constant
hi def link juliaConstC Constant hi def link juliaConstC Constant
hi def link juliaConstLimits Constant hi def link juliaConstLimits Constant
hi def link juliaConstGeneric Constant hi def link juliaConstGeneric Constant
hi def link juliaRangeEnd Constant hi def link juliaRangeEnd Constant
hi def link juliaConstBool Boolean hi def link juliaConstBool Boolean
for t in ["Generic", "IO", "Env"]
let h = b:julia_syntax_version >= 7 ? "Constant" : "NONE"
exec "hi! def link juliaConst" . t . "07 " . h
endfor
let h = b:julia_syntax_version < 7 ? "Constant" : "juliaDeprecated"
exec "hi! def link juliaConstIO0506 " . h
hi def link juliaComprehensionFor Keyword hi def link juliaComprehensionFor Keyword
hi def link juliaComprehensionIf Keyword hi def link juliaComprehensionIf Keyword

View File

@@ -84,10 +84,16 @@ syn match nimEscapeError "\\x\x\=\X" display contained
if nim_highlight_numbers == 1 if nim_highlight_numbers == 1
" numbers (including longs and complex) " numbers (including longs and complex)
syn match nimNumber "\v<0x\x+(\'(i|I|f|F|u|U)(8|16|32|64))?>" let s:dec_num = '\d%(_?\d)*'
syn match nimNumber "\v<[0-9_]+(\'(i|I|f|F|u|U)(8|16|32|64))?>" let s:int_suf = '%(''%(%(i|I|u|U)%(8|16|32|64)|u|U))'
syn match nimNumber "\v[0-9]\.[0-9_]+([eE][+-]=[0-9_]+)=>" let s:float_suf = '%(''%(%(f|F)%(32|64|128)?|d|D))'
syn match nimNumber "\v<[0-9_]+(\.[0-9_]+)?([eE][+-]?[0-9_]+)?(\'(f|F)(32|64))?>" let s:exp = '%([eE][+-]?'.s:dec_num.')'
exe 'syn match nimNumber /\v<0[bB][01]%(_?[01])*%('.s:int_suf.'|'.s:float_suf.')?>/'
exe 'syn match nimNumber /\v<0[ocC]\o%(_?\o)*%('.s:int_suf.'|'.s:float_suf.')?>/'
exe 'syn match nimNumber /\v<0[xX]\x%(_?\x)*%('.s:int_suf.'|'.s:float_suf.')?>/'
exe 'syn match nimNumber /\v<'.s:dec_num.'%('.s:int_suf.'|'.s:exp.'?'.s:float_suf.'?)>/'
exe 'syn match nimNumber /\v<'.s:dec_num.'\.'.s:dec_num.s:exp.'?'.s:float_suf.'?>/'
unlet s:dec_num s:int_suf s:float_suf s:exp
endif endif
if nim_highlight_builtins == 1 if nim_highlight_builtins == 1

View File

@@ -36,11 +36,12 @@ syn region nixComment start=+/\*+ end=+\*/+ contains=nixTodo,@Spell
syn region nixInterpolation matchgroup=nixInterpolationDelimiter start="\${" end="}" contained contains=@nixExpr,nixInterpolationParam syn region nixInterpolation matchgroup=nixInterpolationDelimiter start="\${" end="}" contained contains=@nixExpr,nixInterpolationParam
syn match nixSimpleStringSpecial /\\["nrt\\$]/ contained syn match nixSimpleStringSpecial /\\./ contained
syn match nixInterpolationSpecial /''['$]/ contained syn match nixStringSpecial /''['$]/ contained
syn match nixStringSpecial /''\\./ contained
syn region nixSimpleString matchgroup=nixStringDelimiter start=+"+ skip=+\\"+ end=+"+ contains=nixInterpolation,nixSimpleStringSpecial syn region nixSimpleString matchgroup=nixStringDelimiter start=+"+ skip=+\\"+ end=+"+ contains=nixInterpolation,nixSimpleStringSpecial
syn region nixString matchgroup=nixStringDelimiter start=+''+ skip=+''['$]+ end=+''+ contains=nixInterpolation,nixInterpolationSpecial syn region nixString matchgroup=nixStringDelimiter start=+''+ skip=+''['$\\]+ end=+''+ contains=nixInterpolation,nixStringSpecial
syn match nixFunctionCall "[a-zA-Z_][a-zA-Z0-9_'-]*" syn match nixFunctionCall "[a-zA-Z_][a-zA-Z0-9_'-]*"
@@ -117,27 +118,34 @@ syn region nixWithExpr matchgroup=nixWithExprKeyword start="\<with\>" matchgroup
syn region nixAssertExpr matchgroup=nixAssertKeyword start="\<assert\>" matchgroup=NONE end=";" contains=@nixExpr syn region nixAssertExpr matchgroup=nixAssertKeyword start="\<assert\>" matchgroup=NONE end=";" contains=@nixExpr
syn cluster nixExpr contains=nixBoolean,nixNull,nixOperator,nixParen,nixInteger,nixRecKeyword,nixConditional,nixBuiltin,nixSimpleBuiltin,nixComment,nixFunctionCall,nixFunctionArgument,nixSimpleFunctionArgument,nixPath,nixHomePath,nixSearchPathRef,nixURI,nixAttributeSet,nixList,nixSimpleString,nixString,nixLetExpr,nixIfExpr,nixWithExpr,nixAssertExpr syn cluster nixExpr contains=nixBoolean,nixNull,nixOperator,nixParen,nixInteger,nixRecKeyword,nixConditional,nixBuiltin,nixSimpleBuiltin,nixComment,nixFunctionCall,nixFunctionArgument,nixSimpleFunctionArgument,nixPath,nixHomePath,nixSearchPathRef,nixURI,nixAttributeSet,nixList,nixSimpleString,nixString,nixLetExpr,nixIfExpr,nixWithExpr,nixAssertExpr,nixInterpolation
" These definitions override @nixExpr and have to come afterwards: " These definitions override @nixExpr and have to come afterwards:
syn match nixInterpolationParam "[a-zA-Z_][a-zA-Z0-9_'-]*\%(\.[a-zA-Z_][a-zA-Z0-9_'-]*\)*" contained syn match nixInterpolationParam "[a-zA-Z_][a-zA-Z0-9_'-]*\%(\.[a-zA-Z_][a-zA-Z0-9_'-]*\)*" contained
" Non-namespaced Nix builtins as of version 1.10: " Non-namespaced Nix builtins as of version 2.0:
syn keyword nixSimpleBuiltin syn keyword nixSimpleBuiltin
\ abort baseNameOf derivation dirOf fetchTarball import map removeAttrs \ abort baseNameOf derivation derivationStrict dirOf fetchGit
\ throw toString \ fetchMercurial fetchTarball import isNull map placeholder removeAttrs
\ scopedImport throw toString
" Namespaced and non-namespaced Nix builtins as of version 1.10:
" Namespaced and non-namespaced Nix builtins as of version 2.0:
syn keyword nixNamespacedBuiltin contained syn keyword nixNamespacedBuiltin contained
\ abort add all any attrNames attrValues baseNameOf compareVersions \ abort add addErrorContext all any attrNames attrValues baseNameOf
\ concatLists currentSystem deepSeq derivation dirOf div elem elemAt \ catAttrs compareVersions concatLists concatStringsSep currentSystem
\ fetchTarball fetchurl filter filterSource foldl' fromJSON genList \ currentTime deepSeq derivation derivationStrict dirOf div elem elemAt
\ getAttr getEnv hasAttr hashString head import intersectAttrs isAttrs \ fetchGit fetchMercurial fetchTarball fetchurl filter \ filterSource
\ isBool isFunction isInt isList isString length lessThan listToAttrs map \ findFile foldl' fromJSON functionArgs genList \ genericClosure getAttr
\ mul parseDrvName pathExists readDir readFile removeAttrs replaceStrings \ getEnv hasAttr hasContext hashString head import intersectAttrs isAttrs
\ seq sort stringLength sub substring tail throw toFile toJSON toPath \ isBool isFloat isFunction isInt isList isNull isString langVersion
\ toString toXML trace typeOf \ length lessThan listToAttrs map match mul nixPath nixVersion
\ parseDrvName partition path pathExists placeholder readDir readFile
\ removeAttrs replaceStrings scopedImport seq sort split splitVersion
\ storeDir storePath stringLength sub substring tail throw toFile toJSON
\ toPath toString toXML trace tryEval typeOf unsafeDiscardOutputDependency
\ unsafeDiscardStringContext unsafeGetAttrPos valueSize
syn match nixBuiltin "builtins\.[a-zA-Z']\+"he=s+9 contains=nixComment,nixNamespacedBuiltin syn match nixBuiltin "builtins\.[a-zA-Z']\+"he=s+9 contains=nixComment,nixNamespacedBuiltin
@@ -158,7 +166,6 @@ hi def link nixInteger Integer
hi def link nixInterpolation Macro hi def link nixInterpolation Macro
hi def link nixInterpolationDelimiter Delimiter hi def link nixInterpolationDelimiter Delimiter
hi def link nixInterpolationParam Macro hi def link nixInterpolationParam Macro
hi def link nixInterpolationSpecial Special
hi def link nixLetExprKeyword Keyword hi def link nixLetExprKeyword Keyword
hi def link nixNamespacedBuiltin Special hi def link nixNamespacedBuiltin Special
hi def link nixNull Constant hi def link nixNull Constant
@@ -173,6 +180,7 @@ hi def link nixSimpleString String
hi def link nixSimpleStringSpecial SpecialChar hi def link nixSimpleStringSpecial SpecialChar
hi def link nixString String hi def link nixString String
hi def link nixStringDelimiter Delimiter hi def link nixStringDelimiter Delimiter
hi def link nixStringSpecial Special
hi def link nixTodo Todo hi def link nixTodo Todo
hi def link nixURI Include hi def link nixURI Include
hi def link nixWithExprKeyword Keyword hi def link nixWithExprKeyword Keyword

File diff suppressed because one or more lines are too long

View File

@@ -66,7 +66,7 @@ syntax match plantumlHorizontalArrow /\%([-\.]\%(|>\|>\|\*\|o\>\|\\\\\|\\\|\/\/\
syntax match plantumlDirectedOrVerticalArrowLR /[-\.]\%(le\?f\?t\?\|ri\?g\?h\?t\?\|up\?\|do\?w\?n\?\)\?[-\.]\%(|>\|>>\|>\|\*\|o\>\|\\\\\|\\\|\/\/\|\/\|\.\|-\)\%(\[[^\]]*\]\)\?/ contains=plantumlLabel syntax match plantumlDirectedOrVerticalArrowLR /[-\.]\%(le\?f\?t\?\|ri\?g\?h\?t\?\|up\?\|do\?w\?n\?\)\?[-\.]\%(|>\|>>\|>\|\*\|o\>\|\\\\\|\\\|\/\/\|\/\|\.\|-\)\%(\[[^\]]*\]\)\?/ contains=plantumlLabel
syntax match plantumlDirectedOrVerticalArrowRL /\%(<|\|<<\|<\|\*\|\<o\|\\\\\|\\\|\/\/\|\/\)[-\.]\%(le\?f\?t\?\|ri\?g\?h\?t\?\|up\?\|do\?w\?n\?\)\?[-\.]\%(\[[^\]]*\]\)\?/ contains=plantumlLabel syntax match plantumlDirectedOrVerticalArrowRL /\%(<|\|<<\|<\|\*\|\<o\|\\\\\|\\\|\/\/\|\/\)[-\.]\%(le\?f\?t\?\|ri\?g\?h\?t\?\|up\?\|do\?w\?n\?\)\?[-\.]\%(\[[^\]]*\]\)\?/ contains=plantumlLabel
syntax region plantumlLabel start=/\[/ms=s+1 end=/\]/me=s-1 contained contains=plantumlText syntax region plantumlLabel start=/\[/ms=s+1 end=/\]/me=s-1 contained contains=plantumlText
syntax match plantumlText /\%([0-9A-Za-zÀ-ÿ]\|\s\|[\.,;_-]\)\+/ contained syntax match plantumlText /\%([0-9A-Za-z\0xc0-\0xff]\|\s\|[\.,;_-]\)\+/ contained
" Note " Note
syntax region plantumlNoteMultiLine start=/\%(^\s*[rh]\?note\)\@<=\s\%([^:"]\+$\)\@=/ end=/^\%(\s*end \?[rh]\?note$\)\@=/ contains=plantumlSpecialString,plantumlNoteMultiLineStart syntax region plantumlNoteMultiLine start=/\%(^\s*[rh]\?note\)\@<=\s\%([^:"]\+$\)\@=/ end=/^\%(\s*end \?[rh]\?note$\)\@=/ contains=plantumlSpecialString,plantumlNoteMultiLineStart

View File

@@ -20,14 +20,8 @@ syn keyword purescriptBoolean true false
" Delimiters " Delimiters
syn match purescriptDelimiter "[,;|.()[\]{}]" syn match purescriptDelimiter "[,;|.()[\]{}]"
" Constructor
syn match purescriptConstructor "\%(\<class\s\+\)\@15<!\<[A-Z]\w*\>"
syn region purescriptConstructorDecl matchgroup=purescriptConstructor start="\<[A-Z]\w*\>" end="\(|\|$\)"me=e-1,re=e-1 contained
\ containedin=purescriptData,purescriptNewtype
\ contains=purescriptType,purescriptTypeVar,purescriptDelimiter,purescriptOperatorType,purescriptOperatorTypeSig,@purescriptComment
" Type " Type
syn match purescriptType "\%(\<class\s\+\)\@15<!\<[A-Z]\w*\>" contained syn match purescriptType "\%(\<class\s\+\)\@15<!\<\u\w*\>" contained
\ containedin=purescriptTypeAlias \ containedin=purescriptTypeAlias
\ nextgroup=purescriptType,purescriptTypeVar skipwhite \ nextgroup=purescriptType,purescriptTypeVar skipwhite
syn match purescriptTypeVar "\<[_a-z]\(\w\|\'\)*\>" contained syn match purescriptTypeVar "\<[_a-z]\(\w\|\'\)*\>" contained
@@ -35,6 +29,13 @@ syn match purescriptTypeVar "\<[_a-z]\(\w\|\'\)*\>" contained
syn region purescriptTypeExport matchgroup=purescriptType start="\<[A-Z]\(\S\&[^,.]\)*\>("rs=e-1 matchgroup=purescriptDelimiter end=")" contained extend syn region purescriptTypeExport matchgroup=purescriptType start="\<[A-Z]\(\S\&[^,.]\)*\>("rs=e-1 matchgroup=purescriptDelimiter end=")" contained extend
\ contains=purescriptConstructor,purescriptDelimiter \ contains=purescriptConstructor,purescriptDelimiter
" Constructor
syn match purescriptConstructor "\%(\<class\s\+\)\@15<!\<\u\w*\>"
syn region purescriptConstructorDecl matchgroup=purescriptConstructor start="\<[A-Z]\w*\>" end="\(|\|$\)"me=e-1,re=e-1 contained
\ containedin=purescriptData,purescriptNewtype
\ contains=purescriptType,purescriptTypeVar,purescriptDelimiter,purescriptOperatorType,purescriptOperatorTypeSig,@purescriptComment
" Function " Function
syn match purescriptFunction "\%(\<instance\s\+\|\<class\s\+\)\@18<!\<[_a-z]\(\w\|\'\)*\>" contained syn match purescriptFunction "\%(\<instance\s\+\|\<class\s\+\)\@18<!\<[_a-z]\(\w\|\'\)*\>" contained
" syn match purescriptFunction "\<[_a-z]\(\w\|\'\)*\>" contained " syn match purescriptFunction "\<[_a-z]\(\w\|\'\)*\>" contained
@@ -52,28 +53,42 @@ syn match purescriptClass "\<class\>" containedin=purescriptClassDecl contained
syn match purescriptClassName "\<[A-Z]\w*\>" containedin=purescriptClassDecl contained syn match purescriptClassName "\<[A-Z]\w*\>" containedin=purescriptClassDecl contained
" Module " Module
syn match purescriptModuleName "\(\w\+\.\?\)*" contained excludenl syn match purescriptModuleName "\(\u\w\*\.\?\)*" contained excludenl
syn match purescriptModuleKeyword "\<module\>" syn match purescriptModuleKeyword "\<module\>"
syn match purescriptModule "^module\>\s\+\<\(\w\+\.\?\)*\>" syn match purescriptModule "^module\>\s\+\<\(\w\+\.\?\)*\>"
\ contains=purescriptModuleKeyword,purescriptModuleName \ contains=purescriptModuleKeyword,purescriptModuleName
\ nextgroup=purescriptModuleParams skipwhite skipnl skipempty \ nextgroup=purescriptModuleParams
\ skipwhite
\ skipnl
\ skipempty
syn region purescriptModuleParams start="(" skip="([^)]\{-})" end=")" fold contained keepend syn region purescriptModuleParams start="(" skip="([^)]\{-})" end=")" fold contained keepend
\ contains=purescriptClassDecl,purescriptClass,purescriptClassName,purescriptDelimiter,purescriptType,purescriptTypeExport,purescriptFunction,purescriptStructure,purescriptModuleKeyword,@purescriptComment \ contains=purescriptClassDecl,purescriptClass,purescriptClassName,purescriptDelimiter,purescriptType,purescriptTypeExport,purescriptStructure,purescriptModuleKeyword,@purescriptComment
\ nextgroup=purescriptImportParams skipwhite \ nextgroup=purescriptImportParams skipwhite
" Import " Import
syn match purescriptImportKeyword "\<\(foreign\|import\|qualified\)\>" syn match purescriptImportKeyword "\<\(foreign\|import\|qualified\)\>"
syn keyword purescriptAsKeyword as contained syn match purescriptImport "\<import\>\s\+\(qualified\s\+\)\?\<\(\w\+\.\?\)*"
syn keyword purescriptHidingKeyword hiding contained
syn match purescriptImport "\<import\>\s\+\(qualified\s\+\)\?\<\(\w\+\.\?\)*\>"
\ contains=purescriptImportKeyword,purescriptModuleName \ contains=purescriptImportKeyword,purescriptModuleName
\ nextgroup=purescriptModuleParams,purescriptImportParams skipwhite \ nextgroup=purescriptImportParams,purescriptImportAs,purescriptImportHiding
syn match purescriptImportParams "as\s\+\(\w\+\)" contained \ skipwhite
\ contains=purescriptModuleName,purescriptAsKeyword syn region purescriptImportParams
\ nextgroup=purescriptModuleParams,purescriptImportParams skipwhite \ start="("
syn match purescriptImportParams "hiding" contained \ skip="([^)]\{-})"
\ end=")"
\ contained
\ contains=purescriptClass,purescriptClass,purescriptStructure,purescriptType,purescriptIdentifier
\ nextgroup=purescriptImportAs
\ skipwhite
syn keyword purescriptAsKeyword as contained
syn match purescriptImportAs "\<as\>\_s\+\u\w*"
\ contains=purescriptAsKeyword,purescriptModuleName
\ nextgroup=purescriptModuleName
syn keyword purescriptHidingKeyword hiding contained
syn match purescriptImportHiding "hiding"
\ contained
\ contains=purescriptHidingKeyword \ contains=purescriptHidingKeyword
\ nextgroup=purescriptModuleParams,purescriptImportParams skipwhite \ nextgroup=purescriptImportParams
\ skipwhite
" Function declaration " Function declaration
syn region purescriptFunctionDecl syn region purescriptFunctionDecl
@@ -97,7 +112,6 @@ syn match purescriptForall "∀"
syn keyword purescriptConditional if then else syn keyword purescriptConditional if then else
syn keyword purescriptStatement do case of in syn keyword purescriptStatement do case of in
syn keyword purescriptLet let syn keyword purescriptLet let
" syn keyword purescriptClass class
syn keyword purescriptWhere where syn keyword purescriptWhere where
syn match purescriptStructure "\<\(data\|newtype\|type\|kind\)\>" syn match purescriptStructure "\<\(data\|newtype\|type\|kind\)\>"
\ nextgroup=purescriptType skipwhite \ nextgroup=purescriptType skipwhite
@@ -140,19 +154,22 @@ syn match purescriptTypeAliasStart "^type\s\+\([A-Z]\w*\)" contained
" String " String
syn match purescriptChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'" syn match purescriptChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'"
syn region purescriptString start=+"+ skip=+\\\\\|\\"+ end=+"+ syn region purescriptString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
syn region purescriptMultilineString start=+"""+ end=+"""+ fold syn region purescriptMultilineString start=+"""+ end=+"""+ fold contains=@Spell
" Comment " Comment
syn match purescriptLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$" syn match purescriptLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$" contains=@Spell
syn region purescriptBlockComment start="{-" end="-}" fold syn region purescriptBlockComment start="{-" end="-}" fold
\ contains=purescriptBlockComment \ contains=purescriptBlockComment,@Spell
syn cluster purescriptComment contains=purescriptLineComment,purescriptBlockComment syn cluster purescriptComment contains=purescriptLineComment,purescriptBlockComment,@Spell
syn sync minlines=50 syn sync minlines=50
" highlight links " highlight links
highlight def link purescriptModule Include
highlight def link purescriptImport Include
highlight def link purescriptModuleKeyword purescriptKeyword highlight def link purescriptModuleKeyword purescriptKeyword
highlight def link purescriptImportAs Include
highlight def link purescriptModuleName Include highlight def link purescriptModuleName Include
highlight def link purescriptModuleParams purescriptDelimiter highlight def link purescriptModuleParams purescriptDelimiter
highlight def link purescriptImportKeyword purescriptKeyword highlight def link purescriptImportKeyword purescriptKeyword

View File

@@ -280,57 +280,37 @@ else
endif endif
" Here Document {{{1 " Here Document {{{1
syn match rubyStringDelimiter +\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
syn match rubyStringDelimiter +\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
syn match rubyStringDelimiter +\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
syn match rubyStringDelimiter +\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
if s:foldable('<<') if s:foldable('<<')
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\).*$\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\z1$+ contains=@rubyStringSpecial keepend fold syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<"\z([^"]*\)".*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\z1$+ contains=@rubyStringSpecial keepend fold syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<'\z([^']*\)'.*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\z1$+ keepend fold syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc fold keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<`\z([^`]*\)`.*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\z1$+ contains=@rubyStringSpecial keepend fold syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\>.*$\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend fold syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)".*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend fold syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'.*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ keepend fold syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`.*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend fold syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\zs\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)$+ end=+^\z1$+ contains=@rubyStringSpecial keepend fold
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\zs"\z([^"]*\)"$+ end=+^\z1$+ contains=@rubyStringSpecial keepend fold
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\zs'\z([^']*\)'$+ end=+^\z1$+ keepend fold
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\zs`\z([^`]*\)`$+ end=+^\z1$+ contains=@rubyStringSpecial keepend fold
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\zs\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)$+ end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend fold
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\zs"\z([^"]*\)"$+ end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend fold
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\zs'\z([^']*\)'$+ end=+^\s*\zs\z1$+ keepend fold
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\zs`\z([^`]*\)`$+ end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend fold
else else
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\).*$\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\z1$+ contains=@rubyStringSpecial keepend syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<"\z([^"]*\)".*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\z1$+ contains=@rubyStringSpecial keepend syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<'\z([^']*\)'.*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\z1$+ keepend syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<`\z([^`]*\)`.*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\z1$+ contains=@rubyStringSpecial keepend syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\>.*$\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)".*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'.*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ keepend syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend
syn region rubyString start=+\%(^.*\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`.*\)\@<=\n+ matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\zs\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)$+ end=+^\z1$+ contains=@rubyStringSpecial keepend
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\zs"\z([^"]*\)"$+ end=+^\z1$+ contains=@rubyStringSpecial keepend
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\zs'\z([^']*\)'$+ end=+^\z1$+ keepend
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<\zs`\z([^`]*\)`$+ end=+^\z1$+ contains=@rubyStringSpecial keepend
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\zs\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)$+ end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\zs"\z([^"]*\)"$+ end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\zs'\z([^']*\)'$+ end=+^\s*\zs\z1$+ keepend
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(\%(class\|::\)\s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\zs`\z([^`]*\)`$+ end=+^\s*\zs\z1$+ contains=@rubyStringSpecial keepend
endif endif
" eRuby Config {{{1 " eRuby Config {{{1
if exists('main_syntax') && main_syntax == 'eruby' if exists('main_syntax') && main_syntax == 'eruby'
let b:ruby_no_expensive = 1 let b:ruby_no_expensive = 1
end endif
" Module, Class, Method and Alias Declarations {{{1 " Module, Class, Method and Alias Declarations {{{1
syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite

View File

@@ -12,9 +12,9 @@ endif
" basic " basic
" contract, library and event are defined at bottom of file " contract, library and event are defined at bottom of file
syn keyword solKeyword abstract anonymous as assembly break case catch constant continue default syn keyword solKeyword abstract anonymous as assembly break case catch constant continue default
syn keyword solKeyword delete do else enum external final for function if import in indexed inline syn keyword solKeyword delete do else emit enum external final for function if import in indexed inline
syn keyword solKeyword interface internal is let match memory modifier new of payable pragma private public pure syn keyword solKeyword interface internal is let match memory modifier new of payable pragma private public pure
syn keyword solKeyword relocatable return returns static storage struct switch throw try type typeof using syn keyword solKeyword relocatable require return returns static storage struct throw try type typeof using
syn keyword solKeyword var view while syn keyword solKeyword var view while
syn keyword solConstant true false wei szabo finney ether seconds minutes hours days weeks years now syn keyword solConstant true false wei szabo finney ether seconds minutes hours days weeks years now
syn keyword solConstant block msg now tx sha3 keccak256 sha256 ripemd160 ecerecover addmod mulmod this super selfdestruct syn keyword solConstant block msg now tx sha3 keccak256 sha256 ripemd160 ecerecover addmod mulmod this super selfdestruct

View File

@@ -3,7 +3,6 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'swift') == -1
" File: swift.vim " File: swift.vim
" Author: Keith Smiley " Author: Keith Smiley
" Description: Runtime files for Swift " Description: Runtime files for Swift
" Last Modified: June 15, 2014
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@@ -55,10 +54,10 @@ delfunction s:CommentKeywordMatch
" Literals " Literals
" Strings " Strings
syntax region swiftString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=swiftMultilineInterpolatedWrapper oneline syntax region swiftString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=swiftInterpolatedWrapper oneline
syntax region swiftMultilineString start=/"""/ end=/"""/ contains=swiftMultilineInterpolatedWrapper syntax region swiftMultilineString start=/"""/ end=/"""/ contains=swiftMultilineInterpolatedWrapper
syntax region swiftMultilineInterpolatedWrapper start="\v\\\(\s*" end="\v\s*\)" contained containedin=swiftMultilineString contains=swiftInterpolatedString oneline syntax region swiftMultilineInterpolatedWrapper start='\v\zs\\\(\s*' end='\v\s*\)' contained containedin=swiftMultilineString contains=swiftInterpolatedString oneline
syntax region swiftInterpolatedWrapper start="\v[^\\]\zs\\\(\s*" end="\v\s*\)" contained containedin=swiftString contains=swiftInterpolatedString,swiftString oneline syntax region swiftInterpolatedWrapper start='\v(^|[^\\])\zs\\\(\s*' end='\v\s*\)' contained containedin=swiftString contains=swiftInterpolatedString,swiftString oneline
syntax match swiftInterpolatedString "\v\w+(\(\))?" contained containedin=swiftInterpolatedWrapper,swiftMultilineInterpolatedWrapper oneline syntax match swiftInterpolatedString "\v\w+(\(\))?" contained containedin=swiftInterpolatedWrapper,swiftMultilineInterpolatedWrapper oneline
" Numbers " Numbers
@@ -141,6 +140,7 @@ syntax keyword swiftKeywords
\ mutating \ mutating
\ nil \ nil
\ nonmutating \ nonmutating
\ open
\ operator \ operator
\ optional \ optional
\ override \ override
@@ -242,6 +242,8 @@ syntax keyword swiftPreprocessor
\ #else \ #else
\ #endif \ #endif
\ #selector \ #selector
\ #warning
\ #error
" Comment patterns " Comment patterns

View File

@@ -26,12 +26,14 @@ syn match sdFormatStr contained /%[inpINPfcrRt]/ containedin=ALLBUT,sdComment,sd
syn match sdUInt contained nextgroup=sdErr /\d\+/ syn match sdUInt contained nextgroup=sdErr /\d\+/
syn match sdInt contained nextgroup=sdErr /-\=\d\+/ syn match sdInt contained nextgroup=sdErr /-\=\d\+/
syn match sdOctal contained nextgroup=sdErr /0\o\{3,4}/ syn match sdOctal contained nextgroup=sdErr /0\o\{3,4}/
" sdDuration: see systemd.time(7)
syn match sdDuration contained nextgroup=sdErr /\d\+/ syn match sdDuration contained nextgroup=sdErr /\d\+/
syn match sdDuration contained nextgroup=sdErr /\%(\d\+\%(s\|min\|h\|d\|w\|ms\|us\)\s*\)\+/ syn match sdDuration contained nextgroup=sdErr /\%(\d\+\s*\%(usec\|msec\|seconds\=\|minutes\=\|hours\=\|days\=\|weeks\=\|months\=\|years\=\|us\|ms\|sec\|min\|hr\|[smhdwMy]\)\s*\)\+/
syn match sdDatasize contained nextgroup=sdErr /\d\+[KMGT]/ syn match sdDatasize contained nextgroup=sdErr /\d\+[KMGT]/
syn match sdFilename contained nextgroup=sdErr /\/\S*/ syn match sdFilename contained nextgroup=sdErr /\/\S*/
syn match sdPercent contained nextgroup=sdErr /\d\+%/
syn keyword sdBool contained nextgroup=sdErr 1 yes true on 0 no false off syn keyword sdBool contained nextgroup=sdErr 1 yes true on 0 no false off
syn match sdUnitName contained /\S\+\.\(automount\|mount\|swap\|socket\|service\|target\|path\|timer\|device\)\_s/ syn match sdUnitName contained /\S\+\.\(automount\|mount\|swap\|socket\|service\|target\|path\|timer\|device\|slice\|scope\)\_s/
" .include " .include
syn match sdInclude /^.include/ nextgroup=sdFilename syn match sdInclude /^.include/ nextgroup=sdFilename
@@ -46,46 +48,51 @@ syn region sdUnitBlock matchgroup=sdHeader start=/^\[Unit\]/ end=/^\[/me=e-2 con
syn match sdUnitKey contained /^Description=/ syn match sdUnitKey contained /^Description=/
syn match sdUnitKey contained /^Documentation=/ nextgroup=sdDocURI syn match sdUnitKey contained /^Documentation=/ nextgroup=sdDocURI
syn match sdUnitKey contained /^SourcePath=/ nextgroup=sdFilename,sdErr syn match sdUnitKey contained /^SourcePath=/ nextgroup=sdFilename,sdErr
syn match sdUnitKey contained /^\%(Requires\|RequiresOverridable\|Requisite\|RequisiteOverridable\|Wants\|BindsTo\|PartOf\|Conflicts\|Before\|After\|OnFailure\|Names|PropagatesReloadTo\|ReloadPropagatedFrom\)=/ nextgroup=sdUnitList syn match sdUnitKey contained /^\%(Requires\|RequiresOverridable\|Requisite\|RequisiteOverridable\|Wants\|Binds\=To\|PartOf\|Conflicts\|Before\|After\|OnFailure\|Names|PropagatesReloadTo\|ReloadPropagatedFrom\)=/ nextgroup=sdUnitList
syn match sdUnitKey contained /^\%(OnFailureIsolate\|IgnoreOnIsolate\|IgnoreOnSnapshot\|StopWhenUnneeded\|RefuseManualStart\|RefuseManualStop\|AllowIsolate\|DefaultDependencies\)=/ nextgroup=sdBool,sdErr syn match sdUnitKey contained /^\%(OnFailureIsolate\|IgnoreOnIsolate\|IgnoreOnSnapshot\|StopWhenUnneeded\|RefuseManualStart\|RefuseManualStop\|AllowIsolate\|DefaultDependencies\)=/ nextgroup=sdBool,sdErr
syn match sdUnitKey contained /^OnFailureJobMode=/ nextgroup=sdFailJobMode,sdErr syn match sdUnitKey contained /^OnFailureJobMode=/ nextgroup=sdFailJobMode,sdErr
syn match sdUnitKey contained /^JobTimeoutSec=/ nextgroup=sdDuration,sdErr syn match sdUnitKey contained /^\%(StartLimitInterval\|StartLimitIntervalSec\|JobTimeoutSec\)=/ nextgroup=sdDuration,sdErr
" ConditionXXX. Note that they all have an optional '|' after the '=' syn match sdUnitKey contained /^\%(StartLimitAction\|JobTimeoutAction\)=/ nextgroup=sdLimitAction,sdErr
syn match sdUnitKey contained /^\%(RebootArgument\|JobTimeoutRebootArgument\)=/
" ConditionXXX. Note that they all have an optional '|' after the '='.
syn match sdUnitKey contained /^Condition\(PathExists\|PathExistsGlob\|PathIsDirectory\|PathIsMountPoint\|PathIsReadWrite\|PathIsSymbolicLink\|DirectoryNotEmpty\|FileNotEmpty\|FileIsExecutable\)=|\=!\=/ contains=sdConditionFlag nextgroup=sdFilename,sdErr syn match sdUnitKey contained /^Condition\(PathExists\|PathExistsGlob\|PathIsDirectory\|PathIsMountPoint\|PathIsReadWrite\|PathIsSymbolicLink\|DirectoryNotEmpty\|FileNotEmpty\|FileIsExecutable\)=|\=!\=/ contains=sdConditionFlag nextgroup=sdFilename,sdErr
syn match sdUnitKey contained /^ConditionVirtualization=|\=!\=/ contains=sdConditionFlag nextgroup=sdVirtType,sdErr syn match sdUnitKey contained /^ConditionVirtualization=|\=!\=/ contains=sdConditionFlag nextgroup=sdVirtType,sdErr
syn match sdUnitKey contained /^ConditionSecurity=|\=!\=/ contains=sdConditionFlag nextgroup=sdSecurityType,sdErr syn match sdUnitKey contained /^ConditionSecurity=|\=!\=/ contains=sdConditionFlag nextgroup=sdSecurityType,sdErr
syn match sdUnitKey contained /^ConditionCapability=|\=!\=/ contains=sdConditionFlag nextgroup=sdAnyCapName,sdErr syn match sdUnitKey contained /^ConditionCapability=|\=!\=/ contains=sdConditionFlag nextgroup=sdAnyCapName,sdErr
syn match sdUnitKey contained /^Condition\%(KernelCommandLine\|Host\)=|\=!\=/ contains=sdConditionFlag syn match sdUnitKey contained /^Condition\%(KernelCommandLine\|Host\)=|\=!\=/ contains=sdConditionFlag
syn match sdUnitKey contained /^Condition\%(ACPower\|Null\)=|\=/ contains=sdConditionFlag nextgroup=sdBool,sdErr syn match sdUnitKey contained /^Condition\%(ACPower\|Null\|FirstBoot\)=|\=/ contains=sdConditionFlag nextgroup=sdBool,sdErr
syn match sdUnitKey contained /^ConditionNeedsUpdate=|\=!\=/ contains=sdConditionFlag nextgroup=sdCondUpdateDir,sdErr
" extra bits " extra bits
syn match sdUnitList contained /.*/ contains=sdUnitName,sdErr syn match sdUnitList contained /.*/ contains=sdUnitName,sdErr
syn match sdConditionFlag contained /[!|]/ syn match sdConditionFlag contained /[!|]/
syn match sdCondUpdateDir contained nextgroup=sdErr /\%(\/etc\|\/var\)/
syn keyword sdVirtType contained nextgroup=sdErr vm container qemu kvm vmware microsoft oracle xen bochs chroot openvz lxc lxc-libvirt systemd-nspawn syn keyword sdVirtType contained nextgroup=sdErr vm container qemu kvm vmware microsoft oracle xen bochs chroot openvz lxc lxc-libvirt systemd-nspawn
syn keyword sdSecurityType contained nextgroup=sdErr selinux syn keyword sdSecurityType contained nextgroup=sdErr selinux
syn keyword sdFailJobMode contained nextgroup=sderr fail replace replace-irreversibly syn keyword sdFailJobMode contained nextgroup=sdErr fail replace replace-irreversibly
syn keyword sdLimitAction contained nextgroup=sdErr none reboot reboot-force reboot-immediate poweroff poweroff-force poweroff-immediate
syn match sdDocUri contained /\%(https\=:\/\/\|file:\|info:\|man:\)\S\+\s*/ nextgroup=sdDocUri,sdErr syn match sdDocUri contained /\%(https\=:\/\/\|file:\|info:\|man:\)\S\+\s*/ nextgroup=sdDocUri,sdErr
" [Install] {{{1 " [Install] {{{1
" see systemd.unit(5) " see systemd.unit(5)
syn region sdInstallBlock matchgroup=sdHeader start=/^\[Install\]/ end=/^\[/me=e-2 contains=sdInstallKey syn region sdInstallBlock matchgroup=sdHeader start=/^\[Install\]/ end=/^\[/me=e-2 contains=sdInstallKey
syn match sdInstallKey contained /^\%(WantedBy\|Alias\|Also\)=/ nextgroup=sdUnitList syn match sdInstallKey contained /^\%(WantedBy\|Alias\|Also\|RequiredBy\)=/ nextgroup=sdUnitList
" Execution options common to [Service|Socket|Mount|Swap] {{{1 " Execution options common to [Service|Socket|Mount|Swap] {{{1
" see systemd.exec(5) " see systemd.exec(5)
syn match sdExecKey contained /^Exec\%(Start\%(Pre\|Post\|\)\|Reload\|Stop\|StopPost\)=/ nextgroup=sdExecFlag,sdExecFile,sdErr syn match sdExecKey contained /^Exec\%(Start\%(Pre\|Post\|\)\|Reload\|Stop\|StopPost\)=/ nextgroup=sdExecFlag,sdExecFile,sdErr
syn match sdExecKey contained /^\%(WorkingDirectory\|RootDirectory\|TTYPath\)=/ nextgroup=sdFilename,sdErr syn match sdExecKey contained /^\%(WorkingDirectory\|RootDirectory\|TTYPath\)=/ nextgroup=sdFilename,sdErr
" TODO: handle some of these better " TODO: handle some of these better
" FIXME: some of these have moved to Resource Control
" CPUAffinity is: list of uint " CPUAffinity is: list of uint
" BlockIOWeight is: uint\|filename uint " BlockIOWeight is: uint\|filename uint
" BlockIO\%(Read\|Write\)Bandwidth is: filename datasize " BlockIO\%(Read\|Write\)Bandwidth is: filename datasize
syn match sdExecKey contained /^\%(User\|Group\|SupplementaryGroups\|CPUAffinity\|SyslogIdentifier\|PAMName\|TCPWrapName\|ControlGroup\|ControlGroupAttribute\|DeviceAllow\|DeviceDeny\|BlockIOWeight\|BlockIO\%(Read\|Write\)Bandwidth\|UtmpIdentifier\)=/ syn match sdExecKey contained /^\%(User\|Group\|SupplementaryGroups\|CPUAffinity\|SyslogIdentifier\|PAMName\|TCPWrapName\|ControlGroup\|ControlGroupAttribute\|UtmpIdentifier\)=/
syn match sdExecKey contained /^Limit\%(CPU\|FSIZE\|DATA\|STACK\|CORE\|RSS\|NOFILE\|AS\|NPROC\|MEMLOCK\|LOCKS\|SIGPENDING\|MSGQUEUE\|NICE\|RTPRIO\|RTTIME\)=/ nextgroup=sdRlimit syn match sdExecKey contained /^Limit\%(CPU\|FSIZE\|DATA\|STACK\|CORE\|RSS\|NOFILE\|AS\|NPROC\|MEMLOCK\|LOCKS\|SIGPENDING\|MSGQUEUE\|NICE\|RTPRIO\|RTTIME\)=/ nextgroup=sdRlimit
syn match sdExecKey contained /^\%(CPUSchedulingResetOnFork\|TTYReset\|TTYVHangup\|TTYVTDisallocate\|SyslogLevelPrefix\|ControlGroupModify\|PrivateTmp\|PrivateNetwork\)=/ nextgroup=sdBool,sdErr syn match sdExecKey contained /^\%(CPUSchedulingResetOnFork\|TTYReset\|TTYVHangup\|TTYVTDisallocate\|SyslogLevelPrefix\|ControlGroupModify\|PrivateTmp\|PrivateNetwork\|PrivateDevices\)=/ nextgroup=sdBool,sdErr
syn match sdExecKey contained /^\%(Nice\|OOMScoreAdjust\)=/ nextgroup=sdInt,sdErr syn match sdExecKey contained /^\%(Nice\|OOMScoreAdjust\)=/ nextgroup=sdInt,sdErr
syn match sdExecKey contained /^\%(CPUSchedulingPriority\|TimerSlackNSec\|CPUShares\)=/ nextgroup=sdUInt,sdErr syn match sdExecKey contained /^\%(CPUSchedulingPriority\|TimerSlackNSec\)=/ nextgroup=sdUInt,sdErr
syn match sdExecKey contained /^\%(MemoryLimit\|MemorySoftLimit\)=/ nextgroup=sdDatasize,sdErr
syn match sdExecKey contained /^\%(ReadWrite\|ReadOnly\|Inaccessible\)Directories=/ nextgroup=sdFileList syn match sdExecKey contained /^\%(ReadWrite\|ReadOnly\|Inaccessible\)Directories=/ nextgroup=sdFileList
syn match sdExecKey contained /^Device\%(Allow\|Deny\)=/ nextgroup=sdDevAllow,sdErr
syn match sdExecKey contained /^CapabilityBoundingSet=/ nextgroup=sdCapNameList syn match sdExecKey contained /^CapabilityBoundingSet=/ nextgroup=sdCapNameList
syn match sdExecKey contained /^Capabilities=/ nextgroup=sdCapability,sdErr syn match sdExecKey contained /^Capabilities=/ nextgroup=sdCapability,sdErr
syn match sdExecKey contained /^UMask=/ nextgroup=sdOctal,sdErr syn match sdExecKey contained /^UMask=/ nextgroup=sdOctal,sdErr
@@ -98,7 +105,7 @@ syn match sdExecKey contained /^IOSchedulingClass=/ nextgroup=sdIOSchedClass,sdE
syn match sdExecKey contained /^IOSchedulingPriority=/ nextgroup=sdIOSchedPrio,sdErr syn match sdExecKey contained /^IOSchedulingPriority=/ nextgroup=sdIOSchedPrio,sdErr
syn match sdExecKey contained /^CPUSchedulingPolicy=/ nextgroup=sdCPUSchedPol,sdErr syn match sdExecKey contained /^CPUSchedulingPolicy=/ nextgroup=sdCPUSchedPol,sdErr
syn match sdExecKey contained /^MountFlags=/ nextgroup=sdMountFlags,sdErr syn match sdExecKey contained /^MountFlags=/ nextgroup=sdMountFlags,sdErr
syn match sdExecKey contained /^IgnoreSIGPIPE=/ nextgroup=sdBool,sdErr syn match sdExecKey contained /^\%(IgnoreSIGPIPE\|MemoryDenyWriteExecute\)=/ nextgroup=sdBool,sdErr
syn match sdExecKey contained /^Environment=/ nextgroup=sdEnvDefs syn match sdExecKey contained /^Environment=/ nextgroup=sdEnvDefs
syn match sdExecKey contained /^EnvironmentFile=-\=/ contains=sdEnvDashFlag nextgroup=sdFilename,sdErr syn match sdExecKey contained /^EnvironmentFile=-\=/ contains=sdEnvDashFlag nextgroup=sdFilename,sdErr
@@ -126,9 +133,6 @@ syn match sdCapOps contained /[=+-]/
syn match sdCapFlags contained /\<[eip]\+/ syn match sdCapFlags contained /\<[eip]\+/
syn match sdCapability contained /\%(\%([A-Za-z_]\+,\=\)*\|all\)\%(=[eip]*\|[+-][eip]\+\)\s*/ contains=@sdCap nextgroup=sdCapability,sdErr syn match sdCapability contained /\%(\%([A-Za-z_]\+,\=\)*\|all\)\%(=[eip]*\|[+-][eip]\+\)\s*/ contains=@sdCap nextgroup=sdCapability,sdErr
"}}} "}}}
syn match sdDevAllow contained /\/\S\+\s\+/ nextgroup=sdDevAllowPerm
syn match sdDevAllowPerm contained /\S\+/ contains=sdDevAllowErr nextgroup=sdErr
syn match sdDevAllowErr contained /[^rwm]\+/
syn keyword sdStdin contained nextgroup=sdErr null tty-force tty-fail socket tty syn keyword sdStdin contained nextgroup=sdErr null tty-force tty-fail socket tty
syn match sdStdout contained nextgroup=sdErr /\%(syslog\|kmsg\|journal\)\%(+console\)\=/ syn match sdStdout contained nextgroup=sdErr /\%(syslog\|kmsg\|journal\)\%(+console\)\=/
syn keyword sdStdout contained nextgroup=sdErr inherit null tty socket syn keyword sdStdout contained nextgroup=sdErr inherit null tty socket
@@ -142,22 +146,46 @@ syn keyword sdMountFlags contained nextgroup=sdErr shared slave private
syn match sdRlimit contained nextgroup=sdErr /\<\%(\d\+\|infinity\)\>/ syn match sdRlimit contained nextgroup=sdErr /\<\%(\d\+\|infinity\)\>/
syn keyword sdSecureBits contained nextgroup=sdErr keep-caps keep-caps-locked noroot noroot-locked no-setuid-fixup no-setuid-fixup-locked syn keyword sdSecureBits contained nextgroup=sdErr keep-caps keep-caps-locked noroot noroot-locked no-setuid-fixup no-setuid-fixup-locked
" These are also shared by [Service|Socket|Mount|Swap], although they're not " TODO: which section does this come from?
" listed in systemd.exec(5)
syn match sdExecKey contained /^TimeoutSec=/ nextgroup=sdDuration,sdErr syn match sdExecKey contained /^TimeoutSec=/ nextgroup=sdDuration,sdErr
syn match sdExecKey contained /^KillSignal=/ nextgroup=sdSignal,sdOtherSignal,sdErr
syn match sdExecKey contained /^SendSIGKill=/ nextgroup=sdBool,sdErr " Process killing options for [Service|Socket|Mount|Swap|Scope] {{{1
syn match sdExecKey contained /^KillMode=/ nextgroup=sdKillMode,sdErr " see systemd.kill(5)
syn match sdKillKey contained /^KillSignal=/ nextgroup=sdSignal,sdOtherSignal,sdErr
syn match sdKillKey contained /^KillMode=/ nextgroup=sdKillMode,sdErr
syn match sdKillKey contained /^\%(SendSIGKILL\|SendSIGHUP\)=/ nextgroup=sdBool,sdErr
syn keyword sdSignal contained nextgroup=sdErr SIGHUP SIGINT SIGQUIT SIGKILL SIGTERM SIGUSR1 SIGUSR2 syn keyword sdSignal contained nextgroup=sdErr SIGHUP SIGINT SIGQUIT SIGKILL SIGTERM SIGUSR1 SIGUSR2
syn match sdOtherSignal contained nextgroup=sdErr /\<\%(\d\+\|SIG[A-Z]\{2,6}\)\>/ syn match sdOtherSignal contained nextgroup=sdErr /\<\%(\d\+\|SIG[A-Z]\{2,6}\)\>/
syn match sdKillMode contained nextgroup=sdErr /\%(control-group\|process\|none\)/ syn match sdKillMode contained nextgroup=sdErr /\%(control-group\|process\|none\)/
" Resource Control options for [Service|Socket|Mount|Swap|Slice|Scope] {{{1
" see systemd.resource-control(5)
syn match sdResCtlKey contained /^Slice=/ nextgroup=sdSliceName,sdErr
syn match sdResCtlKey contained /^\%(CPUAccounting\|MemoryAccounting\|IOAccounting\|BlockIOAccounting\|TasksAccounting\|Delegate\)=/ nextgroup=sdBool,sdErr
syn match sdResCtlKey contained /^\%(CPUQuota\)=/ nextgroup=sdPercent,sdErr
syn match sdResCtlKey contained /^\%(CPUShares\|StartupCPUShares\)=/ nextgroup=sdUInt,sdErr
syn match sdResCtlKey contained /^MemoryLow=/ nextgroup=sdDatasize,sdPercent,sdErr
syn match sdResCtlKey contained /^\%(MemoryLimit\|MemoryHigh\|MemoryMax\)=/ nextgroup=sdDatasize,sdPercent,sdInfinity,sdErr
syn match sdResCtlKey contained /^TasksMax=/ nextgroup=sdUInt,sdInfinity,sdErr
syn match sdResCtlKey contained /^\%(IOWeight\|StartupIOWeight\|BlockIOWeight\|StartupBlockIOWeight\)=/ nextgroup=sdUInt,sdErr
syn match sdResCtlKey contained /^DeviceAllow=/ nextgroup=sdDevAllow,sdErr
syn match sdResCtlKey contained /^DevicePolicy=/ nextgroup=sdDevPolicy,sdErr
syn match sdSliceName contained /\S\+\.slice\_s/ contains=sdUnitName
syn keyword sdInfinity contained infinity
syn match sdDevAllow contained /\%(\/dev\/\|char-\|block-\)\S\+\s\+/ nextgroup=sdDevAllowPerm
syn match sdDevAllowPerm contained /\S\+/ contains=sdDevAllowErr nextgroup=sdErr
syn match sdDevAllowErr contained /[^rwm]\+/
syn keyword sdDevPolicy contained strict closed auto
" [Service] {{{1 " [Service] {{{1
syn region sdServiceBlock matchgroup=sdHeader start=/^\[Service\]/ end=/^\[/me=e-2 contains=sdServiceKey,sdExecKey syn region sdServiceBlock matchgroup=sdHeader start=/^\[Service\]/ end=/^\[/me=e-2 contains=sdServiceKey,sdExecKey,sdKillKey,sdResCtlKey
syn match sdServiceKey contained /^BusName=/ syn match sdServiceKey contained /^BusName=/
syn match sdServiceKey contained /^\%(RemainAfterExit\|GuessMainPID\|PermissionsStartOnly\|RootDirectoryStartOnly\|NonBlocking\|ControlGroupModify\)=/ nextgroup=sdBool,sdErr syn match sdServiceKey contained /^\%(RemainAfterExit\|GuessMainPID\|PermissionsStartOnly\|RootDirectoryStartOnly\|NonBlocking\|ControlGroupModify\)=/ nextgroup=sdBool,sdErr
syn match sdServiceKey contained /^\%(SysVStartPriority\|FsckPassNo\)=/ nextgroup=sdUInt,sdErr syn match sdServiceKey contained /^\%(SysVStartPriority\|FsckPassNo\)=/ nextgroup=sdUInt,sdErr
syn match sdServiceKey contained /^\%(Restart\|Timeout\)Sec=/ nextgroup=sdDuration,sdErr syn match sdServiceKey contained /^\%(Restart\|Timeout\|TimeoutStart\|TimeoutStop\|Watchdog\|RuntimeMax\)Sec=/ nextgroup=sdDuration,sdErr
syn match sdServiceKey contained /^Sockets=/ nextgroup=sdUnitList syn match sdServiceKey contained /^Sockets=/ nextgroup=sdUnitList
syn match sdServiceKey contained /^PIDFile=/ nextgroup=sdFilename,sdErr syn match sdServiceKey contained /^PIDFile=/ nextgroup=sdFilename,sdErr
syn match sdServiceKey contained /^Type=/ nextgroup=sdServiceType,sdErr syn match sdServiceKey contained /^Type=/ nextgroup=sdServiceType,sdErr
@@ -168,12 +196,12 @@ syn keyword sdRestartType contained nextgroup=sdErr no on-success on-failure on-
syn keyword sdNotifyType contained nextgroup=sdErr none main all syn keyword sdNotifyType contained nextgroup=sdErr none main all
" [Socket] {{{1 " [Socket] {{{1
syn region sdSocketBlock matchgroup=sdHeader start=/^\[Socket\]/ end=/^\[/me=e-2 contains=sdSocketKey,sdExecKey syn region sdSocketBlock matchgroup=sdHeader start=/^\[Socket\]/ end=/^\[/me=e-2 contains=sdSocketKey,sdExecKey,sdKillKey,sdResCtlKey
syn match sdSocketKey contained /^Listen\%(Stream\|Datagram\|SequentialPacket\|FIFO\|Special\|Netlink\|MessageQueue\)=/ syn match sdSocketKey contained /^Listen\%(Stream\|Datagram\|SequentialPacket\|FIFO\|Special\|Netlink\|MessageQueue\)=/
syn match sdSocketKey contained /^Listen\%(FIFO\|Special\)=/ nextgroup=sdFilename,sdErr syn match sdSocketKey contained /^Listen\%(FIFO\|Special\)=/ nextgroup=sdFilename,sdErr
syn match sdSocketKey contained /^\%(Socket\|Directory\)Mode=/ nextgroup=sdOctal,sdErr syn match sdSocketKey contained /^\%(Socket\|Directory\)Mode=/ nextgroup=sdOctal,sdErr
syn match sdSocketKey contained /^\%(Backlog\|MaxConnections\|Priority\|ReceiveBuffer\|SendBuffer\|IPTTL\|Mark\|PipeSize\|MessageQueueMaxMessages\|MessageQueueMessageSize\)=/ nextgroup=sdUInt,sdErr syn match sdSocketKey contained /^\%(Backlog\|MaxConnections\|Priority\|ReceiveBuffer\|SendBuffer\|IPTTL\|Mark\|PipeSize\|MessageQueueMaxMessages\|MessageQueueMessageSize\)=/ nextgroup=sdUInt,sdErr
syn match sdSocketKey contained /^\%(Accept\|KeepAlive\|FreeBind\|Transparent\|Broadcast\)=/ nextgroup=sdBool,sdErr syn match sdSocketKey contained /^\%(Accept\|KeepAlive\|FreeBind\|Transparent\|Broadcast\|Writable\|NoDelay\)=/ nextgroup=sdBool,sdErr
syn match sdSocketKey contained /^BindToDevice=/ syn match sdSocketKey contained /^BindToDevice=/
syn match sdSocketKey contained /^Service=/ nextgroup=sdUnitList syn match sdSocketKey contained /^Service=/ nextgroup=sdUnitList
syn match sdSocketKey contained /^BindIPv6Only=/ nextgroup=sdBindIPv6,sdErr syn match sdSocketKey contained /^BindIPv6Only=/ nextgroup=sdBindIPv6,sdErr
@@ -183,11 +211,14 @@ syn keyword sdBindIPv6 contained nextgroup=sdErr default both ipv6-only
syn keyword sdIPTOS contained nextgroup=sdErr low-delay throughput reliability low-cost syn keyword sdIPTOS contained nextgroup=sdErr low-delay throughput reliability low-cost
syn keyword sdTCPCongest contained nextgroup=sdErr westwood veno cubic lp syn keyword sdTCPCongest contained nextgroup=sdErr westwood veno cubic lp
" [Timer|Automount|Mount|Swap|Path] {{{1 " [Timer|Automount|Mount|Swap|Path|Slice|Scope] {{{1
" [Timer] " [Timer]
syn region sdTimerBlock matchgroup=sdHeader start=/^\[Timer\]/ end=/^\[/me=e-2 contains=sdTimerKey syn region sdTimerBlock matchgroup=sdHeader start=/^\[Timer\]/ end=/^\[/me=e-2 contains=sdTimerKey
syn match sdTimerKey contained /^On\%(Active\|Boot\|Startup\|UnitActive\|UnitInactive\)Sec=/ nextgroup=sdDuration,sdErr syn match sdTimerKey contained /^On\%(Active\|Boot\|Startup\|UnitActive\|UnitInactive\)Sec=/ nextgroup=sdDuration,sdErr
syn match sdTimerKey contained /^\%(Accuracy\|RandomizedDelay\)Sec=/ nextgroup=sdDuration,sdErr
syn match sdTimerKey contained /^\%(Persistent\|WakeSystem\|RemainAfterElapse\)=/ nextgroup=sdBool,sdErr
syn match sdTimerKey contained /^Unit=/ nextgroup=sdUnitList syn match sdTimerKey contained /^Unit=/ nextgroup=sdUnitList
" TODO: sdCalendar
" [Automount] " [Automount]
syn region sdAutoMountBlock matchgroup=sdHeader start=/^\[Automount\]/ end=/^\[/me=e-2 contains=sdAutomountKey syn region sdAutoMountBlock matchgroup=sdHeader start=/^\[Automount\]/ end=/^\[/me=e-2 contains=sdAutomountKey
@@ -195,21 +226,31 @@ syn match sdAutomountKey contained /^Where=/ nextgroup=sdFilename,sdErr
syn match sdAutomountKey contained /^DirectoryMode=/ nextgroup=sdOctal,sdErr syn match sdAutomountKey contained /^DirectoryMode=/ nextgroup=sdOctal,sdErr
" [Mount] " [Mount]
syn region sdMountBlock matchgroup=sdHeader start=/^\[Mount\]/ end=/^\[/me=e-2 contains=sdMountKey,sdAutomountKey,sdExecKey syn region sdMountBlock matchgroup=sdHeader start=/^\[Mount\]/ end=/^\[/me=e-2 contains=sdMountKey,sdAutomountKey,sdExecKey,sdKillKey,sdResCtlKey
syn match sdMountKey contained /^SloppyOptions=/ nextgroup=sdBool,sdErr
syn match sdMountKey contained /^\%(What\|Type\|Options\)=/ syn match sdMountKey contained /^\%(What\|Type\|Options\)=/
" [Swap] " [Swap]
syn region sdSwapBlock matchgroup=sdHeader start=/^\[Swap\]/ end=/^\[/me=e-2 contains=sdSwapKey,sdExecKey syn region sdSwapBlock matchgroup=sdHeader start=/^\[Swap\]/ end=/^\[/me=e-2 contains=sdSwapKey,sdExecKey,sdKillKey,sdResCtlKey
syn match sdSwapKey contained /^What=/ nextgroup=sdFilename,sdErr syn match sdSwapKey contained /^What=/ nextgroup=sdFilename,sdErr
syn match sdSwapKey contained /^Priority=/ nextgroup=sdUInt,sdErr syn match sdSwapKey contained /^Priority=/ nextgroup=sdUInt,sdErr
syn match sdSwapKey contained /^Options=/
" [Path] " [Path]
syn region sdPathBlock matchgroup=sdHeader start=/^\[Path\]/ end=/^\[/me=e-2 contains=sdPathKey syn region sdPathBlock matchgroup=sdHeader start=/^\[Path\]/ end=/^\[/me=e-2 contains=sdPathKey
syn match sdPathKey contained /^\%(PathExists\|PathExistsGlob\|PathChanged\|DirectoryNotEmpty\)=/ nextgroup=sdFilename,sdErr syn match sdPathKey contained /^\%(PathExists\|PathExistsGlob\|PathChanged\|PathModified\|DirectoryNotEmpty\)=/ nextgroup=sdFilename,sdErr
syn match sdPathKey contained /^MakeDirectory=/ nextgroup=sdBool,sdErr syn match sdPathKey contained /^MakeDirectory=/ nextgroup=sdBool,sdErr
syn match sdPathKey contained /^DirectoryMode=/ nextgroup=sdOctal,sdErr syn match sdPathKey contained /^DirectoryMode=/ nextgroup=sdOctal,sdErr
syn match sdPathKey contained /^Unit=/ nextgroup=sdUnitList syn match sdPathKey contained /^Unit=/ nextgroup=sdUnitList
" [Slice]
syn region sdSliceBlock matchgroup=sdHeader start=/^\[Slice\]/ end=/^\[/me=e-2 contains=sdSliceKey,sdResCtlKey,sdKillKey
" [Scope]
syn region sdScopeBlock matchgroup=sdHeader start=/^\[Scope\]/ end=/^\[/me=e-2 contains=sdScopeKey,sdResCtlKey,sdKillKey
syn match sdScopeKey contained /^TimeoutStopSec=/ nextgroup=sdDuration,sdErr
" Coloring definitions {{{1 " Coloring definitions {{{1
hi def link sdComment Comment hi def link sdComment Comment
hi def link sdTodo Todo hi def link sdTodo Todo
@@ -231,6 +272,8 @@ hi def link sdSymbol Special
hi def link sdUnitKey sdKey hi def link sdUnitKey sdKey
hi def link sdInstallKey sdKey hi def link sdInstallKey sdKey
hi def link sdExecKey sdKey hi def link sdExecKey sdKey
hi def link sdKillKey sdKey
hi def link sdResCtlKey sdKey
hi def link sdSocketKey sdKey hi def link sdSocketKey sdKey
hi def link sdServiceKey sdKey hi def link sdServiceKey sdKey
hi def link sdServiceCommonKey sdKey hi def link sdServiceCommonKey sdKey
@@ -239,6 +282,7 @@ hi def link sdMountKey sdKey
hi def link sdAutomountKey sdKey hi def link sdAutomountKey sdKey
hi def link sdSwapKey sdKey hi def link sdSwapKey sdKey
hi def link sdPathKey sdKey hi def link sdPathKey sdKey
hi def link sdScopeKey sdKey
" Coloring links: constant values {{{1 " Coloring links: constant values {{{1
hi def link sdInt sdValue hi def link sdInt sdValue
@@ -246,6 +290,9 @@ hi def link sdUInt sdValue
hi def link sdBool sdValue hi def link sdBool sdValue
hi def link sdOctal sdValue hi def link sdOctal sdValue
hi def link sdDuration sdValue hi def link sdDuration sdValue
hi def link sdPercent sdValue
hi def link sdInfinity sdValue
hi def link sdDatasize sdValue
hi def link sdVirtType sdValue hi def link sdVirtType sdValue
hi def link sdServiceType sdValue hi def link sdServiceType sdValue
hi def link sdNotifyType sdValue hi def link sdNotifyType sdValue
@@ -254,6 +301,7 @@ hi def link sdSecureBits sdValue
hi def link sdMountFlags sdValue hi def link sdMountFlags sdValue
hi def link sdKillMode sdValue hi def link sdKillMode sdValue
hi def link sdFailJobMode sdValue hi def link sdFailJobMode sdValue
hi def link sdLimitAction sdValue
hi def link sdRestartType sdValue hi def link sdRestartType sdValue
hi def link sdSignal sdValue hi def link sdSignal sdValue
hi def link sdStdin sdValue hi def link sdStdin sdValue
@@ -264,6 +312,7 @@ hi def link sdIOSched sdValue
hi def link sdCPUSched sdValue hi def link sdCPUSched sdValue
hi def link sdRlimit sdValue hi def link sdRlimit sdValue
hi def link sdCapName sdValue hi def link sdCapName sdValue
hi def link sdDevPolicy sdValue
hi def link sdDevAllowPerm sdValue hi def link sdDevAllowPerm sdValue
hi def link sdDevAllowErr Error hi def link sdDevAllowErr Error

View File

@@ -9,16 +9,33 @@ endif
syn case match syn case match
syn keyword terraSection connection output provider variable data terraform syn keyword terraSection connection output provider variable data terraform locals
syn keyword terraValueBool true false on off yes no syn keyword terraValueBool true false on off yes no
""" data """ data
syn keyword terraDataTypeBI syn keyword terraDataTypeBI
\ alicloud_dns_domain_groups
\ alicloud_dns_domain_records
\ alicloud_dns_domains
\ alicloud_dns_groups
\ alicloud_dns_records
\ alicloud_eips
\ alicloud_images \ alicloud_images
\ alicloud_instance_types \ alicloud_instance_types
\ alicloud_instances
\ alicloud_key_pairs \ alicloud_key_pairs
\ alicloud_kms_keys
\ alicloud_ram_account_alias
\ alicloud_ram_account_aliases
\ alicloud_ram_groups
\ alicloud_ram_policies
\ alicloud_ram_roles
\ alicloud_ram_users
\ alicloud_regions \ alicloud_regions
\ alicloud_security_group_rules
\ alicloud_security_groups
\ alicloud_vpcs \ alicloud_vpcs
\ alicloud_vswitches
\ alicloud_zones \ alicloud_zones
\ archive_file \ archive_file
\ atlas_artifact \ atlas_artifact
@@ -28,6 +45,7 @@ syn keyword terraDataTypeBI
\ aws_alb_target_group \ aws_alb_target_group
\ aws_ami \ aws_ami
\ aws_ami_ids \ aws_ami_ids
\ aws_api_gateway_rest_api
\ aws_autoscaling_groups \ aws_autoscaling_groups
\ aws_availability_zone \ aws_availability_zone
\ aws_availability_zones \ aws_availability_zones
@@ -36,6 +54,7 @@ syn keyword terraDataTypeBI
\ aws_canonical_user_id \ aws_canonical_user_id
\ aws_cloudformation_stack \ aws_cloudformation_stack
\ aws_cloudtrail_service_account \ aws_cloudtrail_service_account
\ aws_cloudwatch_log_group
\ aws_db_instance \ aws_db_instance
\ aws_db_snapshot \ aws_db_snapshot
\ aws_dynamodb_table \ aws_dynamodb_table
@@ -49,18 +68,22 @@ syn keyword terraDataTypeBI
\ aws_efs_file_system \ aws_efs_file_system
\ aws_efs_mount_target \ aws_efs_mount_target
\ aws_eip \ aws_eip
\ aws_elastic_beanstalk_hosted_zone
\ aws_elastic_beanstalk_solution_stack \ aws_elastic_beanstalk_solution_stack
\ aws_elasticache_cluster \ aws_elasticache_cluster
\ aws_elasticache_replication_group \ aws_elasticache_replication_group
\ aws_elb
\ aws_elb_hosted_zone_id \ aws_elb_hosted_zone_id
\ aws_elb_service_account \ aws_elb_service_account
\ aws_iam_account_alias \ aws_iam_account_alias
\ aws_iam_group \ aws_iam_group
\ aws_iam_instance_profile \ aws_iam_instance_profile
\ aws_iam_policy
\ aws_iam_policy_document \ aws_iam_policy_document
\ aws_iam_role \ aws_iam_role
\ aws_iam_server_certificate \ aws_iam_server_certificate
\ aws_iam_user \ aws_iam_user
\ aws_inspector_rules_packages
\ aws_instance \ aws_instance
\ aws_instances \ aws_instances
\ aws_internet_gateway \ aws_internet_gateway
@@ -68,11 +91,13 @@ syn keyword terraDataTypeBI
\ aws_kinesis_stream \ aws_kinesis_stream
\ aws_kms_alias \ aws_kms_alias
\ aws_kms_ciphertext \ aws_kms_ciphertext
\ aws_kms_key
\ aws_kms_secret \ aws_kms_secret
\ aws_lb \ aws_lb
\ aws_lb_listener \ aws_lb_listener
\ aws_lb_target_group \ aws_lb_target_group
\ aws_nat_gateway \ aws_nat_gateway
\ aws_network_interface
\ aws_partition \ aws_partition
\ aws_prefix_list \ aws_prefix_list
\ aws_rds_cluster \ aws_rds_cluster
@@ -84,6 +109,7 @@ syn keyword terraDataTypeBI
\ aws_s3_bucket_object \ aws_s3_bucket_object
\ aws_security_group \ aws_security_group
\ aws_sns_topic \ aws_sns_topic
\ aws_sqs_queue
\ aws_ssm_parameter \ aws_ssm_parameter
\ aws_subnet \ aws_subnet
\ aws_subnet_ids \ aws_subnet_ids
@@ -92,76 +118,139 @@ syn keyword terraDataTypeBI
\ aws_vpc_endpoint_service \ aws_vpc_endpoint_service
\ aws_vpc_peering_connection \ aws_vpc_peering_connection
\ aws_vpn_gateway \ aws_vpn_gateway
\ azurerm_app_service
\ azurerm_app_service_plan
\ azurerm_application_security_group
\ azurerm_builtin_role_definition \ azurerm_builtin_role_definition
\ azurerm_cdn_profile
\ azurerm_client_config \ azurerm_client_config
\ azurerm_dns_zone
\ azurerm_eventhub_namespace
\ azurerm_image \ azurerm_image
\ azurerm_key_vault_access_policy \ azurerm_key_vault_access_policy
\ azurerm_managed_disk \ azurerm_managed_disk
\ azurerm_network_interface
\ azurerm_network_security_group
\ azurerm_platform_image \ azurerm_platform_image
\ azurerm_public_ip \ azurerm_public_ip
\ azurerm_public_ips
\ azurerm_resource_group \ azurerm_resource_group
\ azurerm_role_definition \ azurerm_role_definition
\ azurerm_scheduler_job_collection
\ azurerm_snapshot \ azurerm_snapshot
\ azurerm_storage_account
\ azurerm_subnet \ azurerm_subnet
\ azurerm_subscription \ azurerm_subscription
\ azurerm_subscriptions
\ azurerm_traffic_manager_geographical_location
\ azurerm_virtual_network
\ azurerm_virtual_network_gateway
\ circonus_account \ circonus_account
\ circonus_collector \ circonus_collector
\ cloudflare_ip_ranges
\ cloudstack_template \ cloudstack_template
\ consul_agent_self \ consul_agent_self
\ consul_catalog_nodes \ consul_catalog_nodes
\ consul_catalog_service \ consul_catalog_service
\ consul_catalog_services \ consul_catalog_services
\ consul_key_prefix
\ consul_keys \ consul_keys
\ digitalocean_image \ digitalocean_image
\ dns_a_record_set \ dns_a_record_set
\ dns_aaaa_record_set \ dns_aaaa_record_set
\ dns_cname_record_set \ dns_cname_record_set
\ dns_ns_record_set \ dns_ns_record_set
\ dns_ptr_record_set
\ dns_txt_record_set \ dns_txt_record_set
\ docker_registry_image \ docker_registry_image
\ external \ external
\ fastly_ip_ranges \ fastly_ip_ranges
\ github_ip_ranges
\ github_team \ github_team
\ github_user \ github_user
\ google_active_folder \ google_active_folder
\ google_billing_account
\ google_client_config \ google_client_config
\ google_cloudfunctions_function
\ google_compute_address \ google_compute_address
\ google_compute_backend_service
\ google_compute_default_service_account
\ google_compute_forwarding_rule
\ google_compute_global_address \ google_compute_global_address
\ google_compute_image
\ google_compute_instance_group \ google_compute_instance_group
\ google_compute_lb_ip_ranges \ google_compute_lb_ip_ranges
\ google_compute_network \ google_compute_network
\ google_compute_region_instance_group
\ google_compute_ssl_policy
\ google_compute_subnetwork \ google_compute_subnetwork
\ google_compute_vpn_gateway
\ google_compute_zones \ google_compute_zones
\ google_container_cluster
\ google_container_engine_versions \ google_container_engine_versions
\ google_container_registry_image
\ google_container_registry_repository
\ google_dns_managed_zone \ google_dns_managed_zone
\ google_folder
\ google_iam_policy \ google_iam_policy
\ google_kms_secret
\ google_organization
\ google_project
\ google_storage_object_signed_url \ google_storage_object_signed_url
\ google_storage_project_service_account
\ heroku_app
\ heroku_space
\ http \ http
\ kubernetes_service \ kubernetes_service
\ kubernetes_storage_class \ kubernetes_storage_class
\ local_file
\ logicmonitor_collectors \ logicmonitor_collectors
\ logicmonitor_device_group \ logicmonitor_device_group
\ newrelic_application \ newrelic_application
\ newrelic_key_transaction
\ nomad_regions
\ ns1_datasource \ ns1_datasource
\ nsxt_edge_cluster
\ nsxt_logical_tier0_router
\ nsxt_ns_service
\ nsxt_switching_profile
\ nsxt_transport_zone
\ null_data_source \ null_data_source
\ oneandone_instance_size \ oneandone_instance_size
\ opc_compute_image_list_entry \ opc_compute_image_list_entry
\ opc_compute_machine_image
\ opc_compute_network_interface \ opc_compute_network_interface
\ opc_compute_storage_volume_snapshot \ opc_compute_storage_volume_snapshot
\ opc_compute_vnic \ opc_compute_vnic
\ openstack_compute_flavor_v2
\ openstack_dns_zone_v2 \ openstack_dns_zone_v2
\ openstack_identity_project_v3
\ openstack_identity_role_v3
\ openstack_identity_user_v3
\ openstack_images_image_v2 \ openstack_images_image_v2
\ openstack_networking_network_v2 \ openstack_networking_network_v2
\ openstack_networking_secgroup_v2 \ openstack_networking_secgroup_v2
\ openstack_networking_subnet_v2 \ openstack_networking_subnet_v2
\ openstack_networking_subnetpool_v2
\ opentelekomcloud_images_image_v2
\ opentelekomcloud_kms_data_key_v1
\ opentelekomcloud_kms_key_v1
\ opentelekomcloud_networking_network_v2
\ opentelekomcloud_networking_secgroup_v2
\ opentelekomcloud_rds_flavors_v1
\ opentelekomcloud_s3_bucket_object
\ opsgenie_user \ opsgenie_user
\ oraclepaas_database_service_instance
\ ovh_publiccloud_region \ ovh_publiccloud_region
\ ovh_publiccloud_regions \ ovh_publiccloud_regions
\ packet_precreated_ip_block \ packet_precreated_ip_block
\ pagerduty_escalation_policy \ pagerduty_escalation_policy
\ pagerduty_extension_schema
\ pagerduty_schedule \ pagerduty_schedule
\ pagerduty_team
\ pagerduty_user \ pagerduty_user
\ pagerduty_vendor \ pagerduty_vendor
\ panos_system_info
\ profitbricks_datacenter \ profitbricks_datacenter
\ profitbricks_image \ profitbricks_image
\ profitbricks_location \ profitbricks_location
@@ -175,24 +264,50 @@ syn keyword terraDataTypeBI
\ template_cloudinit_config \ template_cloudinit_config
\ template_file \ template_file
\ terraform_remote_state \ terraform_remote_state
\ tls_public_key
\ triton_account
\ triton_datacenter
\ triton_fabric_network
\ triton_fabric_vlan
\ triton_image \ triton_image
\ triton_network \ triton_network
\ triton_package
\ vsphere_custom_attribute
\ vsphere_datacenter \ vsphere_datacenter
\ vsphere_datastore
\ vsphere_datastore_cluster
\ vsphere_distributed_virtual_switch \ vsphere_distributed_virtual_switch
\ vsphere_host \ vsphere_host
\ vsphere_network \ vsphere_network
\ vsphere_resource_pool
\ vsphere_tag \ vsphere_tag
\ vsphere_tag_category \ vsphere_tag_category
\ vsphere_virtual_machine
\ vsphere_vmfs_disks \ vsphere_vmfs_disks
""" end data sources """ end data sources
""" resource """ resource
syn keyword terraResourceTypeBI syn keyword terraResourceTypeBI
\ alicloud_cdn_domain
\ alicloud_cms_alarm
\ alicloud_container_cluster
\ alicloud_cs_application
\ alicloud_cs_kubernetes
\ alicloud_cs_swarm
\ alicloud_db_account
\ alicloud_db_account_privilege
\ alicloud_db_backup_policy
\ alicloud_db_connection
\ alicloud_db_database
\ alicloud_db_instance \ alicloud_db_instance
\ alicloud_disk \ alicloud_disk
\ alicloud_disk_attachment \ alicloud_disk_attachment
\ alicloud_dns
\ alicloud_dns_group
\ alicloud_dns_record
\ alicloud_eip \ alicloud_eip
\ alicloud_eip_association \ alicloud_eip_association
\ alicloud_ess_attachment
\ alicloud_ess_scaling_configuration \ alicloud_ess_scaling_configuration
\ alicloud_ess_scaling_group \ alicloud_ess_scaling_group
\ alicloud_ess_scaling_rule \ alicloud_ess_scaling_rule
@@ -201,23 +316,43 @@ syn keyword terraResourceTypeBI
\ alicloud_instance \ alicloud_instance
\ alicloud_key_pair \ alicloud_key_pair
\ alicloud_key_pair_attachment \ alicloud_key_pair_attachment
\ alicloud_kms_key
\ alicloud_nat_gateway \ alicloud_nat_gateway
\ alicloud_oss_bucket \ alicloud_oss_bucket
\ alicloud_oss_bucket_object \ alicloud_oss_bucket_object
\ alicloud_ram_access_key
\ alicloud_ram_account_alias
\ alicloud_ram_alias
\ alicloud_ram_group
\ alicloud_ram_group_membership
\ alicloud_ram_group_policy_attachment
\ alicloud_ram_login_profile
\ alicloud_ram_policy
\ alicloud_ram_role
\ alicloud_ram_role_attachment
\ alicloud_ram_role_policy_attachment
\ alicloud_ram_user
\ alicloud_ram_user_policy_attachment
\ alicloud_route_entry \ alicloud_route_entry
\ alicloud_router_interface \ alicloud_router_interface
\ alicloud_security_group \ alicloud_security_group
\ alicloud_security_group_rule \ alicloud_security_group_rule
\ alicloud_slb \ alicloud_slb
\ alicloud_slb_attachment \ alicloud_slb_attachment
\ alicloud_slb_listener
\ alicloud_slb_rule
\ alicloud_slb_server_group
\ alicloud_snat_entry \ alicloud_snat_entry
\ alicloud_subnet \ alicloud_subnet
\ alicloud_vpc \ alicloud_vpc
\ alicloud_vswitch \ alicloud_vswitch
\ arukas_container \ arukas_container
\ atlas_artifact \ atlas_artifact
\ aws_acm_certificate
\ aws_acm_certificate_validation
\ aws_alb \ aws_alb
\ aws_alb_listener \ aws_alb_listener
\ aws_alb_listener_certificate
\ aws_alb_listener_rule \ aws_alb_listener_rule
\ aws_alb_target_group \ aws_alb_target_group
\ aws_alb_target_group_attachment \ aws_alb_target_group_attachment
@@ -231,6 +366,8 @@ syn keyword terraResourceTypeBI
\ aws_api_gateway_base_path_mapping \ aws_api_gateway_base_path_mapping
\ aws_api_gateway_client_certificate \ aws_api_gateway_client_certificate
\ aws_api_gateway_deployment \ aws_api_gateway_deployment
\ aws_api_gateway_documentation_part
\ aws_api_gateway_documentation_version
\ aws_api_gateway_domain_name \ aws_api_gateway_domain_name
\ aws_api_gateway_gateway_response \ aws_api_gateway_gateway_response
\ aws_api_gateway_integration \ aws_api_gateway_integration
@@ -245,9 +382,13 @@ syn keyword terraResourceTypeBI
\ aws_api_gateway_stage \ aws_api_gateway_stage
\ aws_api_gateway_usage_plan \ aws_api_gateway_usage_plan
\ aws_api_gateway_usage_plan_key \ aws_api_gateway_usage_plan_key
\ aws_api_gateway_vpc_link
\ aws_app_cookie_stickiness_policy \ aws_app_cookie_stickiness_policy
\ aws_appautoscaling_policy \ aws_appautoscaling_policy
\ aws_appautoscaling_scheduled_action
\ aws_appautoscaling_target \ aws_appautoscaling_target
\ aws_appsync_datasource
\ aws_appsync_graphql_api
\ aws_athena_database \ aws_athena_database
\ aws_athena_named_query \ aws_athena_named_query
\ aws_autoscaling_attachment \ aws_autoscaling_attachment
@@ -259,17 +400,20 @@ syn keyword terraResourceTypeBI
\ aws_batch_compute_environment \ aws_batch_compute_environment
\ aws_batch_job_definition \ aws_batch_job_definition
\ aws_batch_job_queue \ aws_batch_job_queue
\ aws_cloud9_environment_ec2
\ aws_cloudformation_stack \ aws_cloudformation_stack
\ aws_cloudfront_distribution \ aws_cloudfront_distribution
\ aws_cloudfront_origin_access_identity \ aws_cloudfront_origin_access_identity
\ aws_cloudtrail \ aws_cloudtrail
\ aws_cloudwatch_dashboard \ aws_cloudwatch_dashboard
\ aws_cloudwatch_event_permission
\ aws_cloudwatch_event_rule \ aws_cloudwatch_event_rule
\ aws_cloudwatch_event_target \ aws_cloudwatch_event_target
\ aws_cloudwatch_log_destination \ aws_cloudwatch_log_destination
\ aws_cloudwatch_log_destination_policy \ aws_cloudwatch_log_destination_policy
\ aws_cloudwatch_log_group \ aws_cloudwatch_log_group
\ aws_cloudwatch_log_metric_filter \ aws_cloudwatch_log_metric_filter
\ aws_cloudwatch_log_resource_policy
\ aws_cloudwatch_log_stream \ aws_cloudwatch_log_stream
\ aws_cloudwatch_log_subscription_filter \ aws_cloudwatch_log_subscription_filter
\ aws_cloudwatch_metric_alarm \ aws_cloudwatch_metric_alarm
@@ -282,12 +426,16 @@ syn keyword terraResourceTypeBI
\ aws_codepipeline \ aws_codepipeline
\ aws_cognito_identity_pool \ aws_cognito_identity_pool
\ aws_cognito_identity_pool_roles_attachment \ aws_cognito_identity_pool_roles_attachment
\ aws_cognito_user_group
\ aws_cognito_user_pool \ aws_cognito_user_pool
\ aws_cognito_user_pool_client
\ aws_cognito_user_pool_domain
\ aws_config_config_rule \ aws_config_config_rule
\ aws_config_configuration_recorder \ aws_config_configuration_recorder
\ aws_config_configuration_recorder_status \ aws_config_configuration_recorder_status
\ aws_config_delivery_channel \ aws_config_delivery_channel
\ aws_customer_gateway \ aws_customer_gateway
\ aws_dax_cluster
\ aws_db_event_subscription \ aws_db_event_subscription
\ aws_db_instance \ aws_db_instance
\ aws_db_option_group \ aws_db_option_group
@@ -302,6 +450,7 @@ syn keyword terraResourceTypeBI
\ aws_default_vpc \ aws_default_vpc
\ aws_default_vpc_dhcp_options \ aws_default_vpc_dhcp_options
\ aws_devicefarm_project \ aws_devicefarm_project
\ aws_directory_service_conditional_forwarder
\ aws_directory_service_directory \ aws_directory_service_directory
\ aws_dms_certificate \ aws_dms_certificate
\ aws_dms_endpoint \ aws_dms_endpoint
@@ -309,8 +458,11 @@ syn keyword terraResourceTypeBI
\ aws_dms_replication_subnet_group \ aws_dms_replication_subnet_group
\ aws_dms_replication_task \ aws_dms_replication_task
\ aws_dx_connection \ aws_dx_connection
\ aws_dx_connection_association
\ aws_dx_lag \ aws_dx_lag
\ aws_dynamodb_global_table
\ aws_dynamodb_table \ aws_dynamodb_table
\ aws_dynamodb_table_item
\ aws_ebs_snapshot \ aws_ebs_snapshot
\ aws_ebs_volume \ aws_ebs_volume
\ aws_ecr_lifecycle_policy \ aws_ecr_lifecycle_policy
@@ -343,7 +495,17 @@ syn keyword terraResourceTypeBI
\ aws_emr_instance_group \ aws_emr_instance_group
\ aws_emr_security_configuration \ aws_emr_security_configuration
\ aws_flow_log \ aws_flow_log
\ aws_gamelift_alias
\ aws_gamelift_build
\ aws_gamelift_fleet
\ aws_glacier_vault \ aws_glacier_vault
\ aws_glue_catalog_database
\ aws_glue_connection
\ aws_glue_job
\ aws_guardduty_detector
\ aws_guardduty_ipset
\ aws_guardduty_member
\ aws_guardduty_threatintelset
\ aws_iam_access_key \ aws_iam_access_key
\ aws_iam_account_alias \ aws_iam_account_alias
\ aws_iam_account_password_policy \ aws_iam_account_password_policy
@@ -360,6 +522,7 @@ syn keyword terraResourceTypeBI
\ aws_iam_role_policy_attachment \ aws_iam_role_policy_attachment
\ aws_iam_saml_provider \ aws_iam_saml_provider
\ aws_iam_server_certificate \ aws_iam_server_certificate
\ aws_iam_service_linked_role
\ aws_iam_user \ aws_iam_user
\ aws_iam_user_login_profile \ aws_iam_user_login_profile
\ aws_iam_user_policy \ aws_iam_user_policy
@@ -372,19 +535,25 @@ syn keyword terraResourceTypeBI
\ aws_internet_gateway \ aws_internet_gateway
\ aws_iot_certificate \ aws_iot_certificate
\ aws_iot_policy \ aws_iot_policy
\ aws_iot_thing
\ aws_iot_thing_type
\ aws_iot_topic_rule
\ aws_key_pair \ aws_key_pair
\ aws_kinesis_firehose_delivery_stream \ aws_kinesis_firehose_delivery_stream
\ aws_kinesis_stream \ aws_kinesis_stream
\ aws_kms_alias \ aws_kms_alias
\ aws_kms_grant
\ aws_kms_key \ aws_kms_key
\ aws_lambda_alias \ aws_lambda_alias
\ aws_lambda_event_source_mapping \ aws_lambda_event_source_mapping
\ aws_lambda_function \ aws_lambda_function
\ aws_lambda_permission \ aws_lambda_permission
\ aws_launch_configuration \ aws_launch_configuration
\ aws_launch_template
\ aws_lb \ aws_lb
\ aws_lb_cookie_stickiness_policy \ aws_lb_cookie_stickiness_policy
\ aws_lb_listener \ aws_lb_listener
\ aws_lb_listener_certificate
\ aws_lb_listener_rule \ aws_lb_listener_rule
\ aws_lb_ssl_negotiation_policy \ aws_lb_ssl_negotiation_policy
\ aws_lb_target_group \ aws_lb_target_group
@@ -398,6 +567,9 @@ syn keyword terraResourceTypeBI
\ aws_load_balancer_listener_policy \ aws_load_balancer_listener_policy
\ aws_load_balancer_policy \ aws_load_balancer_policy
\ aws_main_route_table_association \ aws_main_route_table_association
\ aws_media_store_container
\ aws_mq_broker
\ aws_mq_configuration
\ aws_nat_gateway \ aws_nat_gateway
\ aws_network_acl \ aws_network_acl
\ aws_network_acl_rule \ aws_network_acl_rule
@@ -420,6 +592,8 @@ syn keyword terraResourceTypeBI
\ aws_opsworks_stack \ aws_opsworks_stack
\ aws_opsworks_static_web_layer \ aws_opsworks_static_web_layer
\ aws_opsworks_user_profile \ aws_opsworks_user_profile
\ aws_organizations_account
\ aws_organizations_organization
\ aws_placement_group \ aws_placement_group
\ aws_proxy_protocol_policy \ aws_proxy_protocol_policy
\ aws_rds_cluster \ aws_rds_cluster
@@ -432,23 +606,30 @@ syn keyword terraResourceTypeBI
\ aws_route \ aws_route
\ aws_route53_delegation_set \ aws_route53_delegation_set
\ aws_route53_health_check \ aws_route53_health_check
\ aws_route53_query_log
\ aws_route53_record \ aws_route53_record
\ aws_route53_zone \ aws_route53_zone
\ aws_route53_zone_association \ aws_route53_zone_association
\ aws_route_table \ aws_route_table
\ aws_route_table_association \ aws_route_table_association
\ aws_s3_bucket \ aws_s3_bucket
\ aws_s3_bucket_metric
\ aws_s3_bucket_notification \ aws_s3_bucket_notification
\ aws_s3_bucket_object \ aws_s3_bucket_object
\ aws_s3_bucket_policy \ aws_s3_bucket_policy
\ aws_security_group \ aws_security_group
\ aws_security_group_rule \ aws_security_group_rule
\ aws_service_discovery_private_dns_namespace
\ aws_service_discovery_public_dns_namespace
\ aws_service_discovery_service
\ aws_servicecatalog_portfolio \ aws_servicecatalog_portfolio
\ aws_ses_active_receipt_rule_set \ aws_ses_active_receipt_rule_set
\ aws_ses_configuration_set \ aws_ses_configuration_set
\ aws_ses_domain_dkim \ aws_ses_domain_dkim
\ aws_ses_domain_identity \ aws_ses_domain_identity
\ aws_ses_domain_mail_from
\ aws_ses_event_destination \ aws_ses_event_destination
\ aws_ses_identity_notification_topic
\ aws_ses_receipt_filter \ aws_ses_receipt_filter
\ aws_ses_receipt_rule \ aws_ses_receipt_rule
\ aws_ses_receipt_rule_set \ aws_ses_receipt_rule_set
@@ -457,6 +638,7 @@ syn keyword terraResourceTypeBI
\ aws_sfn_state_machine \ aws_sfn_state_machine
\ aws_simpledb_domain \ aws_simpledb_domain
\ aws_snapshot_create_volume_permission \ aws_snapshot_create_volume_permission
\ aws_sns_platform_application
\ aws_sns_topic \ aws_sns_topic
\ aws_sns_topic_policy \ aws_sns_topic_policy
\ aws_sns_topic_subscription \ aws_sns_topic_subscription
@@ -481,7 +663,11 @@ syn keyword terraResourceTypeBI
\ aws_vpc_dhcp_options \ aws_vpc_dhcp_options
\ aws_vpc_dhcp_options_association \ aws_vpc_dhcp_options_association
\ aws_vpc_endpoint \ aws_vpc_endpoint
\ aws_vpc_endpoint_connection_notification
\ aws_vpc_endpoint_route_table_association \ aws_vpc_endpoint_route_table_association
\ aws_vpc_endpoint_service
\ aws_vpc_endpoint_service_allowed_principal
\ aws_vpc_endpoint_subnet_association
\ aws_vpc_peering_connection \ aws_vpc_peering_connection
\ aws_vpc_peering_connection_accepter \ aws_vpc_peering_connection_accepter
\ aws_vpn_connection \ aws_vpn_connection
@@ -490,15 +676,30 @@ syn keyword terraResourceTypeBI
\ aws_vpn_gateway_attachment \ aws_vpn_gateway_attachment
\ aws_vpn_gateway_route_propagation \ aws_vpn_gateway_route_propagation
\ aws_waf_byte_match_set \ aws_waf_byte_match_set
\ aws_waf_geo_match_set
\ aws_waf_ipset \ aws_waf_ipset
\ aws_waf_rate_based_rule \ aws_waf_rate_based_rule
\ aws_waf_regex_match_set
\ aws_waf_regex_pattern_set
\ aws_waf_rule \ aws_waf_rule
\ aws_waf_rule_group
\ aws_waf_size_constraint_set \ aws_waf_size_constraint_set
\ aws_waf_sql_injection_match_set \ aws_waf_sql_injection_match_set
\ aws_waf_web_acl \ aws_waf_web_acl
\ aws_waf_xss_match_set \ aws_waf_xss_match_set
\ aws_wafregional_byte_match_set \ aws_wafregional_byte_match_set
\ aws_wafregional_geo_match_set
\ aws_wafregional_ipset \ aws_wafregional_ipset
\ aws_wafregional_rate_based_rule
\ aws_wafregional_regex_match_set
\ aws_wafregional_regex_pattern_set
\ aws_wafregional_rule
\ aws_wafregional_rule_group
\ aws_wafregional_size_constraint_set
\ aws_wafregional_sql_injection_match_set
\ aws_wafregional_web_acl
\ aws_wafregional_web_acl_association
\ aws_wafregional_xss_match_set
\ azure_affinity_group \ azure_affinity_group
\ azure_data_disk \ azure_data_disk
\ azure_dns_server \ azure_dns_server
@@ -516,9 +717,13 @@ syn keyword terraResourceTypeBI
\ azure_storage_service \ azure_storage_service
\ azure_virtual_network \ azure_virtual_network
\ azurerm_app_service \ azurerm_app_service
\ azurerm_app_service_active_slot
\ azurerm_app_service_custom_hostname_binding
\ azurerm_app_service_plan \ azurerm_app_service_plan
\ azurerm_app_service_slot
\ azurerm_application_gateway \ azurerm_application_gateway
\ azurerm_application_insights \ azurerm_application_insights
\ azurerm_application_security_group
\ azurerm_automation_account \ azurerm_automation_account
\ azurerm_automation_credential \ azurerm_automation_credential
\ azurerm_automation_runbook \ azurerm_automation_runbook
@@ -545,11 +750,16 @@ syn keyword terraResourceTypeBI
\ azurerm_eventhub_consumer_group \ azurerm_eventhub_consumer_group
\ azurerm_eventhub_namespace \ azurerm_eventhub_namespace
\ azurerm_express_route_circuit \ azurerm_express_route_circuit
\ azurerm_express_route_circuit_authorization
\ azurerm_express_route_circuit_peering
\ azurerm_function_app
\ azurerm_image \ azurerm_image
\ azurerm_iothub
\ azurerm_key_vault \ azurerm_key_vault
\ azurerm_key_vault_certificate \ azurerm_key_vault_certificate
\ azurerm_key_vault_key \ azurerm_key_vault_key
\ azurerm_key_vault_secret \ azurerm_key_vault_secret
\ azurerm_kubernetes_cluster
\ azurerm_lb \ azurerm_lb
\ azurerm_lb_backend_address_pool \ azurerm_lb_backend_address_pool
\ azurerm_lb_nat_pool \ azurerm_lb_nat_pool
@@ -557,8 +767,11 @@ syn keyword terraResourceTypeBI
\ azurerm_lb_probe \ azurerm_lb_probe
\ azurerm_lb_rule \ azurerm_lb_rule
\ azurerm_local_network_gateway \ azurerm_local_network_gateway
\ azurerm_log_analytics_solution
\ azurerm_log_analytics_workspace \ azurerm_log_analytics_workspace
\ azurerm_managed_disk \ azurerm_managed_disk
\ azurerm_management_lock
\ azurerm_metric_alertrule
\ azurerm_mysql_configuration \ azurerm_mysql_configuration
\ azurerm_mysql_database \ azurerm_mysql_database
\ azurerm_mysql_firewall_rule \ azurerm_mysql_firewall_rule
@@ -566,6 +779,10 @@ syn keyword terraResourceTypeBI
\ azurerm_network_interface \ azurerm_network_interface
\ azurerm_network_security_group \ azurerm_network_security_group
\ azurerm_network_security_rule \ azurerm_network_security_rule
\ azurerm_network_watcher
\ azurerm_packet_capture
\ azurerm_policy_assignment
\ azurerm_policy_definition
\ azurerm_postgresql_configuration \ azurerm_postgresql_configuration
\ azurerm_postgresql_database \ azurerm_postgresql_database
\ azurerm_postgresql_firewall_rule \ azurerm_postgresql_firewall_rule
@@ -578,16 +795,20 @@ syn keyword terraResourceTypeBI
\ azurerm_role_definition \ azurerm_role_definition
\ azurerm_route \ azurerm_route
\ azurerm_route_table \ azurerm_route_table
\ azurerm_scheduler_job_collection
\ azurerm_search_service \ azurerm_search_service
\ azurerm_servicebus_namespace \ azurerm_servicebus_namespace
\ azurerm_servicebus_queue \ azurerm_servicebus_queue
\ azurerm_servicebus_subscription \ azurerm_servicebus_subscription
\ azurerm_servicebus_topic \ azurerm_servicebus_topic
\ azurerm_servicebus_topic_authorization_rule
\ azurerm_snapshot \ azurerm_snapshot
\ azurerm_sql_active_directory_administrator
\ azurerm_sql_database \ azurerm_sql_database
\ azurerm_sql_elasticpool \ azurerm_sql_elasticpool
\ azurerm_sql_firewall_rule \ azurerm_sql_firewall_rule
\ azurerm_sql_server \ azurerm_sql_server
\ azurerm_sql_virtual_network_rule
\ azurerm_storage_account \ azurerm_storage_account
\ azurerm_storage_blob \ azurerm_storage_blob
\ azurerm_storage_container \ azurerm_storage_container
@@ -602,6 +823,8 @@ syn keyword terraResourceTypeBI
\ azurerm_virtual_machine_extension \ azurerm_virtual_machine_extension
\ azurerm_virtual_machine_scale_set \ azurerm_virtual_machine_scale_set
\ azurerm_virtual_network \ azurerm_virtual_network
\ azurerm_virtual_network_gateway
\ azurerm_virtual_network_gateway_connection
\ azurerm_virtual_network_peering \ azurerm_virtual_network_peering
\ bitbucket_default_reviewers \ bitbucket_default_reviewers
\ bitbucket_hook \ bitbucket_hook
@@ -625,7 +848,13 @@ syn keyword terraResourceTypeBI
\ clc_load_balancer_pool \ clc_load_balancer_pool
\ clc_public_ip \ clc_public_ip
\ clc_server \ clc_server
\ cloudflare_load_balancer
\ cloudflare_load_balancer_monitor
\ cloudflare_load_balancer_pool
\ cloudflare_page_rule
\ cloudflare_rate_limit
\ cloudflare_record \ cloudflare_record
\ cloudflare_zone_settings_override
\ cloudscale_floating_ip \ cloudscale_floating_ip
\ cloudscale_server \ cloudscale_server
\ cloudstack_affinity_group \ cloudstack_affinity_group
@@ -714,6 +943,8 @@ syn keyword terraResourceTypeBI
\ google_bigquery_table \ google_bigquery_table
\ google_bigtable_instance \ google_bigtable_instance
\ google_bigtable_table \ google_bigtable_table
\ google_cloudfunctions_function
\ google_cloudiot_registry
\ google_compute_address \ google_compute_address
\ google_compute_autoscaler \ google_compute_autoscaler
\ google_compute_backend_bucket \ google_compute_backend_bucket
@@ -742,10 +973,12 @@ syn keyword terraResourceTypeBI
\ google_compute_router \ google_compute_router
\ google_compute_router_interface \ google_compute_router_interface
\ google_compute_router_peer \ google_compute_router_peer
\ google_compute_security_policy
\ google_compute_shared_vpc_host_project \ google_compute_shared_vpc_host_project
\ google_compute_shared_vpc_service_project \ google_compute_shared_vpc_service_project
\ google_compute_snapshot \ google_compute_snapshot
\ google_compute_ssl_certificate \ google_compute_ssl_certificate
\ google_compute_ssl_policy
\ google_compute_subnetwork \ google_compute_subnetwork
\ google_compute_target_http_proxy \ google_compute_target_http_proxy
\ google_compute_target_https_proxy \ google_compute_target_https_proxy
@@ -757,25 +990,29 @@ syn keyword terraResourceTypeBI
\ google_compute_vpn_tunnel \ google_compute_vpn_tunnel
\ google_container_cluster \ google_container_cluster
\ google_container_node_pool \ google_container_node_pool
\ google_dataflow_job
\ google_dataproc_cluster \ google_dataproc_cluster
\ google_dataproc_job
\ google_dns_managed_zone \ google_dns_managed_zone
\ google_dns_record_set \ google_dns_record_set
\ google_endpoints_service
\ google_folder \ google_folder
\ google_folder_iam_policy \ google_folder_organization_policy
\ google_kms_crypto_key \ google_kms_crypto_key
\ google_kms_key_ring \ google_kms_key_ring
\ google_logging_billing_account_sink \ google_logging_billing_account_sink
\ google_logging_folder_sink \ google_logging_folder_sink
\ google_logging_organization_sink
\ google_logging_project_sink \ google_logging_project_sink
\ google_organization_iam_custom_role \ google_organization_iam_custom_role
\ google_organization_policy \ google_organization_policy
\ google_project \ google_project
\ google_project_iam_binding
\ google_project_iam_custom_role \ google_project_iam_custom_role
\ google_project_iam_member
\ google_project_iam_policy \ google_project_iam_policy
\ google_project_organization_policy
\ google_project_service \ google_project_service
\ google_project_services \ google_project_services
\ google_project_usage_export_bucket
\ google_pubsub_subscription \ google_pubsub_subscription
\ google_pubsub_topic \ google_pubsub_topic
\ google_runtimeconfig_config \ google_runtimeconfig_config
@@ -791,6 +1028,8 @@ syn keyword terraResourceTypeBI
\ google_storage_bucket \ google_storage_bucket
\ google_storage_bucket_acl \ google_storage_bucket_acl
\ google_storage_bucket_object \ google_storage_bucket_object
\ google_storage_default_object_acl
\ google_storage_notification
\ google_storage_object_acl \ google_storage_object_acl
\ heroku_addon \ heroku_addon
\ heroku_addon_attachment \ heroku_addon_attachment
@@ -841,6 +1080,7 @@ syn keyword terraResourceTypeBI
\ local_file \ local_file
\ logentries_log \ logentries_log
\ logentries_logset \ logentries_logset
\ logicmonitor_collector
\ logicmonitor_collector_group \ logicmonitor_collector_group
\ logicmonitor_device \ logicmonitor_device
\ logicmonitor_device_group \ logicmonitor_device_group
@@ -852,8 +1092,34 @@ syn keyword terraResourceTypeBI
\ newrelic_alert_condition \ newrelic_alert_condition
\ newrelic_alert_policy \ newrelic_alert_policy
\ newrelic_alert_policy_channel \ newrelic_alert_policy_channel
\ newrelic_dashboard
\ newrelic_nrql_alert_condition \ newrelic_nrql_alert_condition
\ nomad_acl_policy
\ nomad_acl_token
\ nomad_job \ nomad_job
\ nomad_namespace
\ nomad_quota_specification
\ nomad_sentinel_policy
\ nsxt_algorithm_type_ns_service
\ nsxt_dhcp_relay_profile
\ nsxt_dhcp_relay_service
\ nsxt_ether_type_ns_service
\ nsxt_firewall_section
\ nsxt_icmp_type_ns_service
\ nsxt_igmp_type_ns_service
\ nsxt_ip_protocol_ns_service
\ nsxt_ip_set
\ nsxt_l4_port_set_ns_service
\ nsxt_logical_port
\ nsxt_logical_router_downlink_port
\ nsxt_logical_router_link_port_on_tier0
\ nsxt_logical_router_link_port_on_tier1
\ nsxt_logical_switch
\ nsxt_logical_tier1_router
\ nsxt_nat_rule
\ nsxt_ns_group
\ nsxt_static_route
\ nsxt_vm_tags
\ null_resource \ null_resource
\ oneandone_firewall_policy \ oneandone_firewall_policy
\ oneandone_loadbalancer \ oneandone_loadbalancer
@@ -874,6 +1140,8 @@ syn keyword terraResourceTypeBI
\ opc_compute_ip_network \ opc_compute_ip_network
\ opc_compute_ip_network_exchange \ opc_compute_ip_network_exchange
\ opc_compute_ip_reservation \ opc_compute_ip_reservation
\ opc_compute_machine_image
\ opc_compute_orchestrated_instance
\ opc_compute_route \ opc_compute_route
\ opc_compute_sec_rule \ opc_compute_sec_rule
\ opc_compute_security_application \ opc_compute_security_application
@@ -884,10 +1152,10 @@ syn keyword terraResourceTypeBI
\ opc_compute_security_rule \ opc_compute_security_rule
\ opc_compute_snapshot \ opc_compute_snapshot
\ opc_compute_ssh_key \ opc_compute_ssh_key
\ opc_compute_storage_attachment
\ opc_compute_storage_volume \ opc_compute_storage_volume
\ opc_compute_storage_volume_snapshot \ opc_compute_storage_volume_snapshot
\ opc_compute_vnic_set \ opc_compute_vnic_set
\ opc_database_service_instance
\ opc_storage_container \ opc_storage_container
\ opc_storage_object \ opc_storage_object
\ openstack_blockstorage_volume_attach_v2 \ openstack_blockstorage_volume_attach_v2
@@ -901,12 +1169,17 @@ syn keyword terraResourceTypeBI
\ openstack_compute_secgroup_v2 \ openstack_compute_secgroup_v2
\ openstack_compute_servergroup_v2 \ openstack_compute_servergroup_v2
\ openstack_compute_volume_attach_v2 \ openstack_compute_volume_attach_v2
\ openstack_db_configuration_v1
\ openstack_db_database_v1
\ openstack_db_instance_v1
\ openstack_db_user_v1
\ openstack_dns_recordset_v2 \ openstack_dns_recordset_v2
\ openstack_dns_zone_v2 \ openstack_dns_zone_v2
\ openstack_fw_firewall_v1 \ openstack_fw_firewall_v1
\ openstack_fw_policy_v1 \ openstack_fw_policy_v1
\ openstack_fw_rule_v1 \ openstack_fw_rule_v1
\ openstack_identity_project_v3 \ openstack_identity_project_v3
\ openstack_identity_role_v3
\ openstack_identity_user_v3 \ openstack_identity_user_v3
\ openstack_images_image_v2 \ openstack_images_image_v2
\ openstack_lb_listener_v2 \ openstack_lb_listener_v2
@@ -927,10 +1200,57 @@ syn keyword terraResourceTypeBI
\ openstack_networking_secgroup_rule_v2 \ openstack_networking_secgroup_rule_v2
\ openstack_networking_secgroup_v2 \ openstack_networking_secgroup_v2
\ openstack_networking_subnet_v2 \ openstack_networking_subnet_v2
\ openstack_networking_subnetpool_v2
\ openstack_objectstorage_container_v1 \ openstack_objectstorage_container_v1
\ openstack_objectstorage_object_v1 \ openstack_objectstorage_object_v1
\ opentelekomcloud_blockstorage_volume_v2
\ opentelekomcloud_ces_alarmrule
\ opentelekomcloud_compute_floatingip_associate_v2
\ opentelekomcloud_compute_floatingip_v2
\ opentelekomcloud_compute_instance_v2
\ opentelekomcloud_compute_keypair_v2
\ opentelekomcloud_compute_secgroup_v2
\ opentelekomcloud_compute_servergroup_v2
\ opentelekomcloud_compute_volume_attach_v2
\ opentelekomcloud_dns_recordset_v2
\ opentelekomcloud_dns_zone_v2
\ opentelekomcloud_elb_backend
\ opentelekomcloud_elb_health
\ opentelekomcloud_elb_listener
\ opentelekomcloud_elb_loadbalancer
\ opentelekomcloud_fw_firewall_group_v2
\ opentelekomcloud_fw_policy_v2
\ opentelekomcloud_fw_rule_v2
\ opentelekomcloud_images_image_v2
\ opentelekomcloud_kms_key_v1
\ opentelekomcloud_lb_listener_v2
\ opentelekomcloud_lb_loadbalancer_v2
\ opentelekomcloud_lb_member_v2
\ opentelekomcloud_lb_monitor_v2
\ opentelekomcloud_lb_pool_v2
\ opentelekomcloud_networking_floatingip_v2
\ opentelekomcloud_networking_network_v2
\ opentelekomcloud_networking_port_v2
\ opentelekomcloud_networking_router_interface_v2
\ opentelekomcloud_networking_router_route_v2
\ opentelekomcloud_networking_router_v2
\ opentelekomcloud_networking_secgroup_rule_v2
\ opentelekomcloud_networking_secgroup_v2
\ opentelekomcloud_networking_subnet_v2
\ opentelekomcloud_rds_instance_v1
\ opentelekomcloud_s3_bucket
\ opentelekomcloud_s3_bucket_object
\ opentelekomcloud_s3_bucket_policy
\ opentelekomcloud_smn_subscription_v2
\ opentelekomcloud_smn_topic_v2
\ opentelekomcloud_vpc_eip_v1
\ opsgenie_team \ opsgenie_team
\ opsgenie_user \ opsgenie_user
\ oraclepaas_database_access_rule
\ oraclepaas_database_service_instance
\ oraclepaas_java_access_rule
\ oraclepaas_java_service_instance
\ ovh_domain_zone_record
\ ovh_publiccloud_private_network \ ovh_publiccloud_private_network
\ ovh_publiccloud_private_network_subnet \ ovh_publiccloud_private_network_subnet
\ ovh_publiccloud_user \ ovh_publiccloud_user
@@ -944,6 +1264,7 @@ syn keyword terraResourceTypeBI
\ packet_volume_attachment \ packet_volume_attachment
\ pagerduty_addon \ pagerduty_addon
\ pagerduty_escalation_policy \ pagerduty_escalation_policy
\ pagerduty_extension
\ pagerduty_maintenance_window \ pagerduty_maintenance_window
\ pagerduty_schedule \ pagerduty_schedule
\ pagerduty_service \ pagerduty_service
@@ -951,6 +1272,20 @@ syn keyword terraResourceTypeBI
\ pagerduty_team \ pagerduty_team
\ pagerduty_team_membership \ pagerduty_team_membership
\ pagerduty_user \ pagerduty_user
\ pagerduty_user_contact_method
\ panos_address_group
\ panos_address_object
\ panos_administrative_tag
\ panos_dag_tags
\ panos_ethernet_interface
\ panos_general_settings
\ panos_management_profile
\ panos_nat_policy
\ panos_security_policies
\ panos_service_group
\ panos_service_object
\ panos_virtual_router
\ panos_zone
\ postgresql_database \ postgresql_database
\ postgresql_extension \ postgresql_extension
\ postgresql_role \ postgresql_role
@@ -984,6 +1319,7 @@ syn keyword terraResourceTypeBI
\ rancher_registry_credential \ rancher_registry_credential
\ rancher_secret \ rancher_secret
\ rancher_stack \ rancher_stack
\ rancher_volume
\ random_id \ random_id
\ random_integer \ random_integer
\ random_pet \ random_pet
@@ -997,6 +1333,9 @@ syn keyword terraResourceTypeBI
\ scaleway_security_group \ scaleway_security_group
\ scaleway_security_group_rule \ scaleway_security_group_rule
\ scaleway_server \ scaleway_server
\ scaleway_ssh_key
\ scaleway_token
\ scaleway_user_data
\ scaleway_volume \ scaleway_volume
\ scaleway_volume_attachment \ scaleway_volume_attachment
\ softlayer_ssh_key \ softlayer_ssh_key
@@ -1029,7 +1368,9 @@ syn keyword terraResourceTypeBI
\ vcd_snat \ vcd_snat
\ vcd_vapp \ vcd_vapp
\ vcd_vapp_vm \ vcd_vapp_vm
\ vsphere_custom_attribute
\ vsphere_datacenter \ vsphere_datacenter
\ vsphere_datastore_cluster
\ vsphere_distributed_port_group \ vsphere_distributed_port_group
\ vsphere_distributed_virtual_switch \ vsphere_distributed_virtual_switch
\ vsphere_file \ vsphere_file
@@ -1038,6 +1379,7 @@ syn keyword terraResourceTypeBI
\ vsphere_host_virtual_switch \ vsphere_host_virtual_switch
\ vsphere_license \ vsphere_license
\ vsphere_nas_datastore \ vsphere_nas_datastore
\ vsphere_storage_drs_vm_override
\ vsphere_tag \ vsphere_tag
\ vsphere_tag_category \ vsphere_tag_category
\ vsphere_virtual_disk \ vsphere_virtual_disk

View File

@@ -47,8 +47,8 @@ if !exists("typescript_ignore_typescriptdoc")
"unlet b:current_syntax "unlet b:current_syntax
syntax region typescriptDocComment start="/\*\*\s*$" end="\*/" contains=typescriptDocTags,typescriptCommentTodo,typescriptCvsTag,@typescriptHtml,@Spell fold extend syntax region typescriptDocComment start="/\*\*\s*$" end="\*/" contains=typescriptDocTags,typescriptCommentTodo,typescriptCvsTag,@typescriptHtml,@Spell fold extend
syntax match typescriptDocTags contained "@\(param\|argument\|requires\|exception\|throws\|type\|class\|extends\|see\|link\|member\|module\|method\|title\|namespace\|optional\|default\|base\|file\)\>" nextgroup=typescriptDocParam,typescriptDocSeeTag skipwhite syntax match typescriptDocTags contained "@\(param\|argument\|requires\|exception\|throws\|type\|class\|extends\|see\|link\|member\|module\|method\|title\|namespace\|optional\|default\|base\|file\|returns\=\)\>" nextgroup=typescriptDocParam,typescriptDocSeeTag skipwhite
syntax match typescriptDocTags contained "@\(beta\|deprecated\|description\|fileoverview\|author\|license\|version\|returns\=\|constructor\|private\|protected\|final\|ignore\|addon\|exec\)\>" syntax match typescriptDocTags contained "@\(beta\|deprecated\|description\|fileoverview\|author\|license\|version\|constructor\|private\|protected\|final\|ignore\|addon\|exec\)\>"
syntax match typescriptDocParam contained "\%(#\|\w\|\.\|:\|\/\)\+" syntax match typescriptDocParam contained "\%(#\|\w\|\.\|:\|\/\)\+"
syntax region typescriptDocSeeTag contained matchgroup=typescriptDocSeeTag start="{" end="}" contains=typescriptDocTags syntax region typescriptDocSeeTag contained matchgroup=typescriptDocSeeTag start="{" end="}" contains=typescriptDocTags
@@ -67,14 +67,17 @@ syn region typescriptInterpolation matchgroup=typescriptInterpolationDelimiter
\ start=/${/ end=/}/ contained \ start=/${/ end=/}/ contained
\ contains=@typescriptExpression \ contains=@typescriptExpression
syn match typescriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>" syn match typescriptNumber "-\=\<\d[0-9_]*L\=\>" display
syn match typescriptNumber "-\=\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>" display
syn match typescriptNumber "-\=\<0[bB][01][01_]*\>" display
syn match typescriptNumber "-\=\<0[oO]\o[0-7_]*\>" display
syn region typescriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline syn region typescriptRegexpString start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
" syntax match typescriptSpecial "\\\d\d\d\|\\x\x\{2\}\|\\u\x\{4\}\|\\." " syntax match typescriptSpecial "\\\d\d\d\|\\x\x\{2\}\|\\u\x\{4\}\|\\."
" syntax region typescriptStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=typescriptSpecial,@htmlPreproc " syntax region typescriptStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=typescriptSpecial,@htmlPreproc
" syntax region typescriptStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=typescriptSpecial,@htmlPreproc " syntax region typescriptStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=typescriptSpecial,@htmlPreproc
" syntax region typescriptRegexpString start=+/\(\*\|/\)\@!+ skip=+\\\\\|\\/+ end=+/[gim]\{,3}+ contains=typescriptSpecial,@htmlPreproc oneline " syntax region typescriptRegexpString start=+/\(\*\|/\)\@!+ skip=+\\\\\|\\/+ end=+/[gim]\{,3}+ contains=typescriptSpecial,@htmlPreproc oneline
" syntax match typescriptNumber /\<-\=\d\+L\=\>\|\<0[xX]\x\+\>/ " syntax match typescriptNumber /\<-\=\d\+L\=\>\|\<0[xX]\x\+\>/
syntax match typescriptFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ syntax match typescriptFloat /\<-\=\%(\d[0-9_]*\.\d[0-9_]*\|\d[0-9_]*\.\|\.\d[0-9]*\)\%([eE][+-]\=\d[0-9_]*\)\=\>/
" syntax match typescriptLabel /\(?\s*\)\@<!\<\w\+\(\s*:\)\@=/ " syntax match typescriptLabel /\(?\s*\)\@<!\<\w\+\(\s*:\)\@=/
syn match typescriptDecorators /@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>/ syn match typescriptDecorators /@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>/

View File

@@ -2,7 +2,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
" vifm syntax file " vifm syntax file
" Maintainer: xaizek <xaizek@posteo.net> " Maintainer: xaizek <xaizek@posteo.net>
" Last Change: September 18, 2017 " Last Change: April 30, 2018
" Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr. " Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr.
if exists('b:current_syntax') if exists('b:current_syntax')
@@ -18,11 +18,12 @@ set cpo-=C
syntax keyword vifmCommand contained alink apropos bmark bmarks bmgo change syntax keyword vifmCommand contained alink apropos bmark bmarks bmgo change
\ chmod chown clone compare cope[n] co[py] cq[uit] d[elete] delbmarks \ chmod chown clone compare cope[n] co[py] cq[uit] d[elete] delbmarks
\ delm[arks] di[splay] dirs e[dit] el[se] empty en[dif] exi[t] file fin[d] \ delm[arks] di[splay] dirs e[dit] el[se] empty en[dif] exi[t] file fin[d]
\ fini[sh] gr[ep] h[elp] histnext his[tory] histprev jobs locate ls lstrash \ fini[sh] go[to] gr[ep] h[elp] histnext his[tory] histprev jobs locate ls
\ marks mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t] pw[d] \ lstrash marks mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t]
\ q[uit] redr[aw] reg[isters] rename restart restore rlink screen sh[ell] \ pw[d] qa[ll] q[uit] redr[aw] reg[isters] rename restart restore rlink
\ siblnext siblprev sor[t] sp[lit] s[ubstitute] touch tr trashes tree sync \ screen sh[ell] siblnext siblprev sor[t] sp[lit] s[ubstitute] tabc[lose]
\ undol[ist] ve[rsion] vie[w] vifm vs[plit] winc[md] w[rite] wq x[it] y[ank] \ tabm[ove] tabname tabnew touch tr trashes tree sync undol[ist] ve[rsion]
\ vie[w] vifm vs[plit] winc[md] w[rite] wq wqa[ll] xa[ll] x[it] y[ank]
\ nextgroup=vifmArgs \ nextgroup=vifmArgs
" commands that might be prepended to a command without changing everything else " commands that might be prepended to a command without changing everything else
@@ -63,7 +64,7 @@ syntax case match
" Builtin functions " Builtin functions
syntax match vifmBuiltinFunction syntax match vifmBuiltinFunction
\ '\(chooseopt\|expand\|executable\|filetype\|getpanetype\|has\|layoutis\|paneisat\|system\|term\)\ze(' \ '\(chooseopt\|expand\|executable\|filetype\|fnameescape\|getpanetype\|has\|layoutis\|paneisat\|system\|tabpagenr\|term\)\ze('
" Operators " Operators
syntax match vifmOperator "\(==\|!=\|>=\?\|<=\?\|\.\|-\|+\|&&\|||\)" skipwhite syntax match vifmOperator "\(==\|!=\|>=\?\|<=\?\|\.\|-\|+\|&&\|||\)" skipwhite
@@ -74,7 +75,7 @@ syntax case ignore
syntax keyword vifmHiGroups contained WildMenu Border Win CmdLine CurrLine syntax keyword vifmHiGroups contained WildMenu Border Win CmdLine CurrLine
\ OtherLine Directory Link Socket Device Executable Selected BrokenLink \ OtherLine Directory Link Socket Device Executable Selected BrokenLink
\ TopLine TopLineSel StatusLine JobLine SuggestBox Fifo ErrorMsg CmpMismatch \ TopLine TopLineSel StatusLine JobLine SuggestBox Fifo ErrorMsg CmpMismatch
\ AuxWin \ AuxWin TabLine TabLineSel
syntax keyword vifmHiStyles contained bold underline reverse inverse standout syntax keyword vifmHiStyles contained bold underline reverse inverse standout
\ none \ none
syntax keyword vifmHiColors contained black red green yellow blue magenta cyan syntax keyword vifmHiColors contained black red green yellow blue magenta cyan
@@ -124,31 +125,32 @@ syntax case match
syntax keyword vifmOption contained aproposprg autochpos caseoptions cdpath cd syntax keyword vifmOption contained aproposprg autochpos caseoptions cdpath cd
\ chaselinks classify columns co confirm cf cpoptions cpo cvoptions \ chaselinks classify columns co confirm cf cpoptions cpo cvoptions
\ deleteprg dotdirs dotfiles dirsize fastrun fillchars fcs findprg \ deleteprg dotdirs dotfiles dirsize fastrun fillchars fcs findprg
\ followlinks fusehome gdefault grepprg history hi hlsearch hls iec \ followlinks fusehome gdefault grepprg histcursor history hi hlsearch hls
\ ignorecase ic iooptions incsearch is laststatus lines locateprg ls \ iec ignorecase ic iooptions incsearch is laststatus lines locateprg ls
\ lsoptions lsview milleroptions millerview mintimeoutlen number nu \ lsoptions lsview milleroptions millerview mintimeoutlen number nu
\ numberwidth nuw previewprg relativenumber rnu rulerformat ruf runexec \ numberwidth nuw previewprg quickview relativenumber rnu rulerformat ruf
\ scrollbind scb scrolloff so sort sortgroups sortorder sortnumbers shell sh \ runexec scrollbind scb scrolloff so sort sortgroups sortorder sortnumbers
\ shortmess shm sizefmt slowfs smartcase scs statusline stl suggestoptions \ shell sh shortmess shm showtabline stal sizefmt slowfs smartcase scs
\ syscalls tabstop timefmt timeoutlen title tm trash trashdir ts tuioptions \ statusline stl suggestoptions syncregs syscalls tabscope tabstop timefmt
\ to undolevels ul vicmd viewcolumns vifminfo vimhelp vixcmd wildmenu wmnu \ timeoutlen title tm trash trashdir ts tuioptions to undolevels ul vicmd
\ wildstyle wordchars wrap wrapscan ws \ viewcolumns vifminfo vimhelp vixcmd wildmenu wmnu wildstyle wordchars wrap
\ wrapscan ws
" Disabled boolean options " Disabled boolean options
syntax keyword vifmOption contained noautochpos nocf nochaselinks nodotfiles syntax keyword vifmOption contained noautochpos nocf nochaselinks nodotfiles
\ nofastrun nofollowlinks nohlsearch nohls noiec noignorecase noic \ nofastrun nofollowlinks nohlsearch nohls noiec noignorecase noic
\ noincsearch nois nolaststatus nols nolsview nomillerview nonumber nonu \ noincsearch nois nolaststatus nols nolsview nomillerview nonumber nonu
\ norelativenumber nornu noscrollbind noscb norunexec nosmartcase noscs \ noquickview norelativenumber nornu noscrollbind noscb norunexec
\ nosortnumbers nosyscalls notitle notrash novimhelp nowildmenu nowmnu \ nosmartcase noscs nosortnumbers nosyscalls notitle notrash novimhelp
\ nowrap nowrapscan nows \ nowildmenu nowmnu nowrap nowrapscan nows
" Inverted boolean options " Inverted boolean options
syntax keyword vifmOption contained invautochpos invcf invchaselinks invdotfiles syntax keyword vifmOption contained invautochpos invcf invchaselinks invdotfiles
\ invfastrun invfollowlinks invhlsearch invhls inviec invignorecase invic \ invfastrun invfollowlinks invhlsearch invhls inviec invignorecase invic
\ invincsearch invis invlaststatus invls invlsview invmillerview invnumber \ invincsearch invis invlaststatus invls invlsview invmillerview invnumber
\ invnu invrelativenumber invrnu invscrollbind invscb invrunexec invsmartcase \ invnu invquickview invrelativenumber invrnu invscrollbind invscb
\ invscs invsortnumbers invsyscalls invtitle invtrash invvimhelp invwildmenu \ invrunexec invsmartcase invscs invsortnumbers invsyscalls invtitle
\ invwmnu invwrap invwrapscan invws \ invtrash invvimhelp invwildmenu invwmnu invwrap invwrapscan invws
" Expressions " Expressions
syntax region vifmStatement start='^\(\s\|:\)*' syntax region vifmStatement start='^\(\s\|:\)*'
@@ -174,7 +176,7 @@ syntax region vifmStatementC start='\(\s\|:\)*'
\,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt \,vifmComment,vifmInlineComment,vifmNotComment,vifmExprCommandSt,vifmNormalCommandSt
\,vifmCdCommandSt,vifmSet,vifmArgument,vifmSoCommand,vifmSoCommandSt \,vifmCdCommandSt,vifmSet,vifmArgument,vifmSoCommand,vifmSoCommandSt
\,vifmInvertCommand,vifmInvertCommandSt,vifmPrefixCommands \,vifmInvertCommand,vifmInvertCommandSt,vifmPrefixCommands
\,vifmAutocmdCommand,vifmAutoEvent,vifmPatternCommands \,vifmAutocmdCommand,vifmAutoEvent,vifmPatternCommands,vifmLetC,vifmUnletC
syntax region vifmCmdCommandSt start='^\(\s\|:\)*com\%[mand]\>' syntax region vifmCmdCommandSt start='^\(\s\|:\)*com\%[mand]\>'
\ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend \ skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' keepend
\ contains=vifmCmdCommand,vifmComment,vifmInlineComment,vifmNotComment \ contains=vifmCmdCommand,vifmComment,vifmInlineComment,vifmNotComment
@@ -351,10 +353,19 @@ syntax region vifmLet
\ keepend \ keepend
\ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment \ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment
\,vifmInlineComment,vifmNotComment \,vifmInlineComment,vifmNotComment
syntax region vifmLetC
\ start='\<let\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\||'
\ keepend
\ contains=vifmLetCommand,vifmEnvVar,vifmString,vifmStringInExpr,vifmComment
\,vifmInlineComment,vifmNotComment,vifmBuiltinFunction
syntax region vifmUnlet syntax region vifmUnlet
\ start='^\(\s\|:\)*\<unl\%[et]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$' \ start='^\(\s\|:\)*\<unl\%[et]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$'
\ keepend \ keepend
\ contains=vifmUnletCommand,vifmEnvVar,vifmComment,vifmInlineComment,vifmNotComment \ contains=vifmUnletCommand,vifmEnvVar,vifmComment,vifmInlineComment,vifmNotComment
syntax region vifmUnletC
\ start='\<unl\%[et]\>' skip='\(\n\s*\\\)\|\(\n\s*".*$\)' end='$\||'
\ keepend
\ contains=vifmUnletCommand,vifmEnvVar,vifmComment,vifmInlineComment,vifmNotComment
syntax region vifmString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ syntax region vifmString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+
syntax region vifmString contained start=+='+hs=s+1 skip=+\\\\\|\\'+ end=+'+ syntax region vifmString contained start=+='+hs=s+1 skip=+\\\\\|\\'+ end=+'+
syntax region vifmStringInExpr contained start=+=\@<="+hs=s+1 skip=+\\\\\|\\"+ syntax region vifmStringInExpr contained start=+=\@<="+hs=s+1 skip=+\\\\\|\\"+
@@ -372,7 +383,7 @@ syntax match vifmNumber contained /\d\+/
" Ange-bracket notation " Ange-bracket notation
syntax case ignore syntax case ignore
syntax match vifmNotation '<\(esc\|cr\|space\|del\|nop\|\(s-\)\?tab\|home\|end\|left\|right\|up\|down\|bs\|delete\|pageup\|pagedown\|\([acms]-\)\?f\d\{1,2\}\|c-s-[a-z[\]^_]\|s-c-[a-z[\]^_]\|c-[a-z[\]^_]\|[am]-c-[a-z]\|c-[am]-[a-z]\|[am]-[a-z]\)>' syntax match vifmNotation '<\(esc\|cr\|space\|del\|nop\|\(s-\)\?tab\|home\|end\|left\|right\|up\|down\|bs\|delete\|insert\|pageup\|pagedown\|\([acms]-\)\?f\d\{1,2\}\|c-s-[a-z[\]^_]\|s-c-[a-z[\]^_]\|c-[a-z[\]^_]\|[am]-c-[a-z]\|c-[am]-[a-z]\|[am]-[a-z]\)>'
syntax case match syntax case match
" Whole line comment " Whole line comment

Some files were not shown because too many files have changed in this diff Show More