blob: 502ac7051eaea44fbeda4d9d1c527b00ed22e96a [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar42eeac32005-06-29 22:40:58 +00002" Language: calendar(1) input file
3" Maintainer: Nikolai Weibull <nikolai+work.vim@bitwi.se>
4" Latest Revision: 2005-06-29
Bram Moolenaar071d4272004-06-13 20:20:40 +00005
Bram Moolenaar42eeac32005-06-29 22:40:58 +00006if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00007 finish
8endif
9
Bram Moolenaar42eeac32005-06-29 22:40:58 +000010let s:cpo_save = &cpo
11set cpo&vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000012
Bram Moolenaar42eeac32005-06-29 22:40:58 +000013syn keyword calendarTodo contained TODO FIXME XXX NOTE
Bram Moolenaar071d4272004-06-13 20:20:40 +000014
Bram Moolenaar42eeac32005-06-29 22:40:58 +000015syn region calendarComment matchgroup=calendarComment
16 \ start='/\*' end='\*/'
17 \ contains=calendarTodo,@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000018
Bram Moolenaar42eeac32005-06-29 22:40:58 +000019syn region calendarCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl
20 \ end=+"+ end='$' contains=calendarSpecial
21syn match calendarSpecial display contained '\\\%(x\x\+\|\o\{1,3}\|.\|$\)'
22syn match calendarSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +000023
Bram Moolenaar42eeac32005-06-29 22:40:58 +000024syn region calendarPreCondit start='^\s*#\s*\%(if\|ifdef\|ifndef\|elif\)\>'
25 \ skip='\\$' end='$'
26 \ contains=calendarComment,calendarCppString
27syn match calendarPreCondit display '^\s*#\s*\%(else\|endif\)\>'
28syn region calendarCppOut start='^\s*#\s*if\s\+0\+' end='.\@=\|$'
29 \ contains=calendarCppOut2
30syn region calendarCppOut2 contained start='0'
31 \ end='^\s*#\s*\%(endif\|else\|elif\)\>'
32 \ contains=calendarSpaceError,calendarCppSkip
33syn region calendarCppSkip contained
34 \ start='^\s*#\s*\%(if\|ifdef\|ifndef\)\>'
35 \ skip='\\$' end='^\s*#\s*endif\>'
36 \ contains=calendarSpaceError,calendarCppSkip
37syn region calendarIncluded display contained start=+"+ skip=+\\\\\|\\"+
38 \ end=+"+
39syn match calendarIncluded display contained '<[^>]*>'
40syn match calendarInclude display '^\s*#\s*include\>\s*["<]'
41 \ contains=calendarIncluded
42syn cluster calendarPreProcGroup contains=calendarPreCondit,calendarIncluded,
43 \ calendarInclude,calendarDefine,
44 \ calendarCppOut,calendarCppOut2,
45 \ calendarCppSkip,calendarString,
46 \ calendarSpecial,calendarTodo
47syn region calendarDefine start='^\s*#\s*\%(define\|undef\)\>'
48 \ skip='\\$' end='$'
49 \ contains=ALLBUT,@calendarPreProcGroup
50syn region calendarPreProc start='^\s*#\s*\%(pragma\|line\|warning\|warn\|error\)\>'
51 \ skip='\\$' end='$' keepend
52 \ contains=ALLBUT,@calendarPreProcGroup
Bram Moolenaar071d4272004-06-13 20:20:40 +000053
Bram Moolenaar42eeac32005-06-29 22:40:58 +000054syn keyword calendarKeyword CHARSET BODUN LANG
Bram Moolenaar071d4272004-06-13 20:20:40 +000055syn case ignore
Bram Moolenaar42eeac32005-06-29 22:40:58 +000056syn keyword calendarKeyword Easter Pashka
Bram Moolenaar071d4272004-06-13 20:20:40 +000057syn case match
58
Bram Moolenaar071d4272004-06-13 20:20:40 +000059syn case ignore
Bram Moolenaar42eeac32005-06-29 22:40:58 +000060syn match calendarNumber display '\<\d\+\>'
61syn keyword calendarMonth Jan[uary] Feb[ruary] Mar[ch] Apr[il] May
62 \ Jun[e] Jul[y] Aug[ust] Sep[tember]
63 \ Oct[ober] Nov[ember] Dec[ember]
64syn match calendarMonth display '\<\%(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\.'
65syn keyword calendarWeekday Mon[day] Tue[sday] Wed[nesday] Thu[rsday]
66syn keyword calendarWeekday Fri[day] Sat[urday] Sun[day]
67syn match calendarWeekday display '\<\%(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\)\.'
68 \ nextgroup=calendarWeekdayMod
69syn match calendarWeekdayMod display '[+-]\d\+\>'
Bram Moolenaar071d4272004-06-13 20:20:40 +000070syn case match
71
Bram Moolenaar42eeac32005-06-29 22:40:58 +000072syn match calendarTime display '\<\%([01]\=\d\|2[0-3]\):[0-5]\d\%(:[0-5]\d\)\='
73syn match calendarTime display '\<\%(0\=[1-9]\|1[0-2]\):[0-5]\d\%(:[0-5]\d\)\=\s*[AaPp][Mm]'
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
Bram Moolenaar42eeac32005-06-29 22:40:58 +000075syn match calendarVariable '\*'
Bram Moolenaar071d4272004-06-13 20:20:40 +000076
Bram Moolenaar42eeac32005-06-29 22:40:58 +000077if exists("c_minlines")
78 let b:c_minlines = c_minlines
79else
80 if !exists("c_no_if0")
81 let b:c_minlines = 50 " #if 0 constructs can be long
82 else
83 let b:c_minlines = 15 " mostly for () constructs
84 endif
85endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000086exec "syn sync ccomment calendarComment minlines=" . b:c_minlines
87
Bram Moolenaar42eeac32005-06-29 22:40:58 +000088hi def link calendarTodo Todo
89hi def link calendarComment Comment
90hi def link calendarCppString String
91hi def link calendarSpecial SpecialChar
92hi def link calendarPreCondit PreCondit
93hi def link calendarCppOut Comment
94hi def link calendarCppOut2 calendarCppOut
95hi def link calendarCppSkip calendarCppOut
96hi def link calendarIncluded String
97hi def link calendarInclude Include
98hi def link calendarDefine Macro
99hi def link calendarPreProc PreProc
100hi def link calendarKeyword Keyword
101hi def link calendarNumber Number
102hi def link calendarMonth String
103hi def link calendarWeekday String
104hi def link calendarWeekdayMod Special
105hi def link calendarTime Number
106hi def link calendarVariable Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000107
108let b:current_syntax = "calendar"
109
Bram Moolenaar42eeac32005-06-29 22:40:58 +0000110let &cpo = s:cpo_save
111unlet s:cpo_save