xref: /vim-8.2.3635/runtime/syntax/asterisk.vim (revision 89bcfda6)
1" Vim syntax file
2" Language:	Asterisk config file
3" Maintainer: 	Jean Aunis <[email protected]>
4" Previous Maintainer:	brc007
5" Updated for 1.2 by Tilghman Lesher (Corydon76)
6" Last Change:	2015 Feb 27
7" version 0.4
8
9" quit when a syntax file was already loaded
10if exists("b:current_syntax")
11  finish
12endif
13
14syn sync clear
15syn sync fromstart
16
17syn keyword     asteriskTodo    TODO contained
18syn match       asteriskComment         ";.*" contains=asteriskTodo
19syn match       asteriskContext         "\[.\{-}\]"
20syn match       asteriskExten           "^\s*\zsexten\s*=>\?\s*[^,]\+\ze," contains=asteriskPattern nextgroup=asteriskPriority
21syn match       asteriskExten           "^\s*\zssame\s*=>\?\s*\ze" nextgroup=asteriskPriority
22syn match       asteriskExten           "^\s*\(register\|channel\|ignorepat\|include\|\(no\)\?load\)\s*=>\?"
23syn match       asteriskPattern         "_\(\[[[:alnum:]#*\-]\+\]\|[[:alnum:]#*]\)*\.\?" contained
24syn match       asteriskPattern         "[^A-Za-z0-9,]\zs[[:alnum:]#*]\+\ze" contained
25syn match       asteriskApp             ",\zs[a-zA-Z]\+\ze$"
26syn match       asteriskApp             ",\zs[a-zA-Z]\+\ze("
27" Digits plus oldlabel (newlabel)
28syn match       asteriskPriority        "\zs[[:digit:]]\+\(+[[:alpha:]][[:alnum:]_]*\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel
29" oldlabel plus digits (newlabel)
30syn match       asteriskPriority        "\zs[[:alpha:]][[:alnum:]_]*+[[:digit:]]\+\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel
31" s or n plus digits (newlabel)
32syn match       asteriskPriority        "\zs[sn]\(+[[:digit:]]\+\)\?\(([[:alpha:]][[:alnum:]_]*)\)\?\ze," contains=asteriskLabel
33syn match       asteriskLabel           "(\zs[[:alpha:]][[:alnum:]]*\ze)" contained
34syn match       asteriskError           "^\s*#\s*[[:alnum:]]*"
35syn match       asteriskInclude         "^\s*#\s*\(include\|exec\)\s.*"
36syn match       asteriskVar             "\${_\{0,2}[[:alpha:]][[:alnum:]_]*\(:-\?[[:digit:]]\+\(:[[:digit:]]\+\)\?\)\?}"
37syn match       asteriskVar             "_\{0,2}[[:alpha:]][[:alnum:]_]*\ze="
38syn match       asteriskVarLen          "\${_\{0,2}[[:alpha:]][[:alnum:]_]*(.*)}" contains=asteriskVar,asteriskVarLen,asteriskExp
39syn match       asteriskVarLen          "(\zs[[:alpha:]][[:alnum:]_]*(.\{-})\ze=" contains=asteriskVar,asteriskVarLen,asteriskExp
40syn match       asteriskExp             "\$\[.\{-}\]" contains=asteriskVar,asteriskVarLen,asteriskExp
41syn match       asteriskCodecsPermit    "^\s*\(allow\|disallow\)\s*=\s*.*$" contains=asteriskCodecs
42syn match       asteriskCodecs          "\(g723\|gsm\|ulaw\|alaw\|g726\|adpcm\|slin\|lpc10\|g729\|speex\|ilbc\|all\s*$\)"
43syn match       asteriskError           "^\(type\|auth\|permit\|deny\|bindaddr\|host\)\s*=.*$"
44syn match       asteriskType            "^\zstype=\ze\<\(peer\|user\|friend\)\>$" contains=asteriskTypeType
45syn match       asteriskTypeType        "\<\(peer\|user\|friend\)\>" contained
46syn match       asteriskAuth            "^\zsauth\s*=\ze\s*\<\(md5\|rsa\|plaintext\)\>$" contains=asteriskAuthType
47syn match       asteriskAuthType        "\<\(md5\|rsa\|plaintext\)\>"
48syn match       asteriskAuth            "^\zs\(secret\|inkeys\|outkey\)\s*=\ze.*$"
49syn 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
50syn 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
51syn match       asteriskIP              "\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}" contained
52syn match       asteriskHostname        "[[:alnum:]][[:alnum:]\-\.]*\.[[:alpha:]]{2,10}" contained
53syn match       asteriskPort            "\d\{1,5}" contained
54syn match       asteriskSetting         "^bindaddr\s*=\s*\d\{1,3}\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}$" contains=asteriskIP
55syn match       asteriskSetting         "^port\s*=\s*\d\{1,5}\s*$" contains=asteriskPort
56syn 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
58" Define the default highlighting.
59" Only when an item doesn't have highlighting yet
60command -nargs=+ HiLink hi def link <args>
61
62HiLink        asteriskComment		Comment
63HiLink        asteriskExten		String
64HiLink        asteriskContext         Preproc
65HiLink        asteriskPattern         Type
66HiLink        asteriskApp             Statement
67HiLink        asteriskInclude         Preproc
68HiLink        asteriskIncludeBad	Error
69HiLink        asteriskPriority        Preproc
70HiLink        asteriskLabel           Type
71HiLink        asteriskVar             String
72HiLink        asteriskVarLen          Function
73HiLink        asteriskExp             Type
74HiLink        asteriskCodecsPermit    Preproc
75HiLink        asteriskCodecs          String
76HiLink        asteriskType            Statement
77HiLink        asteriskTypeType        Type
78HiLink        asteriskAuth            String
79HiLink        asteriskAuthType        Type
80HiLink        asteriskIPRange         Identifier
81HiLink        asteriskIP              Identifier
82HiLink        asteriskPort            Identifier
83HiLink        asteriskHostname        Identifier
84HiLink        asteriskSetting         Statement
85HiLink        asteriskError           Error
86delcommand HiLink
87
88let b:current_syntax = "asterisk"
89" vim: ts=8 sw=2
90
91