summaryrefslogtreecommitdiff
path: root/runtime/syntax/rcs.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/rcs.vim')
-rw-r--r--runtime/syntax/rcs.vim76
1 files changed, 76 insertions, 0 deletions
diff --git a/runtime/syntax/rcs.vim b/runtime/syntax/rcs.vim
new file mode 100644
index 000000000..f4a90c62c
--- /dev/null
+++ b/runtime/syntax/rcs.vim
@@ -0,0 +1,76 @@
+" Vim syntax file
+" Language: RCS file
+" Maintainer: Dmitry Vasiliev <dima@hlabs.spb.ru>
+" URL: http://www.hlabs.spb.ru/vim/rcs.vim
+" Last Change: $Date$
+" Filenames: *,v
+" $Revision$
+"
+" Options:
+" rcs_folding = 1 For folding strings
+
+" For version 5.x: Clear all syntax items.
+" For version 6.x: Quit when a syntax file was already loaded.
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" RCS file must end with a newline.
+syn match rcsEOFError ".\%$" containedin=ALL
+
+" Keywords.
+syn keyword rcsKeyword head branch access symbols locks strict
+syn keyword rcsKeyword comment expand date author state branches
+syn keyword rcsKeyword next desc log
+syn keyword rcsKeyword text nextgroup=rcsTextStr skipwhite skipempty
+
+" Revision numbers and dates.
+syn match rcsNumber "\<[0-9.]\+\>" display
+
+" Strings.
+if exists("rcs_folding") && has("folding")
+ " Folded strings.
+ syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" fold contains=rcsSpecial
+ syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" fold contained contains=rcsSpecial,rcsDiffLines
+else
+ syn region rcsString matchgroup=rcsString start="@" end="@" skip="@@" contains=rcsSpecial
+ syn region rcsTextStr matchgroup=rcsTextStr start="@" end="@" skip="@@" contained contains=rcsSpecial,rcsDiffLines
+endif
+syn match rcsSpecial "@@" contained
+syn match rcsDiffLines "[da]\d\+ \d\+$" contained
+
+" Synchronization.
+syn sync clear
+if exists("rcs_folding") && has("folding")
+ syn sync fromstart
+else
+ " We have incorrect folding if following sync patterns is turned on.
+ syn sync match rcsSync grouphere rcsString "[0-9.]\+\(\s\|\n\)\+log\(\s\|\n\)\+@"me=e-1
+ syn sync match rcsSync grouphere rcsTextStr "@\(\s\|\n\)\+text\(\s\|\n\)\+@"me=e-1
+endif
+
+" 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_rcs_syn_inits")
+ if version <= 508
+ let did_rcs_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink rcsKeyword Keyword
+ HiLink rcsNumber Identifier
+ HiLink rcsString String
+ HiLink rcsTextStr String
+ HiLink rcsSpecial Special
+ HiLink rcsDiffLines Special
+ HiLink rcsEOFError Error
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "rcs"