summaryrefslogtreecommitdiffstats
path: root/syntax/ansible.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2015-12-17 10:48:07 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2015-12-17 10:48:07 +0100
commitde3110b733880502b23faf9af4d450f22a4b15f7 (patch)
treedd18074c197a91640abb246ec158dc1895d980be /syntax/ansible.vim
parent7cbd509b6ca5522b33c8bf299468ec1be9052416 (diff)
downloadvim-polyglot-2.4.0.tar.gz
vim-polyglot-2.4.0.zip
Add ansible support, closes #96v2.4.0
Diffstat (limited to 'syntax/ansible.vim')
-rw-r--r--syntax/ansible.vim90
1 files changed, 90 insertions, 0 deletions
diff --git a/syntax/ansible.vim b/syntax/ansible.vim
new file mode 100644
index 00000000..ed0eafbf
--- /dev/null
+++ b/syntax/ansible.vim
@@ -0,0 +1,90 @@
+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 = 'yaml'
+endif
+
+let b:current_syntax = ''
+unlet b:current_syntax
+runtime! syntax/yaml.vim
+
+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
+
+" Jinja
+" ================================
+
+syn cluster jinjaSLSBlocks add=jinjaTagBlock,jinjaVarBlock,jinjaComment
+" https://github.com/mitsuhiko/jinja2/blob/6b7c0c23/ext/Vim/jinja.vim
+syn region jinjaTagBlock matchgroup=jinjaTagDelim start=/{%-\?/ end=/-\?%}/ containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaRaw,jinjaString,jinjaNested,jinjaComment,@jinjaSLSBlocks
+syn region jinjaVarBlock matchgroup=jinjaVarDelim start=/{{-\?/ end=/-\?}}/ containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaRaw,jinjaString,jinjaNested,jinjaComment,@jinjaSLSBlocks
+syn region jinjaComment matchgroup=jinjaCommentDelim start="{#" end="#}" containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaString,@jinjaSLSBlocks
+highlight link jinjaVariable Constant
+highlight link jinjaVarDelim Delimiter
+
+" YAML
+" ================================
+
+" Reset some YAML to plain styling
+" the number 80 in Ansible isn't any more important than the word root
+highlight link yamlInteger NONE
+highlight link yamlBool NONE
+highlight link yamlFlowString NONE
+" but it does make sense we visualize quotes easily
+highlight link yamlFlowStringDelimiter Delimiter
+
+fun! s:attribute_highlight(attributes)
+ if a:attributes =~ 'a'
+ syn match ansible_attributes "\v\w+\=" containedin=yamlPlainScalar
+ else
+ syn match ansible_attributes "\v^\s*\w+\=" containedin=yamlPlainScalar
+ endif
+ if a:attributes =~ 'n'
+ highlight link ansible_attributes NONE
+ elseif a:attributes =~ 'd'
+ highlight link ansible_attributes Comment
+ else
+ highlight link ansible_attributes Structure
+ endif
+endfun
+
+if exists("g:ansible_attribute_highlight")
+ call s:attribute_highlight(g:ansible_attribute_highlight)
+else
+ call s:attribute_highlight('ad')
+endif
+
+if exists("g:ansible_name_highlight")
+ syn keyword ansible_name name containedin=yamlBlockMappingKey contained
+ if g:ansible_name_highlight =~ 'd'
+ highlight link ansible_name Comment
+ else
+ highlight link ansible_name Underlined
+ endif
+endif
+
+syn keyword ansible_debug_keywords debug containedin=yamlBlockMappingKey contained
+highlight link ansible_debug_keywords Debug
+
+syn match ansible_with_keywords "\vwith_.+" containedin=yamlBlockMappingKey contained
+syn keyword ansible_special_keywords include until retries delay when only_if become become_user block rescue always notify containedin=yamlBlockMappingKey contained
+highlight link ansible_with_keywords Statement
+highlight link ansible_special_keywords Statement
+
+let b:current_syntax = "ansible"
+
+endif