First pass at organizing.
[lilypond.git] / vim / lilypond-syntax.vim
blob9808176736db77217b746b1741c7fd397208a5cc
1 " LilyPond syntax file
2 " Language:     LilyPond
3 " Maintainer:   Heikki Junes <hjunes@cc.hut.fi>
4 " Created:      Oct 17, 2002
5 " Last Change:  Sep 23, 2003
6 " Version:      6.1-1
8 " Installed As: vim/syntax/lilypond.vim
9 " Uses Generated File:  vim/syntax/lilypond-words.vim
11 " For version 5.x: Clear all syntax items
12 " For version 6.x: Quit when a syntax file was already loaded
13 if version < 600
14   syntax clear
15 elseif exists("b:current_syntax")
16   finish
17 endif
19 " Read the LilyPond syntax match groups: 
20 "   lilyKeyword, lilyReservedWord, lilyNote
21 if version < 600
22   so <sfile>:p:h/lilypond-words.vim
23 else
24   runtime! syntax/lilypond-words.vim
25   if exists("b:current_syntax")
26     unlet b:current_syntax
27   endif
28 endif
30 " Match also parethesis of angle type
31 setlocal mps+=<:>
33 " Case matters
34 syn case match
36 syn cluster lilyMatchGroup      contains=lilyMatcher,lilyString,lilyComment,lilyStatement,lilyNumber,lilyEquation,lilySlur,lilySpecial,lilyNote,lilyKeyword,lilyReservedWord
38 syn region lilyMatcher  matchgroup=Delimiter start="{" skip="\\\\\|\\[<>]"      end="}" contains=@lilyMatchGroup fold
39 syn region lilyMatcher  matchgroup=Delimiter start="\["         end="]" contains=@lilyMatchGroup fold
40 syn region lilyMatcher  matchgroup=Delimiter start="<" skip="\\\\\|\\[{<>}]" end=">"    contains=@lilyMatchGroup fold
42 syn region lilyString   start=/"/ end=/"/ skip=/\\"/
43 syn region lilyComment  start="%{" skip="%$" end="%}"
44 syn region lilyComment  start="%\([^{]\|$\)" end="$"
46 syn match lilyNumber    "[-_^.]\?\d\+[.]\?"
47 syn match lilyEquation  "\(#['`]\)\?\(\a*[-]\)*\a*\s*=\s*\(#[#'`]\?\)\?\a*"
48 syn match lilySlur      "[(~)]"
49 syn match lilySlur      "\\[()]"
50 syn match lilySpecial   "\\[<!>\\]"
52 " Rest of syntax highlighting rules start here
54 " " Define the default highlighting.
55 " " For version 5.7 and earlier: only when not done already
56 " " For version 5.8 and later: only when an item doesn't have highlighting yet
57 if version >= 508 || !exists("did_lily_syn_inits")
58   if version < 508
59     let did_lily_syn_inits = 1
60     command -nargs=+ HiLink hi link <args>
61   else
62     command -nargs=+ HiLink hi def link <args>
63   endif
65   HiLink Delimiter      Identifier
66   
67   HiLink lilyString     String
68   HiLink lilyComment    Comment
70   HiLink lilyNote       Identifier
71   HiLink lilyKeyword    Keyword
72   HiLink lilyReservedWord       Type
74   HiLink lilyNumber     Constant
75   HiLink lilySpecial    Special
76   HiLink lilySlur       ModeMsg
78   delcommand HiLink
79 endif