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

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