3 " Maintainer: Heikki Junes <hjunes@cc.hut.fi>
4 " Created: Oct 17, 2002
5 " Last Change: Sep 20, 2003
8 " http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lilypond.vim
10 " For version 5.x: Clear all syntax items
11 " For version 6.x: Quit when a syntax file was already loaded
14 elseif exists("b:current_syntax")
18 " Match also parethesis of angle type
24 syn cluster lilyMatchGroup contains=lilyMatcher,lilyString,lilyComment,lilyStatement,lilyNote,lilyNumber,lilyEquation,lilySlur,lilySpecial
26 syn region lilyMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{<>}]" end="}" contains=@lilyMatchGroup fold
27 syn region lilyMatcher matchgroup=Delimiter start="\[" end="]" contains=@lilyMatchGroup fold
28 syn region lilyMatcher matchgroup=Delimiter start="<" skip="\\\\\|\\[{<>}]" end=">" contains=@lilyMatchGroup fold
30 syn region lilyString start=/"/ end=/"/ skip=/\\"/
31 syn region lilyComment start="%{" skip="%$" end="%}"
32 syn region lilyComment start="%\([^{]\|$\)" end="$"
34 syn match lilyStatement "[-_^]\?\\\(\a[-]\?\)\+"
35 syn match lilyNote "\<\(\(\(bb\|as[ae]s\|[ae]s\|eses\|[a-h]\(\|is\|isis\|es\|eses\)\)\([,']\)\{,4}\([?!]\)\?\|[srR]\)\(\(128\|6\?4\|3\?2\|16\?\|8\|\\breve\|\\longa\|\\maxima\)[.]*\)\?\)\(\A\|\n\)"me=e-1
36 syn match lilyNote "\<\(\(\(bb\|as[ae]s\|[ae]s\|eses\|[a-h]\(\|is\|isis\|es\|eses\)\)\([,']\)\{,4}\([?!]\)\?\|[srR]\)\(\(128\|6\?4\|3\?2\|16\?\|8\|\\breve\|\\longa\|\\maxima\)[.]*\)\?\)$"
37 syn match lilyNumber "[-_^.]\?\d\+[.]\?"
38 syn match lilyEquation "\(#['`]\)\?\(\a*[-]\)*\a*\s*=\s*\(#[#'`]\?\)\?\a*"
39 syn match lilySlur "[(~)]"
40 syn match lilySlur "\\[()]"
41 syn match lilySpecial "\\[<!>\\]"
43 " Rest of syntax highlighting rules start here
45 " " Define the default highlighting.
46 " " For version 5.7 and earlier: only when not done already
47 " " For version 5.8 and later: only when an item doesn't have highlighting yet
48 if version >= 508 || !exists("did_lily_syn_inits")
50 let did_lily_syn_inits = 1
51 command -nargs=+ HiLink hi link <args>
53 command -nargs=+ HiLink hi def link <args>
56 HiLink Delimiter Identifier
58 HiLink lilyString String
59 HiLink lilyComment Comment
61 HiLink lilyNote Identifier
62 HiLink lilyNumber Constant
63 HiLink lilyStatement Statement
64 HiLink lilySpecial Special
65 HiLink lilySlur ModeMsg