annotate runtime/syntax/dtd.vim @ 34:e170173ecb68 current-release

before ack base protocol.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 26 Nov 2008 15:02:10 +0900
parents 76efa0be13f1
children 67300faee616
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
1 " Vim syntax file
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
2 " Language: DTD (Document Type Definition for XML)
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
3 " Maintainer: Johannes Zellner <johannes@zellner.org>
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
4 " Author and previous maintainer:
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
5 " Daniel Amyot <damyot@site.uottawa.ca>
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
6 " Last Change: Tue, 27 Apr 2004 14:54:59 CEST
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
7 " Filenames: *.dtd
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
8 "
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
9 " REFERENCES:
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
10 " http://www.w3.org/TR/html40/
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
11 " http://www.w3.org/TR/NOTE-html-970421
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
12 "
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
13 " TODO:
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
14 " - improve synchronizing.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
15
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
16 if version < 600
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
17 syntax clear
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
18 let __dtd_cpo_save__ = &cpo
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
19 set cpo&
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
20 else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
21 if exists("b:current_syntax")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
22 finish
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
23 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
24 let s:dtd_cpo_save = &cpo
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
25 set cpo&vim
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
26 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
27
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
28 if !exists("dtd_ignore_case")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
29 " I prefer having the case takes into consideration.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
30 syn case match
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
31 else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
32 syn case ignore
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
33 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
34
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
35
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
36 " the following line makes the opening <! and
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
37 " closing > highlighted using 'dtdFunction'.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
38 "
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
39 " PROVIDES: @dtdTagHook
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
40 "
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
41 syn region dtdTag matchgroup=dtdFunction
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
42 \ start=+<!+ end=+>+ matchgroup=NONE
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
43 \ contains=dtdTag,dtdTagName,dtdError,dtdComment,dtdString,dtdAttrType,dtdAttrDef,dtdEnum,dtdParamEntityInst,dtdParamEntityDecl,dtdCard,@dtdTagHook
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
44
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
45 if !exists("dtd_no_tag_errors")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
46 " mark everything as an error which starts with a <!
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
47 " and is not overridden later. If this is annoying,
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
48 " it can be switched off by setting the variable
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
49 " dtd_no_tag_errors.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
50 syn region dtdError contained start=+<!+lc=2 end=+>+
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
51 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
52
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
53 " if this is a html like comment hightlight also
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
54 " the opening <! and the closing > as Comment.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
55 syn region dtdComment start=+<![ \t]*--+ end=+-->+ contains=dtdTodo,@Spell
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
56
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
57
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
58 " proper DTD comment
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
59 syn region dtdComment contained start=+--+ end=+--+ contains=dtdTodo,@Spell
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
60
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
61
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
62 " Start tags (keywords). This is contained in dtdFunction.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
63 " Note that everything not contained here will be marked
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
64 " as error.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
65 syn match dtdTagName contained +<!\(ATTLIST\|DOCTYPE\|ELEMENT\|ENTITY\|NOTATION\|SHORTREF\|USEMAP\|\[\)+lc=2,hs=s+2
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
66
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
67
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
68 " wildcards and operators
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
69 syn match dtdCard contained "|"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
70 syn match dtdCard contained ","
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
71 " evenutally overridden by dtdEntity
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
72 syn match dtdCard contained "&"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
73 syn match dtdCard contained "?"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
74 syn match dtdCard contained "\*"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
75 syn match dtdCard contained "+"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
76
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
77 " ...and finally, special cases.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
78 syn match dtdCard "ANY"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
79 syn match dtdCard "EMPTY"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
80
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
81 if !exists("dtd_no_param_entities")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
82
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
83 " highlight parameter entity declarations
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
84 " and instances. Note that the closing `;'
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
85 " is optional.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
86
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
87 " instances
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
88 syn region dtdParamEntityInst oneline matchgroup=dtdParamEntityPunct
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
89 \ start="%[-_a-zA-Z0-9.]\+"he=s+1,rs=s+1
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
90 \ skip=+[-_a-zA-Z0-9.]+
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
91 \ end=";\|\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
92 \ matchgroup=NONE contains=dtdParamEntityPunct
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
93 syn match dtdParamEntityPunct contained "\."
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
94
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
95 " declarations
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
96 " syn region dtdParamEntityDecl oneline matchgroup=dtdParamEntityDPunct start=+<!ENTITY % +lc=8 skip=+[-_a-zA-Z0-9.]+ matchgroup=NONE end="\>" contains=dtdParamEntityDPunct
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
97 syn match dtdParamEntityDecl +<!ENTITY % [-_a-zA-Z0-9.]*+lc=8 contains=dtdParamEntityDPunct
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
98 syn match dtdParamEntityDPunct contained "%\|\."
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
99
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
100 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
101
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
102 " &entities; compare with xml
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
103 syn match dtdEntity "&[^; \t]*;" contains=dtdEntityPunct
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
104 syn match dtdEntityPunct contained "[&.;]"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
105
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
106 " Strings are between quotes
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
107 syn region dtdString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=dtdAttrDef,dtdAttrType,dtdEnum,dtdParamEntityInst,dtdEntity,dtdCard
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
108 syn region dtdString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=dtdAttrDef,dtdAttrType,dtdEnum,dtdParamEntityInst,dtdEntity,dtdCard
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
109
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
110 " Enumeration of elements or data between parenthesis
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
111 "
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
112 " PROVIDES: @dtdEnumHook
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
113 "
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
114 syn region dtdEnum matchgroup=dtdType start="(" end=")" matchgroup=NONE contains=dtdEnum,dtdParamEntityInst,dtdCard,@dtdEnumHook
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
115
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
116 "Attribute types
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
117 syn keyword dtdAttrType NMTOKEN ENTITIES NMTOKENS ID CDATA
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
118 syn keyword dtdAttrType IDREF IDREFS
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
119 " ENTITY has to treated special for not overriding <!ENTITY
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
120 syn match dtdAttrType +[^!]\<ENTITY+
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
121
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
122 "Attribute Definitions
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
123 syn match dtdAttrDef "#REQUIRED"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
124 syn match dtdAttrDef "#IMPLIED"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
125 syn match dtdAttrDef "#FIXED"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
126
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
127 syn case match
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
128 " define some common keywords to mark TODO
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
129 " and important sections inside comments.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
130 syn keyword dtdTodo contained TODO FIXME XXX
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
131
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
132 syn sync lines=250
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
133
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
134 " Define the default highlighting.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
135 " For version 5.7 and earlier: only when not done already
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
136 " For version 5.8 and later: only when an item doesn't have highlighting yet
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
137 if version >= 508 || !exists("did_dtd_syn_inits")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
138 if version < 508
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
139 let did_dtd_syn_inits = 1
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
140 command -nargs=+ HiLink hi link <args>
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
141 else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
142 command -nargs=+ HiLink hi def link <args>
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
143 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
144
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
145 " The default highlighting.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
146 HiLink dtdFunction Function
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
147 HiLink dtdTag Normal
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
148 HiLink dtdType Type
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
149 HiLink dtdAttrType dtdType
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
150 HiLink dtdAttrDef dtdType
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
151 HiLink dtdConstant Constant
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
152 HiLink dtdString dtdConstant
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
153 HiLink dtdEnum dtdConstant
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
154 HiLink dtdCard dtdFunction
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
155
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
156 HiLink dtdEntity Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
157 HiLink dtdEntityPunct dtdType
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
158 HiLink dtdParamEntityInst dtdConstant
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
159 HiLink dtdParamEntityPunct dtdType
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
160 HiLink dtdParamEntityDecl dtdType
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
161 HiLink dtdParamEntityDPunct dtdComment
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
162
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
163 HiLink dtdComment Comment
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
164 HiLink dtdTagName Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
165 HiLink dtdError Error
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
166 HiLink dtdTodo Todo
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
167
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
168 delcommand HiLink
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
169 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
170
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
171 if version < 600
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
172 let &cpo = __dtd_cpo_save__
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
173 unlet __dtd_cpo_save__
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
174 else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
175 let &cpo = s:dtd_cpo_save
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
176 unlet s:dtd_cpo_save
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
177 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
178
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
179 let b:current_syntax = "dtd"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
180
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
181 " vim: ts=8