blob: 2131308b802dd4341c45f612a74bc6c1e3e8f241 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: PROLOG
Bram Moolenaar3918c952005-03-15 22:34:55 +00003" Maintainers: Thomas Koehler <jean-luc@picard.franken.de>
Bram Moolenaar543b7ef2013-06-01 14:50:56 +02004" Last Change: 2013 May 23
5" URL: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/vim/syntax/prolog.vim
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020011" quit when a syntax file was already loaded
12if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000013 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
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020022syn region prologCComment start=+/\*+ end=+\*/+
23syn match prologComment +%.*+
Bram Moolenaar071d4272004-06-13 20:20:40 +000024
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020025syn 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000030
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
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020041 syn keyword prologKeyword at_end_of_stream float read_term
Bram Moolenaar071d4272004-06-13 20:20:40 +000042 syn keyword prologKeyword atom flush_output repeat
43 syn keyword prologKeyword atom_chars functor retract
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020044 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000047 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
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020055 syn keyword prologKeyword compound once write
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 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
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020064 syn match prologNumber "\<[0123456789]*\>'\@!"
Bram Moolenaar071d4272004-06-13 20:20:40 +000065 syn match prologCommentError "\*/"
66 syn match prologSpecialCharacter ";"
67 syn match prologSpecialCharacter "!"
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020068 syn match prologSpecialCharacter ":-"
69 syn match prologSpecialCharacter "-->"
70 syn match prologQuestion "?-.*\." contains=prologNumber
Bram Moolenaar071d4272004-06-13 20:20:40 +000071
72
73endif
74
Bram Moolenaar3918c952005-03-15 22:34:55 +000075syn sync maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +000076
77
78" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020079" Only when an item doesn't have highlighting yet
80command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000081
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020082" The default highlighting.
83HiLink prologComment Comment
84HiLink prologCComment Comment
85HiLink prologCharCode Special
Bram Moolenaar071d4272004-06-13 20:20:40 +000086
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020087if exists ("prolog_highlighting_clean")
Bram Moolenaar071d4272004-06-13 20:20:40 +000088
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020089HiLink prologKeyword Statement
90HiLink prologClauseHead Statement
91HiLink prologClause Normal
Bram Moolenaar071d4272004-06-13 20:20:40 +000092
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020093else
Bram Moolenaar071d4272004-06-13 20:20:40 +000094
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020095HiLink 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
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106
Bram Moolenaar071d4272004-06-13 20:20:40 +0000107endif
108
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200109delcommand HiLink
110
Bram Moolenaar071d4272004-06-13 20:20:40 +0000111let b:current_syntax = "prolog"
112
113" vim: ts=8