| " Vim syntax file |
| " Language: RFC 2614 - An API for Service Location registration file |
| " Maintainer: Nikolai Weibull <now@bitwi.se> |
| " Latest Revision: 2006-04-19 |
| |
| if exists("b:current_syntax") |
| finish |
| endif |
| |
| let s:cpo_save = &cpo |
| set cpo&vim |
| |
| syn keyword slpregTodo contained TODO FIXME XXX NOTE |
| |
| syn region slpregComment display oneline start='^[#;]' end='$' |
| \ contains=slpregTodo,@Spell |
| |
| syn match slpregBegin display '^' |
| \ nextgroup=slpregServiceURL, |
| \ slpregComment |
| |
| syn match slpregServiceURL contained display 'service:' |
| \ nextgroup=slpregServiceType |
| |
| syn match slpregServiceType contained display '\a[[:alpha:][:digit:]+-]*\%(\.\a[[:alpha:][:digit:]+-]*\)\=\%(:\a[[:alpha:][:digit:]+-]*\)\=' |
| \ nextgroup=slpregServiceSAPCol |
| |
| syn match slpregServiceSAPCol contained display ':' |
| \ nextgroup=slpregSAP |
| |
| syn match slpregSAP contained '[^,]\+' |
| \ nextgroup=slpregLangSep |
| "syn match slpregSAP contained display '\%(//\%(\%([[:alpha:][:digit:]$-_.~!*\'(),+;&=]*@\)\=\%([[:alnum:]][[:alnum:]-]*[[:alnum:]]\|[[:alnum:]]\.\)*\%(\a[[:alnum:]-]*[[:alnum:]]\|\a\)\%(:\d\+\)\=\)\=\|/at/\%([[:alpha:][:digit:]$-_.~]\|\\\x\x\)\{1,31}:\%([[:alpha:][:digit:]$-_.~]\|\\\x\x\)\{1,31}\%([[:alpha:][:digit:]$-_.~]\|\\\x\x\)\{1,31}\|/ipx/\x\{8}:\x\{12}:\x\{4}\)\%(/\%([[:alpha:][:digit:]$-_.~!*\'()+;?:@&=+]\|\\\x\x\)*\)*\%(;[^()\\!<=>~[:cntrl:]* \t_]\+\%(=[^()\\!<=>~[:cntrl:] ]\+\)\=\)*' |
| |
| syn match slpregLangSep contained display ',' |
| \ nextgroup=slpregLang |
| |
| syn match slpregLang contained display '\a\{1,8}\%(-\a\{1,8\}\)\=' |
| \ nextgroup=slpregLTimeSep |
| |
| syn match slpregLTimeSep contained display ',' |
| \ nextgroup=slpregLTime |
| |
| syn match slpregLTime contained display '\d\{1,5}' |
| \ nextgroup=slpregType,slpregUNewline |
| |
| syn match slpregType contained display '\a[[:alpha:][:digit:]+-]*' |
| \ nextgroup=slpregUNewLine |
| |
| syn match slpregUNewLine contained '\s*\n' |
| \ nextgroup=slpregScopes,slpregAttrList skipnl |
| |
| syn keyword slpregScopes contained scopes |
| \ nextgroup=slpregScopesEq |
| |
| syn match slpregScopesEq contained '=' nextgroup=slpregScopeName |
| |
| syn match slpregScopeName contained '[^(),\\!<=>[:cntrl:];*+ ]\+' |
| \ nextgroup=slpregScopeNameSep, |
| \ slpregScopeNewline |
| |
| syn match slpregScopeNameSep contained ',' |
| \ nextgroup=slpregScopeName |
| |
| syn match slpregScopeNewline contained '\s*\n' |
| \ nextgroup=slpregAttribute skipnl |
| |
| syn match slpregAttribute contained '[^(),\\!<=>[:cntrl:]* \t_]\+' |
| \ nextgroup=slpregAttributeEq, |
| \ slpregScopeNewline |
| |
| syn match slpregAttributeEq contained '=' |
| \ nextgroup=@slpregAttrValue |
| |
| syn cluster slpregAttrValueCon contains=slpregAttribute,slpregAttrValueSep |
| |
| syn cluster slpregAttrValue contains=slpregAttrIValue,slpregAttrSValue, |
| \ slpregAttrBValue,slpregAttrSSValue |
| |
| syn match slpregAttrSValue contained display '[^(),\\!<=>~[:cntrl:]]\+' |
| \ nextgroup=@slpregAttrValueCon skipwhite skipnl |
| |
| syn match slpregAttrSSValue contained display '\\FF\%(\\\x\x\)\+' |
| \ nextgroup=@slpregAttrValueCon skipwhite skipnl |
| |
| syn match slpregAttrIValue contained display '[-]\=\d\+\>' |
| \ nextgroup=@slpregAttrValueCon skipwhite skipnl |
| |
| syn keyword slpregAttrBValue contained true false |
| \ nextgroup=@slpregAttrValueCon skipwhite skipnl |
| |
| syn match slpregAttrValueSep contained display ',' |
| \ nextgroup=@slpregAttrValue skipwhite skipnl |
| |
| hi def link slpregTodo Todo |
| hi def link slpregComment Comment |
| hi def link slpregServiceURL Type |
| hi def link slpregServiceType slpregServiceURL |
| hi def link slpregServiceSAPCol slpregServiceURL |
| hi def link slpregSAP slpregServiceURL |
| hi def link slpregDelimiter Delimiter |
| hi def link slpregLangSep slpregDelimiter |
| hi def link slpregLang String |
| hi def link slpregLTimeSep slpregDelimiter |
| hi def link slpregLTime Number |
| hi def link slpregType Type |
| hi def link slpregScopes Identifier |
| hi def link slpregScopesEq Operator |
| hi def link slpregScopeName String |
| hi def link slpregScopeNameSep slpregDelimiter |
| hi def link slpregAttribute Identifier |
| hi def link slpregAttributeEq Operator |
| hi def link slpregAttrSValue String |
| hi def link slpregAttrSSValue slpregAttrSValue |
| hi def link slpregAttrIValue Number |
| hi def link slpregAttrBValue Boolean |
| hi def link slpregAttrValueSep slpregDelimiter |
| |
| let b:current_syntax = "slpreg" |
| |
| let &cpo = s:cpo_save |
| unlet s:cpo_save |