" 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: 2003/04/01 14:05:42 $
" Filenames:	*,v
" $Revision: 1.10 $
"
" 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"
