blob: b2dd0f930372c6ad048fb473b97df6f5249f84af [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar9964e462007-05-05 17:54:07 +00002" Language: automake Makefile.am
3" Maintainer: Felipe Contreras <felipe.contreras@gmail.com>
4" Former Maintainer: John Williams <jrw@pobox.com>
5" Last Change: $LastChangedDate: 2006-04-16 22:06:40 -0400 (dom, 16 apr 2006) $
Bram Moolenaara93fa7e2006-04-17 22:14:47 +00006" URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/syntax/automake.vim?op=file&rev=0&sc=0
7"
Bram Moolenaar071d4272004-06-13 20:20:40 +00008" This script adds support for automake's Makefile.am format. It highlights
9" Makefile variables significant to automake as well as highlighting
10" autoconf-style @variable@ substitutions . Subsitutions are marked as errors
11" when they are used in an inappropriate place, such as in defining
12" EXTRA_SOURCES.
13
14
15" Read the Makefile syntax to start with
16if version < 600
17 source <sfile>:p:h/make.vim
18else
19 runtime! syntax/make.vim
20endif
21
Bram Moolenaar9964e462007-05-05 17:54:07 +000022syn match automakePrimary "^[A-Za-z0-9_]\+_\(PROGRAMS\|LIBRARIES\|LISP\|PYTHON\|JAVA\|SCRIPTS\|DATA\|HEADERS\|MANS\|TEXINFOS\|LTLIBRARIES\)\s*="me=e-1
23
24syn match automakeSecondary "^[A-Za-z0-9_]\+_\(SOURCES\|AR\|LIBADD\|LDADD\|LDFLAGS\|DEPENDENCIES\|LINK\|SHORTNAME\)\s*="me=e-1
25syn match automakeSecondary "^[A-Za-z0-9_]\+_\(CCASFLAGS\|CFLAGS\|CPPFLAGS\|CXXFLAGS\|FFLAGS\|GCJFLAGS\|LFLAGS\|OBJCFLAGS\|RFLAGS\|YFLAGS\)\s*="me=e-1
26
27syn match automakeExtra "^EXTRA_DIST\s*="me=e-1
28syn match automakeExtra "^EXTRA_PROGRAMS\s*="me=e-1
29syn match automakeExtra "^EXTRA_[A-Za-z0-9_]\+_SOURCES\s*="me=e-1
30
31" TODO: Check these:
Bram Moolenaar071d4272004-06-13 20:20:40 +000032syn match automakePrimary "^TESTS\s*="me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +000033syn match automakeSecondary "^OMIT_DEPENDENCIES\s*="me=e-1
Bram Moolenaar071d4272004-06-13 20:20:40 +000034syn match automakeOptions "^\(AUTOMAKE_OPTIONS\|ETAGS_ARGS\|TAGS_DEPENDENCIES\)\s*="me=e-1
35syn match automakeClean "^\(MOSTLY\|DIST\|MAINTAINER\)\=CLEANFILES\s*="me=e-1
36syn match automakeSubdirs "^\(DIST_\)\=SUBDIRS\s*="me=e-1
37syn match automakeConditional "^\(if\s*[a-zA-Z0-9_]\+\|else\|endif\)\s*$"
38
39syn match automakeSubst "@[a-zA-Z0-9_]\+@"
40syn match automakeSubst "^\s*@[a-zA-Z0-9_]\+@"
41syn match automakeComment1 "#.*$" contains=automakeSubst
42syn match automakeComment2 "##.*$"
43
44syn match automakeMakeError "$[{(][^})]*[^a-zA-Z0-9_})][^})]*[})]" " GNU make function call
45
46syn region automakeNoSubst start="^EXTRA_[a-zA-Z0-9_]*\s*=" end="$" contains=ALLBUT,automakeNoSubst transparent
47syn region automakeNoSubst start="^DIST_SUBDIRS\s*=" end="$" contains=ALLBUT,automakeNoSubst transparent
48syn region automakeNoSubst start="^[a-zA-Z0-9_]*_SOURCES\s*=" end="$" contains=ALLBUT,automakeNoSubst transparent
49syn match automakeBadSubst "@\([a-zA-Z0-9_]*@\=\)\=" contained
50
51syn region automakeMakeDString start=+"+ skip=+\\"+ end=+"+ contains=makeIdent,automakeSubstitution
52syn region automakeMakeSString start=+'+ skip=+\\'+ end=+'+ contains=makeIdent,automakeSubstitution
53syn region automakeMakeBString start=+`+ skip=+\\`+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine,automakeSubstitution
54
55" Define the default highlighting.
56" For version 5.7 and earlier: only when not done already
57" For version 5.8 and later: only when an item doesn't have highlighting yet
58if version >= 508 || !exists("did_automake_syntax_inits")
59 if version < 508
60 let did_automake_syntax_inits = 1
61 command -nargs=+ HiLink hi link <args>
62 else
63 command -nargs=+ HiLink hi def link <args>
64 endif
65
66 HiLink automakePrimary Statement
67 HiLink automakeSecondary Type
68 HiLink automakeExtra Special
69 HiLink automakeOptions Special
70 HiLink automakeClean Special
71 HiLink automakeSubdirs Statement
72 HiLink automakeConditional PreProc
73 HiLink automakeSubst PreProc
74 HiLink automakeComment1 makeComment
75 HiLink automakeComment2 makeComment
76 HiLink automakeMakeError makeError
77 HiLink automakeBadSubst makeError
78 HiLink automakeMakeDString makeDString
79 HiLink automakeMakeSString makeSString
80 HiLink automakeMakeBString makeBString
81
82 delcommand HiLink
83endif
84
85let b:current_syntax = "automake"
86
87" vi: ts=8 sw=4 sts=4