xref: /vim-8.2.3635/runtime/syntax/resolv.vim (revision b17893aa)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language: resolver configuration file
3e6ae6225SBram Moolenaar" Maintainer: Radu Dineiu <[email protected]>
4e6ae6225SBram Moolenaar" URL: https://raw.github.com/rid9/vim-resolv/master/resolv.vim
5*b17893aaSBram Moolenaar" Last Change: 2020 Mar 10
6*b17893aaSBram Moolenaar" Version: 1.4
7e6ae6225SBram Moolenaar"
8e6ae6225SBram Moolenaar" Credits:
9e6ae6225SBram Moolenaar"   David Necas (Yeti) <[email protected]>
10e6ae6225SBram Moolenaar"   Stefano Zacchiroli <[email protected]>
11bc93cebbSBram Moolenaar"   DJ Lucas <[email protected]>
12*b17893aaSBram Moolenaar"
13*b17893aaSBram Moolenaar" Changelog:
14*b17893aaSBram Moolenaar"   - 1.4: Added IPv6 support for sortlist.
15*b17893aaSBram Moolenaar"   - 1.3: Added IPv6 support for IPv4 dot-decimal notation.
16*b17893aaSBram Moolenaar"   - 1.2: Added new options.
17*b17893aaSBram Moolenaar"   - 1.1: Added IPv6 support.
18071d4279SBram Moolenaar
1989bcfda6SBram Moolenaar" quit when a syntax file was already loaded
2089bcfda6SBram Moolenaarif exists("b:current_syntax")
21071d4279SBram Moolenaar	finish
22071d4279SBram Moolenaarendif
23071d4279SBram Moolenaar
24071d4279SBram Moolenaar" Errors, comments and operators
25071d4279SBram Moolenaarsyn match resolvError /./
26e6ae6225SBram Moolenaarsyn match resolvComment /\s*[#;].*$/
27e6ae6225SBram Moolenaarsyn match resolvOperator /[\/:]/ contained
28071d4279SBram Moolenaar
29071d4279SBram Moolenaar" IP
30071d4279SBram Moolenaarsyn cluster resolvIPCluster contains=resolvIPError,resolvIPSpecial
31e6ae6225SBram Moolenaarsyn match resolvIPError /\%(\d\{4,}\|25[6-9]\|2[6-9]\d\|[3-9]\d\{2}\)[\.0-9]*/ contained
32071d4279SBram Moolenaarsyn match resolvIPSpecial /\%(127\.\d\{1,3}\.\d\{1,3}\.\d\{1,3}\)/ contained
33071d4279SBram Moolenaar
34071d4279SBram Moolenaar" General
35071d4279SBram Moolenaarsyn match resolvIP contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}/ contains=@resolvIPCluster
36071d4279SBram Moolenaarsyn match resolvIPNetmask contained /\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?/ contains=resolvOperator,@resolvIPCluster
37e6ae6225SBram Moolenaarsyn match resolvHostname contained /\w\{-}\.[-0-9A-Za-z_\.]*/
38071d4279SBram Moolenaar
39*b17893aaSBram Moolenaar" Nameserver IPv4
40b21e5843SBram Moolenaarsyn match resolvIPNameserver contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\s\|$\)\)\+/ contains=@resolvIPCluster
41*b17893aaSBram Moolenaar
42*b17893aaSBram Moolenaar" Nameserver IPv6
43*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{6}\%(\x\{1,4}:\x\{1,4}\)\>/
44*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\s\@<=::\%(\x\{1,4}:\)\{,6}\x\{1,4}\>/
45*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\s\@<=::\%(\x\{1,4}:\)\{,5}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
46*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{1}:\%(\x\{1,4}:\)\{,5}\x\{1,4}\>/
47*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{1}:\%(\x\{1,4}:\)\{,4}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
48*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{2}:\%(\x\{1,4}:\)\{,4}\x\{1,4}\>/
49*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{2}:\%(\x\{1,4}:\)\{,3}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
50*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{3}:\%(\x\{1,4}:\)\{,3}\x\{1,4}\>/
51*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{3}:\%(\x\{1,4}:\)\{,2}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
52*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{4}:\%(\x\{1,4}:\)\{,2}\x\{1,4}\>/
53*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{4}:\%(\x\{1,4}:\)\{,1}\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
54*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{5}:\%(\d\{1,4}\.\)\{3}\d\{1,4}\>/
55*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{6}:\x\{1,4}\>/
56*b17893aaSBram Moolenaarsyn match resolvIPNameserver contained /\<\%(\x\{1,4}:\)\{1,7}:\%(\s\|;\|$\)\@=/
57*b17893aaSBram Moolenaar
58*b17893aaSBram Moolenaar" Search hostname
59b21e5843SBram Moolenaarsyn match resolvHostnameSearch contained /\%(\%([-0-9A-Za-z_]\+\.\)*[-0-9A-Za-z_]\+\.\?\%(\s\|$\)\)\+/
60*b17893aaSBram Moolenaar
61*b17893aaSBram Moolenaar" Sortlist IPv4
62b21e5843SBram Moolenaarsyn match resolvIPNetmaskSortList contained /\%(\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\%(\%(\d\{1,4}\.\)\{,3}\d\{1,4}\)\)\?\%(\s\|$\)\)\+/ contains=resolvOperator,@resolvIPCluster
63071d4279SBram Moolenaar
64*b17893aaSBram Moolenaar" Sortlist IPv6
65*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{6}\%(\x\{1,4}:\x\{1,4}\)\%(\/\d\{1,3}\)\?\>/
66*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\s\@<=::\%(\x\{1,4}:\)\{,6}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
67*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\s\@<=::\%(\x\{1,4}:\)\{,5}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
68*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{1}:\%(\x\{1,4}:\)\{,5}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
69*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{1}:\%(\x\{1,4}:\)\{,4}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
70*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{2}:\%(\x\{1,4}:\)\{,4}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
71*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{2}:\%(\x\{1,4}:\)\{,3}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
72*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{3}:\%(\x\{1,4}:\)\{,3}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
73*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{3}:\%(\x\{1,4}:\)\{,2}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
74*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{4}:\%(\x\{1,4}:\)\{,2}\x\{1,4}\%(\/\d\{1,3}\)\?\>/
75*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{4}:\%(\x\{1,4}:\)\{,1}\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
76*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{5}:\%(\d\{1,4}\.\)\{3}\d\{1,4}\%(\/\d\{1,3}\)\?\>/
77*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{6}:\x\{1,4}\%(\/\d\{1,3}\)\?\>/
78*b17893aaSBram Moolenaarsyn match resolvIPNetmaskSortList contained /\<\%(\x\{1,4}:\)\{1,7}:\%(\s\|;\|$\)\@=\%(\/\d\{1,3}\)\?/
79*b17893aaSBram Moolenaar
80071d4279SBram Moolenaar" Identifiers
81b21e5843SBram Moolenaarsyn match resolvNameserver /^\s*nameserver\>/ nextgroup=resolvIPNameserver skipwhite
82b21e5843SBram Moolenaarsyn match resolvLwserver /^\s*lwserver\>/ nextgroup=resolvIPNameserver skipwhite
831aeaf8c0SBram Moolenaarsyn match resolvDomain /^\s*domain\>/ nextgroup=resolvHostname skipwhite
84b21e5843SBram Moolenaarsyn match resolvSearch /^\s*search\>/ nextgroup=resolvHostnameSearch skipwhite
85b21e5843SBram Moolenaarsyn match resolvSortList /^\s*sortlist\>/ nextgroup=resolvIPNetmaskSortList skipwhite
86b21e5843SBram Moolenaarsyn match resolvOptions /^\s*options\>/ nextgroup=resolvOption skipwhite
87071d4279SBram Moolenaar
88071d4279SBram Moolenaar" Options
89*b17893aaSBram Moolenaarsyn match resolvOption /\<\%(debug\|no_tld_query\|no-tld-query\|rotate\|no-check-names\|inet6\|ip6-bytestring\|\%(no-\)\?ip6-dotint\|edns0\|single-request\%(-reopen\)\?\|use-vc\)\>/ contained nextgroup=resolvOption skipwhite
90b21e5843SBram Moolenaarsyn match resolvOption /\<\%(ndots\|timeout\|attempts\):\d\+\>/ contained contains=resolvOperator nextgroup=resolvOption skipwhite
91071d4279SBram Moolenaar
92071d4279SBram Moolenaar" Additional errors
93071d4279SBram Moolenaarsyn match resolvError /^search .\{257,}/
94071d4279SBram Moolenaar
95f37506f6SBram Moolenaarhi def link resolvIP Number
96f37506f6SBram Moolenaarhi def link resolvIPNetmask Number
97f37506f6SBram Moolenaarhi def link resolvHostname String
98f37506f6SBram Moolenaarhi def link resolvOption String
99071d4279SBram Moolenaar
100f37506f6SBram Moolenaarhi def link resolvIPNameserver Number
101f37506f6SBram Moolenaarhi def link resolvHostnameSearch String
102f37506f6SBram Moolenaarhi def link resolvIPNetmaskSortList Number
103071d4279SBram Moolenaar
104f37506f6SBram Moolenaarhi def link resolvNameServer Identifier
105f37506f6SBram Moolenaarhi def link resolvLwserver Identifier
106f37506f6SBram Moolenaarhi def link resolvDomain Identifier
107f37506f6SBram Moolenaarhi def link resolvSearch Identifier
108f37506f6SBram Moolenaarhi def link resolvSortList Identifier
109f37506f6SBram Moolenaarhi def link resolvOptions Identifier
110071d4279SBram Moolenaar
111f37506f6SBram Moolenaarhi def link resolvComment Comment
112f37506f6SBram Moolenaarhi def link resolvOperator Operator
113f37506f6SBram Moolenaarhi def link resolvError Error
114f37506f6SBram Moolenaarhi def link resolvIPError Error
115f37506f6SBram Moolenaarhi def link resolvIPSpecial Special
116071d4279SBram Moolenaar
117071d4279SBram Moolenaarlet b:current_syntax = "resolv"
118071d4279SBram Moolenaar
119071d4279SBram Moolenaar" vim: ts=8 ft=vim
120