xref: /vim-8.2.3635/runtime/syntax/logtalk.vim (revision d473c8c1)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar"
3071d4279SBram Moolenaar" Language:	Logtalk
4071d4279SBram Moolenaar" Maintainer:	Paulo Moura <[email protected]>
5*d473c8c1SBram Moolenaar" Last Change:	August 3, 2018
6071d4279SBram Moolenaar
7071d4279SBram Moolenaar
889bcfda6SBram Moolenaar" quit when a syntax file was already loaded
989bcfda6SBram Moolenaarif exists("b:current_syntax")
10071d4279SBram Moolenaar	finish
11071d4279SBram Moolenaarendif
12071d4279SBram Moolenaar
13b8ff1fb5SBram Moolenaarlet s:cpo_save = &cpo
14b8ff1fb5SBram Moolenaarset cpo&vim
15071d4279SBram Moolenaar
16071d4279SBram Moolenaar" Logtalk is case sensitive:
17071d4279SBram Moolenaar
18071d4279SBram Moolenaarsyn case match
19071d4279SBram Moolenaar
20071d4279SBram Moolenaar
21071d4279SBram Moolenaar" Logtalk variables
22071d4279SBram Moolenaar
23071d4279SBram Moolenaarsyn match   logtalkVariable		"\<\(\u\|_\)\(\w\)*\>"
24071d4279SBram Moolenaar
25071d4279SBram Moolenaar
26071d4279SBram Moolenaar" Logtalk clause functor
27071d4279SBram Moolenaar
28071d4279SBram Moolenaarsyn match	logtalkOperator		":-"
29071d4279SBram Moolenaar
30071d4279SBram Moolenaar
31071d4279SBram Moolenaar" Logtalk quoted atoms and strings
32071d4279SBram Moolenaar
33071d4279SBram Moolenaarsyn region	logtalkString		start=+"+	skip=+\\"+	end=+"+
34c236c16dSBram Moolenaarsyn region	logtalkAtom		start=+'+	skip=+\\'+	end=+'+		contains=logtalkEscapeSequence
35c236c16dSBram Moolenaar
36c236c16dSBram Moolenaarsyn match	logtalkEscapeSequence	contained	"\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)"
37071d4279SBram Moolenaar
38071d4279SBram Moolenaar
39071d4279SBram Moolenaar" Logtalk message sending operators
40071d4279SBram Moolenaar
41071d4279SBram Moolenaarsyn match	logtalkOperator		"::"
42c236c16dSBram Moolenaarsyn match	logtalkOperator		":"
43071d4279SBram Moolenaarsyn match	logtalkOperator		"\^\^"
44071d4279SBram Moolenaar
45071d4279SBram Moolenaar
46071d4279SBram Moolenaar" Logtalk external call
47071d4279SBram Moolenaar
48071d4279SBram Moolenaarsyn region	logtalkExtCall		matchgroup=logtalkExtCallTag		start="{"		matchgroup=logtalkExtCallTag		end="}"		contains=ALL
49071d4279SBram Moolenaar
50071d4279SBram Moolenaar
51071d4279SBram Moolenaar" Logtalk opening entity directives
52071d4279SBram Moolenaar
535c73622aSBram Moolenaarsyn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- object("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
545c73622aSBram Moolenaarsyn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- protocol("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
555c73622aSBram Moolenaarsyn region	logtalkOpenEntityDir	matchgroup=logtalkOpenEntityDirTag	start=":- category("	matchgroup=logtalkOpenEntityDirTag	end=")\."	contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
56071d4279SBram Moolenaar
57071d4279SBram Moolenaar
58071d4279SBram Moolenaar" Logtalk closing entity directives
59071d4279SBram Moolenaar
6045eeb133SBram Moolenaarsyn match	logtalkCloseEntityDir	":- end_object\."
6145eeb133SBram Moolenaarsyn match	logtalkCloseEntityDir	":- end_protocol\."
6245eeb133SBram Moolenaarsyn match	logtalkCloseEntityDir	":- end_category\."
63071d4279SBram Moolenaar
64071d4279SBram Moolenaar
65071d4279SBram Moolenaar" Logtalk entity relations
66071d4279SBram Moolenaar
67c236c16dSBram Moolenaarsyn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="instantiates("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom	contained
68c236c16dSBram Moolenaarsyn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="specializes("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom	contained
69c236c16dSBram Moolenaarsyn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="extends("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom	contained
70c236c16dSBram Moolenaarsyn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="imports("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom	contained
71c236c16dSBram Moolenaarsyn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="implements("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom	contained
72c236c16dSBram Moolenaarsyn region	logtalkEntityRel	matchgroup=logtalkEntityRelTag	start="complements("	matchgroup=logtalkEntityRelTag	end=")"		contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom	contained
73071d4279SBram Moolenaar
74071d4279SBram Moolenaar
75071d4279SBram Moolenaar" Logtalk directives
76071d4279SBram Moolenaar
77b8ff1fb5SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- if("			matchgroup=logtalkDirTag	end=")\."	contains=ALL
78b8ff1fb5SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- elif("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
79b8ff1fb5SBram Moolenaarsyn match	logtalkDirTag		":- else\."
80b8ff1fb5SBram Moolenaarsyn match	logtalkDirTag		":- endif\."
81a0084659SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- alias("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
82b8ff1fb5SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- coinductive("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
830e6830e0SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- encoding("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
84071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- initialization("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
85071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- info("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
86071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- mode("		matchgroup=logtalkDirTag	end=")\."	contains=logtalkOperator, logtalkAtom
87071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- dynamic("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
88*d473c8c1SBram Moolenaarsyn match	logtalkDirTag		":- built_in\."
89071d4279SBram Moolenaarsyn match	logtalkDirTag		":- dynamic\."
90071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- discontiguous("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
91269ec658SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- multifile("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
92071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- public("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
93071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- protected("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
94071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- private("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
95c236c16dSBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- meta_predicate("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
96b8ff1fb5SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- meta_non_terminal("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
97071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- op("			matchgroup=logtalkDirTag	end=")\."	contains=ALL
98b8ff1fb5SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- set_logtalk_flag("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
99c236c16dSBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- synchronized("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
100c236c16dSBram Moolenaarsyn match	logtalkDirTag		":- synchronized\."
101071d4279SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- uses("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
102c236c16dSBram Moolenaarsyn match	logtalkDirTag		":- threaded\."
103071d4279SBram Moolenaar
104071d4279SBram Moolenaar
105b8ff1fb5SBram Moolenaar" Prolog directives
106b8ff1fb5SBram Moolenaar
107b8ff1fb5SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- ensure_loaded("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
108b8ff1fb5SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- include("     	matchgroup=logtalkDirTag	end=")\."	contains=ALL
109b8ff1fb5SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- set_prolog_flag("	matchgroup=logtalkDirTag	end=")\."	contains=ALL
110b8ff1fb5SBram Moolenaar
111b8ff1fb5SBram Moolenaar
112362e1a30SBram Moolenaar" Module directives
113362e1a30SBram Moolenaar
114362e1a30SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- module("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
115362e1a30SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- export("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
116b8ff1fb5SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- reexport("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
117362e1a30SBram Moolenaarsyn region	logtalkDir		matchgroup=logtalkDirTag	start=":- use_module("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
118362e1a30SBram Moolenaar
119362e1a30SBram Moolenaar
120071d4279SBram Moolenaar" Logtalk built-in predicates
121071d4279SBram Moolenaar
12254ee775eSBram Moolenaarsyn match	logtalkBuiltIn		"\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
123071d4279SBram Moolenaar
124f4b8e57fSBram Moolenaarsyn match	logtalkBuiltIn		"\<\(object\|protocol\|category\)_property\ze("
125071d4279SBram Moolenaar
126b8ff1fb5SBram Moolenaarsyn match	logtalkBuiltIn		"\<co\(mplements_object\|nforms_to_protocol\)\ze("
127c236c16dSBram Moolenaarsyn match	logtalkBuiltIn		"\<extends_\(object\|protocol\|category\)\ze("
128f4b8e57fSBram Moolenaarsyn match	logtalkBuiltIn		"\<imp\(orts_category\|lements_protocol\)\ze("
129c236c16dSBram Moolenaarsyn match	logtalkBuiltIn		"\<\(instantiat\|specializ\)es_class\ze("
130071d4279SBram Moolenaar
131f4b8e57fSBram Moolenaarsyn match	logtalkBuiltIn		"\<\(abolish\|define\)_events\ze("
132071d4279SBram Moolenaarsyn match	logtalkBuiltIn		"\<current_event\ze("
133071d4279SBram Moolenaar
134*d473c8c1SBram Moolenaarsyn match	logtalkBuiltIn		"\<\(create\|current\|set\)_logtalk_flag\ze("
135071d4279SBram Moolenaar
136*d473c8c1SBram Moolenaarsyn match	logtalkBuiltIn		"\<logtalk_\(compile\|l\(ibrary_path\|oad\|oad_context\)\|make\(_target_action\)\?\)\ze("
137*d473c8c1SBram Moolenaarsyn match	logtalkBuiltIn		"\<logtalk_make\>"
138071d4279SBram Moolenaar
139a0084659SBram Moolenaarsyn match	logtalkBuiltIn		"\<\(for\|retract\)all\ze("
140071d4279SBram Moolenaar
141c236c16dSBram Moolenaarsyn match	logtalkBuiltIn		"\<threaded\(_\(call\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze("
142*d473c8c1SBram Moolenaarsyn match	logtalkBuiltIn		"\<threaded_engine\(_\(create\|destroy\|self\|next\|next_reified\|yield\|post\|fetch\)\)\?\ze("
143c236c16dSBram Moolenaar
144071d4279SBram Moolenaar
145071d4279SBram Moolenaar" Logtalk built-in methods
146071d4279SBram Moolenaar
147*d473c8c1SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<context\ze("
148071d4279SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<parameter\ze("
149f4b8e57fSBram Moolenaarsyn match	logtalkBuiltInMethod	"\<se\(lf\|nder\)\ze("
150071d4279SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<this\ze("
151071d4279SBram Moolenaar
152071d4279SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<current_predicate\ze("
153071d4279SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<predicate_property\ze("
154071d4279SBram Moolenaar
15554ee775eSBram Moolenaarsyn match	logtalkBuiltInMethod	"\<a\(bolish\|ssert\(a\|z\)\)\ze("
156071d4279SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<clause\ze("
15754ee775eSBram Moolenaarsyn match	logtalkBuiltInMethod	"\<retract\(all\)\?\ze("
158071d4279SBram Moolenaar
159f4b8e57fSBram Moolenaarsyn match	logtalkBuiltInMethod	"\<\(bag\|set\)of\ze("
160f4b8e57fSBram Moolenaarsyn match	logtalkBuiltInMethod	"\<f\(ind\|or\)all\ze("
161071d4279SBram Moolenaar
162071d4279SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<before\ze("
163071d4279SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<after\ze("
164071d4279SBram Moolenaar
165*d473c8c1SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<forward\ze("
166*d473c8c1SBram Moolenaar
167b8ff1fb5SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<expand_\(goal\|term\)\ze("
168c236c16dSBram Moolenaarsyn match	logtalkBuiltInMethod	"\<\(goal\|term\)_expansion\ze("
169071d4279SBram Moolenaarsyn match	logtalkBuiltInMethod	"\<phrase\ze("
170071d4279SBram Moolenaar
171071d4279SBram Moolenaar
172071d4279SBram Moolenaar" Mode operators
173071d4279SBram Moolenaar
174071d4279SBram Moolenaarsyn match	logtalkOperator		"?"
175071d4279SBram Moolenaarsyn match	logtalkOperator		"@"
176071d4279SBram Moolenaar
177071d4279SBram Moolenaar
178071d4279SBram Moolenaar" Control constructs
179071d4279SBram Moolenaar
180071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<true\>"
181071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<fail\>"
182*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<false\>"
183f4b8e57fSBram Moolenaarsyn match	logtalkKeyword		"\<ca\(ll\|tch\)\ze("
184071d4279SBram Moolenaarsyn match	logtalkOperator		"!"
185f4b8e57fSBram Moolenaar" syn match	logtalkOperator		","
186071d4279SBram Moolenaarsyn match	logtalkOperator		";"
187071d4279SBram Moolenaarsyn match	logtalkOperator		"-->"
188071d4279SBram Moolenaarsyn match	logtalkOperator		"->"
189071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<throw\ze("
190*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<\(instantiation\|system\)_error\>"
191*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<\(type\|domain\|existence\|permission\|representation\|evaluation\|resource\|syntax\)_error\ze("
192071d4279SBram Moolenaar
193071d4279SBram Moolenaar
194071d4279SBram Moolenaar" Term unification
195071d4279SBram Moolenaar
196071d4279SBram Moolenaarsyn match	logtalkOperator		"="
197*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<subsumes_term\ze("
198071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<unify_with_occurs_check\ze("
199071d4279SBram Moolenaarsyn match	logtalkOperator		"\\="
200071d4279SBram Moolenaar
201071d4279SBram Moolenaar
202071d4279SBram Moolenaar" Term testing
203071d4279SBram Moolenaar
204071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<var\ze("
20554ee775eSBram Moolenaarsyn match	logtalkKeyword		"\<atom\(ic\)\?\ze("
206071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<integer\ze("
207071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<float\ze("
208b8ff1fb5SBram Moolenaarsyn match	logtalkKeyword		"\<c\(allable\|ompound\)\ze("
209f4b8e57fSBram Moolenaarsyn match	logtalkKeyword		"\<n\(onvar\|umber\)\ze("
210b8ff1fb5SBram Moolenaarsyn match	logtalkKeyword		"\<ground\ze("
211*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<acyclic_term\ze("
212071d4279SBram Moolenaar
213071d4279SBram Moolenaar
214071d4279SBram Moolenaar" Term comparison
215071d4279SBram Moolenaar
216b8ff1fb5SBram Moolenaarsyn match	logtalkKeyword		"\<compare\ze("
217071d4279SBram Moolenaarsyn match	logtalkOperator		"@=<"
218071d4279SBram Moolenaarsyn match	logtalkOperator		"=="
219071d4279SBram Moolenaarsyn match	logtalkOperator		"\\=="
220071d4279SBram Moolenaarsyn match	logtalkOperator		"@<"
221071d4279SBram Moolenaarsyn match	logtalkOperator		"@>"
222071d4279SBram Moolenaarsyn match	logtalkOperator		"@>="
223071d4279SBram Moolenaar
224071d4279SBram Moolenaar
225071d4279SBram Moolenaar" Term creation and decomposition
226071d4279SBram Moolenaar
227071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<functor\ze("
228071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<arg\ze("
229071d4279SBram Moolenaarsyn match	logtalkOperator		"=\.\."
230071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<copy_term\ze("
231b8ff1fb5SBram Moolenaarsyn match	logtalkKeyword		"\<numbervars\ze("
232*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<term_variables\ze("
233071d4279SBram Moolenaar
234071d4279SBram Moolenaar
235*d473c8c1SBram Moolenaar" Predicate aliases
236*d473c8c1SBram Moolenaar
237*d473c8c1SBram Moolenaarsyn match	logtalkOperator		"\<as\>"
238*d473c8c1SBram Moolenaar
239*d473c8c1SBram Moolenaar
240*d473c8c1SBram Moolenaar" Arithmetic evaluation
241071d4279SBram Moolenaar
242a0084659SBram Moolenaarsyn match	logtalkOperator		"\<is\>"
243071d4279SBram Moolenaar
244071d4279SBram Moolenaar
245*d473c8c1SBram Moolenaar" Arithmetic comparison
246071d4279SBram Moolenaar
247071d4279SBram Moolenaarsyn match	logtalkOperator		"=:="
248071d4279SBram Moolenaarsyn match	logtalkOperator		"=\\="
249071d4279SBram Moolenaarsyn match	logtalkOperator		"<"
250071d4279SBram Moolenaarsyn match	logtalkOperator		"=<"
251071d4279SBram Moolenaarsyn match	logtalkOperator		">"
252071d4279SBram Moolenaarsyn match	logtalkOperator		">="
253071d4279SBram Moolenaar
254071d4279SBram Moolenaar
255071d4279SBram Moolenaar" Stream selection and control
256071d4279SBram Moolenaar
257c236c16dSBram Moolenaarsyn match	logtalkKeyword		"\<\(curren\|se\)t_\(in\|out\)put\ze("
258071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<open\ze("
259071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<close\ze("
260071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<flush_output\ze("
261071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<flush_output\>"
262071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<stream_property\ze("
263071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<at_end_of_stream\ze("
264071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<at_end_of_stream\>"
265071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<set_stream_position\ze("
266071d4279SBram Moolenaar
267071d4279SBram Moolenaar
268f4b8e57fSBram Moolenaar" Character and byte input/output
269071d4279SBram Moolenaar
27054ee775eSBram Moolenaarsyn match	logtalkKeyword		"\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
271071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<nl\ze("
272071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<nl\>"
273071d4279SBram Moolenaar
274071d4279SBram Moolenaar
275071d4279SBram Moolenaar" Term input/output
276071d4279SBram Moolenaar
27754ee775eSBram Moolenaarsyn match	logtalkKeyword		"\<read\(_term\)\?\ze("
27854ee775eSBram Moolenaarsyn match	logtalkKeyword		"\<write\(q\|_\(canonical\|term\)\)\?\ze("
27954ee775eSBram Moolenaarsyn match	logtalkKeyword		"\<\(current_\)\?op\ze("
280c236c16dSBram Moolenaarsyn match	logtalkKeyword		"\<\(current_\)\?char_conversion\ze("
281071d4279SBram Moolenaar
282071d4279SBram Moolenaar
283071d4279SBram Moolenaar" Logic and control
284071d4279SBram Moolenaar
285071d4279SBram Moolenaarsyn match	logtalkOperator		"\\+"
286b8ff1fb5SBram Moolenaarsyn match	logtalkKeyword		"\<ignore\ze("
287071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<once\ze("
288071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<repeat\>"
289071d4279SBram Moolenaar
290071d4279SBram Moolenaar
291071d4279SBram Moolenaar" Atomic term processing
292071d4279SBram Moolenaar
29354ee775eSBram Moolenaarsyn match	logtalkKeyword		"\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
294071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<sub_atom\ze("
295071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<char_code\ze("
296c236c16dSBram Moolenaarsyn match	logtalkKeyword		"\<number_c\(har\|ode\)s\ze("
297071d4279SBram Moolenaar
298071d4279SBram Moolenaar
299071d4279SBram Moolenaar" Implementation defined hooks functions
300071d4279SBram Moolenaar
301c236c16dSBram Moolenaarsyn match	logtalkKeyword		"\<\(curren\|se\)t_prolog_flag\ze("
302071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<halt\ze("
303071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<halt\>"
304071d4279SBram Moolenaar
305071d4279SBram Moolenaar
306b8ff1fb5SBram Moolenaar" Sorting
307b8ff1fb5SBram Moolenaar
308b8ff1fb5SBram Moolenaarsyn match	logtalkKeyword		"\<\(key\)\?sort\ze("
309b8ff1fb5SBram Moolenaar
310b8ff1fb5SBram Moolenaar
311071d4279SBram Moolenaar" Evaluable functors
312071d4279SBram Moolenaar
313071d4279SBram Moolenaarsyn match	logtalkOperator		"+"
314071d4279SBram Moolenaarsyn match	logtalkOperator		"-"
315071d4279SBram Moolenaarsyn match	logtalkOperator		"\*"
316071d4279SBram Moolenaarsyn match	logtalkOperator		"//"
317071d4279SBram Moolenaarsyn match	logtalkOperator		"/"
318*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<div\ze("
31954ee775eSBram Moolenaarsyn match	logtalkKeyword		"\<r\(ound\|em\)\ze("
320b8ff1fb5SBram Moolenaarsyn match	logtalkKeyword		"\<e\>"
321b8ff1fb5SBram Moolenaarsyn match	logtalkKeyword		"\<pi\>"
322*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<div\>"
323071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<rem\>"
324*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<m\(ax\|in\|od\)\ze("
325071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<mod\>"
326071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<abs\ze("
327071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<sign\ze("
32854ee775eSBram Moolenaarsyn match	logtalkKeyword		"\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
329*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<t\(an\|runcate\)\ze("
330071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<ceiling\ze("
331071d4279SBram Moolenaar
332071d4279SBram Moolenaar
333071d4279SBram Moolenaar" Other arithemtic functors
334071d4279SBram Moolenaar
335071d4279SBram Moolenaarsyn match	logtalkOperator		"\*\*"
336f4b8e57fSBram Moolenaarsyn match	logtalkKeyword		"\<s\(in\|qrt\)\ze("
337071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<cos\ze("
338*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<a\(cos\|sin\|tan\|tan2\)\ze("
339071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<exp\ze("
340071d4279SBram Moolenaarsyn match	logtalkKeyword		"\<log\ze("
341071d4279SBram Moolenaar
342071d4279SBram Moolenaar
343071d4279SBram Moolenaar" Bitwise functors
344071d4279SBram Moolenaar
345071d4279SBram Moolenaarsyn match	logtalkOperator		">>"
346071d4279SBram Moolenaarsyn match	logtalkOperator		"<<"
347071d4279SBram Moolenaarsyn match	logtalkOperator		"/\\"
348071d4279SBram Moolenaarsyn match	logtalkOperator		"\\/"
349071d4279SBram Moolenaarsyn match	logtalkOperator		"\\"
350*d473c8c1SBram Moolenaarsyn match	logtalkKeyword		"\<xor\ze("
351071d4279SBram Moolenaar
352071d4279SBram Moolenaar
353071d4279SBram Moolenaar" Logtalk list operator
354071d4279SBram Moolenaar
355071d4279SBram Moolenaarsyn match	logtalkOperator		"|"
356071d4279SBram Moolenaar
357071d4279SBram Moolenaar
358b8ff1fb5SBram Moolenaar" Logtalk existential quantifier operator
359b8ff1fb5SBram Moolenaar
360b8ff1fb5SBram Moolenaarsyn match	logtalkOperator		"\^"
361b8ff1fb5SBram Moolenaar
362b8ff1fb5SBram Moolenaar
36354ee775eSBram Moolenaar" Logtalk numbers
36454ee775eSBram Moolenaar
36554ee775eSBram Moolenaarsyn match	logtalkNumber		"\<\d\+\>"
36654ee775eSBram Moolenaarsyn match	logtalkNumber		"\<\d\+\.\d\+\>"
36754ee775eSBram Moolenaarsyn match	logtalkNumber		"\<\d\+[eE][-+]\=\d\+\>"
36854ee775eSBram Moolenaarsyn match	logtalkNumber		"\<\d\+\.\d\+[eE][-+]\=\d\+\>"
369*d473c8c1SBram Moolenaarsyn match	logtalkNumber		"\<0'[\\]\?.\|0''\|0'\"\>"
37054ee775eSBram Moolenaarsyn match	logtalkNumber		"\<0b[0-1]\+\>"
37145eeb133SBram Moolenaarsyn match	logtalkNumber		"\<0o\o\+\>"
37254ee775eSBram Moolenaarsyn match	logtalkNumber		"\<0x\x\+\>"
37354ee775eSBram Moolenaar
37454ee775eSBram Moolenaar
37554ee775eSBram Moolenaar" Logtalk end-of-clause
37654ee775eSBram Moolenaar
37754ee775eSBram Moolenaarsyn match	logtalkOperator		"\."
37854ee775eSBram Moolenaar
37954ee775eSBram Moolenaar
380071d4279SBram Moolenaar" Logtalk comments
381071d4279SBram Moolenaar
38245eeb133SBram Moolenaarsyn region	logtalkBlockComment	start="/\*"	end="\*/"	fold
383071d4279SBram Moolenaarsyn match	logtalkLineComment	"%.*"
384071d4279SBram Moolenaar
385b8ff1fb5SBram Moolenaarsyn cluster	logtalkComment		contains=logtalkBlockComment,logtalkLineComment
386b8ff1fb5SBram Moolenaar
387b8ff1fb5SBram Moolenaar
388b8ff1fb5SBram Moolenaar" Logtalk conditional compilation folding
389b8ff1fb5SBram Moolenaar
390b8ff1fb5SBram Moolenaarsyn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE
391b8ff1fb5SBram Moolenaarsyn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
392b8ff1fb5SBram Moolenaarsyn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
393b8ff1fb5SBram Moolenaarsyn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP
394b8ff1fb5SBram Moolenaar
395b8ff1fb5SBram Moolenaar
396071d4279SBram Moolenaar
39745eeb133SBram Moolenaar" Logtalk entity folding
39845eeb133SBram Moolenaar
39945eeb133SBram Moolenaarsyn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
40045eeb133SBram Moolenaarsyn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
40145eeb133SBram Moolenaarsyn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
40245eeb133SBram Moolenaar
40345eeb133SBram Moolenaar
404a0084659SBram Moolenaarsyn sync ccomment logtalkBlockComment maxlines=50
405071d4279SBram Moolenaar
406071d4279SBram Moolenaar
407071d4279SBram Moolenaar" Define the default highlighting.
40889bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
409071d4279SBram Moolenaar
410f37506f6SBram Moolenaarhi def link logtalkBlockComment	Comment
411f37506f6SBram Moolenaarhi def link logtalkLineComment	Comment
412071d4279SBram Moolenaar
413f37506f6SBram Moolenaarhi def link logtalkOpenEntityDir	Normal
414f37506f6SBram Moolenaarhi def link logtalkOpenEntityDirTag	PreProc
415071d4279SBram Moolenaar
416f37506f6SBram Moolenaarhi def link logtalkIfContainer	PreProc
417f37506f6SBram Moolenaarhi def link logtalkIf		PreProc
418f37506f6SBram Moolenaarhi def link logtalkElseIf		PreProc
419f37506f6SBram Moolenaarhi def link logtalkElse		PreProc
420b8ff1fb5SBram Moolenaar
421f37506f6SBram Moolenaarhi def link logtalkEntity		Normal
422071d4279SBram Moolenaar
423f37506f6SBram Moolenaarhi def link logtalkEntityRel	Normal
424f37506f6SBram Moolenaarhi def link logtalkEntityRelTag	PreProc
425071d4279SBram Moolenaar
426f37506f6SBram Moolenaarhi def link logtalkCloseEntityDir	PreProc
427071d4279SBram Moolenaar
428f37506f6SBram Moolenaarhi def link logtalkDir		Normal
429f37506f6SBram Moolenaarhi def link logtalkDirTag		PreProc
430071d4279SBram Moolenaar
431f37506f6SBram Moolenaarhi def link logtalkAtom		String
432f37506f6SBram Moolenaarhi def link logtalkString		String
433f37506f6SBram Moolenaarhi def link logtalkEscapeSequence	SpecialChar
434071d4279SBram Moolenaar
435f37506f6SBram Moolenaarhi def link logtalkNumber		Number
436071d4279SBram Moolenaar
437f37506f6SBram Moolenaarhi def link logtalkKeyword		Keyword
438071d4279SBram Moolenaar
439f37506f6SBram Moolenaarhi def link logtalkBuiltIn		Keyword
440f37506f6SBram Moolenaarhi def link logtalkBuiltInMethod	Keyword
441071d4279SBram Moolenaar
442f37506f6SBram Moolenaarhi def link logtalkOperator		Operator
443071d4279SBram Moolenaar
444f37506f6SBram Moolenaarhi def link logtalkExtCall		Normal
445f37506f6SBram Moolenaarhi def link logtalkExtCallTag	Operator
446071d4279SBram Moolenaar
447f37506f6SBram Moolenaarhi def link logtalkVariable		Identifier
448071d4279SBram Moolenaar
449071d4279SBram Moolenaar
450071d4279SBram Moolenaar
451071d4279SBram Moolenaarlet b:current_syntax = "logtalk"
452b8ff1fb5SBram Moolenaar
453b8ff1fb5SBram Moolenaarlet &cpo = s:cpo_save
454b8ff1fb5SBram Moolenaarunlet s:cpo_save
455