2 " Language: Asterisk config file
4 " Updated for 1.2 by Tilghman Lesher (Corydon76)
5 " Last Change: 2006 Mar 20
10 elseif exists("b:current_syntax")
17 syn keyword asteriskTodo TODO contained
18 syn match asteriskComment ";.*" contains=asteriskTodo
19 syn match asteriskContext "\[.\{-}\]"
20 syn match asteriskExten "^\s*exten\s*=>\?\s*[^,]\+" contains=asteriskPattern
21 syn match asteriskExten "^\s*\(register\|channel\|ignorepat\|include\|\(no\)\?load\)\s*=>\?"
22 syn match asteriskPattern "_\(\[[[:alnum:]#*\-]\+\]\|[[:alnum:]#*]\)*\.\?" contained
23 syn match asteriskPattern "[^A-Za-z0-9,]\zs[[:alnum:]#*]\+\ze" contained
24 syn match asteriskApp ",\zs[a-zA-Z]\+\ze$"
25 syn match asteriskApp ",\zs[a-zA-Z]\+\ze("
26 " Digits plus oldlabel (newlabel)
27 syn match asteriskPriority ",\zs[[:digit:]]\+\(+[[:alpha:]][[:alnum:]_]*\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel
28 " oldlabel plus digits (newlabel)
29 syn match asteriskPriority ",\zs[[:alpha:]][[:alnum:]_]*+[[:digit:]]\+\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel
30 " s or n plus digits (newlabel)
31 syn match asteriskPriority ",\zs[sn]\(+[[:digit:]]\+\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel
32 syn match asteriskLabel "(\zs[[:alpha:]][[:alnum:]]*\ze)" contained
33 syn match asteriskError "^\s*#\s*[[:alnum:]]*"
34 syn match asteriskInclude "^\s*#\s*\(include\|exec\)\s.*"
35 syn match asteriskVar "\${_\{0,2}[[:alpha:]][[:alnum:]_]*\(:-\?[[:digit:]]\+\(:[[:digit:]]\+\)\?\)\?}"
36 syn match asteriskVar "_\{0,2}[[:alpha:]][[:alnum:]_]*\ze="
37 syn match asteriskVarLen "\${_\{0,2}[[:alpha:]][[:alnum:]_]*(.*)}" contains=asteriskVar,asteriskVarLen,asteriskExp
38 syn match asteriskVarLen "(\zs[[:alpha:]][[:alnum:]_]*(.\{-})\ze=" contains=asteriskVar,asteriskVarLen,asteriskExp
39 syn match asteriskExp "\$\[.\{-}\]" contains=asteriskVar,asteriskVarLen,asteriskExp
40 syn match asteriskCodecsPermit "^\s*\(allow\|disallow\)\s*=\s*.*$" contains=asteriskCodecs
41 syn match asteriskCodecs "\(g723\|gsm\|ulaw\|alaw\|g726\|adpcm\|slin\|lpc10\|g729\|speex\|ilbc\|all\s*$\)"
42 syn match asteriskError "^\(type\|auth\|permit\|deny\|bindaddr\|host\)\s*=.*$"
43 syn match asteriskType "^\zstype=\ze\<\(peer\|user\|friend\)\>$" contains=asteriskTypeType
44 syn match asteriskTypeType "\<\(peer\|user\|friend\)\>" contained
45 syn match asteriskAuth "^\zsauth\s*=\ze\s*\<\(md5\|rsa\|plaintext\)\>$" contains=asteriskAuthType
46 syn match asteriskAuthType "\<\(md5\|rsa\|plaintext\)\>"
47 syn match asteriskAuth "^\zs\(secret\|inkeys\|outkey\)\s*=\ze.*$"
48 syn match asteriskAuth "^\(permit\|deny\)\s*=\s*\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\s*$" contains=asteriskIPRange
49 syn match asteriskIPRange "\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}/\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}" contained
50 syn match asteriskIP "\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}" contained
51 syn match asteriskHostname "[[:alnum:]][[:alnum:]\-\.]*\.[[:alpha:]]{2,10}" contained
52 syn match asteriskPort "\d\{1,5}" contained
53 syn match asteriskSetting "^bindaddr\s*=\s*\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}$" contains=asteriskIP
54 syn match asteriskSetting "^port\s*=\s*\d\{1,5}\s*$" contains=asteriskPort
55 syn match asteriskSetting "^host\s*=\s*\(dynamic\|\(\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)\|\([[:alnum:]][[:alnum:]\-\.]*\.[[:alpha:]]{2,10}\)\)" contains=asteriskIP,asteriskHostname
57 " Define the default highlighting.
58 " For version 5.7 and earlier: only when not done already
59 " For version 5.8 and later: only when an item doesn't have highlighting yet
60 if version >= 508 || !exists("did_conf_syntax_inits")
62 let did_conf_syntax_inits = 1
63 command -nargs=+ HiLink hi link <args>
65 command -nargs=+ HiLink hi def link <args>
68 HiLink asteriskComment Comment
69 HiLink asteriskExten String
70 HiLink asteriskContext Preproc
71 HiLink asteriskPattern Type
72 HiLink asteriskApp Statement
73 HiLink asteriskInclude Preproc
74 HiLink asteriskIncludeBad Error
75 HiLink asteriskPriority Preproc
76 HiLink asteriskLabel Type
77 HiLink asteriskVar String
78 HiLink asteriskVarLen Function
79 HiLink asteriskExp Type
80 HiLink asteriskCodecsPermit Preproc
81 HiLink asteriskCodecs String
82 HiLink asteriskType Statement
83 HiLink asteriskTypeType Type
84 HiLink asteriskAuth String
85 HiLink asteriskAuthType Type
86 HiLink asteriskIPRange Identifier
87 HiLink asteriskIP Identifier
88 HiLink asteriskPort Identifier
89 HiLink asteriskHostname Identifier
90 HiLink asteriskSetting Statement
91 HiLink asteriskError Error
94 let b:current_syntax = "asterisk"