1" Vim syntax file
2" Language:	abc music notation language
3" Maintainer:	James Allwright <J.R.Allwright@westminster.ac.uk>
4" URL:		http://perun.hscs.wmin.ac.uk/~jra/vim/syntax/abc.vim
5" Last Change:	27th April 2001
6
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9if version < 600
10  syntax clear
11elseif exists("b:current_syntax")
12  finish
13endif
14
15" tags
16syn region abcGuitarChord start=+"[A-G]+ end=+"+ contained
17syn match abcNote "z[1-9]*[0-9]*" contained
18syn match abcNote "z[1-9]*[0-9]*/[248]\=" contained
19syn match abcNote "[=_\^]\{,2}[A-G],*[1-9]*[0-9]*" contained
20syn match abcNote "[=_\^]\{,2}[A-G],*[1-9]*[0-9]*/[248]\=" contained
21syn match abcNote "[=_\^]\{,2}[a-g]'*[1-9]*[0-9]*"  contained
22syn match abcNote "[=_\^]\{,2}[a-g]'*[1-9]*[0-9]*/[248]\="  contained
23syn match abcBar "|"  contained
24syn match abcBar "[:|][:|]"  contained
25syn match abcBar ":|2"  contained
26syn match abcBar "|1"  contained
27syn match abcBar "\[[12]"  contained
28syn match abcTuple "([1-9]\+:\=[0-9]*:\=[0-9]*" contained
29syn match abcBroken "<\|<<\|<<<\|>\|>>\|>>>" contained
30syn match abcTie    "-"
31syn match abcHeadField "^[A-EGHIK-TVWXZ]:.*$" contained
32syn match abcBodyField "^[KLMPQWVw]:.*$" contained
33syn region abcHeader start="^X:" end="^K:.*$" contained contains=abcHeadField,abcComment keepend
34syn region abcTune start="^X:" end="^ *$" contains=abcHeader,abcComment,abcBar,abcNote,abcBodyField,abcGuitarChord,abcTuple,abcBroken,abcTie
35syn match abcComment "%.*$"
36
37
38" Define the default highlighting.
39" For version 5.7 and earlier: only when not done already
40" For version 5.8 and later: only when an item doesn't have highlighting yet
41if version >= 508 || !exists("did_abc_syn_inits")
42  if version < 508
43    let did_abc_syn_inits = 1
44    command -nargs=+ HiLink hi link <args>
45  else
46    command -nargs=+ HiLink hi def link <args>
47  endif
48
49  HiLink abcComment		Comment
50  HiLink abcHeadField		Type
51  HiLink abcBodyField		Special
52  HiLink abcBar			Statement
53  HiLink abcTuple			Statement
54  HiLink abcBroken			Statement
55  HiLink abcTie			Statement
56  HiLink abcGuitarChord	Identifier
57  HiLink abcNote			Constant
58
59  delcommand HiLink
60endif
61
62let b:current_syntax = "abc"
63
64" vim: ts=4
65