Bug#628759: vim: Improve automake syntax highlighter
James Vega
jamessan at debian.org
Fri Jun 3 01:55:15 UTC 2011
On Wed, Jun 01, 2011 at 09:14:40AM +0200, Guillem Jover wrote:
> Attached a patch which should improve the current automake syntax
> highlighter, and a test file which I used to verify the syntax before
> and after.
Thanks!
> The comments therein refer to the seubsequent lines. There's
> still one item I know of which is bogus, AM_LDADD should not be
> recognized, and this tends to be a common mistake to make so it would
> be nice to not highlight it as correct, but I don't know how to exclude
> just that one, help with that would be really appreciated!
Attached automake.vim should cover that scenario properly. I just
pulled the _LDADD matches into their own rule. If none of the
automakeSecondary rules are supposed to start with AM_, that'd make it
simpler.
I also fixed the += support you added. The \= wasn't necessary in +\==
and would actually cause things to mishighlight due to the me=e-2
pattern offset (e.g., foo_SOURCES+= a).
Also, as the note at the top of the file suggests, the syntax file is
looking for a new maintainer. ;)
Cheers,
--
James
GPG Key: 1024D/61326D40 2003-09-02 James Vega <jamessan at debian.org>
-------------- next part --------------
" Vim syntax file
" Language: automake Makefile.am
" Maintainer: Debian VIM Maintainers <pkg-vim-maintainers at lists.alioth.debian.org>
" Former Maintainer: John Williams <jrw at pobox.com>
" Last Change: 2011-06-02
" URL: http://anonscm.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/automake.vim
"
" XXX This file is in need of a new maintainer, Debian VIM Maintainers maintain
" it only because patches have been submitted for it by Debian users and the
" former maintainer was MIA (Missing In Action), taking over its
" maintenance was thus the only way to include those patches.
" If you care about this file, and have time to maintain it please do so!
"
" This script adds support for automake's Makefile.am format. It highlights
" Makefile variables significant to automake as well as highlighting
" autoconf-style @variable@ substitutions . Subsitutions are marked as errors
" when they are used in an inappropriate place, such as in defining
" EXTRA_SOURCES.
" Standard syntax initialization
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" Read the Makefile syntax to start with
if version < 600
source <sfile>:p:h/make.vim
else
runtime! syntax/make.vim
endif
syn match automakePrimary "^\w\+\(_PROGRAMS\|_LIBRARIES\|_LISP\|_PYTHON\|_JAVA\|_SCRIPTS\|_DATA\|_HEADERS\|_MANS\|_TEXINFOS\|_LTLIBRARIES\)\s*="me=e-1
syn match automakePrimary "^\w\+\(_PROGRAMS\|_LIBRARIES\|_LISP\|_PYTHON\|_JAVA\|_SCRIPTS\|_DATA\|_HEADERS\|_MANS\|_TEXINFOS\|_LTLIBRARIES\)\s*+="me=e-2
syn match automakePrimary "^TESTS\s*="me=e-1
syn match automakePrimary "^TESTS\s*+="me=e-2
syn match automakeSecondary "^\w\+\(_SOURCES\|_LIBADD\|_LDFLAGS\|_DEPENDENCIES\|_AR\|_CCASFLAGS\|_CFLAGS\|_CPPFLAGS\|_CXXFLAGS\|_FCFLAGS\|_FFLAGS\|_GCJFLAGS\|_LFLAGS\|_LIBTOOLFLAGS\|OBJCFLAGS\|RFLAGS\|UPCFLAGS\|YFLAGS\)\s*="me=e-1
syn match automakeSecondary "^\w\+\(_SOURCES\|_LIBADD\|_LDFLAGS\|_DEPENDENCIES\|_AR\|_CCASFLAGS\|_CFLAGS\|_CPPFLAGS\|_CXXFLAGS\|_FCFLAGS\|_FFLAGS\|_GCJFLAGS\|_LFLAGS\|_LIBTOOLFLAGS\|OBJCFLAGS\|RFLAGS\|UPCFLAGS\|YFLAGS\)\s*+="me=e-2
syn match automakeSecondary "^\%(AM_\)\@!\w\+_LDADD\s*="me=e-1
syn match automakeSecondary "^\%(AM_\)\@!\w\+_LDADD\s*+="me=e-2
syn match automakeSecondary "^\(LDADD\|ARFLAGS\|OMIT_DEPENDENCIES\|AM_MAKEFLAGS\|\(AM_\)\=\(MAKEINFOFLAGS\|RUNTESTDEFAULTFLAGS\|ETAGSFLAGS\|CTAGSFLAGS\|JAVACFLAGS\)\)\s*="me=e-1
syn match automakeSecondary "^\(LDADD\|ARFLAGS\|OMIT_DEPENDENCIES\|AM_MAKEFLAGS\|\(AM_\)\=\(MAKEINFOFLAGS\|RUNTESTDEFAULTFLAGS\|ETAGSFLAGS\|CTAGSFLAGS\|JAVACFLAGS\)\)\s*+="me=e-2
syn match automakeExtra "^EXTRA_\w\+\s*="me=e-1
syn match automakeExtra "^EXTRA_\w\+\s*+="me=e-2
syn match automakeOptions "^\(ACLOCAL_AMFLAGS\|AUTOMAKE_OPTIONS\|DISTCHECK_CONFIGURE_FLAGS\|ETAGS_ARGS\|TAGS_DEPENDENCIES\)\s*="me=e-1
syn match automakeOptions "^\(ACLOCAL_AMFLAGS\|AUTOMAKE_OPTIONS\|DISTCHECK_CONFIGURE_FLAGS\|ETAGS_ARGS\|TAGS_DEPENDENCIES\)\s*+="me=e-2
syn match automakeClean "^\(MOSTLY\|DIST\|MAINTAINER\)\=CLEANFILES\s*="me=e-1
syn match automakeClean "^\(MOSTLY\|DIST\|MAINTAINER\)\=CLEANFILES\s*+="me=e-2
syn match automakeSubdirs "^\(DIST_\)\=SUBDIRS\s*="me=e-1
syn match automakeSubdirs "^\(DIST_\)\=SUBDIRS\s*+="me=e-2
syn match automakeConditional "^\(if\s*!\=\w\+\|else\|endif\)\s*$"
syn match automakeSubst "@\w\+@"
syn match automakeSubst "^\s*@\w\+@"
syn match automakeComment1 "#.*$" contains=automakeSubst
syn match automakeComment2 "##.*$"
syn match automakeMakeError "$[{(][^})]*[^a-zA-Z0-9_})][^})]*[})]" " GNU make function call
syn region automakeNoSubst start="^EXTRA_\w*\s*+\==" end="$" contains=ALLBUT,automakeNoSubst transparent
syn region automakeNoSubst start="^DIST_SUBDIRS\s*+\==" end="$" contains=ALLBUT,automakeNoSubst transparent
syn region automakeNoSubst start="^\w*_SOURCES\s*+\==" end="$" contains=ALLBUT,automakeNoSubst transparent
syn match automakeBadSubst "@\(\w*@\=\)\=" contained
syn region automakeMakeDString start=+"+ skip=+\\"+ end=+"+ contains=makeIdent,automakeSubstitution
syn region automakeMakeSString start=+'+ skip=+\\'+ end=+'+ contains=makeIdent,automakeSubstitution
syn region automakeMakeBString start=+`+ skip=+\\`+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine,automakeSubstitution
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_automake_syntax_inits")
if version < 508
let did_automake_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink automakePrimary Statement
HiLink automakeSecondary Type
HiLink automakeExtra Special
HiLink automakeOptions Special
HiLink automakeClean Special
HiLink automakeSubdirs Statement
HiLink automakeConditional PreProc
HiLink automakeSubst PreProc
HiLink automakeComment1 makeComment
HiLink automakeComment2 makeComment
HiLink automakeMakeError makeError
HiLink automakeBadSubst makeError
HiLink automakeMakeDString makeDString
HiLink automakeMakeSString makeSString
HiLink automakeMakeBString makeBString
delcommand HiLink
endif
let b:current_syntax = "automake"
" vi: ts=8 sw=4 sts=4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-vim-maintainers/attachments/20110602/6e07d02c/attachment.pgp>
More information about the pkg-vim-maintainers
mailing list