1" Vim syntax file 2" Language: PROLOG 3" Maintainers: Thomas Koehler <[email protected]> 4" Last Change: 2013 May 23 5" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim 6 7" There are two sets of highlighting in here: 8" If the "prolog_highlighting_clean" variable exists, it is rather sparse. 9" Otherwise you get more highlighting. 10 11" quit when a syntax file was already loaded 12if exists("b:current_syntax") 13 finish 14endif 15 16" Prolog is case sensitive. 17syn case match 18 19" Very simple highlighting for comments, clause heads and 20" character codes. It respects prolog strings and atoms. 21 22syn region prologCComment start=+/\*+ end=+\*/+ 23syn match prologComment +%.*+ 24 25syn keyword prologKeyword module meta_predicate multifile dynamic 26syn match prologCharCode +0'\\\=.+ 27syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+ 28syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+ 29syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause 30 31if !exists("prolog_highlighting_clean") 32 33 " some keywords 34 " some common predicates are also highlighted as keywords 35 " is there a better solution? 36 syn keyword prologKeyword abolish current_output peek_code 37 syn keyword prologKeyword append current_predicate put_byte 38 syn keyword prologKeyword arg current_prolog_flag put_char 39 syn keyword prologKeyword asserta fail put_code 40 syn keyword prologKeyword assertz findall read 41 syn keyword prologKeyword at_end_of_stream float read_term 42 syn keyword prologKeyword atom flush_output repeat 43 syn keyword prologKeyword atom_chars functor retract 44 syn keyword prologKeyword atom_codes get_byte set_input 45 syn keyword prologKeyword atom_concat get_char set_output 46 syn keyword prologKeyword atom_length get_code set_prolog_flag 47 syn keyword prologKeyword atomic halt set_stream_position 48 syn keyword prologKeyword bagof integer setof 49 syn keyword prologKeyword call is stream_property 50 syn keyword prologKeyword catch nl sub_atom 51 syn keyword prologKeyword char_code nonvar throw 52 syn keyword prologKeyword char_conversion number true 53 syn keyword prologKeyword clause number_chars unify_with_occurs_check 54 syn keyword prologKeyword close number_codes var 55 syn keyword prologKeyword compound once write 56 syn keyword prologKeyword copy_term op write_canonical 57 syn keyword prologKeyword current_char_conversion open write_term 58 syn keyword prologKeyword current_input peek_byte writeq 59 syn keyword prologKeyword current_op peek_char 60 61 syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|=" 62 syn match prologAsIs "===\|\\===\|<=\|=>" 63 64 syn match prologNumber "\<[0123456789]*\>'\@!" 65 syn match prologCommentError "\*/" 66 syn match prologSpecialCharacter ";" 67 syn match prologSpecialCharacter "!" 68 syn match prologSpecialCharacter ":-" 69 syn match prologSpecialCharacter "-->" 70 syn match prologQuestion "?-.*\." contains=prologNumber 71 72 73endif 74 75syn sync maxlines=50 76 77 78" Define the default highlighting. 79" Only when an item doesn't have highlighting yet 80command -nargs=+ HiLink hi def link <args> 81 82" The default highlighting. 83HiLink prologComment Comment 84HiLink prologCComment Comment 85HiLink prologCharCode Special 86 87if exists ("prolog_highlighting_clean") 88 89HiLink prologKeyword Statement 90HiLink prologClauseHead Statement 91HiLink prologClause Normal 92 93else 94 95HiLink prologKeyword Keyword 96HiLink prologClauseHead Constant 97HiLink prologClause Normal 98HiLink prologQuestion PreProc 99HiLink prologSpecialCharacter Special 100HiLink prologNumber Number 101HiLink prologAsIs Normal 102HiLink prologCommentError Error 103HiLink prologAtom String 104HiLink prologString String 105HiLink prologOperator Operator 106 107endif 108 109delcommand HiLink 110 111let b:current_syntax = "prolog" 112 113" vim: ts=8 114