vim: configuration for ansible
This commit is contained in:
50
_vim/syntax/ansible.vim
Normal file
50
_vim/syntax/ansible.vim
Normal file
@@ -0,0 +1,50 @@
|
||||
" Vim syntax file
|
||||
" Language: YAML (with Ansible)
|
||||
" Maintainer: Benji Fisher, Ph.D. <benji@FisherFam.org>
|
||||
" Author: Chase Colman <chase@colman.io>
|
||||
" Version: 1.0
|
||||
" Latest Revision: 2014-06-28
|
||||
" URL: https://github.com/chase/vim-ansible-yaml
|
||||
|
||||
if !exists("main_syntax")
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
let main_syntax = 'ansible'
|
||||
endif
|
||||
|
||||
" Load YAML syntax
|
||||
source <sfile>:p:h/include/yaml.vim
|
||||
unlet b:current_syntax
|
||||
|
||||
source <sfile>:p:h/include/jinja.vim
|
||||
unlet b:current_syntax
|
||||
|
||||
syn case match
|
||||
|
||||
syn match ansibleRepeat '\<with_\w\+\>' contained containedin=yamlKey
|
||||
syn keyword ansibleConditional when changed_when contained containedin=yamlKey
|
||||
syn region ansibleString start='"' end='"' skip='\\"' display contains=jinjaVarBlock
|
||||
|
||||
if version >= 508 || !exist("did_ansible_syn")
|
||||
if version < 508
|
||||
let did_ansible_syn = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink ansibleConditional Statement
|
||||
HiLink ansibleRepeat Repeat
|
||||
HiLink ansibleString String
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = 'ansible'
|
||||
|
||||
if main_syntax == 'ansible'
|
||||
unlet main_syntax
|
||||
endif
|
||||
102
_vim/syntax/include/jinja.vim
Normal file
102
_vim/syntax/include/jinja.vim
Normal file
@@ -0,0 +1,102 @@
|
||||
" jinja syntax file
|
||||
" Language: Jinja YAML Template
|
||||
" Maintainer: Benji Fisher, Ph.D. <benji@FisherFam.org>
|
||||
" Author: Chase Colman <chase@colman.io>
|
||||
" Author: Armin Ronacher <armin.ronacher@active-4.com>
|
||||
" Version: 1.0
|
||||
" Latest Revision: 2013-12-10
|
||||
" URL: https://github.com/chase/vim-ansible-yaml
|
||||
|
||||
if !exists("main_syntax")
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
let main_syntax = 'jinja'
|
||||
endif
|
||||
|
||||
syntax case match
|
||||
|
||||
" Jinja template built-in tags and parameters (without filter, macro, is and raw, they
|
||||
" have special threatment)
|
||||
syn keyword jinjaStatement containedin=jinjaVarBlock,jinjaNested contained and if else elif is in not or recursive as import
|
||||
|
||||
syn keyword jinjaStatement containedin=jinjaVarBlock,jinjaNested contained is filter skipwhite nextgroup=jinjaFilter
|
||||
syn keyword jinjaStatement containedin=jinjaTagBlock contained macro skipwhite nextgroup=jinjaFunction
|
||||
syn keyword jinjaStatement containedin=jinjaTagBlock contained block skipwhite nextgroup=jinjaBlockName
|
||||
|
||||
" Variable Names
|
||||
syn match jinjaVariable containedin=jinjaVarBlock,jinjaNested contained /[a-zA-Z_][a-zA-Z0-9_]*/
|
||||
syn keyword jinjaSpecial containedin=jinjaVarBlock,jinjaNested contained false true none False True None loop super caller varargs kwargs
|
||||
|
||||
" Filters
|
||||
syn match jinjaOperator "|" containedin=jinjaVarBlock,jinjaNested contained skipwhite nextgroup=jinjaFilter
|
||||
syn keyword jinjaFilter contained abs attr batch capitalize center default
|
||||
syn keyword jinjaFilter contained dictsort escape filesizeformat first
|
||||
syn keyword jinjaFilter contained float forceescape format groupby indent
|
||||
syn keyword jinjaFilter contained int join last length list lower pprint
|
||||
syn keyword jinjaFilter contained random replace reverse round safe slice
|
||||
syn keyword jinjaFilter contained sort string striptags sum
|
||||
syn keyword jinjaFilter contained title trim truncate upper urlize
|
||||
syn keyword jinjaFilter contained wordcount wordwrap
|
||||
syn match jinjaBlockName contained /[a-zA-Z_][a-zA-Z0-9_]*/
|
||||
|
||||
" Jinja template constants
|
||||
syn region jinjaString containedin=jinjaVarBlock,jinjaNested contained start=/"/ skip=/\\"/ end=/"/
|
||||
syn region jinjaString containedin=jinjaVarBlock,jinjaNested contained start=/'/ skip=/\\'/ end=/'/
|
||||
syn match jinjaNumber containedin=jinjaVarBlock,jinjaNested contained /[0-9]\+\(\.[0-9]\+\)\?/
|
||||
|
||||
" Operators
|
||||
syn match jinjaOperator containedin=jinjaVarBlock,jinjaNested contained /[+\-*\/<>=!,:]/
|
||||
syn match jinjaPunctuation containedin=jinjaVarBlock,jinjaNested contained /[()\[\]]/
|
||||
syn match jinjaOperator containedin=jinjaVarBlock,jinjaNested contained /\./ nextgroup=jinjaAttribute
|
||||
syn match jinjaAttribute contained /[a-zA-Z_][a-zA-Z0-9_]*/
|
||||
|
||||
" Jinja template tag and variable blocks
|
||||
syn region jinjaNested matchgroup=jinjaDelimiter start="(" end=")" transparent display containedin=jinjaVarBlock,jinjaNested contained
|
||||
syn region jinjaNested matchgroup=jinjaOperator start="\[" end="\]" transparent display containedin=jinjaVarBlock,jinjaNested contained
|
||||
syn region jinjaNested matchgroup=jinjaDelimiter start="{" end="}" transparent display containedin=jinjaVarBlock,jinjaNested contained
|
||||
|
||||
syn region jinjaVarBlock matchgroup=jinjaVarDelim start=/{{-\?/ end=/-\?}}/ containedin=ALLBUT,jinjaVarBlock,jinjaRaw,jinjaString,jinjaNested
|
||||
|
||||
" Jinja template 'raw' tag
|
||||
syn region jinjaRaw matchgroup=jinjaRawDelim start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" containedin=ALLBUT,jinjaVarBlock,jinjaString
|
||||
|
||||
" 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 || !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 jinjaAttribute Identifier
|
||||
HiLink jinjaFunction jinjaFilter
|
||||
|
||||
HiLink jinjaVarDelim PreProc
|
||||
HiLink jinjaRawDelim jinjaVarDelim
|
||||
|
||||
HiLink jinjaSpecial Special
|
||||
HiLink jinjaOperator Operator
|
||||
HiLink jinjaRaw Normal
|
||||
HiLink jinjaStatement Statement
|
||||
HiLink jinjaDelimiter Delimiter
|
||||
HiLink jinjaFilter Function
|
||||
HiLink jinjaBlockName Function
|
||||
HiLink jinjaVariable Normal
|
||||
HiLink jinjaString Constant
|
||||
HiLink jinjaNumber Constant
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = "jinja"
|
||||
|
||||
if main_syntax == 'jinja'
|
||||
unlet main_syntax
|
||||
endif
|
||||
142
_vim/syntax/include/yaml.vim
Normal file
142
_vim/syntax/include/yaml.vim
Normal file
@@ -0,0 +1,142 @@
|
||||
" Vim syntax file
|
||||
" Language: YAML (YAML Ain't Markup Language)
|
||||
" Maintainer: Benji Fisher, Ph.D. <benji@FisherFam.org>
|
||||
" Author: Chase Colman <chase@colman.io>
|
||||
" Author: Igor Vergeichik <iverg@mail.ru>
|
||||
" Author: Nikolai Weibull <now@bitwi.se>
|
||||
" Sponsor: Tom Sawyer <transfire@gmail.com>
|
||||
" Latest Revision: 2014-12-08
|
||||
|
||||
if !exists("main_syntax")
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
let main_syntax = 'yaml'
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" Allows keyword matches containing -
|
||||
setl iskeyword+=-
|
||||
|
||||
syn keyword yamlTodo contained TODO FIXME XXX NOTE
|
||||
|
||||
syn region yamlDocumentHeader start='---' end='$' contains=yamlDirective
|
||||
syn match yamlDocumentEnd '\.\.\.'
|
||||
syn match yamlDirective contained '%[^:]\+:.\+'
|
||||
|
||||
syn region yamlComment display oneline start='\%(^\|\s\)#' end='$'
|
||||
\ contains=yamlTodo,@Spell
|
||||
syn match yamlNodeProperty "!\%(![^\\^% ]\+\|[^!][^:/ ]*\)"
|
||||
syn match yamlAnchor "&.\+"
|
||||
syn match yamlAlias "\*.\+"
|
||||
syn match yamlDelimiter "[-,:]\s*" contained
|
||||
|
||||
syn match yamlBlock "[\[\]\{\}>|]"
|
||||
syn match yamlOperator '[?+-]'
|
||||
" - yamlBlock is contained here in the mapping because having the mapping end
|
||||
" at $ clobbers detecting yamlBlock endings.
|
||||
" - Without re-writing quite a bit of this logic this seems like the cleanest
|
||||
" way to fix this
|
||||
syn region yamlMapping start='\w\+\%(\s\+\w\+\)*\s*\ze:' end='$' keepend oneline contains=yamlKey,yamlScalar,yamlBlock
|
||||
syn match yamlScalar '\%(\W*\w\+\)\{2,}' contained contains=yamlTimestamp,yamlString,@yamlTypes,yamlBlock
|
||||
syn cluster yamlTypes contains=yamlInteger,yamlFloating,yamlNumber,yamlBoolean,yamlConstant,yamlNull,yamlTime
|
||||
syn match yamlKey '\w\+\%(\s\+\w\+\)*\s*:' contained nextgroup=@yamlTypes contains=yamlDelimiter
|
||||
|
||||
" Predefined data types
|
||||
|
||||
" Yaml Integer type
|
||||
syn match yamlInteger "\<[-+]\?\(0\|[1-9][0-9,]*\)\s*$" contained
|
||||
syn match yamlInteger "\<[-+]\?0[xX][0-9a-fA-F,]\+\s*$" contained
|
||||
|
||||
" floating point number
|
||||
syn match yamlFloating "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\s*$" contained
|
||||
syn match yamlFloating "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\s*$" contained
|
||||
syn match yamlFloating "\<\d\+e[-+]\=\d\+[fl]\=\s*$" contained
|
||||
syn match yamlFloating "\<\(([+-]\?inf)\).*$\|\((NaN)\)\s*$" contained
|
||||
syn match yamlNumber '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=\s*$' contained
|
||||
syn match yamlNumber '\<0\o\+\s*$' contained
|
||||
syn match yamlNumber '\<0x\x\+\s*$' contained
|
||||
syn match yamlNumber '\<([+-]\=[iI]nf)\s*$' contained
|
||||
|
||||
" Boolean
|
||||
syn keyword yamlBoolean true True TRUE false False FALSE yes Yes YES no No NO on On ON off Off OFF contained
|
||||
syn match yamlBoolean ":.*\zs\W[+-]\(\W\|$\)" contained
|
||||
|
||||
syn match yamlConstant '\<[~yn]\s*$' contained
|
||||
|
||||
" Null
|
||||
syn keyword yamlNull null Null NULL nil Nil NIL contained
|
||||
syn match yamlNull "\W[~]\(\W\|$\)" contained
|
||||
|
||||
syn match yamlTimestamp '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\=' contained
|
||||
|
||||
" Single and double quoted scalars
|
||||
syn region yamlString oneline start="'" end="'" skip="\\'"
|
||||
\ contains=yamlSingleEscape
|
||||
syn region yamlString oneline start='"' end='"' skip='\\"'
|
||||
\ contains=yamlEscape
|
||||
|
||||
" Escaped symbols
|
||||
" every charater preceeded with slash is escaped one
|
||||
syn match yamlEscape "\\."
|
||||
" 2,4 and 8-digit escapes
|
||||
syn match yamlEscape "\\\(x\x\{2\}\|u\x\{4\}\|U\x\{8\}\)"
|
||||
syn match yamlEscape contained display +\\[\\"abefnrtv^0_ NLP]+
|
||||
syn match yamlEscape contained display '\\x\x\{2}'
|
||||
syn match yamlEscape contained display '\\u\x\{4}'
|
||||
syn match yamlEscape contained display '\\U\x\{8}'
|
||||
syn match yamlEscape display '\\\%(\r\n\|[\r\n]\)'
|
||||
syn match yamlSingleEscape contained display +''+
|
||||
|
||||
syn match yamlAnchor "&\S\+"
|
||||
syn match yamlAlias "*\S\+"
|
||||
syn match yamlType "![^\s]\+\s\@="
|
||||
|
||||
if version >= 508 || !exist("did_yaml_syn")
|
||||
if version < 508
|
||||
let did_yaml_syn = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink yamlKey Identifier
|
||||
HiLink yamlType Type
|
||||
HiLink yamlInteger Number
|
||||
HiLink yamlFloating Float
|
||||
HiLink yamlNumber Number
|
||||
HiLink yamlEscape Special
|
||||
HiLink yamlSingleEscape SpecialChar
|
||||
HiLink yamlComment Comment
|
||||
HiLink yamlBlock Operator
|
||||
HiLink yamlDelimiter Delimiter
|
||||
HiLink yamlString String
|
||||
HiLink yamlBoolean Boolean
|
||||
HiLink yamlNull Boolean
|
||||
HiLink yamlTodo Todo
|
||||
HiLink yamlDocumentHeader PreProc
|
||||
HiLink yamlDocumentEnd PreProc
|
||||
HiLink yamlDirective Keyword
|
||||
HiLink yamlNodeProperty Type
|
||||
HiLink yamlAnchor Type
|
||||
HiLink yamlAlias Type
|
||||
HiLink yamlOperator Operator
|
||||
HiLink yamlScalar String
|
||||
HiLink yamlConstant Constant
|
||||
HiLink yamlTimestamp Number
|
||||
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = "yaml"
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
if main_syntax == "yaml"
|
||||
unlet main_syntax
|
||||
endif
|
||||
Reference in New Issue
Block a user