blob: f5f0e673ec11bcb1fcb91f3c2660982dc16fe3c5 [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
11" Quit when a syntax file was already loaded
12if version < 600
13 syntax clear
14elseif exists("b:current_syntax")
15 finish
16endif
17
18" Prolog is case sensitive.
19syn case match
20
21" Very simple highlighting for comments, clause heads and
22" character codes. It respects prolog strings and atoms.
23
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020024syn region prologCComment start=+/\*+ end=+\*/+
25syn match prologComment +%.*+
Bram Moolenaar071d4272004-06-13 20:20:40 +000026
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020027syn keyword prologKeyword module meta_predicate multifile dynamic
28syn match prologCharCode +0'\\\=.+
29syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+
30syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+
31syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause
Bram Moolenaar071d4272004-06-13 20:20:40 +000032
33if !exists("prolog_highlighting_clean")
34
35 " some keywords
36 " some common predicates are also highlighted as keywords
37 " is there a better solution?
38 syn keyword prologKeyword abolish current_output peek_code
39 syn keyword prologKeyword append current_predicate put_byte
40 syn keyword prologKeyword arg current_prolog_flag put_char
41 syn keyword prologKeyword asserta fail put_code
42 syn keyword prologKeyword assertz findall read
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020043 syn keyword prologKeyword at_end_of_stream float read_term
Bram Moolenaar071d4272004-06-13 20:20:40 +000044 syn keyword prologKeyword atom flush_output repeat
45 syn keyword prologKeyword atom_chars functor retract
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020046 syn keyword prologKeyword atom_codes get_byte set_input
47 syn keyword prologKeyword atom_concat get_char set_output
48 syn keyword prologKeyword atom_length get_code set_prolog_flag
Bram Moolenaar071d4272004-06-13 20:20:40 +000049 syn keyword prologKeyword atomic halt set_stream_position
50 syn keyword prologKeyword bagof integer setof
51 syn keyword prologKeyword call is stream_property
52 syn keyword prologKeyword catch nl sub_atom
53 syn keyword prologKeyword char_code nonvar throw
54 syn keyword prologKeyword char_conversion number true
55 syn keyword prologKeyword clause number_chars unify_with_occurs_check
56 syn keyword prologKeyword close number_codes var
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020057 syn keyword prologKeyword compound once write
Bram Moolenaar071d4272004-06-13 20:20:40 +000058 syn keyword prologKeyword copy_term op write_canonical
59 syn keyword prologKeyword current_char_conversion open write_term
60 syn keyword prologKeyword current_input peek_byte writeq
61 syn keyword prologKeyword current_op peek_char
62
63 syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|="
64 syn match prologAsIs "===\|\\===\|<=\|=>"
65
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020066 syn match prologNumber "\<[0123456789]*\>'\@!"
Bram Moolenaar071d4272004-06-13 20:20:40 +000067 syn match prologCommentError "\*/"
68 syn match prologSpecialCharacter ";"
69 syn match prologSpecialCharacter "!"
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020070 syn match prologSpecialCharacter ":-"
71 syn match prologSpecialCharacter "-->"
72 syn match prologQuestion "?-.*\." contains=prologNumber
Bram Moolenaar071d4272004-06-13 20:20:40 +000073
74
75endif
76
Bram Moolenaar3918c952005-03-15 22:34:55 +000077syn sync maxlines=50
Bram Moolenaar071d4272004-06-13 20:20:40 +000078
79
80" Define the default highlighting.
81" For version 5.7 and earlier: only when not done already
82" For version 5.8 and later: only when an item doesn't have highlighting yet
83if version >= 508 || !exists("did_prolog_syn_inits")
84 if version < 508
85 let did_prolog_syn_inits = 1
86 command -nargs=+ HiLink hi link <args>
87 else
88 command -nargs=+ HiLink hi def link <args>
89 endif
90
91 " The default highlighting.
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020092 HiLink prologComment Comment
93 HiLink prologCComment Comment
94 HiLink prologCharCode Special
Bram Moolenaar071d4272004-06-13 20:20:40 +000095
96 if exists ("prolog_highlighting_clean")
97
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020098 HiLink prologKeyword Statement
99 HiLink prologClauseHead Statement
100 HiLink prologClause Normal
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101
102 else
103
Bram Moolenaar543b7ef2013-06-01 14:50:56 +0200104 HiLink prologKeyword Keyword
105 HiLink prologClauseHead Constant
106 HiLink prologClause Normal
107 HiLink prologQuestion PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +0000108 HiLink prologSpecialCharacter Special
Bram Moolenaar543b7ef2013-06-01 14:50:56 +0200109 HiLink prologNumber Number
110 HiLink prologAsIs Normal
111 HiLink prologCommentError Error
112 HiLink prologAtom String
113 HiLink prologString String
114 HiLink prologOperator Operator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115
116 endif
117
118 delcommand HiLink
119endif
120
121let b:current_syntax = "prolog"
122
123" vim: ts=8