blob: 9834267aea254e82f35280859df2301c40f8e4ec [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: calendar(1) file.
3" Maintainer: Nikolai Weibull <source@pcppopper.org>
4" URL: http://www.pcppopper.org/vim/syntax/pcp/calendar/
5" Latest Revision: 2004-05-06
6" arch-tag: d714127d-469d-43bd-9c79-c2a46ec54535
7
8if version < 600
9 syntax clear
10elseif exists("b:current_syntax")
11 finish
12endif
13
14" Todo
15syn keyword calendarTodo contained TODO FIXME XXX NOTE
16
17" Comments
18syn region calendarComment matchgroup=calendarComment start='/\*' end='\*/' contains=calendarTodo
19
20" Strings
21syn region calendarCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=calendarSpecial
22syn match calendarSpecial display contained '\\\%(x\x\+\|\o\{1,3}\|.\|$\)'
23syn match calendarSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)"
24
25" cpp(1) Preprocessor directives (adapted from syntax/c.vim)
26
27syn region calendarPreCondit start='^\s*#\s*\%(if\|ifdef\|ifndef\|elif\)\>' skip='\\$' end='$' contains=calendarComment,calendarCppString
28syn match calendarPreCondit display '^\s*#\s*\%(else\|endif\)\>'
29syn region calendarCppOut start='^\s*#\s*if\s\+0\+' end='.\@=\|$' contains=calendarCppOut2
30syn region calendarCppOut2 contained start='0' end='^\s*#\s*\%(endif\|else\|elif\)\>' contains=calendarSpaceError,calendarCppSkip
31syn region calendarCppSkip contained start='^\s*#\s*\%(if\|ifdef\|ifndef\)\>' skip='\\$' end='^\s*#\s*endif\>' contains=calendarSpaceError,calendarCppSkip
32syn region calendarIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
33syn match calendarIncluded display contained '<[^>]*>'
34syn match calendarInclude display '^\s*#\s*include\>\s*["<]' contains=calendarIncluded
35syn cluster calendarPreProcGroup contains=calendarPreCondit,calendarIncluded,calendarInclude,calendarDefine,calendarCppOut,calendarCppOut2,calendarCppSkip,calendarString,calendarSpecial,calendarTodo
36syn region calendarDefine start='^\s*#\s*\%(define\|undef\)\>' skip='\\$' end='$' contains=ALLBUT,@calendarPreProcGroup
37syn region calendarPreProc start='^\s*#\s*\%(pragma\|line\|warning\|warn\|error\)\>' skip='\\$' end='$' keepend contains=ALLBUT,@calendarPreProcGroup
38
39" Keywords
40syn keyword calendarKeyword CHARSET BODUN LANG
41syn case ignore
42syn keyword calendarKeyword Easter Pashka
43syn case match
44
45" Dates
46syn case ignore
47syn match calendarNumber '\<\d\+\>'
48syn keyword calendarMonth Jan[uary] Feb[ruary] Mar[ch] Apr[il] May Jun[e]
49syn keyword calendarMonth Jul[y] Aug[ust] Sep[tember] Oct[ober]
50syn keyword calendarMonth Nov[ember] Dec[ember]
51syn match calendarMonth '\<\%(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\.'
52syn keyword calendarWeekday Mon[day] Tue[sday] Wed[nesday] Thu[rsday]
53syn keyword calendarWeekday Fri[day] Sat[urday] Sun[day]
54syn match calendarWeekday '\<\%(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\)\.' nextgroup=calendarWeekdayMod
55syn match calendarWeekdayMod '[+-]\d\+\>'
56syn case match
57
58" Times
59syn match calendarTime '\<\%([01]\=\d\|2[0-3]\):[0-5]\d\%(:[0-5]\d\)\='
60syn match calendarTime '\<\%(0\=[1-9]\|1[0-2]\):[0-5]\d\%(:[0-5]\d\)\=\s*[AaPp][Mm]'
61
62" Variables
63syn match calendarVariable '\*'
64
65let b:c_minlines = 50 " #if 0 constructs can be long
66exec "syn sync ccomment calendarComment minlines=" . b:c_minlines
67
68" Define the default highlighting.
69" For version 5.7 and earlier: only when not done already
70" For version 5.8 and later: only when an item doesn't have highlighting yet
71if version >= 508 || !exists("did_calendar_syn_inits")
72 if version < 508
73 let did_calendar_syn_inits = 1
74 command -nargs=+ HiLink hi link <args>
75 else
76 command -nargs=+ HiLink hi def link <args>
77 endif
78
79 HiLink calendarTodo Todo
80 HiLink calendarComment Comment
81 HiLink calendarCppString String
82 HiLink calendarSpecial SpecialChar
83 HiLink calendarPreCondit PreCondit
84 HiLink calendarCppOut Comment
85 HiLink calendarCppOut2 calendarCppOut
86 HiLink calendarCppSkip calendarCppOut
87 HiLink calendarIncluded String
88 HiLink calendarInclude Include
89 HiLink calendarDefine Macro
90 HiLink calendarPreProc PreProc
91 HiLink calendarKeyword Keyword
92 HiLink calendarNumber Number
93 HiLink calendarMonth String
94 HiLink calendarWeekday String
95 HiLink calendarWeekdayMod Special
96 HiLink calendarTime Number
97 HiLink calendarVariable Identifier
98
99 delcommand HiLink
100endif
101
102let b:current_syntax = "calendar"
103
104" vim: set sts=2 sw=2: