codekingpro/portable-devtools
114k
1" Vim syntax file2"3" Language: Logtalk4" Maintainer: Paulo Moura <pmoura@logtalk.org>5" Last Change: October 6, 20256 7 8 9" quit when a syntax file was already loaded10if exists("b:current_syntax")11 finish12endif13 14let s:cpo_save = &cpo15set cpo&vim16 17" Logtalk is case sensitive:18 19syn case match20 21 22" Logtalk variables23 24syn match logtalkVariable "\<\(\u\|_\)\(\w\)*\>"25 26 27" Logtalk clause functor28 29syn match logtalkOperator ":-"30 31 32" Logtalk quoted atoms and strings33 34syn region logtalkString start=+"+ skip=+\\"+ end=+"+ contains=logtalkEscapeSequence35syn region logtalkAtom start=+'+ skip=+\\'+ end=+'+ contains=logtalkEscapeSequence36 37syn match logtalkEscapeSequence contained "\\\([\\abfnrtv\"\']\|\(x[a-fA-F0-9]\+\|[0-7]\+\)\\\)"38 39 40" Logtalk message-sending operators41 42syn match logtalkOperator "::"43syn match logtalkOperator "\(0'\)\@<!:"44syn match logtalkOperator "\^\^"45 46 47" Logtalk external call48 49syn region logtalkExtCall matchgroup=logtalkExtCallTag start="{" matchgroup=logtalkExtCallTag end="}" contains=ALL50 51 52" Logtalk opening entity directives53 54syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- object(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom,logtalkEntityRel,logtalkLineComment55syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- protocol(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment56syn region logtalkOpenEntityDir matchgroup=logtalkOpenEntityDirTag start=":- category(" matchgroup=logtalkOpenEntityDirTag end=")\." contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkEntityRel,logtalkLineComment57 58 59" Logtalk closing entity directives60 61syn match logtalkCloseEntityDir ":- end_object\."62syn match logtalkCloseEntityDir ":- end_protocol\."63syn match logtalkCloseEntityDir ":- end_category\."64 65 66" Logtalk entity relations67 68syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="instantiates(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained69syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="specializes(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained70syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="extends(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained71syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="imports(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained72syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="implements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained73syn region logtalkEntityRel matchgroup=logtalkEntityRelTag start="complements(" matchgroup=logtalkEntityRelTag end=")" contains=logtalkEntity,logtalkVariable,logtalkNumber,logtalkOperator,logtalkString,logtalkAtom contained74 75 76" Logtalk directives77 78syn region logtalkDir matchgroup=logtalkDirTag start=":- if(" matchgroup=logtalkDirTag end=")\." contains=ALL79syn region logtalkDir matchgroup=logtalkDirTag start=":- elif(" matchgroup=logtalkDirTag end=")\." contains=ALL80syn match logtalkDirTag ":- else\."81syn match logtalkDirTag ":- endif\."82syn region logtalkDir matchgroup=logtalkDirTag start=":- alias(" matchgroup=logtalkDirTag end=")\." contains=ALL83syn region logtalkDir matchgroup=logtalkDirTag start=":- coinductive(" matchgroup=logtalkDirTag end=")\." contains=ALL84syn region logtalkDir matchgroup=logtalkDirTag start=":- encoding(" matchgroup=logtalkDirTag end=")\." contains=ALL85syn region logtalkDir matchgroup=logtalkDirTag start=":- initialization(" matchgroup=logtalkDirTag end=")\." contains=ALL86syn region logtalkDir matchgroup=logtalkDirTag start=":- info(" matchgroup=logtalkDirTag end=")\." contains=ALL87syn region logtalkDir matchgroup=logtalkDirTag start=":- mode(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom88syn region logtalkDir matchgroup=logtalkDirTag start=":- mode_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=logtalkOperator, logtalkAtom89syn region logtalkDir matchgroup=logtalkDirTag start=":- dynamic(" matchgroup=logtalkDirTag end=")\." contains=ALL90syn match logtalkDirTag ":- built_in\."91syn match logtalkDirTag ":- dynamic\."92syn region logtalkDir matchgroup=logtalkDirTag start=":- discontiguous(" matchgroup=logtalkDirTag end=")\." contains=ALL93syn region logtalkDir matchgroup=logtalkDirTag start=":- multifile(" matchgroup=logtalkDirTag end=")\." contains=ALL94syn region logtalkDir matchgroup=logtalkDirTag start=":- public(" matchgroup=logtalkDirTag end=")\." contains=ALL95syn region logtalkDir matchgroup=logtalkDirTag start=":- protected(" matchgroup=logtalkDirTag end=")\." contains=ALL96syn region logtalkDir matchgroup=logtalkDirTag start=":- private(" matchgroup=logtalkDirTag end=")\." contains=ALL97syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL98syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_non_terminal(" matchgroup=logtalkDirTag end=")\." contains=ALL99syn region logtalkDir matchgroup=logtalkDirTag start=":- op(" matchgroup=logtalkDirTag end=")\." contains=ALL100syn region logtalkDir matchgroup=logtalkDirTag start=":- set_logtalk_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL101syn region logtalkDir matchgroup=logtalkDirTag start=":- synchronized(" matchgroup=logtalkDirTag end=")\." contains=ALL102syn match logtalkDirTag ":- synchronized\."103syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL104syn match logtalkDirTag ":- threaded\."105 106 107" Prolog directives108 109syn region logtalkDir matchgroup=logtalkDirTag start=":- ensure_loaded(" matchgroup=logtalkDirTag end=")\." contains=ALL110syn region logtalkDir matchgroup=logtalkDirTag start=":- include(" matchgroup=logtalkDirTag end=")\." contains=ALL111syn region logtalkDir matchgroup=logtalkDirTag start=":- set_prolog_flag(" matchgroup=logtalkDirTag end=")\." contains=ALL112 113 114" Module directives115 116syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL117syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL118syn region logtalkDir matchgroup=logtalkDirTag start=":- reexport(" matchgroup=logtalkDirTag end=")\." contains=ALL119syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL120 121 122" Logtalk built-in predicates123 124syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("125 126syn match logtalkBuiltIn "\<\(object\|protocol\|category\)_property\ze("127 128syn match logtalkBuiltIn "\<co\(mplements_object\|nforms_to_protocol\)\ze("129syn match logtalkBuiltIn "\<extends_\(object\|protocol\|category\)\ze("130syn match logtalkBuiltIn "\<imp\(orts_category\|lements_protocol\)\ze("131syn match logtalkBuiltIn "\<\(instantiat\|specializ\)es_class\ze("132 133syn match logtalkBuiltIn "\<\(abolish\|define\)_events\ze("134syn match logtalkBuiltIn "\<current_event\ze("135 136syn match logtalkBuiltIn "\<\(create\|current\|set\)_logtalk_flag\ze("137 138syn match logtalkBuiltIn "\<logtalk_\(compile\|l\(ibrary_path\|oad\|oad_context\)\|make\(_target_action\)\?\)\ze("139syn match logtalkBuiltIn "\<logtalk_make\>"140 141syn match logtalkBuiltIn "\<\(for\|retract\)all\ze("142 143syn match logtalkBuiltIn "\<threaded\(_\(ca\(ll\|ncel\)\|once\|ignore\|exit\|peek\|wait\|notify\)\)\?\ze("144syn match logtalkBuiltIn "\<threaded_engine\(_\(create\|destroy\|self\|next\|next_reified\|yield\|post\|fetch\)\)\?\ze("145 146 147" Logtalk built-in methods148 149syn match logtalkBuiltInMethod "\<context\ze("150syn match logtalkBuiltInMethod "\<parameter\ze("151syn match logtalkBuiltInMethod "\<se\(lf\|nder\)\ze("152syn match logtalkBuiltInMethod "\<this\ze("153 154syn match logtalkBuiltInMethod "\<current_predicate\ze("155syn match logtalkBuiltInMethod "\<predicate_property\ze("156 157syn match logtalkBuiltInMethod "\<a\(bolish\|ssert\(a\|z\)\)\ze("158syn match logtalkBuiltInMethod "\<clause\ze("159syn match logtalkBuiltInMethod "\<retract\(all\)\?\ze("160 161syn match logtalkBuiltInMethod "\<\(bag\|set\)of\ze("162syn match logtalkBuiltInMethod "\<f\(ind\|or\)all\ze("163 164syn match logtalkBuiltInMethod "\<before\ze("165syn match logtalkBuiltInMethod "\<after\ze("166 167syn match logtalkBuiltInMethod "\<forward\ze("168 169syn match logtalkBuiltInMethod "\<expand_\(goal\|term\)\ze("170syn match logtalkBuiltInMethod "\<\(goal\|term\)_expansion\ze("171syn match logtalkBuiltInMethod "\<phrase\ze("172 173 174" Mode operators175 176syn match logtalkOperator "\(0'\)\@<!?"177syn match logtalkOperator "\(0'\)\@<!@"178 179 180" Control constructs181 182syn match logtalkKeyword "\<true\>"183syn match logtalkKeyword "\<fail\>"184syn match logtalkKeyword "\<false\>"185syn match logtalkKeyword "\<ca\(ll\|tch\)\ze("186syn match logtalkOperator "\(0'\)\@<!!"187" syn match logtalkOperator "\(0'\)\@<!,"188syn match logtalkOperator "\(0'\)\@<!;"189syn match logtalkOperator "-->"190syn match logtalkOperator "->"191syn match logtalkKeyword "\<throw\ze("192syn match logtalkKeyword "\<\(instantiation\|system\)_error\>"193syn match logtalkKeyword "\<\(uninstantiation\|type\|domain\|consistency\|existence\|permission\|representation\|evaluation\|resource\|syntax\)_error\ze("194 195 196" Term unification197 198syn match logtalkOperator "\(0'\)\@<!="199syn match logtalkKeyword "\<subsumes_term\ze("200syn match logtalkKeyword "\<unify_with_occurs_check\ze("201syn match logtalkOperator "\\="202 203 204" Term testing205 206syn match logtalkKeyword "\<var\ze("207syn match logtalkKeyword "\<atom\(ic\)\?\ze("208syn match logtalkKeyword "\<integer\ze("209syn match logtalkKeyword "\<float\ze("210syn match logtalkKeyword "\<c\(allable\|ompound\)\ze("211syn match logtalkKeyword "\<n\(onvar\|umber\)\ze("212syn match logtalkKeyword "\<ground\ze("213syn match logtalkKeyword "\<acyclic_term\ze("214 215 216" Term comparison217 218syn match logtalkKeyword "\<compare\ze("219syn match logtalkOperator "@=<"220syn match logtalkOperator "=="221syn match logtalkOperator "\\=="222syn match logtalkOperator "@<"223syn match logtalkOperator "@>"224syn match logtalkOperator "@>="225 226 227" Term creation and decomposition228 229syn match logtalkKeyword "\<functor\ze("230syn match logtalkKeyword "\<arg\ze("231syn match logtalkOperator "=\.\."232syn match logtalkKeyword "\<copy_term\ze("233syn match logtalkKeyword "\<numbervars\ze("234syn match logtalkKeyword "\<term_variables\ze("235 236 237" Predicate aliases238 239syn match logtalkOperator "\<as\>"240 241 242" Arithmetic evaluation243 244syn match logtalkOperator "\<is\>"245 246 247" Arithmetic comparison248 249syn match logtalkOperator "=:="250syn match logtalkOperator "=\\="251syn match logtalkOperator "\(0'\)\@<!<"252syn match logtalkOperator "=<"253syn match logtalkOperator "\(0'\)\@<!>"254syn match logtalkOperator ">="255 256 257" Stream selection and control258 259syn match logtalkKeyword "\<\(curren\|se\)t_\(in\|out\)put\ze("260syn match logtalkKeyword "\<open\ze("261syn match logtalkKeyword "\<close\ze("262syn match logtalkKeyword "\<flush_output\ze("263syn match logtalkKeyword "\<flush_output\>"264syn match logtalkKeyword "\<stream_property\ze("265syn match logtalkKeyword "\<at_end_of_stream\ze("266syn match logtalkKeyword "\<at_end_of_stream\>"267syn match logtalkKeyword "\<set_stream_position\ze("268 269 270" Character and byte input/output271 272syn match logtalkKeyword "\<\(get\|p\(eek\|ut\)\)_\(c\(har\|ode\)\|byte\)\ze("273syn match logtalkKeyword "\<nl\ze("274syn match logtalkKeyword "\<nl\>"275 276 277" Term input/output278 279syn match logtalkKeyword "\<read\(_term\)\?\ze("280syn match logtalkKeyword "\<write\(q\|_\(canonical\|term\)\)\?\ze("281syn match logtalkKeyword "\<\(current_\)\?op\ze("282syn match logtalkKeyword "\<\(current_\)\?char_conversion\ze("283 284 285" Logic and control286 287syn match logtalkOperator "\\+"288syn match logtalkKeyword "\<ignore\ze("289syn match logtalkKeyword "\<once\ze("290syn match logtalkKeyword "\<repeat\>"291 292 293" Atomic term processing294 295syn match logtalkKeyword "\<atom_\(length\|c\(hars\|o\(ncat\|des\)\)\)\ze("296syn match logtalkKeyword "\<sub_atom\ze("297syn match logtalkKeyword "\<char_code\ze("298syn match logtalkKeyword "\<number_c\(har\|ode\)s\ze("299 300 301" Implementation defined hooks functions302 303syn match logtalkKeyword "\<\(curren\|se\)t_prolog_flag\ze("304syn match logtalkKeyword "\<halt\ze("305syn match logtalkKeyword "\<halt\>"306 307 308" Sorting309 310syn match logtalkKeyword "\<\(key\)\?sort\ze("311 312 313" Evaluable functors314 315syn match logtalkOperator "\(0'\)\@<![+]"316syn match logtalkOperator "\(0'\)\@<![-]"317syn match logtalkOperator "\(0'\)\@<!\*"318syn match logtalkOperator "//"319syn match logtalkOperator "\(0'\)\@<!/"320syn match logtalkKeyword "\<div\ze("321syn match logtalkKeyword "\<r\(ound\|em\)\ze("322syn match logtalkKeyword "\<e\>"323syn match logtalkKeyword "\<pi\>"324syn match logtalkKeyword "\<div\>"325syn match logtalkKeyword "\<rem\>"326syn match logtalkKeyword "\<m\(ax\|in\|od\)\ze("327syn match logtalkKeyword "\<mod\>"328syn match logtalkKeyword "\<abs\ze("329syn match logtalkKeyword "\<sign\ze("330syn match logtalkKeyword "\<flo\(or\|at\(_\(integer\|fractional\)_part\)\?\)\ze("331syn match logtalkKeyword "\<t\(an\|runcate\)\ze("332syn match logtalkKeyword "\<ceiling\ze("333 334 335" Other arithemtic functors336 337syn match logtalkOperator "\*\*"338syn match logtalkKeyword "\<s\(in\|qrt\)\ze("339syn match logtalkKeyword "\<cos\ze("340syn match logtalkKeyword "\<a\(cos\|sin\|tan\|tan2\)\ze("341syn match logtalkKeyword "\<exp\ze("342syn match logtalkKeyword "\<log\ze("343 344 345" Bitwise functors346 347syn match logtalkOperator ">>"348syn match logtalkOperator "<<"349syn match logtalkOperator "/\\"350syn match logtalkOperator "\\/"351syn match logtalkOperator "0'\@<!\\"352syn match logtalkKeyword "\<xor\ze("353 354 355" Logtalk list operator356 357syn match logtalkOperator "\(0'\)\@<!|"358 359 360" Logtalk existential quantifier operator361 362syn match logtalkOperator "\(0'\)\@<!^"363 364 365" Logtalk numbers 366 367syn match logtalkNumber "\<\d\+\>"368syn match logtalkNumber "\<\d\+\.\d\+\>"369syn match logtalkNumber "\<\d\+[eE][-+]\=\d\+\>"370syn match logtalkNumber "\<\d\+\.\d\+[eE][-+]\=\d\+\>"371syn match logtalkNumber "0'[\\]\?."372syn match logtalkNumber "\<0b[0-1]\+\>"373syn match logtalkNumber "\<0o\o\+\>"374syn match logtalkNumber "\<0x\x\+\>"375 376 377" Logtalk end-of-clause378 379syn match logtalkOperator "\(0'\)\@<!\."380 381 382" Logtalk comments383 384syn region logtalkBlockComment start="/\*" end="\*/" fold385syn match logtalkLineComment "%.*$"386 387syn cluster logtalkComment contains=logtalkBlockComment,logtalkLineComment388 389 390" Logtalk conditional compilation folding391 392syn region logtalkIfContainer transparent keepend extend start=":- if(" end=":- endif\." containedin=ALLBUT,@logtalkComment contains=NONE393syn region logtalkIf transparent fold keepend start=":- if(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP394syn region logtalkElseIf transparent fold keepend start=":- elif(" end=":- \(else\.\|elif(\)"ms=s-1,me=s-1 contained containedin=logtalkIfContainer nextgroup=logtalkElseIf,logtalkElse contains=TOP395syn region logtalkElse transparent fold keepend start=":- else\." end=":- endif\." contained containedin=logtalkIfContainer contains=TOP396 397 398 399" Logtalk entity folding400 401syn region logtalkEntity transparent fold keepend start=":- object(" end=":- end_object\." contains=ALL402syn region logtalkEntity transparent fold keepend start=":- protocol(" end=":- end_protocol\." contains=ALL403syn region logtalkEntity transparent fold keepend start=":- category(" end=":- end_category\." contains=ALL404 405 406syn sync ccomment logtalkBlockComment maxlines=50407 408 409" Define the default highlighting.410" Only when an item doesn't have highlighting yet411 412hi def link logtalkBlockComment Comment413hi def link logtalkLineComment Comment414 415hi def link logtalkOpenEntityDir Normal416hi def link logtalkOpenEntityDirTag PreProc417 418hi def link logtalkIfContainer PreProc419hi def link logtalkIf PreProc420hi def link logtalkElseIf PreProc421hi def link logtalkElse PreProc422 423hi def link logtalkEntity Normal424 425hi def link logtalkEntityRel Normal426hi def link logtalkEntityRelTag PreProc427 428hi def link logtalkCloseEntityDir PreProc429 430hi def link logtalkDir Normal431hi def link logtalkDirTag PreProc432 433hi def link logtalkAtom String434hi def link logtalkString String435hi def link logtalkEscapeSequence SpecialChar436 437hi def link logtalkNumber Number438 439hi def link logtalkKeyword Keyword440 441hi def link logtalkBuiltIn Keyword442hi def link logtalkBuiltInMethod Keyword443 444hi def link logtalkOperator Operator445 446hi def link logtalkExtCall Normal447hi def link logtalkExtCallTag Operator448 449hi def link logtalkVariable Identifier450 451 452 453let b:current_syntax = "logtalk"454 455let &cpo = s:cpo_save456unlet s:cpo_save457 