1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: PROLOG 306fe74aeSBram Moolenaar" Maintainer: Anton Kochkov <[email protected]> 4*82be4849SBram Moolenaar" Last Change: 2021 Jan 05 5071d4279SBram Moolenaar 6071d4279SBram Moolenaar" There are two sets of highlighting in here: 7071d4279SBram Moolenaar" If the "prolog_highlighting_clean" variable exists, it is rather sparse. 8071d4279SBram Moolenaar" Otherwise you get more highlighting. 906fe74aeSBram Moolenaar" 1006fe74aeSBram Moolenaar" You can also set the "prolog_highlighting_no_keyword" variable. If set, 1106fe74aeSBram Moolenaar" keywords will not be highlighted. 12071d4279SBram Moolenaar 1389bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1489bcfda6SBram Moolenaarif exists("b:current_syntax") 15071d4279SBram Moolenaar finish 16071d4279SBram Moolenaarendif 17071d4279SBram Moolenaar 18071d4279SBram Moolenaar" Prolog is case sensitive. 19071d4279SBram Moolenaarsyn case match 20071d4279SBram Moolenaar 21071d4279SBram Moolenaar" Very simple highlighting for comments, clause heads and 22071d4279SBram Moolenaar" character codes. It respects prolog strings and atoms. 23071d4279SBram Moolenaar 24*82be4849SBram Moolenaarsyn region prologCComment start=+/\*+ end=+\*/+ contains=@Spell 25*82be4849SBram Moolenaarsyn match prologComment +%.*+ contains=@Spell 26071d4279SBram Moolenaar 2706fe74aeSBram Moolenaarif !exists("prolog_highlighting_no_keyword") 28071d4279SBram Moolenaar syn keyword prologKeyword module meta_predicate multifile dynamic 2906fe74aeSBram Moolenaarendif 30071d4279SBram Moolenaarsyn match prologCharCode +0'\\\=.+ 31*82be4849SBram Moolenaarsyn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell 323577c6faSBram Moolenaarsyn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+ 33*82be4849SBram Moolenaarsyn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause contains=@NoSpell 34071d4279SBram Moolenaar 35071d4279SBram Moolenaarif !exists("prolog_highlighting_clean") 36071d4279SBram Moolenaar 37071d4279SBram Moolenaar " some keywords 38071d4279SBram Moolenaar " some common predicates are also highlighted as keywords 39071d4279SBram Moolenaar " is there a better solution? 4006fe74aeSBram Moolenaar if !exists("prolog_highlighting_no_keyword") 41071d4279SBram Moolenaar syn keyword prologKeyword abolish current_output peek_code 42071d4279SBram Moolenaar syn keyword prologKeyword append current_predicate put_byte 43071d4279SBram Moolenaar syn keyword prologKeyword arg current_prolog_flag put_char 44071d4279SBram Moolenaar syn keyword prologKeyword asserta fail put_code 45071d4279SBram Moolenaar syn keyword prologKeyword assertz findall read 46071d4279SBram Moolenaar syn keyword prologKeyword at_end_of_stream float read_term 47071d4279SBram Moolenaar syn keyword prologKeyword atom flush_output repeat 48071d4279SBram Moolenaar syn keyword prologKeyword atom_chars functor retract 49071d4279SBram Moolenaar syn keyword prologKeyword atom_codes get_byte set_input 50071d4279SBram Moolenaar syn keyword prologKeyword atom_concat get_char set_output 51071d4279SBram Moolenaar syn keyword prologKeyword atom_length get_code set_prolog_flag 52071d4279SBram Moolenaar syn keyword prologKeyword atomic halt set_stream_position 53071d4279SBram Moolenaar syn keyword prologKeyword bagof integer setof 54071d4279SBram Moolenaar syn keyword prologKeyword call is stream_property 55071d4279SBram Moolenaar syn keyword prologKeyword catch nl sub_atom 56071d4279SBram Moolenaar syn keyword prologKeyword char_code nonvar throw 57071d4279SBram Moolenaar syn keyword prologKeyword char_conversion number true 58071d4279SBram Moolenaar syn keyword prologKeyword clause number_chars unify_with_occurs_check 59071d4279SBram Moolenaar syn keyword prologKeyword close number_codes var 60071d4279SBram Moolenaar syn keyword prologKeyword compound once write 61071d4279SBram Moolenaar syn keyword prologKeyword copy_term op write_canonical 62071d4279SBram Moolenaar syn keyword prologKeyword current_char_conversion open write_term 63071d4279SBram Moolenaar syn keyword prologKeyword current_input peek_byte writeq 64071d4279SBram Moolenaar syn keyword prologKeyword current_op peek_char 6506fe74aeSBram Moolenaar endif 66071d4279SBram Moolenaar 6706fe74aeSBram Moolenaar syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|=\.\.\|<\|>\|=" 68071d4279SBram Moolenaar syn match prologAsIs "===\|\\===\|<=\|=>" 69071d4279SBram Moolenaar 7006fe74aeSBram Moolenaar syn match prologNumber "\<\d*\>'\@!" 7106fe74aeSBram Moolenaar syn match prologNumber "\<0[xX]\x*\>'\@!" 72071d4279SBram Moolenaar syn match prologCommentError "\*/" 73071d4279SBram Moolenaar syn match prologSpecialCharacter ";" 74071d4279SBram Moolenaar syn match prologSpecialCharacter "!" 75543b7ef7SBram Moolenaar syn match prologSpecialCharacter ":-" 76543b7ef7SBram Moolenaar syn match prologSpecialCharacter "-->" 77071d4279SBram Moolenaar syn match prologQuestion "?-.*\." contains=prologNumber 78071d4279SBram Moolenaar 79071d4279SBram Moolenaar 80071d4279SBram Moolenaarendif 81071d4279SBram Moolenaar 823918c950SBram Moolenaarsyn sync maxlines=50 83071d4279SBram Moolenaar 84071d4279SBram Moolenaar 85071d4279SBram Moolenaar" Define the default highlighting. 8689bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 87071d4279SBram Moolenaar 88071d4279SBram Moolenaar" The default highlighting. 89f37506f6SBram Moolenaarhi def link prologComment Comment 90f37506f6SBram Moolenaarhi def link prologCComment Comment 91f37506f6SBram Moolenaarhi def link prologCharCode Special 92071d4279SBram Moolenaar 93071d4279SBram Moolenaarif exists ("prolog_highlighting_clean") 94071d4279SBram Moolenaar 95f37506f6SBram Moolenaarhi def link prologKeyword Statement 96f37506f6SBram Moolenaarhi def link prologClauseHead Statement 97f37506f6SBram Moolenaarhi def link prologClause Normal 98071d4279SBram Moolenaar 99071d4279SBram Moolenaarelse 100071d4279SBram Moolenaar 101f37506f6SBram Moolenaarhi def link prologKeyword Keyword 102f37506f6SBram Moolenaarhi def link prologClauseHead Constant 103f37506f6SBram Moolenaarhi def link prologClause Normal 104f37506f6SBram Moolenaarhi def link prologQuestion PreProc 105f37506f6SBram Moolenaarhi def link prologSpecialCharacter Special 106f37506f6SBram Moolenaarhi def link prologNumber Number 107f37506f6SBram Moolenaarhi def link prologAsIs Normal 108f37506f6SBram Moolenaarhi def link prologCommentError Error 109f37506f6SBram Moolenaarhi def link prologAtom String 110f37506f6SBram Moolenaarhi def link prologString String 111f37506f6SBram Moolenaarhi def link prologOperator Operator 112071d4279SBram Moolenaar 113071d4279SBram Moolenaarendif 114071d4279SBram Moolenaar 115071d4279SBram Moolenaar 116071d4279SBram Moolenaarlet b:current_syntax = "prolog" 117071d4279SBram Moolenaar 118071d4279SBram Moolenaar" vim: ts=8 119