blob: 838af6ad1c4386ff2ebb7947872b8659668bc379 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Slrn score file (based on slrn 0.9.8.0)
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00003" Maintainer: Preben 'Peppe' Guldberg <peppe@wielders.org>
4" Last Change: 8 Oct 2004
Bram Moolenaar071d4272004-06-13 20:20:40 +00005
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 "%.*"
Bram Moolenaar7b0294c2004-10-11 10:16:09 +000051syn match slrnScoreLine "^\s*Score::\=\s\+=\=[-+]\=\d\+\s*\(%.*\)\=$" skipempty nextgroup=slrnscScoreItem contains=slrnscScore,slrnscDelim,slrnscOper,slrnscNumber,slrnscScoreIdent
Bram Moolenaar071d4272004-06-13 20:20:40 +000052
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