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