blob: ea09927e20c209d46b59e715861c324077545574 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: automake Makefile.am
3" Maintainer: John Williams <jrw@pobox.com>
4" Last change: 2001 May 09
5
6
7" This script adds support for automake's Makefile.am format. It highlights
8" Makefile variables significant to automake as well as highlighting
9" autoconf-style @variable@ substitutions . Subsitutions are marked as errors
10" when they are used in an inappropriate place, such as in defining
11" EXTRA_SOURCES.
12
13
14" Read the Makefile syntax to start with
15if version < 600
16 source <sfile>:p:h/make.vim
17else
18 runtime! syntax/make.vim
19endif
20
21syn match automakePrimary "^[A-Za-z0-9_]\+\(_PROGRAMS\|LIBRARIES\|_LIST\|_SCRIPTS\|_DATA\|_HEADERS\|_MANS\|_TEXINFOS\|_JAVA\|_LTLIBRARIES\)\s*="me=e-1
22syn match automakePrimary "^TESTS\s*="me=e-1
23syn match automakeSecondary "^[A-Za-z0-9_]\+\(_SOURCES\|_LDADD\|_LIBADD\|_LDFLAGS\|_DEPENDENCIES\)\s*="me=e-1
24syn match automakeSecondary "^OMIT_DEPENDENCIES\s*="me=e-1
25syn match automakeExtra "^EXTRA_[A-Za-z0-9_]\+\s*="me=e-1
26syn match automakeOptions "^\(AUTOMAKE_OPTIONS\|ETAGS_ARGS\|TAGS_DEPENDENCIES\)\s*="me=e-1
27syn match automakeClean "^\(MOSTLY\|DIST\|MAINTAINER\)\=CLEANFILES\s*="me=e-1
28syn match automakeSubdirs "^\(DIST_\)\=SUBDIRS\s*="me=e-1
29syn match automakeConditional "^\(if\s*[a-zA-Z0-9_]\+\|else\|endif\)\s*$"
30
31syn match automakeSubst "@[a-zA-Z0-9_]\+@"
32syn match automakeSubst "^\s*@[a-zA-Z0-9_]\+@"
33syn match automakeComment1 "#.*$" contains=automakeSubst
34syn match automakeComment2 "##.*$"
35
36syn match automakeMakeError "$[{(][^})]*[^a-zA-Z0-9_})][^})]*[})]" " GNU make function call
37
38syn region automakeNoSubst start="^EXTRA_[a-zA-Z0-9_]*\s*=" end="$" contains=ALLBUT,automakeNoSubst transparent
39syn region automakeNoSubst start="^DIST_SUBDIRS\s*=" end="$" contains=ALLBUT,automakeNoSubst transparent
40syn region automakeNoSubst start="^[a-zA-Z0-9_]*_SOURCES\s*=" end="$" contains=ALLBUT,automakeNoSubst transparent
41syn match automakeBadSubst "@\([a-zA-Z0-9_]*@\=\)\=" contained
42
43syn region automakeMakeDString start=+"+ skip=+\\"+ end=+"+ contains=makeIdent,automakeSubstitution
44syn region automakeMakeSString start=+'+ skip=+\\'+ end=+'+ contains=makeIdent,automakeSubstitution
45syn region automakeMakeBString start=+`+ skip=+\\`+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine,automakeSubstitution
46
47" Define the default highlighting.
48" For version 5.7 and earlier: only when not done already
49" For version 5.8 and later: only when an item doesn't have highlighting yet
50if version >= 508 || !exists("did_automake_syntax_inits")
51 if version < 508
52 let did_automake_syntax_inits = 1
53 command -nargs=+ HiLink hi link <args>
54 else
55 command -nargs=+ HiLink hi def link <args>
56 endif
57
58 HiLink automakePrimary Statement
59 HiLink automakeSecondary Type
60 HiLink automakeExtra Special
61 HiLink automakeOptions Special
62 HiLink automakeClean Special
63 HiLink automakeSubdirs Statement
64 HiLink automakeConditional PreProc
65 HiLink automakeSubst PreProc
66 HiLink automakeComment1 makeComment
67 HiLink automakeComment2 makeComment
68 HiLink automakeMakeError makeError
69 HiLink automakeBadSubst makeError
70 HiLink automakeMakeDString makeDString
71 HiLink automakeMakeSString makeSString
72 HiLink automakeMakeBString makeBString
73
74 delcommand HiLink
75endif
76
77let b:current_syntax = "automake"
78
79" vi: ts=8 sw=4 sts=4