1" Vim syntax file
2" Language:     BibTeX Bibliography Style
3" Maintainer:   Tim Pope <vimNOSPAM@tpope.info>
4" Filenames:    *.bst
5" $Id: bst.vim,v 1.2 2007/05/05 18:24:42 vimboss Exp $
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
15if version < 600
16    command -nargs=1 SetIsk set iskeyword=<args>
17else
18    command -nargs=1 SetIsk setlocal iskeyword=<args>
19endif
20SetIsk 48-57,#,$,',.,A-Z,a-z
21delcommand SetIsk
22
23syn case ignore
24
25syn match   bstString +"[^"]*\%("\|$\)+ contains=bstField,bstType,bstError
26" Highlight the last character of an unclosed string, but only when the cursor
27" is not beyond it (i.e., it is still being edited). Imperfect.
28syn match   bstError     '[^"]\%#\@!$' contained
29
30syn match   bstNumber         "#-\=\d\+\>"
31syn keyword bstNumber         entry.max$ global.max$
32syn match   bstComment        "%.*"
33
34syn keyword bstCommand        ENTRY FUNCTION INTEGERS MACRO STRINGS
35syn keyword bstCommand        READ EXECUTE ITERATE REVERSE SORT
36syn match   bstBuiltIn        "\s[-<>=+*]\|\s:="
37syn keyword bstBuiltIn        add.period$
38syn keyword bstBuiltIn        call.type$ change.case$ chr.to.int$ cite$
39syn keyword bstBuiltIn        duplicate$ empty$ format.name$
40syn keyword bstBuiltIn        if$ int.to.chr$ int.to.str$
41syn keyword bstBuiltIn        missing$
42syn keyword bstBuiltIn        newline$ num.names$
43syn keyword bstBuiltIn        pop$ preamble$ purify$ quote$
44syn keyword bstBuiltIn        skip$ stack$ substring$ swap$
45syn keyword bstBuiltIn        text.length$ text.prefix$ top$ type$
46syn keyword bstBuiltIn        warning$ while$ width$ write$
47syn match   bstIdentifier     "'\k*"
48syn keyword bstType           article book booklet conference
49syn keyword bstType           inbook incollection inproceedings
50syn keyword bstType           manual mastersthesis misc
51syn keyword bstType           phdthesis proceedings
52syn keyword bstType           techreport unpublished
53syn keyword bstField          abbr address annote author
54syn keyword bstField          booktitle chapter crossref comment
55syn keyword bstField          edition editor
56syn keyword bstField          howpublished institution journal key month
57syn keyword bstField          note number
58syn keyword bstField          organization
59syn keyword bstField          pages publisher
60syn keyword bstField          school series
61syn keyword bstField          title type
62syn keyword bstField          volume year
63
64" Define the default highlighting.
65" For version 5.7 and earlier: only when not done already
66" For version 5.8 and later: only when an item doesn't have highlighting yet
67if version >= 508 || !exists("did_bst_syn_inits")
68    if version < 508
69        let did_bst_syn_inits = 1
70        command -nargs=+ HiLink hi link <args>
71    else
72        command -nargs=+ HiLink hi def link <args>
73    endif
74
75    HiLink bstComment           Comment
76    HiLink bstString            String
77    HiLink bstCommand           PreProc
78    HiLink bstBuiltIn           Statement
79    HiLink bstField             Special
80    HiLink bstNumber            Number
81    HiLink bstType              Type
82    HiLink bstIdentifier        Identifier
83    HiLink bstError             Error
84    delcommand HiLink
85endif
86
87let b:current_syntax = "bst"
88
89" vim:set ft=vim sts=4 sw=4:
90