Mercurial > hg > RemoteEditor > vim7
comparison runtime/syntax/tads.vim @ 0:76efa0be13f1
Initial revision
author | atsuki |
---|---|
date | Sat, 10 Nov 2007 15:07:22 +0900 |
parents | |
children | e170173ecb68 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:76efa0be13f1 |
---|---|
1 " Vim syntax file | |
2 " Language: TADS | |
3 " Maintainer: Amir Karger <karger@post.harvard.edu> | |
4 " $Date$ | |
5 " $Revision$ | |
6 " Stolen from: Bram Moolenaar's C language file | |
7 " Newest version at: http://www.hec.utah.edu/~karger/vim/syntax/tads.vim | |
8 " History info at the bottom of the file | |
9 | |
10 " TODO lots more keywords | |
11 " global, self, etc. are special *objects*, not functions. They should | |
12 " probably be a different color than the special functions | |
13 " Actually, should cvtstr etc. be functions?! (change tadsFunction) | |
14 " Make global etc. into Identifiers, since we don't have regular variables? | |
15 | |
16 " For version 5.x: Clear all syntax items | |
17 " For version 6.x: Quit when a syntax file was already loaded | |
18 if version < 600 | |
19 syntax clear | |
20 elseif exists("b:current_syntax") | |
21 finish | |
22 endif | |
23 | |
24 " A bunch of useful keywords | |
25 syn keyword tadsStatement goto break return continue pass | |
26 syn keyword tadsLabel case default | |
27 syn keyword tadsConditional if else switch | |
28 syn keyword tadsRepeat while for do | |
29 syn keyword tadsStorageClass local compoundWord formatstring specialWords | |
30 syn keyword tadsBoolean nil true | |
31 | |
32 " TADS keywords | |
33 syn keyword tadsKeyword replace modify | |
34 syn keyword tadsKeyword global self inherited | |
35 " builtin functions | |
36 syn keyword tadsKeyword cvtstr cvtnum caps lower upper substr | |
37 syn keyword tadsKeyword say length | |
38 syn keyword tadsKeyword setit setscore | |
39 syn keyword tadsKeyword datatype proptype | |
40 syn keyword tadsKeyword car cdr | |
41 syn keyword tadsKeyword defined isclass | |
42 syn keyword tadsKeyword find firstobj nextobj | |
43 syn keyword tadsKeyword getarg argcount | |
44 syn keyword tadsKeyword input yorn askfile | |
45 syn keyword tadsKeyword rand randomize | |
46 syn keyword tadsKeyword restart restore quit save undo | |
47 syn keyword tadsException abort exit exitobj | |
48 | |
49 syn keyword tadsTodo contained TODO FIXME XXX | |
50 | |
51 " String and Character constants | |
52 " Highlight special characters (those which have a backslash) differently | |
53 syn match tadsSpecial contained "\\." | |
54 syn region tadsDoubleString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tadsSpecial,tadsEmbedded | |
55 syn region tadsSingleString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tadsSpecial | |
56 " Embedded expressions in strings | |
57 syn region tadsEmbedded contained start="<<" end=">>" contains=tadsKeyword | |
58 | |
59 " TADS doesn't have \xxx, right? | |
60 "syn match cSpecial contained "\\[0-7][0-7][0-7]\=\|\\." | |
61 "syn match cSpecialCharacter "'\\[0-7][0-7]'" | |
62 "syn match cSpecialCharacter "'\\[0-7][0-7][0-7]'" | |
63 | |
64 "catch errors caused by wrong parenthesis | |
65 "syn region cParen transparent start='(' end=')' contains=ALLBUT,cParenError,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel | |
66 "syn match cParenError ")" | |
67 "syn match cInParen contained "[{}]" | |
68 syn region tadsBrace transparent start='{' end='}' contains=ALLBUT,tadsBraceError,tadsIncluded,tadsSpecial,tadsTodo | |
69 syn match tadsBraceError "}" | |
70 | |
71 "integer number (TADS has no floating point numbers) | |
72 syn case ignore | |
73 syn match tadsNumber "\<[0-9]\+\>" | |
74 "hex number | |
75 syn match tadsNumber "\<0x[0-9a-f]\+\>" | |
76 syn match tadsIdentifier "\<[a-z][a-z0-9_$]*\>" | |
77 syn case match | |
78 " flag an octal number with wrong digits | |
79 syn match tadsOctalError "\<0[0-7]*[89]" | |
80 | |
81 " Removed complicated c_comment_strings | |
82 syn region tadsComment start="/\*" end="\*/" contains=tadsTodo | |
83 syn match tadsComment "//.*" contains=tadsTodo | |
84 syntax match tadsCommentError "\*/" | |
85 | |
86 syn region tadsPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tadsComment,tadsString,tadsNumber,tadsCommentError | |
87 syn region tadsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ | |
88 syn match tadsIncluded contained "<[^>]*>" | |
89 syn match tadsInclude "^\s*#\s*include\>\s*["<]" contains=tadsIncluded | |
90 syn region tadsDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInBrace,tadsIdentifier | |
91 | |
92 syn region tadsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInParen,tadsIdentifier | |
93 | |
94 " Highlight User Labels | |
95 " TODO labels for gotos? | |
96 "syn region cMulti transparent start='?' end=':' contains=ALLBUT,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel,cBitField | |
97 " Avoid matching foo::bar() in C++ by requiring that the next char is not ':' | |
98 "syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel | |
99 "syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel | |
100 "syn match cUserCont "^\s*\I\i*\s*:[^:]" contains=cUserLabel | |
101 "syn match cUserCont ";\s*\I\i*\s*:[^:]" contains=cUserLabel | |
102 | |
103 "syn match cUserLabel "\I\i*" contained | |
104 | |
105 " identifier: class-name [, class-name [...]] [property-list] ; | |
106 " Don't highlight comment in class def | |
107 syn match tadsClassDef "\<class\>[^/]*" contains=tadsObjectDef,tadsClass | |
108 syn match tadsClass contained "\<class\>" | |
109 syn match tadsObjectDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*[a-zA-Z0-9_$]\+\(\s*,\s*[a-zA-Z][a-zA-Z0-9_$]*\)*\(\s*;\)\=" | |
110 syn keyword tadsFunction contained function | |
111 syn match tadsFunctionDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*function[^{]*" contains=tadsFunction | |
112 "syn region tadsObject transparent start = '[a-zA-Z][\i$]\s*:\s*' end=";" contains=tadsBrace,tadsObjectDef | |
113 | |
114 " How far back do we go to find matching groups | |
115 if !exists("tads_minlines") | |
116 let tads_minlines = 15 | |
117 endif | |
118 exec "syn sync ccomment tadsComment minlines=" . tads_minlines | |
119 if !exists("tads_sync_dist") | |
120 let tads_sync_dist = 100 | |
121 endif | |
122 execute "syn sync maxlines=" . tads_sync_dist | |
123 | |
124 " Define the default highlighting. | |
125 " For version 5.7 and earlier: only when not done already | |
126 " For version 5.8 and later: only when an item doesn't have highlighting yet | |
127 if version >= 508 || !exists("did_tads_syn_inits") | |
128 if version < 508 | |
129 let did_tads_syn_inits = 1 | |
130 command -nargs=+ HiLink hi link <args> | |
131 else | |
132 command -nargs=+ HiLink hi def link <args> | |
133 endif | |
134 | |
135 " The default methods for highlighting. Can be overridden later | |
136 HiLink tadsFunctionDef Function | |
137 HiLink tadsFunction Structure | |
138 HiLink tadsClass Structure | |
139 HiLink tadsClassDef Identifier | |
140 HiLink tadsObjectDef Identifier | |
141 " no highlight for tadsEmbedded, so it prints as normal text w/in the string | |
142 | |
143 HiLink tadsOperator Operator | |
144 HiLink tadsStructure Structure | |
145 HiLink tadsTodo Todo | |
146 HiLink tadsLabel Label | |
147 HiLink tadsConditional Conditional | |
148 HiLink tadsRepeat Repeat | |
149 HiLink tadsException Exception | |
150 HiLink tadsStatement Statement | |
151 HiLink tadsStorageClass StorageClass | |
152 HiLink tadsKeyWord Keyword | |
153 HiLink tadsSpecial SpecialChar | |
154 HiLink tadsNumber Number | |
155 HiLink tadsBoolean Boolean | |
156 HiLink tadsDoubleString tadsString | |
157 HiLink tadsSingleString tadsString | |
158 | |
159 HiLink tadsOctalError tadsError | |
160 HiLink tadsCommentError tadsError | |
161 HiLink tadsBraceError tadsError | |
162 HiLink tadsInBrace tadsError | |
163 HiLink tadsError Error | |
164 | |
165 HiLink tadsInclude Include | |
166 HiLink tadsPreProc PreProc | |
167 HiLink tadsDefine Macro | |
168 HiLink tadsIncluded tadsString | |
169 HiLink tadsPreCondit PreCondit | |
170 | |
171 HiLink tadsString String | |
172 HiLink tadsComment Comment | |
173 | |
174 delcommand HiLink | |
175 endif | |
176 | |
177 | |
178 let b:current_syntax = "tads" | |
179 | |
180 " Changes: | |
181 " 11/18/99 Added a bunch of TADS functions, tadsException | |
182 " 10/22/99 Misspelled Moolenaar (sorry!), c_minlines to tads_minlines | |
183 " | |
184 " vim: ts=8 |