summaryrefslogtreecommitdiff
path: root/runtime/syntax/calendar.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/calendar.vim')
-rw-r--r--runtime/syntax/calendar.vim104
1 files changed, 104 insertions, 0 deletions
diff --git a/runtime/syntax/calendar.vim b/runtime/syntax/calendar.vim
new file mode 100644
index 000000000..9834267ae
--- /dev/null
+++ b/runtime/syntax/calendar.vim
@@ -0,0 +1,104 @@
+" 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: