summaryrefslogtreecommitdiff
path: root/runtime/syntax/prolog.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/prolog.vim')
-rw-r--r--runtime/syntax/prolog.vim120
1 files changed, 120 insertions, 0 deletions
diff --git a/runtime/syntax/prolog.vim b/runtime/syntax/prolog.vim
new file mode 100644
index 000000000..2ca1cfa44
--- /dev/null
+++ b/runtime/syntax/prolog.vim
@@ -0,0 +1,120 @@
+" Vim syntax file
+" Language: PROLOG
+" Maintainers: Ralph Becket <rwab1@cam.sri.co.uk>,
+" Thomas Koehler <jean-luc@picard.franken.de>
+" Last Change: 2003 May 11
+" URL: http://jeanluc-picard.de/vim/syntax/prolog.vim
+
+" There are two sets of highlighting in here:
+" If the "prolog_highlighting_clean" variable exists, it is rather sparse.
+" Otherwise you get more highlighting.
+
+" Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" Prolog is case sensitive.
+syn case match
+
+" Very simple highlighting for comments, clause heads and
+" character codes. It respects prolog strings and atoms.
+
+syn region prologCComment start=+/\*+ end=+\*/+
+syn match prologComment +%.*+
+
+syn keyword prologKeyword module meta_predicate multifile dynamic
+syn match prologCharCode +0'\\\=.+
+syn region prologString start=+"+ skip=+\\"+ end=+"+
+syn region prologAtom start=+'+ skip=+\\'+ end=+'+
+syn region prologClauseHead start=+^[a-z][^(]*(+ skip=+\.[^ ]+ end=+:-\|\.$\|\.[ ]\|-->+
+
+if !exists("prolog_highlighting_clean")
+
+ " some keywords
+ " some common predicates are also highlighted as keywords
+ " is there a better solution?
+ syn keyword prologKeyword abolish current_output peek_code
+ syn keyword prologKeyword append current_predicate put_byte
+ syn keyword prologKeyword arg current_prolog_flag put_char
+ syn keyword prologKeyword asserta fail put_code
+ syn keyword prologKeyword assertz findall read
+ syn keyword prologKeyword at_end_of_stream float read_term
+ syn keyword prologKeyword atom flush_output repeat
+ syn keyword prologKeyword atom_chars functor retract
+ syn keyword prologKeyword atom_codes get_byte set_input
+ syn keyword prologKeyword atom_concat get_char set_output
+ syn keyword prologKeyword atom_length get_code set_prolog_flag
+ syn keyword prologKeyword atomic halt set_stream_position
+ syn keyword prologKeyword bagof integer setof
+ syn keyword prologKeyword call is stream_property
+ syn keyword prologKeyword catch nl sub_atom
+ syn keyword prologKeyword char_code nonvar throw
+ syn keyword prologKeyword char_conversion number true
+ syn keyword prologKeyword clause number_chars unify_with_occurs_check
+ syn keyword prologKeyword close number_codes var
+ syn keyword prologKeyword compound once write
+ syn keyword prologKeyword copy_term op write_canonical
+ syn keyword prologKeyword current_char_conversion open write_term
+ syn keyword prologKeyword current_input peek_byte writeq
+ syn keyword prologKeyword current_op peek_char
+
+ syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|<\|>\|="
+ syn match prologAsIs "===\|\\===\|<=\|=>"
+
+ syn match prologNumber "\<[0123456789]*\>"
+ syn match prologCommentError "\*/"
+ syn match prologSpecialCharacter ";"
+ syn match prologSpecialCharacter "!"
+ syn match prologQuestion "?-.*\." contains=prologNumber
+
+
+endif
+
+syn sync ccomment maxlines=50
+
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_prolog_syn_inits")
+ if version < 508
+ let did_prolog_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ " The default highlighting.
+ HiLink prologComment Comment
+ HiLink prologCComment Comment
+ HiLink prologCharCode Special
+
+ if exists ("prolog_highlighting_clean")
+
+ HiLink prologKeyword Statement
+ HiLink prologClauseHead Statement
+
+ else
+
+ HiLink prologKeyword Keyword
+ HiLink prologClauseHead Constant
+ HiLink prologQuestion PreProc
+ HiLink prologSpecialCharacter Special
+ HiLink prologNumber Number
+ HiLink prologAsIs Normal
+ HiLink prologCommentError Error
+ HiLink prologAtom String
+ HiLink prologString String
+ HiLink prologOperator Operator
+
+ endif
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "prolog"
+
+" vim: ts=8