summaryrefslogtreecommitdiff
path: root/runtime/syntax/rcs.vim
blob: f4a90c62caecdec5f8c6595068ea8d4b0cf6fc18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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"