xref: /vim-8.2.3635/runtime/syntax/automake.vim (revision 044b68f4)
1" Vim syntax file
2" Language: automake Makefile.am
3" Maintainer: Felipe Contreras <[email protected]>
4" Former Maintainer: John Williams <[email protected]>
5" Last Change: $LastChangedDate: 2006-04-16 22:06:40 -0400 (dom, 16 apr 2006) $
6" URL: http://svn.debian.org/wsvn/pkg-vim/trunk/runtime/syntax/automake.vim?op=file&rev=0&sc=0
7"
8" 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
22syn 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:
32syn match automakePrimary "^TESTS\s*="me=e-1
33syn match automakeSecondary "^OMIT_DEPENDENCIES\s*="me=e-1
34syn 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
88