blob: 3dc098e73002067dfff7f9e185f508c56a8dd881 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" 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