blob: 6faf5960eb5e8533ba847735ac9940d2c2b84030 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2"
3" Language: Logtalk
4" Maintainer: Paulo Moura <pmoura@logtalk.org>
Bram Moolenaar362e1a32006-03-06 23:29:24 +00005" Last Change: February 24, 2006
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7
8" Quit when a syntax file was already loaded:
9
10if version < 600
11 syntax clear
12elseif exists("b:current_syntax")
13 finish
14endif
15
16
17" Logtalk is case sensitive:
18
19syn case match
20
21
22" Logtalk variables
23
24syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>"
25
26
27" Logtalk clause functor
28
29syn match logtalkOperator ":-"
30
31
32" Logtalk quoted atoms and strings
33
34syn region logtalkString start=+"+ skip=+\\"+ end=+"+
35syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+
36
37
38" Logtalk message sending operators
39
40syn match logtalkOperator "::"
41syn match logtalkOperator "\^\^"
42
43
44" Logtalk external call
45
46syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL
47
48
49" Logtalk opening entity directives
50
Bram Moolenaar45eeb132005-06-06 21:59:07 +000051syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
52syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
53syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel
Bram Moolenaar071d4272004-06-13 20:20:40 +000054
55
56" Logtalk closing entity directives
57
Bram Moolenaar45eeb132005-06-06 21:59:07 +000058syn match logtalkCloseEntityDir ":- end_object\."
59syn match logtalkCloseEntityDir ":- end_protocol\."
60syn match logtalkCloseEntityDir ":- end_category\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000061
62
63" Logtalk entity relations
64
Bram Moolenaar45eeb132005-06-06 21:59:07 +000065syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
66syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
67syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
68syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
69syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000070
71
72" Logtalk directives
73
Bram Moolenaara0084652005-03-16 09:57:51 +000074syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar0e6830e2005-05-27 20:23:44 +000075syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000076syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
77syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000078syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
Bram Moolenaar071d4272004-06-13 20:20:40 +000079syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
80syn match logtalkDirTag ":- dynamic\."
81syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000082syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000083syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
84syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
85syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
86syn region logtalkDir matchgroup=logtalkDirTag start=":- metapredicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
87syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
88syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL
89syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
90
91
Bram Moolenaar362e1a32006-03-06 23:29:24 +000092" Module directives
93
94syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL
95syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL
96syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
97syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL
98
99
Bram Moolenaar071d4272004-06-13 20:20:40 +0000100" Logtalk built-in predicates
101
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000102syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000104syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000105
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000106syn match logtalkBuiltIn "\<extends_\(object\|protocol\)\ze("
107syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
108syn match logtalkBuiltIn "\<\(instantiates\|specializes\)_class\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000109
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000110syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000111syn match logtalkBuiltIn "\<current_event\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000112
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000113syn match logtalkBuiltIn "\<\(current\|set\)_logtalk_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000114
Bram Moolenaara0084652005-03-16 09:57:51 +0000115syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000116
Bram Moolenaara0084652005-03-16 09:57:51 +0000117syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000118
119
120" Logtalk built-in methods
121
122syn match logtalkBuiltInMethod "\<parameter\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000123syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000124syn match logtalkBuiltInMethod "\<this\ze("
125
126syn match logtalkBuiltInMethod "\<current_predicate\ze("
127syn match logtalkBuiltInMethod "\<predicate_property\ze("
128
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000129syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000130syn match logtalkBuiltInMethod "\<clause\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000131syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000132
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000133syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
134syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000135
136syn match logtalkBuiltInMethod "\<before\ze("
137syn match logtalkBuiltInMethod "\<after\ze("
138
Bram Moolenaara0084652005-03-16 09:57:51 +0000139syn match logtalkBuiltInMethod "\<expand_term\ze("
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000140syn match logtalkBuiltInMethod "\<term_expansion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000141syn match logtalkBuiltInMethod "\<phrase\ze("
142
143
144" Mode operators
145
146syn match logtalkOperator "?"
147syn match logtalkOperator "@"
148
149
150" Control constructs
151
152syn match logtalkKeyword "\<true\>"
153syn match logtalkKeyword "\<fail\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000154syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000155syn match logtalkOperator "!"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000156" syn match logtalkOperator ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000157syn match logtalkOperator ";"
158syn match logtalkOperator "-->"
159syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000160syn match logtalkKeyword "\<throw\ze("
161
162
163" Term unification
164
165syn match logtalkOperator "="
166syn match logtalkKeyword "\<unify_with_occurs_check\ze("
167syn match logtalkOperator "\\="
168
169
170" Term testing
171
172syn match logtalkKeyword "\<var\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000173syn match logtalkKeyword "\<atom\(ic\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000174syn match logtalkKeyword "\<integer\ze("
175syn match logtalkKeyword "\<float\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000176syn match logtalkKeyword "\<compound\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000177syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000178
179
180" Term comparison
181
182syn match logtalkOperator "@=<"
183syn match logtalkOperator "=="
184syn match logtalkOperator "\\=="
185syn match logtalkOperator "@<"
186syn match logtalkOperator "@>"
187syn match logtalkOperator "@>="
188
189
190" Term creation and decomposition
191
192syn match logtalkKeyword "\<functor\ze("
193syn match logtalkKeyword "\<arg\ze("
194syn match logtalkOperator "=\.\."
195syn match logtalkKeyword "\<copy_term\ze("
196
197
198" Arithemtic evaluation
199
Bram Moolenaara0084652005-03-16 09:57:51 +0000200syn match logtalkOperator "\<is\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000201
202
203" Arithemtic comparison
204
205syn match logtalkOperator "=:="
206syn match logtalkOperator "=\\="
207syn match logtalkOperator "<"
208syn match logtalkOperator "=<"
209syn match logtalkOperator ">"
210syn match logtalkOperator ">="
211
212
213" Stream selection and control
214
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000215syn match logtalkKeyword "\<\(current\|set\)_\(in\|out\)put\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000216syn match logtalkKeyword "\<open\ze("
217syn match logtalkKeyword "\<close\ze("
218syn match logtalkKeyword "\<flush_output\ze("
219syn match logtalkKeyword "\<flush_output\>"
220syn match logtalkKeyword "\<stream_property\ze("
221syn match logtalkKeyword "\<at_end_of_stream\ze("
222syn match logtalkKeyword "\<at_end_of_stream\>"
223syn match logtalkKeyword "\<set_stream_position\ze("
224
225
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000226" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000227
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000228syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000229syn match logtalkKeyword "\<nl\ze("
230syn match logtalkKeyword "\<nl\>"
231
232
Bram Moolenaar071d4272004-06-13 20:20:40 +0000233" Term input/output
234
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000235syn match logtalkKeyword "\<read\(_term\)\?\ze("
236syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
237syn match logtalkKeyword "\<\(current_\)\?op\ze("
238syn match logtalkKeyword "\<\(current\)\?char_conversion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000239
240
241" Logic and control
242
243syn match logtalkOperator "\\+"
244syn match logtalkKeyword "\<once\ze("
245syn match logtalkKeyword "\<repeat\>"
246
247
248" Atomic term processing
249
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000250syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000251syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000252syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000253syn match logtalkKeyword "\<number_\(c\(hars\|odes\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254
255
256" Implementation defined hooks functions
257
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000258syn match logtalkKeyword "\<\(current\|set\)_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000259syn match logtalkKeyword "\<halt\ze("
260syn match logtalkKeyword "\<halt\>"
261
262
263" Evaluable functors
264
265syn match logtalkOperator "+"
266syn match logtalkOperator "-"
267syn match logtalkOperator "\*"
268syn match logtalkOperator "//"
269syn match logtalkOperator "/"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000270syn match logtalkKeyword "\<r\(ound\|em\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271syn match logtalkKeyword "\<rem\>"
272syn match logtalkKeyword "\<mod\ze("
273syn match logtalkKeyword "\<mod\>"
274syn match logtalkKeyword "\<abs\ze("
275syn match logtalkKeyword "\<sign\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000276syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000277syn match logtalkKeyword "\<truncate\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000278syn match logtalkKeyword "\<ceiling\ze("
279
280
281" Other arithemtic functors
282
283syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000284syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000285syn match logtalkKeyword "\<cos\ze("
286syn match logtalkKeyword "\<atan\ze("
287syn match logtalkKeyword "\<exp\ze("
288syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000289
290
291" Bitwise functors
292
293syn match logtalkOperator ">>"
294syn match logtalkOperator "<<"
295syn match logtalkOperator "/\\"
296syn match logtalkOperator "\\/"
297syn match logtalkOperator "\\"
298
299
Bram Moolenaar071d4272004-06-13 20:20:40 +0000300" Logtalk list operator
301
302syn match logtalkOperator "|"
303
304
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000305" Logtalk numbers
306
307syn match logtalkNumber "\<\d\+\>"
308syn match logtalkNumber "\<\d\+\.\d\+\>"
309syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
310syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000311syn match logtalkNumber "\<0'.\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000312syn match logtalkNumber "\<0b[0-1]\+\>"
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000313syn match logtalkNumber "\<0o\o\+\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000314syn match logtalkNumber "\<0x\x\+\>"
315
316
317" Logtalk end-of-clause
318
319syn match logtalkOperator "\."
320
321
Bram Moolenaar071d4272004-06-13 20:20:40 +0000322" Logtalk comments
323
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000324syn region logtalkBlockComment start="/\*" end="\*/" fold
Bram Moolenaar071d4272004-06-13 20:20:40 +0000325syn match logtalkLineComment "%.*"
326
327
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000328" Logtalk entity folding
329
330syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
331syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
332syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
333
334
Bram Moolenaara0084652005-03-16 09:57:51 +0000335syn sync ccomment logtalkBlockComment maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +0000336
337
338" Define the default highlighting.
339" For version 5.7 and earlier: only when not done already
340" For version 5.8 and later: only when an item doesn't have highlighting yet
341
342if version >= 508 || !exists("did_logtalk_syn_inits")
343 if version < 508
344 let did_logtalk_syn_inits = 1
345 command -nargs=+ HiLink hi link <args>
346 else
347 command -nargs=+ HiLink hi def link <args>
348 endif
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000349
Bram Moolenaar071d4272004-06-13 20:20:40 +0000350 HiLink logtalkBlockComment Comment
351 HiLink logtalkLineComment Comment
352
353 HiLink logtalkOpenEntityDir Normal
354 HiLink logtalkOpenEntityDirTag PreProc
355
356 HiLink logtalkEntity Normal
357
358 HiLink logtalkEntityRel Normal
359 HiLink logtalkEntityRelTag PreProc
360
361 HiLink logtalkCloseEntityDir PreProc
362
363 HiLink logtalkDir Normal
364 HiLink logtalkDirTag PreProc
365
366 HiLink logtalkAtom String
367 HiLink logtalkString String
368
369 HiLink logtalkNumber Number
370
371 HiLink logtalkKeyword Keyword
372
373 HiLink logtalkBuiltIn Keyword
374 HiLink logtalkBuiltInMethod Keyword
375
376 HiLink logtalkOperator Operator
377
378 HiLink logtalkExtCall Normal
379 HiLink logtalkExtCallTag Operator
380
381 HiLink logtalkVariable Identifier
382
383 delcommand HiLink
384
385endif
386
387
388let b:current_syntax = "logtalk"
389
390setlocal ts=4
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000391setlocal fdm=syntax
392setlocal fdc=2