2015-12-17 04:48:07 -05:00
|
|
|
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
|
|
|
|
|
2017-09-27 13:57:29 -04:00
|
|
|
fun! s:normal_keywords_highlight(name)
|
|
|
|
if a:name == 'Comment'
|
|
|
|
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
|
|
|
|
|
2015-12-17 04:48:07 -05:00
|
|
|
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
|
|
|
|
|
2016-05-02 04:42:37 -04:00
|
|
|
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
|
|
|
|
highlight link ansible_extra_special_keywords Statement
|
|
|
|
endif
|
|
|
|
|
2017-09-27 13:57:29 -04:00
|
|
|
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
|
|
|
|
if exists("g:ansible_normal_keywords_highlight")
|
|
|
|
call s:normal_keywords_highlight(g:ansible_normal_keywords_highlight)
|
|
|
|
else
|
|
|
|
highlight link ansible_normal_keywords Statement
|
|
|
|
endif
|
2015-12-17 04:48:07 -05:00
|
|
|
|
2016-05-02 04:42:37 -04:00
|
|
|
syn match ansible_with_keywords "\vwith_.+" containedin=yamlBlockMappingKey contained
|
2017-09-27 13:57:29 -04:00
|
|
|
if exists("g:ansible_with_keywords_highlight")
|
|
|
|
call s:with_keywords_highlight(g:ansible_with_keywords_highlight)
|
|
|
|
else
|
|
|
|
highlight link ansible_with_keywords Statement
|
|
|
|
endif
|
2016-05-02 04:42:37 -04:00
|
|
|
|
2015-12-17 04:48:07 -05:00
|
|
|
let b:current_syntax = "ansible"
|
|
|
|
|
|
|
|
endif
|