xref: /vim-8.2.3635/runtime/syntax/prolog.vim (revision 818c9e7e)
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 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'\\\=.+
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
32
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
66  syn match   prologNumber            "\<[0123456789]*\>'\@!"
67  syn match   prologCommentError      "\*/"
68  syn match   prologSpecialCharacter  ";"
69  syn match   prologSpecialCharacter  "!"
70  syn match   prologSpecialCharacter  ":-"
71  syn match   prologSpecialCharacter  "-->"
72  syn match   prologQuestion          "?-.*\."  contains=prologNumber
73
74
75endif
76
77syn sync maxlines=50
78
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.
92  HiLink prologComment          Comment
93  HiLink prologCComment         Comment
94  HiLink prologCharCode         Special
95
96  if exists ("prolog_highlighting_clean")
97
98    HiLink prologKeyword        Statement
99    HiLink prologClauseHead     Statement
100    HiLink prologClause Normal
101
102  else
103
104    HiLink prologKeyword        Keyword
105    HiLink prologClauseHead     Constant
106    HiLink prologClause Normal
107    HiLink prologQuestion       PreProc
108    HiLink prologSpecialCharacter Special
109    HiLink prologNumber         Number
110    HiLink prologAsIs           Normal
111    HiLink prologCommentError   Error
112    HiLink prologAtom           String
113    HiLink prologString         String
114    HiLink prologOperator       Operator
115
116  endif
117
118  delcommand HiLink
119endif
120
121let b:current_syntax = "prolog"
122
123" vim: ts=8
124