blob: 58de71f4d778219f1c44399e37f51eec719678f3 [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 Moolenaar5c736222010-01-06 20:54:52 +01004" Last Change: 2009 Dec 04
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
24syn region prologCComment start=+/\*+ end=+\*/+
25syn match prologComment +%.*+
26
27syn keyword prologKeyword module meta_predicate multifile dynamic
28syn match prologCharCode +0'\\\=.+
Bram Moolenaar3577c6f2008-06-24 21:16:56 +000029syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+
30syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+
31syn region prologClauseHead start=+^[a-z][^(]*(+ skip=+\.[^ ]+ end=+:-\|\.$\|\.[ ]\|-->+ contains=prologComment,prologCComment,prologString
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
43 syn keyword prologKeyword at_end_of_stream float read_term
44 syn keyword prologKeyword atom flush_output repeat
45 syn keyword prologKeyword atom_chars functor retract
46 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
49 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
57 syn keyword prologKeyword compound once write
58 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 Moolenaar5c736222010-01-06 20:54:52 +010066 syn match prologNumber "\<[0123456789]*\>'\@!"
Bram Moolenaar071d4272004-06-13 20:20:40 +000067 syn match prologCommentError "\*/"
68 syn match prologSpecialCharacter ";"
69 syn match prologSpecialCharacter "!"
70 syn match prologQuestion "?-.*\." contains=prologNumber
71
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.
79" For version 5.7 and earlier: only when not done already
80" For version 5.8 and later: only when an item doesn't have highlighting yet
81if version >= 508 || !exists("did_prolog_syn_inits")
82 if version < 508
83 let did_prolog_syn_inits = 1
84 command -nargs=+ HiLink hi link <args>
85 else
86 command -nargs=+ HiLink hi def link <args>
87 endif
88
89 " The default highlighting.
90 HiLink prologComment Comment
91 HiLink prologCComment Comment
92 HiLink prologCharCode Special
93
94 if exists ("prolog_highlighting_clean")
95
96 HiLink prologKeyword Statement
97 HiLink prologClauseHead Statement
98
99 else
100
101 HiLink prologKeyword Keyword
102 HiLink prologClauseHead Constant
103 HiLink prologQuestion PreProc
104 HiLink prologSpecialCharacter Special
105 HiLink prologNumber Number
106 HiLink prologAsIs Normal
107 HiLink prologCommentError Error
108 HiLink prologAtom String
109 HiLink prologString String
110 HiLink prologOperator Operator
111
112 endif
113
114 delcommand HiLink
115endif
116
117let b:current_syntax = "prolog"
118
119" vim: ts=8