annotate runtime/syntax/eiffel.vim @ 0:76efa0be13f1

Initial revision
author atsuki
date Sat, 10 Nov 2007 15:07:22 +0900
parents
children 67300faee616
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
1 " Eiffel syntax file
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
2 " Language: Eiffel
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
3 " Maintainer: Reimer Behrends <behrends@cse.msu.edu>
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
4 " With much input from Jocelyn Fiat <fiat@eiffel.com>
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
5 " See http://www.cse.msu.edu/~behrends/vim/ for the most current version.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
6 " Last Change: 2001 May 09
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
7
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
8 " For version 5.x: Clear all syntax items
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
9 " For version 6.x: Quit when a syntax file was already loaded
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
10 if version < 600
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
11 syntax clear
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
12 elseif exists("b:current_syntax")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
13 finish
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
14 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
15
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
16 " Option handling
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
17
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
18 if exists("eiffel_ignore_case")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
19 syn case ignore
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
20 else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
21 syn case match
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
22 if exists("eiffel_pedantic") || exists("eiffel_strict")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
23 syn keyword eiffelError current void result precursor none
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
24 syn keyword eiffelError CURRENT VOID RESULT PRECURSOR None
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
25 syn keyword eiffelError TRUE FALSE
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
26 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
27 if exists("eiffel_pedantic")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
28 syn keyword eiffelError true false
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
29 syn match eiffelError "\<[a-z_]\+[A-Z][a-zA_Z_]*\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
30 syn match eiffelError "\<[A-Z][a-z_]*[A-Z][a-zA-Z_]*\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
31 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
32 if exists("eiffel_lower_case_predef")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
33 syn keyword eiffelPredefined current void result precursor
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
34 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
35 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
36
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
37 if exists("eiffel_hex_constants")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
38 syn match eiffelNumber "\d[0-9a-fA-F]*[xX]"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
39 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
40
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
41 " Keyword definitions
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
42
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
43 syn keyword eiffelTopStruct indexing feature creation inherit
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
44 syn match eiffelTopStruct "\<class\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
45 syn match eiffelKeyword "\<end\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
46 syn match eiffelTopStruct "^end\>\(\s*--\s\+class\s\+\<[A-Z][A-Z0-9_]*\>\)\=" contains=eiffelClassName
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
47 syn match eiffelBrackets "[[\]]"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
48 syn match eiffelBracketError "\]"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
49 syn region eiffelGeneric transparent matchgroup=eiffelBrackets start="\[" end="\]" contains=ALLBUT,eiffelBracketError,eiffelGenericDecl,eiffelStringError,eiffelStringEscape,eiffelGenericCreate,eiffelTopStruct
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
50 if exists("eiffel_ise")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
51 syn match eiffelCreate "\<create\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
52 syn match eiffelTopStruct contained "\<create\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
53 syn match eiffelGenericCreate contained "\<create\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
54 syn match eiffelTopStruct "^create\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
55 syn region eiffelGenericDecl transparent matchgroup=eiffelBrackets contained start="\[" end="\]" contains=ALLBUT,eiffelCreate,eiffelTopStruct,eiffelGeneric,eiffelBracketError,eiffelStringEscape,eiffelStringError,eiffelBrackets
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
56 syn region eiffelClassHeader start="^class\>" end="$" contains=ALLBUT,eiffelCreate,eiffelGenericCreate,eiffelGeneric,eiffelStringEscape,eiffelStringError,eiffelBrackets
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
57 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
58 syn keyword eiffelDeclaration is do once deferred unique local
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
59 syn keyword eiffelDeclaration Unique
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
60 syn keyword eiffelProperty expanded obsolete separate frozen
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
61 syn keyword eiffelProperty prefix infix
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
62 syn keyword eiffelInheritClause rename redefine undefine select export as
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
63 syn keyword eiffelAll all
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
64 syn keyword eiffelKeyword external alias
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
65 syn keyword eiffelStatement if else elseif inspect
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
66 syn keyword eiffelStatement when then
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
67 syn match eiffelAssertion "\<require\(\s\+else\)\=\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
68 syn match eiffelAssertion "\<ensure\(\s\+then\)\=\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
69 syn keyword eiffelAssertion check
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
70 syn keyword eiffelDebug debug
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
71 syn keyword eiffelStatement from until loop
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
72 syn keyword eiffelAssertion variant
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
73 syn match eiffelAssertion "\<invariant\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
74 syn match eiffelTopStruct "^invariant\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
75 syn keyword eiffelException rescue retry
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
76
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
77 syn keyword eiffelPredefined Current Void Result Precursor
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
78
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
79 " Operators
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
80 syn match eiffelOperator "\<and\(\s\+then\)\=\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
81 syn match eiffelOperator "\<or\(\s\+else\)\=\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
82 syn keyword eiffelOperator xor implies not
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
83 syn keyword eiffelOperator strip old
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
84 syn keyword eiffelOperator Strip
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
85 syn match eiffelOperator "\$"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
86 syn match eiffelCreation "!"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
87 syn match eiffelExport "[{}]"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
88 syn match eiffelArray "<<"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
89 syn match eiffelArray ">>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
90 syn match eiffelConstraint "->"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
91 syn match eiffelOperator "[@#|&][^ \e\t\b%]*"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
92
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
93 " Special classes
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
94 syn keyword eiffelAnchored like
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
95 syn keyword eiffelBitType BIT
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
96
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
97 " Constants
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
98 if !exists("eiffel_pedantic")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
99 syn keyword eiffelBool true false
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
100 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
101 syn keyword eiffelBool True False
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
102 syn region eiffelString start=+"+ skip=+%"+ end=+"+ contains=eiffelStringEscape,eiffelStringError
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
103 syn match eiffelStringEscape contained "%[^/]"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
104 syn match eiffelStringEscape contained "%/\d\+/"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
105 syn match eiffelStringEscape contained "^[ \t]*%"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
106 syn match eiffelStringEscape contained "%[ \t]*$"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
107 syn match eiffelStringError contained "%/[^0-9]"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
108 syn match eiffelStringError contained "%/\d\+[^0-9/]"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
109 syn match eiffelBadConstant "'\(%[^/]\|%/\d\+/\|[^'%]\)\+'"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
110 syn match eiffelBadConstant "''"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
111 syn match eiffelCharacter "'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=eiffelStringEscape
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
112 syn match eiffelNumber "-\=\<\d\+\(_\d\+\)*\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
113 syn match eiffelNumber "\<[01]\+[bB]\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
114 syn match eiffelNumber "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\="
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
115 syn match eiffelNumber "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\="
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
116 syn match eiffelComment "--.*" contains=eiffelTodo
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
117
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
118 syn case match
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
119
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
120 " Case sensitive stuff
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
121
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
122 syn keyword eiffelTodo contained TODO XXX FIXME
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
123 syn match eiffelClassName "\<[A-Z][A-Z0-9_]*\>"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
124
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
125 " Catch mismatched parentheses
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
126 syn match eiffelParenError ")"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
127 syn region eiffelParen transparent start="(" end=")" contains=ALLBUT,eiffelParenError,eiffelStringError,eiffelStringEscape
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
128
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
129 " Should suffice for even very long strings and expressions
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
130 syn sync lines=40
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
131
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
132 " Define the default highlighting.
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
133 " For version 5.7 and earlier: only when not done already
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
134 " For version 5.8 and later: only when an item doesn't have highlighting yet
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
135 if version >= 508 || !exists("did_eiffel_syntax_inits")
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
136 if version < 508
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
137 let did_eiffel_syntax_inits = 1
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
138 command -nargs=+ HiLink hi link <args>
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
139 else
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
140 command -nargs=+ HiLink hi def link <args>
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
141 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
142
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
143 HiLink eiffelKeyword Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
144 HiLink eiffelProperty Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
145 HiLink eiffelInheritClause Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
146 HiLink eiffelStatement Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
147 HiLink eiffelDeclaration Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
148 HiLink eiffelAssertion Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
149 HiLink eiffelDebug Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
150 HiLink eiffelException Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
151 HiLink eiffelGenericCreate Statement
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
152
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
153
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
154 HiLink eiffelTopStruct PreProc
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
155
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
156 HiLink eiffelAll Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
157 HiLink eiffelAnchored Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
158 HiLink eiffelBitType Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
159
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
160
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
161 HiLink eiffelBool Boolean
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
162 HiLink eiffelString String
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
163 HiLink eiffelCharacter Character
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
164 HiLink eiffelClassName Type
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
165 HiLink eiffelNumber Number
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
166
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
167 HiLink eiffelStringEscape Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
168
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
169 HiLink eiffelOperator Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
170 HiLink eiffelArray Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
171 HiLink eiffelExport Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
172 HiLink eiffelCreation Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
173 HiLink eiffelBrackets Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
174 HiLink eiffelGeneric Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
175 HiLink eiffelGenericDecl Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
176 HiLink eiffelConstraint Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
177 HiLink eiffelCreate Special
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
178
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
179 HiLink eiffelPredefined Constant
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
180
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
181 HiLink eiffelComment Comment
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
182
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
183 HiLink eiffelError Error
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
184 HiLink eiffelBadConstant Error
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
185 HiLink eiffelStringError Error
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
186 HiLink eiffelParenError Error
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
187 HiLink eiffelBracketError Error
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
188
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
189 HiLink eiffelTodo Todo
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
190
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
191 delcommand HiLink
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
192 endif
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
193
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
194 let b:current_syntax = "eiffel"
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
195
76efa0be13f1 Initial revision
atsuki
parents:
diff changeset
196 " vim: ts=8