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