xref: /vim-8.2.3635/runtime/syntax/abc.vim (revision 89bcfda6)
1" Vim syntax file
2" Language:	abc music notation language
3" Maintainer:	James Allwright <[email protected]>
4" URL:		http://perun.hscs.wmin.ac.uk/~jra/vim/syntax/abc.vim
5" Last Change:	27th April 2001
6
7" quit when a syntax file was already loaded
8if exists("b:current_syntax")
9  finish
10endif
11
12" tags
13syn region abcGuitarChord start=+"[A-G]+ end=+"+ contained
14syn match abcNote "z[1-9]*[0-9]*" contained
15syn match abcNote "z[1-9]*[0-9]*/[248]\=" contained
16syn match abcNote "[=_\^]\{,2}[A-G],*[1-9]*[0-9]*" contained
17syn match abcNote "[=_\^]\{,2}[A-G],*[1-9]*[0-9]*/[248]\=" contained
18syn match abcNote "[=_\^]\{,2}[a-g]'*[1-9]*[0-9]*"  contained
19syn match abcNote "[=_\^]\{,2}[a-g]'*[1-9]*[0-9]*/[248]\="  contained
20syn match abcBar "|"  contained
21syn match abcBar "[:|][:|]"  contained
22syn match abcBar ":|2"  contained
23syn match abcBar "|1"  contained
24syn match abcBar "\[[12]"  contained
25syn match abcTuple "([1-9]\+:\=[0-9]*:\=[0-9]*" contained
26syn match abcBroken "<\|<<\|<<<\|>\|>>\|>>>" contained
27syn match abcTie    "-"
28syn match abcHeadField "^[A-EGHIK-TVWXZ]:.*$" contained
29syn match abcBodyField "^[KLMPQWVw]:.*$" contained
30syn region abcHeader start="^X:" end="^K:.*$" contained contains=abcHeadField,abcComment keepend
31syn region abcTune start="^X:" end="^ *$" contains=abcHeader,abcComment,abcBar,abcNote,abcBodyField,abcGuitarChord,abcTuple,abcBroken,abcTie
32syn match abcComment "%.*$"
33
34
35" Define the default highlighting.
36" Only when an item doesn't have highlighting yet
37command -nargs=+ HiLink hi def link <args>
38
39HiLink abcComment		Comment
40HiLink abcHeadField		Type
41HiLink abcBodyField		Special
42HiLink abcBar			Statement
43HiLink abcTuple			Statement
44HiLink abcBroken			Statement
45HiLink abcTie			Statement
46HiLink abcGuitarChord	Identifier
47HiLink abcNote			Constant
48
49delcommand HiLink
50
51let b:current_syntax = "abc"
52
53" vim: ts=4
54