]> git.donarmstrong.com Git - lilypond.git/blob - lilypond.vim
993f8a32f872ef3a5fea386cbeb048fc1325a86b
[lilypond.git] / lilypond.vim
1 " Vim syntax file
2 " Language:     LilyPond
3 " Maintainer:   Heikki Junes <hjunes@cc.hut.fi>
4 " Created:      Oct 17, 2002
5 " Last Change:  Sep 20, 2003
6 " Version:      6.1-1
7 " Latest:
8 " http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lilypond.vim
9
10 " For version 5.x: Clear all syntax items
11 " For version 6.x: Quit when a syntax file was already loaded
12 if version < 600
13   syntax clear
14 elseif exists("b:current_syntax")
15   finish
16 endif
17
18 " Match also parethesis of angle type
19 set mps+=<:>
20
21 " Case matters
22 syn case match
23
24 syn cluster lilyMatchGroup      contains=lilyMatcher,lilyString,lilyComment,lilyStatement,lilyNote,lilyNumber,lilyEquation,lilySlur,lilySpecial
25
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
29
30 syn region lilyString   start=/"/ end=/"/ skip=/\\"/
31 syn region lilyComment  start="%{" skip="%$" end="%}"
32 syn region lilyComment  start="%\([^{]\|$\)" end="$"
33
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   "\\[<!>\\]"
42
43 " Rest of syntax highlighting rules start here
44 "
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")
49   if version < 508
50     let did_lily_syn_inits = 1
51     command -nargs=+ HiLink hi link <args>
52   else
53     command -nargs=+ HiLink hi def link <args>
54   endif
55
56   HiLink Delimiter      Identifier
57   
58   HiLink lilyString     String
59   HiLink lilyComment    Comment
60  
61   HiLink lilyNote       Identifier
62   HiLink lilyNumber     Constant
63   HiLink lilyStatement  Statement
64   HiLink lilySpecial    Special
65   HiLink lilySlur       ModeMsg
66
67   delcommand HiLink
68 endif