Install vim74
[msysgit.git] / share / vim / vim74 / syntax / logtalk.vim
blobbe34c7ed743cd3096d76c20006582e8218835cd8
1 " Vim syntax file
3 " Language:     Logtalk
4 " Maintainer:   Paulo Moura <pmoura@logtalk.org>
5 " Last Change:  February 4, 2012
8 " Quit when a syntax file was already loaded:
10 if version < 600
11         syntax clear
12 elseif exists("b:current_syntax")
13         finish
14 endif
16 let s:cpo_save = &cpo
17 set cpo&vim
19 " Logtalk is case sensitive:
21 syn case match
24 " Logtalk variables
26 syn match   logtalkVariable             "\<\(\u\|_\)\(\w\)*\>"
29 " Logtalk clause functor
31 syn match       logtalkOperator         ":-"
34 " Logtalk quoted atoms and strings
36 syn region      logtalkString           start=+"+       skip=+\\"+      end=+"+
37 syn region      logtalkAtom             start=+'+       skip=+\\'+      end=+'+         contains=logtalkEscapeSequence
39 syn match       logtalkEscapeSequence   contained       "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)"
42 " Logtalk message sending operators
44 syn match       logtalkOperator         "::"
45 syn match       logtalkOperator         ":"
46 syn match       logtalkOperator         "\^\^"
49 " Logtalk external call
51 syn region      logtalkExtCall          matchgroup=logtalkExtCallTag            start="{"               matchgroup=logtalkExtCallTag            end="}"         contains=ALL
54 " Logtalk opening entity directives
56 syn region      logtalkOpenEntityDir    matchgroup=logtalkOpenEntityDirTag      start=":- object("      matchgroup=logtalkOpenEntityDirTag      end=")\."       contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment
57 syn region      logtalkOpenEntityDir    matchgroup=logtalkOpenEntityDirTag      start=":- protocol("    matchgroup=logtalkOpenEntityDirTag      end=")\."       contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
58 syn region      logtalkOpenEntityDir    matchgroup=logtalkOpenEntityDirTag      start=":- category("    matchgroup=logtalkOpenEntityDirTag      end=")\."       contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment
61 " Logtalk closing entity directives
63 syn match       logtalkCloseEntityDir   ":- end_object\."
64 syn match       logtalkCloseEntityDir   ":- end_protocol\."
65 syn match       logtalkCloseEntityDir   ":- end_category\."
68 " Logtalk entity relations
70 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="instantiates("   matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
71 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="specializes("    matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
72 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="extends("        matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
73 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="imports("        matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
74 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="implements("     matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
75 syn region      logtalkEntityRel        matchgroup=logtalkEntityRelTag  start="complements("    matchgroup=logtalkEntityRelTag  end=")"         contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom  contained
78 " Logtalk directives
80 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- if("                  matchgroup=logtalkDirTag        end=")\."       contains=ALL
81 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- elif("                matchgroup=logtalkDirTag        end=")\."       contains=ALL
82 syn match       logtalkDirTag           ":- else\."
83 syn match       logtalkDirTag           ":- endif\."
84 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- alias("               matchgroup=logtalkDirTag        end=")\."       contains=ALL
85 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- calls("               matchgroup=logtalkDirTag        end=")\."       contains=ALL
86 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- coinductive("         matchgroup=logtalkDirTag        end=")\."       contains=ALL
87 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- encoding("            matchgroup=logtalkDirTag        end=")\."       contains=ALL
88 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- initialization("      matchgroup=logtalkDirTag        end=")\."       contains=ALL
89 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- info("                matchgroup=logtalkDirTag        end=")\."       contains=ALL
90 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- mode("                matchgroup=logtalkDirTag        end=")\."       contains=logtalkOperator, logtalkAtom
91 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- dynamic("             matchgroup=logtalkDirTag        end=")\."       contains=ALL
92 syn match       logtalkDirTag           ":- dynamic\."
93 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- discontiguous("       matchgroup=logtalkDirTag        end=")\."       contains=ALL
94 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- multifile("           matchgroup=logtalkDirTag        end=")\."       contains=ALL
95 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- public("              matchgroup=logtalkDirTag        end=")\."       contains=ALL
96 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- protected("           matchgroup=logtalkDirTag        end=")\."       contains=ALL
97 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- private("             matchgroup=logtalkDirTag        end=")\."       contains=ALL
98 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- meta_predicate("      matchgroup=logtalkDirTag        end=")\."       contains=ALL
99 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- meta_non_terminal("   matchgroup=logtalkDirTag        end=")\."       contains=ALL
100 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- op("                  matchgroup=logtalkDirTag        end=")\."       contains=ALL
101 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- set_logtalk_flag("    matchgroup=logtalkDirTag        end=")\."       contains=ALL
102 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- synchronized("        matchgroup=logtalkDirTag        end=")\."       contains=ALL
103 syn match       logtalkDirTag           ":- synchronized\."
104 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- uses("                matchgroup=logtalkDirTag        end=")\."       contains=ALL
105 syn match       logtalkDirTag           ":- threaded\."
108 " Prolog directives
110 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- ensure_loaded("       matchgroup=logtalkDirTag        end=")\."       contains=ALL
111 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- include("             matchgroup=logtalkDirTag        end=")\."       contains=ALL
112 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- set_prolog_flag("     matchgroup=logtalkDirTag        end=")\."       contains=ALL
115 " Module directives
117 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- module("              matchgroup=logtalkDirTag        end=")\."       contains=ALL
118 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- export("              matchgroup=logtalkDirTag        end=")\."       contains=ALL
119 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- reexport("            matchgroup=logtalkDirTag        end=")\."       contains=ALL
120 syn region      logtalkDir              matchgroup=logtalkDirTag        start=":- use_module("          matchgroup=logtalkDirTag        end=")\."       contains=ALL
123 " Logtalk built-in predicates
125 syn match       logtalkBuiltIn          "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
127 syn match       logtalkBuiltIn          "\<\(object\|protocol\|category\)_property\ze("
129 syn match       logtalkBuiltIn          "\<co\(mplements_object\|nforms_to_protocol\)\ze("
130 syn match       logtalkBuiltIn          "\<extends_\(object\|protocol\|category\)\ze("
131 syn match       logtalkBuiltIn          "\<imp\(orts_category\|lements_protocol\)\ze("
132 syn match       logtalkBuiltIn          "\<\(instantiat\|specializ\)es_class\ze("
134 syn match       logtalkBuiltIn          "\<\(abolish\|define\)_events\ze("
135 syn match       logtalkBuiltIn          "\<current_event\ze("
137 syn match       logtalkBuiltIn          "\<\(curren\|se\)t_logtalk_flag\ze("
139 syn match       logtalkBuiltIn          "\<logtalk_\(compile\|l\(ibrary_path\|oad\|oad_context\)\)\ze("
141 syn match       logtalkBuiltIn          "\<\(for\|retract\)all\ze("
143 syn match       logtalkBuiltIn          "\<threaded\(_\(call\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze("
146 " Logtalk built-in methods
148 syn match       logtalkBuiltInMethod    "\<parameter\ze("
149 syn match       logtalkBuiltInMethod    "\<se\(lf\|nder\)\ze("
150 syn match       logtalkBuiltInMethod    "\<this\ze("
152 syn match       logtalkBuiltInMethod    "\<current_predicate\ze("
153 syn match       logtalkBuiltInMethod    "\<predicate_property\ze("
155 syn match       logtalkBuiltInMethod    "\<a\(bolish\|ssert\(a\|z\)\)\ze("
156 syn match       logtalkBuiltInMethod    "\<clause\ze("
157 syn match       logtalkBuiltInMethod    "\<retract\(all\)\?\ze("
159 syn match       logtalkBuiltInMethod    "\<\(bag\|set\)of\ze("
160 syn match       logtalkBuiltInMethod    "\<f\(ind\|or\)all\ze("
162 syn match       logtalkBuiltInMethod    "\<before\ze("
163 syn match       logtalkBuiltInMethod    "\<after\ze("
165 syn match       logtalkBuiltInMethod    "\<expand_\(goal\|term\)\ze("
166 syn match       logtalkBuiltInMethod    "\<\(goal\|term\)_expansion\ze("
167 syn match       logtalkBuiltInMethod    "\<phrase\ze("
170 " Mode operators
172 syn match       logtalkOperator         "?"
173 syn match       logtalkOperator         "@"
176 " Control constructs
178 syn match       logtalkKeyword          "\<true\>"
179 syn match       logtalkKeyword          "\<fail\>"
180 syn match       logtalkKeyword          "\<ca\(ll\|tch\)\ze("
181 syn match       logtalkOperator         "!"
182 " syn match     logtalkOperator         ","
183 syn match       logtalkOperator         ";"
184 syn match       logtalkOperator         "-->"
185 syn match       logtalkOperator         "->"
186 syn match       logtalkKeyword          "\<throw\ze("
189 " Term unification
191 syn match       logtalkOperator         "="
192 syn match       logtalkKeyword          "\<unify_with_occurs_check\ze("
193 syn match       logtalkOperator         "\\="
196 " Term testing
198 syn match       logtalkKeyword          "\<var\ze("
199 syn match       logtalkKeyword          "\<atom\(ic\)\?\ze("
200 syn match       logtalkKeyword          "\<integer\ze("
201 syn match       logtalkKeyword          "\<float\ze("
202 syn match       logtalkKeyword          "\<c\(allable\|ompound\)\ze("
203 syn match       logtalkKeyword          "\<n\(onvar\|umber\)\ze("
204 syn match       logtalkKeyword          "\<ground\ze("
207 " Term comparison
209 syn match       logtalkKeyword          "\<compare\ze("
210 syn match       logtalkOperator         "@=<"
211 syn match       logtalkOperator         "=="
212 syn match       logtalkOperator         "\\=="
213 syn match       logtalkOperator         "@<"
214 syn match       logtalkOperator         "@>"
215 syn match       logtalkOperator         "@>="
218 " Term creation and decomposition
220 syn match       logtalkKeyword          "\<functor\ze("
221 syn match       logtalkKeyword          "\<arg\ze("
222 syn match       logtalkOperator         "=\.\."
223 syn match       logtalkKeyword          "\<copy_term\ze("
224 syn match       logtalkKeyword          "\<numbervars\ze("
227 " Arithemtic evaluation
229 syn match       logtalkOperator         "\<is\>"
232 " Arithemtic comparison
234 syn match       logtalkOperator         "=:="
235 syn match       logtalkOperator         "=\\="
236 syn match       logtalkOperator         "<"
237 syn match       logtalkOperator         "=<"
238 syn match       logtalkOperator         ">"
239 syn match       logtalkOperator         ">="
242 " Stream selection and control
244 syn match       logtalkKeyword          "\<\(curren\|se\)t_\(in\|out\)put\ze("
245 syn match       logtalkKeyword          "\<open\ze("
246 syn match       logtalkKeyword          "\<close\ze("
247 syn match       logtalkKeyword          "\<flush_output\ze("
248 syn match       logtalkKeyword          "\<flush_output\>"
249 syn match       logtalkKeyword          "\<stream_property\ze("
250 syn match       logtalkKeyword          "\<at_end_of_stream\ze("
251 syn match       logtalkKeyword          "\<at_end_of_stream\>"
252 syn match       logtalkKeyword          "\<set_stream_position\ze("
255 " Character and byte input/output
257 syn match       logtalkKeyword          "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("
258 syn match       logtalkKeyword          "\<nl\ze("
259 syn match       logtalkKeyword          "\<nl\>"
262 " Term input/output
264 syn match       logtalkKeyword          "\<read\(_term\)\?\ze("
265 syn match       logtalkKeyword          "\<write\(q\|_\(canonical\|term\)\)\?\ze("
266 syn match       logtalkKeyword          "\<\(current_\)\?op\ze("
267 syn match       logtalkKeyword          "\<\(current_\)\?char_conversion\ze("
270 " Logic and control
272 syn match       logtalkOperator         "\\+"
273 syn match       logtalkKeyword          "\<ignore\ze("
274 syn match       logtalkKeyword          "\<once\ze("
275 syn match       logtalkKeyword          "\<repeat\>"
278 " Atomic term processing
280 syn match       logtalkKeyword          "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("
281 syn match       logtalkKeyword          "\<sub_atom\ze("
282 syn match       logtalkKeyword          "\<char_code\ze("
283 syn match       logtalkKeyword          "\<number_c\(har\|ode\)s\ze("
286 " Implementation defined hooks functions
288 syn match       logtalkKeyword          "\<\(curren\|se\)t_prolog_flag\ze("
289 syn match       logtalkKeyword          "\<halt\ze("
290 syn match       logtalkKeyword          "\<halt\>"
293 " Sorting
295 syn match       logtalkKeyword          "\<\(key\)\?sort\ze("
298 " Evaluable functors
300 syn match       logtalkOperator         "+"
301 syn match       logtalkOperator         "-"
302 syn match       logtalkOperator         "\*"
303 syn match       logtalkOperator         "//"
304 syn match       logtalkOperator         "/"
305 syn match       logtalkKeyword          "\<r\(ound\|em\)\ze("
306 syn match       logtalkKeyword          "\<e\>"
307 syn match       logtalkKeyword          "\<pi\>"
308 syn match       logtalkKeyword          "\<rem\>"
309 syn match       logtalkKeyword          "\<mod\ze("
310 syn match       logtalkKeyword          "\<mod\>"
311 syn match       logtalkKeyword          "\<abs\ze("
312 syn match       logtalkKeyword          "\<sign\ze("
313 syn match       logtalkKeyword          "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("
314 syn match       logtalkKeyword          "\<truncate\ze("
315 syn match       logtalkKeyword          "\<ceiling\ze("
318 " Other arithemtic functors
320 syn match       logtalkOperator         "\*\*"
321 syn match       logtalkKeyword          "\<s\(in\|qrt\)\ze("
322 syn match       logtalkKeyword          "\<cos\ze("
323 syn match       logtalkKeyword          "\<atan\ze("
324 syn match       logtalkKeyword          "\<exp\ze("
325 syn match       logtalkKeyword          "\<log\ze("
328 " Bitwise functors
330 syn match       logtalkOperator         ">>"
331 syn match       logtalkOperator         "<<"
332 syn match       logtalkOperator         "/\\"
333 syn match       logtalkOperator         "\\/"
334 syn match       logtalkOperator         "\\"
337 " Logtalk list operator
339 syn match       logtalkOperator         "|"
342 " Logtalk existential quantifier operator
344 syn match       logtalkOperator         "\^"
347 " Logtalk numbers 
349 syn match       logtalkNumber           "\<\d\+\>"
350 syn match       logtalkNumber           "\<\d\+\.\d\+\>"
351 syn match       logtalkNumber           "\<\d\+[eE][-+]\=\d\+\>"
352 syn match       logtalkNumber           "\<\d\+\.\d\+[eE][-+]\=\d\+\>"
353 syn match       logtalkNumber           "\<0'.\|0''\|0'\"\>"
354 syn match       logtalkNumber           "\<0b[0-1]\+\>"
355 syn match       logtalkNumber           "\<0o\o\+\>"
356 syn match       logtalkNumber           "\<0x\x\+\>"
359 " Logtalk end-of-clause
361 syn match       logtalkOperator         "\."
364 " Logtalk comments
366 syn region      logtalkBlockComment     start="/\*"     end="\*/"       fold
367 syn match       logtalkLineComment      "%.*"
369 syn cluster     logtalkComment          contains=logtalkBlockComment,logtalkLineComment
372 " Logtalk conditional compilation folding
374 syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE
375 syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
376 syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP
377 syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP
381 " Logtalk entity folding
383 syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL
384 syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL
385 syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL
388 syn sync ccomment logtalkBlockComment maxlines=50
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
395 if 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
403         HiLink  logtalkBlockComment     Comment
404         HiLink  logtalkLineComment      Comment
406         HiLink  logtalkOpenEntityDir    Normal
407         HiLink  logtalkOpenEntityDirTag PreProc
409         HiLink  logtalkIfContainer      PreProc
410         HiLink  logtalkIf               PreProc
411         HiLink  logtalkElseIf           PreProc
412         HiLink  logtalkElse             PreProc
414         HiLink  logtalkEntity           Normal
416         HiLink  logtalkEntityRel        Normal
417         HiLink  logtalkEntityRelTag     PreProc
419         HiLink  logtalkCloseEntityDir   PreProc
421         HiLink  logtalkDir              Normal
422         HiLink  logtalkDirTag           PreProc
424         HiLink  logtalkAtom             String
425         HiLink  logtalkString           String
426         HiLink  logtalkEscapeSequence   SpecialChar
428         HiLink  logtalkNumber           Number
430         HiLink  logtalkKeyword          Keyword
432         HiLink  logtalkBuiltIn          Keyword
433         HiLink  logtalkBuiltInMethod    Keyword
435         HiLink  logtalkOperator         Operator
437         HiLink  logtalkExtCall          Normal
438         HiLink  logtalkExtCallTag       Operator
440         HiLink  logtalkVariable         Identifier
442         delcommand HiLink
444 endif
447 let b:current_syntax = "logtalk"
449 let &cpo = s:cpo_save
450 unlet s:cpo_save