1" Vim syntax file
2" Language:	Slrn score file (based on slrn 0.9.8.0)
3" Maintainer:	Preben 'Peppe' Guldberg <peppe@wielders.org>
4" Last Change:	8 Oct 2004
5
6" For version 5.x: Clear all syntax items
7" For version 6.x: Quit when a syntax file was already loaded
8if version < 600
9  syntax clear
10elseif exists("b:current_syntax")
11  finish
12endif
13
14" characters in newsgroup names
15if version < 600
16  set isk=@,48-57,.,-,_,+
17else
18  setlocal isk=@,48-57,.,-,_,+
19endif
20
21syn match slrnscComment		"%.*$"
22syn match slrnscSectionCom	".].*"lc=2
23
24syn match slrnscGroup		contained "\(\k\|\*\)\+"
25syn match slrnscNumber		contained "\d\+"
26syn match slrnscDate		contained "\(\d\{1,2}[-/]\)\{2}\d\{4}"
27syn match slrnscDelim		contained ":"
28syn match slrnscComma		contained ","
29syn match slrnscOper		contained "\~"
30syn match slrnscEsc		contained "\\[ecC<>.]"
31syn match slrnscEsc		contained "[?^]"
32syn match slrnscEsc		contained "[^\\]$\s*$"lc=1
33
34syn keyword slrnscInclude	contained include
35syn match slrnscIncludeLine	"^\s*Include\s\+\S.*$"
36
37syn region slrnscSection	matchgroup=slrnscSectionStd start="^\s*\[" end='\]' contains=slrnscGroup,slrnscComma,slrnscSectionCom
38syn region slrnscSection	matchgroup=slrnscSectionNot start="^\s*\[\~" end='\]' contains=slrnscGroup,slrnscCommas,slrnscSectionCom
39
40syn keyword slrnscItem		contained Age Bytes Date Expires From Has-Body Lines Message-Id Newsgroup References Subject Xref
41
42syn match slrnscScoreItem	contained "%.*$"						skipempty nextgroup=slrnscScoreItem contains=slrnscComment
43syn match slrnscScoreItem	contained "^\s*Expires:\s*\(\d\{1,2}[-/]\)\{2}\d\{4}\s*$"	skipempty nextgroup=slrnscScoreItem contains=slrnscItem,slrnscDelim,slrnscDate
44syn match slrnscScoreItem	contained "^\s*\~\=\(Age\|Bytes\|Has-Body\|Lines\):\s*\d\+\s*$"	skipempty nextgroup=slrnscScoreItem contains=slrnscOper,slrnscItem,slrnscDelim,slrnscNumber
45syn match slrnscScoreItemFill	contained ".*$"							skipempty nextgroup=slrnscScoreItem contains=slrnscEsc
46syn match slrnscScoreItem	contained "^\s*\~\=\(Date\|From\|Message-Id\|Newsgroup\|References\|Subject\|Xref\):"	nextgroup=slrnscScoreItemFill contains=slrnscOper,slrnscItem,slrnscDelim
47syn region slrnscScoreItem	contained matchgroup=Special start="^\s*\~\={::\=" end="^\s*}" skipempty nextgroup=slrnscScoreItem contains=slrnscScoreItem
48
49syn keyword slrnscScore		contained Score
50syn match slrnscScoreIdent	contained "%.*"
51syn match slrnScoreLine		"^\s*Score::\=\s\+=\=[-+]\=\d\+\s*\(%.*\)\=$" skipempty nextgroup=slrnscScoreItem contains=slrnscScore,slrnscDelim,slrnscOper,slrnscNumber,slrnscScoreIdent
52
53" Define the default highlighting.
54" For version 5.7 and earlier: only when not done already
55" For version 5.8 and later: only when an item doesn't have highlighting yet
56if version >= 508 || !exists("did_slrnsc_syntax_inits")
57  if version < 508
58    let did_slrnsc_syntax_inits = 1
59    command -nargs=+ HiLink hi link <args>
60  else
61    command -nargs=+ HiLink hi def link <args>
62  endif
63
64  HiLink slrnscComment		Comment
65  HiLink slrnscSectionCom	slrnscComment
66  HiLink slrnscGroup		String
67  HiLink slrnscNumber		Number
68  HiLink slrnscDate		Special
69  HiLink slrnscDelim		Delimiter
70  HiLink slrnscComma		SpecialChar
71  HiLink slrnscOper		SpecialChar
72  HiLink slrnscEsc		String
73  HiLink slrnscSectionStd	Type
74  HiLink slrnscSectionNot	Delimiter
75  HiLink slrnscItem		Statement
76  HiLink slrnscScore		Keyword
77  HiLink slrnscScoreIdent	Identifier
78  HiLink slrnscInclude		Keyword
79
80  delcommand HiLink
81endif
82
83let b:current_syntax = "slrnsc"
84
85"EOF	vim: ts=8 noet tw=200 sw=8 sts=0
86