blob: 532f83d3bf5ee3944097ce935371b0a1c12dc86d [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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02008" quit when a syntax file was already loaded
9if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000010 finish
11endif
12
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010013let s:cpo_save = &cpo
14set cpo&vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000015
16" Logtalk is case sensitive:
17
18syn case match
19
20
21" Logtalk variables
22
23syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>"
24
25
26" Logtalk clause functor
27
28syn match logtalkOperator ":-"
29
30
31" Logtalk quoted atoms and strings
32
33syn region logtalkString start=+"+ skip=+\\"+ end=+"+
Bram Moolenaarc236c162008-07-13 17:41:49 +000034syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence
35
36syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +000037
38
39" Logtalk message sending operators
40
41syn match logtalkOperator "::"
Bram Moolenaarc236c162008-07-13 17:41:49 +000042syn match logtalkOperator ":"
Bram Moolenaar071d4272004-06-13 20:20:40 +000043syn match logtalkOperator "\^\^"
44
45
46" Logtalk external call
47
48syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL
49
50
51" Logtalk opening entity directives
52
Bram Moolenaar5c736222010-01-06 20:54:52 +010053syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
54syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
55syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
Bram Moolenaar071d4272004-06-13 20:20:40 +000056
57
58" Logtalk closing entity directives
59
Bram Moolenaar45eeb132005-06-06 21:59:07 +000060syn match logtalkCloseEntityDir ":- end_object\."
61syn match logtalkCloseEntityDir ":- end_protocol\."
62syn match logtalkCloseEntityDir ":- end_category\."
Bram Moolenaar071d4272004-06-13 20:20:40 +000063
64
65" Logtalk entity relations
66
Bram Moolenaarc236c162008-07-13 17:41:49 +000067syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
68syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
69syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
70syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
71syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
72syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000073
74
75" Logtalk directives
76
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010077syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL
78syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL
79syn match logtalkDirTag ":- else\."
80syn match logtalkDirTag ":- endif\."
Bram Moolenaara0084652005-03-16 09:57:51 +000081syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000082syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010083syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000084syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000085syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL
86syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000087syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom
Bram Moolenaar071d4272004-06-13 20:20:40 +000088syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL
89syn match logtalkDirTag ":- dynamic\."
90syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaara0084652005-03-16 09:57:51 +000091syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000092syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL
93syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL
94syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000095syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010096syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar071d4272004-06-13 20:20:40 +000097syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +010098syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +000099syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL
100syn match logtalkDirTag ":- synchronized\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarc236c162008-07-13 17:41:49 +0000102syn match logtalkDirTag ":- threaded\."
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103
104
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100105" Prolog directives
106
107syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL
108syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL
109syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL
110
111
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000112" Module directives
113
114syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL
115syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100116syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000117syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL
118
119
Bram Moolenaar071d4272004-06-13 20:20:40 +0000120" Logtalk built-in predicates
121
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000122syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000123
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000124syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100126syn match logtalkBuiltIn "\<co\(mplements_object\|nforms_to_protocol\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000127syn match logtalkBuiltIn "\<extends_\(object\|protocol\|category\)\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000128syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000129syn match logtalkBuiltIn "\<\(instantiat\|specializ\)es_class\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000130
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000131syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000132syn match logtalkBuiltIn "\<current_event\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000133
Bram Moolenaarc236c162008-07-13 17:41:49 +0000134syn match logtalkBuiltIn "\<\(curren\|se\)t_logtalk_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000135
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100136syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\|oad_context\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000137
Bram Moolenaara0084652005-03-16 09:57:51 +0000138syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000139
Bram Moolenaarc236c162008-07-13 17:41:49 +0000140syn match logtalkBuiltIn "\<threaded\(_\(call\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze("
141
Bram Moolenaar071d4272004-06-13 20:20:40 +0000142
143" Logtalk built-in methods
144
145syn match logtalkBuiltInMethod "\<parameter\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000146syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000147syn match logtalkBuiltInMethod "\<this\ze("
148
149syn match logtalkBuiltInMethod "\<current_predicate\ze("
150syn match logtalkBuiltInMethod "\<predicate_property\ze("
151
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000152syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000153syn match logtalkBuiltInMethod "\<clause\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000154syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000155
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000156syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("
157syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000158
159syn match logtalkBuiltInMethod "\<before\ze("
160syn match logtalkBuiltInMethod "\<after\ze("
161
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100162syn match logtalkBuiltInMethod "\<expand_\(goal\|term\)\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000163syn match logtalkBuiltInMethod "\<\(goal\|term\)_expansion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000164syn match logtalkBuiltInMethod "\<phrase\ze("
165
166
167" Mode operators
168
169syn match logtalkOperator "?"
170syn match logtalkOperator "@"
171
172
173" Control constructs
174
175syn match logtalkKeyword "\<true\>"
176syn match logtalkKeyword "\<fail\>"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000177syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000178syn match logtalkOperator "!"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000179" syn match logtalkOperator ","
Bram Moolenaar071d4272004-06-13 20:20:40 +0000180syn match logtalkOperator ";"
181syn match logtalkOperator "-->"
182syn match logtalkOperator "->"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000183syn match logtalkKeyword "\<throw\ze("
184
185
186" Term unification
187
188syn match logtalkOperator "="
189syn match logtalkKeyword "\<unify_with_occurs_check\ze("
190syn match logtalkOperator "\\="
191
192
193" Term testing
194
195syn match logtalkKeyword "\<var\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000196syn match logtalkKeyword "\<atom\(ic\)\?\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000197syn match logtalkKeyword "\<integer\ze("
198syn match logtalkKeyword "\<float\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100199syn match logtalkKeyword "\<c\(allable\|ompound\)\ze("
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000200syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100201syn match logtalkKeyword "\<ground\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000202
203
204" Term comparison
205
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100206syn match logtalkKeyword "\<compare\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000207syn match logtalkOperator "@=<"
208syn match logtalkOperator "=="
209syn match logtalkOperator "\\=="
210syn match logtalkOperator "@<"
211syn match logtalkOperator "@>"
212syn match logtalkOperator "@>="
213
214
215" Term creation and decomposition
216
217syn match logtalkKeyword "\<functor\ze("
218syn match logtalkKeyword "\<arg\ze("
219syn match logtalkOperator "=\.\."
220syn match logtalkKeyword "\<copy_term\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100221syn match logtalkKeyword "\<numbervars\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000222
223
224" Arithemtic evaluation
225
Bram Moolenaara0084652005-03-16 09:57:51 +0000226syn match logtalkOperator "\<is\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000227
228
229" Arithemtic comparison
230
231syn match logtalkOperator "=:="
232syn match logtalkOperator "=\\="
233syn match logtalkOperator "<"
234syn match logtalkOperator "=<"
235syn match logtalkOperator ">"
236syn match logtalkOperator ">="
237
238
239" Stream selection and control
240
Bram Moolenaarc236c162008-07-13 17:41:49 +0000241syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242syn match logtalkKeyword "\<open\ze("
243syn match logtalkKeyword "\<close\ze("
244syn match logtalkKeyword "\<flush_output\ze("
245syn match logtalkKeyword "\<flush_output\>"
246syn match logtalkKeyword "\<stream_property\ze("
247syn match logtalkKeyword "\<at_end_of_stream\ze("
248syn match logtalkKeyword "\<at_end_of_stream\>"
249syn match logtalkKeyword "\<set_stream_position\ze("
250
251
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000252" Character and byte input/output
Bram Moolenaar071d4272004-06-13 20:20:40 +0000253
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000254syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000255syn match logtalkKeyword "\<nl\ze("
256syn match logtalkKeyword "\<nl\>"
257
258
Bram Moolenaar071d4272004-06-13 20:20:40 +0000259" Term input/output
260
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000261syn match logtalkKeyword "\<read\(_term\)\?\ze("
262syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("
263syn match logtalkKeyword "\<\(current_\)\?op\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000264syn match logtalkKeyword "\<\(current_\)\?char_conversion\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000265
266
267" Logic and control
268
269syn match logtalkOperator "\\+"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100270syn match logtalkKeyword "\<ignore\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271syn match logtalkKeyword "\<once\ze("
272syn match logtalkKeyword "\<repeat\>"
273
274
275" Atomic term processing
276
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000277syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000278syn match logtalkKeyword "\<sub_atom\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000279syn match logtalkKeyword "\<char_code\ze("
Bram Moolenaarc236c162008-07-13 17:41:49 +0000280syn match logtalkKeyword "\<number_c\(har\|ode\)s\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000281
282
283" Implementation defined hooks functions
284
Bram Moolenaarc236c162008-07-13 17:41:49 +0000285syn match logtalkKeyword "\<\(curren\|se\)t_prolog_flag\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000286syn match logtalkKeyword "\<halt\ze("
287syn match logtalkKeyword "\<halt\>"
288
289
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100290" Sorting
291
292syn match logtalkKeyword "\<\(key\)\?sort\ze("
293
294
Bram Moolenaar071d4272004-06-13 20:20:40 +0000295" Evaluable functors
296
297syn match logtalkOperator "+"
298syn match logtalkOperator "-"
299syn match logtalkOperator "\*"
300syn match logtalkOperator "//"
301syn match logtalkOperator "/"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000302syn match logtalkKeyword "\<r\(ound\|em\)\ze("
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100303syn match logtalkKeyword "\<e\>"
304syn match logtalkKeyword "\<pi\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000305syn match logtalkKeyword "\<rem\>"
306syn match logtalkKeyword "\<mod\ze("
307syn match logtalkKeyword "\<mod\>"
308syn match logtalkKeyword "\<abs\ze("
309syn match logtalkKeyword "\<sign\ze("
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000310syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311syn match logtalkKeyword "\<truncate\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000312syn match logtalkKeyword "\<ceiling\ze("
313
314
315" Other arithemtic functors
316
317syn match logtalkOperator "\*\*"
Bram Moolenaarf4b8e572004-06-24 15:53:16 +0000318syn match logtalkKeyword "\<s\(in\|qrt\)\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000319syn match logtalkKeyword "\<cos\ze("
320syn match logtalkKeyword "\<atan\ze("
321syn match logtalkKeyword "\<exp\ze("
322syn match logtalkKeyword "\<log\ze("
Bram Moolenaar071d4272004-06-13 20:20:40 +0000323
324
325" Bitwise functors
326
327syn match logtalkOperator ">>"
328syn match logtalkOperator "<<"
329syn match logtalkOperator "/\\"
330syn match logtalkOperator "\\/"
331syn match logtalkOperator "\\"
332
333
Bram Moolenaar071d4272004-06-13 20:20:40 +0000334" Logtalk list operator
335
336syn match logtalkOperator "|"
337
338
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100339" Logtalk existential quantifier operator
340
341syn match logtalkOperator "\^"
342
343
344" Logtalk numbers
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000345
346syn match logtalkNumber "\<\d\+\>"
347syn match logtalkNumber "\<\d\+\.\d\+\>"
348syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"
349syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
Bram Moolenaarc236c162008-07-13 17:41:49 +0000350syn match logtalkNumber "\<0'.\|0''\|0'\"\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000351syn match logtalkNumber "\<0b[0-1]\+\>"
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000352syn match logtalkNumber "\<0o\o\+\>"
Bram Moolenaar54ee7752005-05-31 22:22:17 +0000353syn match logtalkNumber "\<0x\x\+\>"
354
355
356" Logtalk end-of-clause
357
358syn match logtalkOperator "\."
359
360
Bram Moolenaar071d4272004-06-13 20:20:40 +0000361" Logtalk comments
362
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000363syn region logtalkBlockComment start="/\*" end="\*/" fold
Bram Moolenaar071d4272004-06-13 20:20:40 +0000364syn match logtalkLineComment "%.*"
365
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100366syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment
367
368
369" Logtalk conditional compilation folding
370
371syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE
372syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
373syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
374syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP
375
376
Bram Moolenaar071d4272004-06-13 20:20:40 +0000377
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000378" Logtalk entity folding
379
380syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
381syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
382syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
383
384
Bram Moolenaara0084652005-03-16 09:57:51 +0000385syn sync ccomment logtalkBlockComment maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +0000386
387
388" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200389" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +0000390
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200391hi def link logtalkBlockComment Comment
392hi def link logtalkLineComment Comment
Bram Moolenaarc236c162008-07-13 17:41:49 +0000393
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200394hi def link logtalkOpenEntityDir Normal
395hi def link logtalkOpenEntityDirTag PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000396
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200397hi def link logtalkIfContainer PreProc
398hi def link logtalkIf PreProc
399hi def link logtalkElseIf PreProc
400hi def link logtalkElse PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000401
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200402hi def link logtalkEntity Normal
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100403
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200404hi def link logtalkEntityRel Normal
405hi def link logtalkEntityRelTag PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000406
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200407hi def link logtalkCloseEntityDir PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000408
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200409hi def link logtalkDir Normal
410hi def link logtalkDirTag PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000411
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200412hi def link logtalkAtom String
413hi def link logtalkString String
414hi def link logtalkEscapeSequence SpecialChar
Bram Moolenaar071d4272004-06-13 20:20:40 +0000415
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200416hi def link logtalkNumber Number
Bram Moolenaar071d4272004-06-13 20:20:40 +0000417
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200418hi def link logtalkKeyword Keyword
Bram Moolenaar071d4272004-06-13 20:20:40 +0000419
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200420hi def link logtalkBuiltIn Keyword
421hi def link logtalkBuiltInMethod Keyword
Bram Moolenaar071d4272004-06-13 20:20:40 +0000422
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200423hi def link logtalkOperator Operator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000424
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200425hi def link logtalkExtCall Normal
426hi def link logtalkExtCallTag Operator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000427
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200428hi def link logtalkVariable Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000429
Bram Moolenaar071d4272004-06-13 20:20:40 +0000430
431
432let b:current_syntax = "logtalk"
Bram Moolenaarb8ff1fb2012-02-04 21:59:01 +0100433
434let &cpo = s:cpo_save
435unlet s:cpo_save