blob: eea2a9f38cbe01e26b490219691109a323cd2bd8 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar3577c6f2008-06-24 21:16:56 +00002" Language: automake Makefile.am
3" Maintainer: Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
4" Former Maintainer: John Williams <jrw@pobox.com>
Bram Moolenaar251e1912011-06-19 05:09:16 +02005" Last Change: 2011-06-13
6" URL: http://anonscm.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/automake.vim
Bram Moolenaar3577c6f2008-06-24 21:16:56 +00007"
8" XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain
9" it only because patches have been submitted for it by Debian users and the
10" former maintainer was MIA (Missing In Action), taking over its
11" maintenance was thus the only way to include those patches.
12" If you care about this file, and have time to maintain it please do so!
Bram Moolenaara93fa7e2006-04-17 22:14:47 +000013"
Bram Moolenaar071d4272004-06-13 20:20:40 +000014" This script adds support for automake's Makefile.am format. It highlights
15" Makefile variables significant to automake as well as highlighting
16" autoconf-style @variable@ substitutions . Subsitutions are marked as errors
17" when they are used in an inappropriate place, such as in defining
18" EXTRA_SOURCES.
19
Bram Moolenaar251e1912011-06-19 05:09:16 +020020" Standard syntax initialization
21if version < 600
22 syntax clear
23elseif exists("b:current_syntax")
24 finish
25endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000026
27" Read the Makefile syntax to start with
28if version < 600
29 source <sfile>:p:h/make.vim
30else
31 runtime! syntax/make.vim
32endif
33
Bram Moolenaar251e1912011-06-19 05:09:16 +020034syn match automakePrimary "^\w\+\(_PROGRAMS\|_LIBRARIES\|_LISP\|_PYTHON\|_JAVA\|_SCRIPTS\|_DATA\|_HEADERS\|_MANS\|_TEXINFOS\|_LTLIBRARIES\)\s*\ze+\=="
35syn match automakePrimary "^TESTS\s*\ze+\=="me=e-1
36syn match automakeSecondary "^\w\+\(_SOURCES\|_LIBADD\|_LDADD\|_LDFLAGS\|_DEPENDENCIES\|_AR\|_CCASFLAGS\|_CFLAGS\|_CPPFLAGS\|_CXXFLAGS\|_FCFLAGS\|_FFLAGS\|_GCJFLAGS\|_LFLAGS\|_LIBTOOLFLAGS\|OBJCFLAGS\|RFLAGS\|UPCFLAGS\|YFLAGS\)\s*\ze+\=="
37syn match automakeSecondary "^\(LDADD\|ARFLAGS\|OMIT_DEPENDENCIES\|AM_MAKEFLAGS\|\(AM_\)\=\(MAKEINFOFLAGS\|RUNTESTDEFAULTFLAGS\|ETAGSFLAGS\|CTAGSFLAGS\|JAVACFLAGS\)\)\s*\ze+\=="
38syn match automakeExtra "^EXTRA_\w\+\s*\ze+\=="
39syn match automakeOptions "^\(ACLOCAL_AMFLAGS\|AUTOMAKE_OPTIONS\|DISTCHECK_CONFIGURE_FLAGS\|ETAGS_ARGS\|TAGS_DEPENDENCIES\)\s*\ze+\=="
40syn match automakeClean "^\(MOSTLY\|DIST\|MAINTAINER\)\=CLEANFILES\s*\ze+\=="
41syn match automakeSubdirs "^\(DIST_\)\=SUBDIRS\s*\ze+\=="
42syn match automakeConditional "^\(if\s*!\=\w\+\|else\|endif\)\s*$"
Bram Moolenaar071d4272004-06-13 20:20:40 +000043
Bram Moolenaar251e1912011-06-19 05:09:16 +020044syn match automakeSubst "@\w\+@"
45syn match automakeSubst "^\s*@\w\+@"
Bram Moolenaar071d4272004-06-13 20:20:40 +000046syn match automakeComment1 "#.*$" contains=automakeSubst
47syn match automakeComment2 "##.*$"
48
49syn match automakeMakeError "$[{(][^})]*[^a-zA-Z0-9_})][^})]*[})]" " GNU make function call
Bram Moolenaar251e1912011-06-19 05:09:16 +020050syn match automakeMakeError "^AM_LDADD\s*\ze+\==" " Common mistake
Bram Moolenaar071d4272004-06-13 20:20:40 +000051
Bram Moolenaar251e1912011-06-19 05:09:16 +020052syn region automakeNoSubst start="^EXTRA_\w*\s*+\==" end="$" contains=ALLBUT,automakeNoSubst transparent
53syn region automakeNoSubst start="^DIST_SUBDIRS\s*+\==" end="$" contains=ALLBUT,automakeNoSubst transparent
54syn region automakeNoSubst start="^\w*_SOURCES\s*+\==" end="$" contains=ALLBUT,automakeNoSubst transparent
55syn match automakeBadSubst "@\(\w*@\=\)\=" contained
Bram Moolenaar071d4272004-06-13 20:20:40 +000056
57syn region automakeMakeDString start=+"+ skip=+\\"+ end=+"+ contains=makeIdent,automakeSubstitution
58syn region automakeMakeSString start=+'+ skip=+\\'+ end=+'+ contains=makeIdent,automakeSubstitution
59syn region automakeMakeBString start=+`+ skip=+\\`+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine,automakeSubstitution
60
61" Define the default highlighting.
62" For version 5.7 and earlier: only when not done already
63" For version 5.8 and later: only when an item doesn't have highlighting yet
64if version >= 508 || !exists("did_automake_syntax_inits")
65 if version < 508
66 let did_automake_syntax_inits = 1
67 command -nargs=+ HiLink hi link <args>
68 else
69 command -nargs=+ HiLink hi def link <args>
70 endif
71
72 HiLink automakePrimary Statement
73 HiLink automakeSecondary Type
74 HiLink automakeExtra Special
75 HiLink automakeOptions Special
76 HiLink automakeClean Special
77 HiLink automakeSubdirs Statement
78 HiLink automakeConditional PreProc
79 HiLink automakeSubst PreProc
80 HiLink automakeComment1 makeComment
81 HiLink automakeComment2 makeComment
82 HiLink automakeMakeError makeError
83 HiLink automakeBadSubst makeError
84 HiLink automakeMakeDString makeDString
85 HiLink automakeMakeSString makeSString
86 HiLink automakeMakeBString makeBString
87
88 delcommand HiLink
89endif
90
91let b:current_syntax = "automake"
92
93" vi: ts=8 sw=4 sts=4