]> git.donarmstrong.com Git - lilypond.git/blob - vim/lilypond-syntax.vim
c749fd9aa09f8a3afdd17bce141c84362c867761
[lilypond.git] / vim / lilypond-syntax.vim
1 " LilyPond syntax file
2 " Language:     LilyPond
3 " Maintainer:   Heikki Junes <hjunes@cc.hut.fi>
4 " Created:      Oct 17, 2002
5 " Last Change:  Aug 30, 2009
6 " Version:      6.1-1
7 "
8 " Installed As: vim/syntax/lilypond.vim
9 " Uses Generated File:  vim/syntax/lilypond-words.vim
10 "
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
18
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
29
30 " Match also parethesis of angle type
31 setlocal mps+=<:>
32
33 " Case matters
34 syn case match
35
36 syn cluster lilyMatchGroup      contains=lilyMatcher,lilyString,lilyComment,lilyStatement,lilyNumber,lilyEquation,lilySlur,lilySpecial,lilyNote,lilyKeyword,lilyArticulation,lilyReservedWord
37
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
41
42 syn region lilyString   start=/"/ end=/"/ skip=/\\"/
43 syn region lilyComment  start="%{" skip="%$" end="%}"
44 syn region lilyComment  start="%\([^{]\|$\)" end="$"
45
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   "\\[<!>\\]"
51 " avoid highlighting the extra character in situations like
52 " c--\mf c^^\mf c__\mf
53 syn match lilyArticulation      "[-_^][-_^+|>.]"
54
55 " Rest of syntax highlighting rules start here
56 "
57 " " Define the default highlighting.
58 " " For version 5.7 and earlier: only when not done already
59 " " For version 5.8 and later: only when an item doesn't have highlighting yet
60 if version >= 508 || !exists("did_lily_syn_inits")
61   if version < 508
62     let did_lily_syn_inits = 1
63     command -nargs=+ HiLink hi link <args>
64   else
65     command -nargs=+ HiLink hi def link <args>
66   endif
67
68   HiLink Delimiter      Identifier
69   
70   HiLink lilyString     String
71   HiLink lilyComment    Comment
72  
73   HiLink lilyNote       Identifier
74   HiLink lilyArticulation       PreProc
75   HiLink lilyKeyword    Keyword
76   HiLink lilyReservedWord       Type
77
78   HiLink lilyNumber     Constant
79   HiLink lilySpecial    Special
80   HiLink lilySlur       ModeMsg
81
82   delcommand HiLink
83 endif
84
85 let b:current_syntax = "lilypond"