blob: 9834267aea254e82f35280859df2301c40f8e4ec [file] [log] [blame]
" Vim syntax file
" Language: calendar(1) file.
" Maintainer: Nikolai Weibull <source@pcppopper.org>
" URL: http://www.pcppopper.org/vim/syntax/pcp/calendar/
" Latest Revision: 2004-05-06
" arch-tag: d714127d-469d-43bd-9c79-c2a46ec54535
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" Todo
syn keyword calendarTodo contained TODO FIXME XXX NOTE
" Comments
syn region calendarComment matchgroup=calendarComment start='/\*' end='\*/' contains=calendarTodo
" Strings
syn region calendarCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=calendarSpecial
syn match calendarSpecial display contained '\\\%(x\x\+\|\o\{1,3}\|.\|$\)'
syn match calendarSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)"
" cpp(1) Preprocessor directives (adapted from syntax/c.vim)
syn region calendarPreCondit start='^\s*#\s*\%(if\|ifdef\|ifndef\|elif\)\>' skip='\\$' end='$' contains=calendarComment,calendarCppString
syn match calendarPreCondit display '^\s*#\s*\%(else\|endif\)\>'
syn region calendarCppOut start='^\s*#\s*if\s\+0\+' end='.\@=\|$' contains=calendarCppOut2
syn region calendarCppOut2 contained start='0' end='^\s*#\s*\%(endif\|else\|elif\)\>' contains=calendarSpaceError,calendarCppSkip
syn region calendarCppSkip contained start='^\s*#\s*\%(if\|ifdef\|ifndef\)\>' skip='\\$' end='^\s*#\s*endif\>' contains=calendarSpaceError,calendarCppSkip
syn region calendarIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
syn match calendarIncluded display contained '<[^>]*>'
syn match calendarInclude display '^\s*#\s*include\>\s*["<]' contains=calendarIncluded
syn cluster calendarPreProcGroup contains=calendarPreCondit,calendarIncluded,calendarInclude,calendarDefine,calendarCppOut,calendarCppOut2,calendarCppSkip,calendarString,calendarSpecial,calendarTodo
syn region calendarDefine start='^\s*#\s*\%(define\|undef\)\>' skip='\\$' end='$' contains=ALLBUT,@calendarPreProcGroup
syn region calendarPreProc start='^\s*#\s*\%(pragma\|line\|warning\|warn\|error\)\>' skip='\\$' end='$' keepend contains=ALLBUT,@calendarPreProcGroup
" Keywords
syn keyword calendarKeyword CHARSET BODUN LANG
syn case ignore
syn keyword calendarKeyword Easter Pashka
syn case match
" Dates
syn case ignore
syn match calendarNumber '\<\d\+\>'
syn keyword calendarMonth Jan[uary] Feb[ruary] Mar[ch] Apr[il] May Jun[e]
syn keyword calendarMonth Jul[y] Aug[ust] Sep[tember] Oct[ober]
syn keyword calendarMonth Nov[ember] Dec[ember]
syn match calendarMonth '\<\%(Jan\|Feb\|Mar\|Apr\|May\|Jun\|Jul\|Aug\|Sep\|Oct\|Nov\|Dec\)\.'
syn keyword calendarWeekday Mon[day] Tue[sday] Wed[nesday] Thu[rsday]
syn keyword calendarWeekday Fri[day] Sat[urday] Sun[day]
syn match calendarWeekday '\<\%(Mon\|Tue\|Wed\|Thu\|Fri\|Sat\|Sun\)\.' nextgroup=calendarWeekdayMod
syn match calendarWeekdayMod '[+-]\d\+\>'
syn case match
" Times
syn match calendarTime '\<\%([01]\=\d\|2[0-3]\):[0-5]\d\%(:[0-5]\d\)\='
syn match calendarTime '\<\%(0\=[1-9]\|1[0-2]\):[0-5]\d\%(:[0-5]\d\)\=\s*[AaPp][Mm]'
" Variables
syn match calendarVariable '\*'
let b:c_minlines = 50 " #if 0 constructs can be long
exec "syn sync ccomment calendarComment minlines=" . b:c_minlines
" 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_calendar_syn_inits")
if version < 508
let did_calendar_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink calendarTodo Todo
HiLink calendarComment Comment
HiLink calendarCppString String
HiLink calendarSpecial SpecialChar
HiLink calendarPreCondit PreCondit
HiLink calendarCppOut Comment
HiLink calendarCppOut2 calendarCppOut
HiLink calendarCppSkip calendarCppOut
HiLink calendarIncluded String
HiLink calendarInclude Include
HiLink calendarDefine Macro
HiLink calendarPreProc PreProc
HiLink calendarKeyword Keyword
HiLink calendarNumber Number
HiLink calendarMonth String
HiLink calendarWeekday String
HiLink calendarWeekdayMod Special
HiLink calendarTime Number
HiLink calendarVariable Identifier
delcommand HiLink
endif
let b:current_syntax = "calendar"
" vim: set sts=2 sw=2: