blob: be34c7ed743cd3096d76c20006582e8218835cd8 [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 Moolenaarb8ff1fb2012-02-04 21:59:01 +01005" Last Change: February 4, 2012
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
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010016let s:cpo_save = &cpo
17set cpo&vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000018
19" Logtalk is case sensitive:
20
21syn case match
22
23
24" Logtalk variables
25
26syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>"
27
28
29" Logtalk clause functor
30
31syn match logtalkOperator ":-"
32
33
34" Logtalk quoted atoms and strings
35
36syn region logtalkString start=+"+ skip=+\\"+ end=+"+
Bram Moolenaarc236c162008-07-13 17:41:49 +000037syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence
38
39syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +000040
41
42" Logtalk message sending operators
43
44syn match logtalkOperator "::"
Bram Moolenaarc236c162008-07-13 17:41:49 +000045syn match logtalkOperator ":"
Bram Moolenaar071d4272004-06-13 20:20:40 +000046syn match logtalkOperator "\^\^"
47
48
49" Logtalk external call
50
51syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL
52
53
54" Logtalk opening entity directives
55
Bram Moolenaar5c736222010-01-06 20:54:52 +010056syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
57syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
58syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
60
61" Logtalk closing entity directives
62
Bram Moolenaar45eeb132005-06-06 21:59:07 +000063syn match logtalkCloseEntityDir ":- end_object\."
64syn match logtalkCloseEntityDir ":- end_protocol\."
65syn match logtalkCloseEntityDir ":- end_category\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000066
67
68" Logtalk entity relations
69
Bram Moolenaarc236c162008-07-13 17:41:49 +000070syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
71syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
72syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
73syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
74syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
75syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000076
77
78" Logtalk directives
79
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010080syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL
81syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL
82syn match logtalkDirTag ":- else\."
83syn match logtalkDirTag ":- endif\."
Bram Moolenaara0084652005-03-16 09:57:51 +000084syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000085syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010086syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000087syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000088syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
89syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000090syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
Bram Moolenaar071d4272004-06-13 20:20:40 +000091syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
92syn match logtalkDirTag ":- dynamic\."
93syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000094syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000095syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
96syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
97syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000098syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010099syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +0000100syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100101syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +0000102syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL
103syn match logtalkDirTag ":- synchronized\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +0000105syn match logtalkDirTag ":- threaded\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106
107
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100108" Prolog directives
109
110syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL
111syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL
112syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
113
114
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000115" Module directives
116
117syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL
118syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100119syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000120syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL
121
122
Bram Moolenaar071d4272004-06-13 20:20:40 +0000123" Logtalk built-in predicates
124
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000125syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000126
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000127syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000128
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100129syn match logtalkBuiltIn "\<co\(mplements_object\|nforms_to_protocol\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000130syn match logtalkBuiltIn "\<extends_\(object\|protocol\|category\)\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000131syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000132syn match logtalkBuiltIn "\<\(instantiat\|specializ\)es_class\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000133
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000134syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000135syn match logtalkBuiltIn "\<current_event\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000136
Bram Moolenaarc236c162008-07-13 17:41:49 +0000137syn match logtalkBuiltIn "\<\(curren\|se\)t_logtalk_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000138
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100139syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\|oad_context\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000140
Bram Moolenaara0084652005-03-16 09:57:51 +0000141syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000142
Bram Moolenaarc236c162008-07-13 17:41:49 +0000143syn match logtalkBuiltIn "\<threaded\(_\(call\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze("
144
Bram Moolenaar071d4272004-06-13 20:20:40 +0000145
146" Logtalk built-in methods
147
148syn match logtalkBuiltInMethod "\<parameter\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000149syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000150syn match logtalkBuiltInMethod "\<this\ze("
151
152syn match logtalkBuiltInMethod "\<current_predicate\ze("
153syn match logtalkBuiltInMethod "\<predicate_property\ze("
154
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000155syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000156syn match logtalkBuiltInMethod "\<clause\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000157syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000158
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000159syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
160syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000161
162syn match logtalkBuiltInMethod "\<before\ze("
163syn match logtalkBuiltInMethod "\<after\ze("
164
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100165syn match logtalkBuiltInMethod "\<expand_\(goal\|term\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000166syn match logtalkBuiltInMethod "\<\(goal\|term\)_expansion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000167syn match logtalkBuiltInMethod "\<phrase\ze("
168
169
170" Mode operators
171
172syn match logtalkOperator "?"
173syn match logtalkOperator "@"
174
175
176" Control constructs
177
178syn match logtalkKeyword "\<true\>"
179syn match logtalkKeyword "\<fail\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000180syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000181syn match logtalkOperator "!"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000182" syn match logtalkOperator ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000183syn match logtalkOperator ";"
184syn match logtalkOperator "-->"
185syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000186syn match logtalkKeyword "\<throw\ze("
187
188
189" Term unification
190
191syn match logtalkOperator "="
192syn match logtalkKeyword "\<unify_with_occurs_check\ze("
193syn match logtalkOperator "\\="
194
195
196" Term testing
197
198syn match logtalkKeyword "\<var\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000199syn match logtalkKeyword "\<atom\(ic\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000200syn match logtalkKeyword "\<integer\ze("
201syn match logtalkKeyword "\<float\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100202syn match logtalkKeyword "\<c\(allable\|ompound\)\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000203syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100204syn match logtalkKeyword "\<ground\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000205
206
207" Term comparison
208
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100209syn match logtalkKeyword "\<compare\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210syn match logtalkOperator "@=<"
211syn match logtalkOperator "=="
212syn match logtalkOperator "\\=="
213syn match logtalkOperator "@<"
214syn match logtalkOperator "@>"
215syn match logtalkOperator "@>="
216
217
218" Term creation and decomposition
219
220syn match logtalkKeyword "\<functor\ze("
221syn match logtalkKeyword "\<arg\ze("
222syn match logtalkOperator "=\.\."
223syn match logtalkKeyword "\<copy_term\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100224syn match logtalkKeyword "\<numbervars\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000225
226
227" Arithemtic evaluation
228
Bram Moolenaara0084652005-03-16 09:57:51 +0000229syn match logtalkOperator "\<is\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000230
231
232" Arithemtic comparison
233
234syn match logtalkOperator "=:="
235syn match logtalkOperator "=\\="
236syn match logtalkOperator "<"
237syn match logtalkOperator "=<"
238syn match logtalkOperator ">"
239syn match logtalkOperator ">="
240
241
242" Stream selection and control
243
Bram Moolenaarc236c162008-07-13 17:41:49 +0000244syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000245syn match logtalkKeyword "\<open\ze("
246syn match logtalkKeyword "\<close\ze("
247syn match logtalkKeyword "\<flush_output\ze("
248syn match logtalkKeyword "\<flush_output\>"
249syn match logtalkKeyword "\<stream_property\ze("
250syn match logtalkKeyword "\<at_end_of_stream\ze("
251syn match logtalkKeyword "\<at_end_of_stream\>"
252syn match logtalkKeyword "\<set_stream_position\ze("
253
254
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000255" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000256
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000257syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000258syn match logtalkKeyword "\<nl\ze("
259syn match logtalkKeyword "\<nl\>"
260
261
Bram Moolenaar071d4272004-06-13 20:20:40 +0000262" Term input/output
263
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000264syn match logtalkKeyword "\<read\(_term\)\?\ze("
265syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
266syn match logtalkKeyword "\<\(current_\)\?op\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000267syn match logtalkKeyword "\<\(current_\)\?char_conversion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000268
269
270" Logic and control
271
272syn match logtalkOperator "\\+"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100273syn match logtalkKeyword "\<ignore\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274syn match logtalkKeyword "\<once\ze("
275syn match logtalkKeyword "\<repeat\>"
276
277
278" Atomic term processing
279
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000280syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000281syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000282syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000283syn match logtalkKeyword "\<number_c\(har\|ode\)s\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284
285
286" Implementation defined hooks functions
287
Bram Moolenaarc236c162008-07-13 17:41:49 +0000288syn match logtalkKeyword "\<\(curren\|se\)t_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000289syn match logtalkKeyword "\<halt\ze("
290syn match logtalkKeyword "\<halt\>"
291
292
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100293" Sorting
294
295syn match logtalkKeyword "\<\(key\)\?sort\ze("
296
297
Bram Moolenaar071d4272004-06-13 20:20:40 +0000298" Evaluable functors
299
300syn match logtalkOperator "+"
301syn match logtalkOperator "-"
302syn match logtalkOperator "\*"
303syn match logtalkOperator "//"
304syn match logtalkOperator "/"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000305syn match logtalkKeyword "\<r\(ound\|em\)\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100306syn match logtalkKeyword "\<e\>"
307syn match logtalkKeyword "\<pi\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000308syn match logtalkKeyword "\<rem\>"
309syn match logtalkKeyword "\<mod\ze("
310syn match logtalkKeyword "\<mod\>"
311syn match logtalkKeyword "\<abs\ze("
312syn match logtalkKeyword "\<sign\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000313syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000314syn match logtalkKeyword "\<truncate\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000315syn match logtalkKeyword "\<ceiling\ze("
316
317
318" Other arithemtic functors
319
320syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000321syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000322syn match logtalkKeyword "\<cos\ze("
323syn match logtalkKeyword "\<atan\ze("
324syn match logtalkKeyword "\<exp\ze("
325syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000326
327
328" Bitwise functors
329
330syn match logtalkOperator ">>"
331syn match logtalkOperator "<<"
332syn match logtalkOperator "/\\"
333syn match logtalkOperator "\\/"
334syn match logtalkOperator "\\"
335
336
Bram Moolenaar071d4272004-06-13 20:20:40 +0000337" Logtalk list operator
338
339syn match logtalkOperator "|"
340
341
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100342" Logtalk existential quantifier operator
343
344syn match logtalkOperator "\^"
345
346
347" Logtalk numbers
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000348
349syn match logtalkNumber "\<\d\+\>"
350syn match logtalkNumber "\<\d\+\.\d\+\>"
351syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
352syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
Bram Moolenaarc236c162008-07-13 17:41:49 +0000353syn match logtalkNumber "\<0'.\|0''\|0'\"\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000354syn match logtalkNumber "\<0b[0-1]\+\>"
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000355syn match logtalkNumber "\<0o\o\+\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000356syn match logtalkNumber "\<0x\x\+\>"
357
358
359" Logtalk end-of-clause
360
361syn match logtalkOperator "\."
362
363
Bram Moolenaar071d4272004-06-13 20:20:40 +0000364" Logtalk comments
365
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000366syn region logtalkBlockComment start="/\*" end="\*/" fold
Bram Moolenaar071d4272004-06-13 20:20:40 +0000367syn match logtalkLineComment "%.*"
368
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100369syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment
370
371
372" Logtalk conditional compilation folding
373
374syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE
375syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
376syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
377syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP
378
379
Bram Moolenaar071d4272004-06-13 20:20:40 +0000380
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000381" Logtalk entity folding
382
383syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
384syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
385syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
386
387
Bram Moolenaara0084652005-03-16 09:57:51 +0000388syn sync ccomment logtalkBlockComment maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +0000389
390
391" Define the default highlighting.
392" For version 5.7 and earlier: only when not done already
393" For version 5.8 and later: only when an item doesn't have highlighting yet
394
395if version >= 508 || !exists("did_logtalk_syn_inits")
396 if version < 508
397 let did_logtalk_syn_inits = 1
398 command -nargs=+ HiLink hi link <args>
399 else
400 command -nargs=+ HiLink hi def link <args>
401 endif
Bram Moolenaarc236c162008-07-13 17:41:49 +0000402
Bram Moolenaar071d4272004-06-13 20:20:40 +0000403 HiLink logtalkBlockComment Comment
404 HiLink logtalkLineComment Comment
405
406 HiLink logtalkOpenEntityDir Normal
407 HiLink logtalkOpenEntityDirTag PreProc
408
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100409 HiLink logtalkIfContainer PreProc
410 HiLink logtalkIf PreProc
411 HiLink logtalkElseIf PreProc
412 HiLink logtalkElse PreProc
413
Bram Moolenaar071d4272004-06-13 20:20:40 +0000414 HiLink logtalkEntity Normal
415
416 HiLink logtalkEntityRel Normal
417 HiLink logtalkEntityRelTag PreProc
418
419 HiLink logtalkCloseEntityDir PreProc
420
421 HiLink logtalkDir Normal
422 HiLink logtalkDirTag PreProc
423
424 HiLink logtalkAtom String
425 HiLink logtalkString String
Bram Moolenaarc236c162008-07-13 17:41:49 +0000426 HiLink logtalkEscapeSequence SpecialChar
Bram Moolenaar071d4272004-06-13 20:20:40 +0000427
428 HiLink logtalkNumber Number
429
430 HiLink logtalkKeyword Keyword
431
432 HiLink logtalkBuiltIn Keyword
433 HiLink logtalkBuiltInMethod Keyword
434
435 HiLink logtalkOperator Operator
436
437 HiLink logtalkExtCall Normal
438 HiLink logtalkExtCallTag Operator
439
440 HiLink logtalkVariable Identifier
441
442 delcommand HiLink
443
444endif
445
446
447let b:current_syntax = "logtalk"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100448
449let &cpo = s:cpo_save
450unlet s:cpo_save