# Author   : Sergei Trofimovich <slyfox@inbox.ru>
# Language : shell
# Mode     : ebuild
#
# sh.syntax is taken as base.
#
# Note     : keep in sync default and " " contexts
#
# 'sh.syntax' header:
#  #   Since I regulary update ths file, please send any comments
#  #   to:           Michelle Konzack <linux4michelle@freenet.de>
#  #   Last Update:  Thu, 01 Jun 2006 22:10:07 +0200

context default
    #.ebuild specific commands/glo vars
    # TODO: 1. split keywords by .eclass'es
    #       2. grep all exports and place here
    keyword whole CABAL_FEATURES brightcyan
    keyword whole DEPEND brightcyan
    keyword whole DESCRIPTION brightcyan
    keyword whole EAPI brightcyan
    keyword whole EDARCS_REPOSITORY brightcyan
    keyword whole EDARCS_GET_CMD brightcyan
    keyword whole EDARCS_LOCALREPO brightcyan
    keyword whole EGIT_BRANCH brightcyan
    keyword whole EGIT_PROJECT brightcyan
    keyword whole EGIT_REPO_URI brightcyan
    keyword whole EGIT_TREE brightcyan
    keyword whole ESVN_REPO_URI brightcyan
    keyword whole EXPORT_FUNCTIONS brightcyan
    keyword whole HOMEPAGE brightcyan
    keyword whole IUSE brightcyan
    keyword whole KEYWORDS brightcyan
    keyword whole LICENSE brightcyan
    keyword whole PATCHES brightcyan
    keyword whole PDEPEND brightcyan
    keyword whole PROVIDE brightcyan
    keyword whole RDEPEND brightcyan
    keyword whole RESTRICT brightcyan
    keyword whole S brightcyan
    keyword whole SITEFILE brightcyan
    keyword whole SLOT brightcyan
    keyword whole SRC_URI brightcyan
    keyword whole WANT_AUTOCONF brightcyan
    keyword whole WANT_AUTOMAKE brightcyan
    keyword DOCS brightcyan
    keyword LINGUAS brightcyan

    keyword whole _elibtoolize yellow
    keyword whole best_version yellow
    keyword whole built_with_use yellow
    keyword whole check_KV yellow
    keyword whole die yellow
    keyword whole diropts yellow
    keyword whole dobin yellow
    keyword whole docinto yellow
    keyword whole doconfd yellow
    keyword whole dodir yellow
    keyword whole dodoc yellow
    keyword whole doenvd yellow
    keyword whole doexe yellow
    keyword whole dohard yellow
    keyword whole dohtml yellow
    keyword whole doicon yellow
    keyword whole doinfo yellow
    keyword whole doinitd yellow
    keyword whole doins yellow
    keyword whole dolib yellow
    keyword whole dolib.a yellow
    keyword whole dolib.so yellow
    keyword whole doman yellow
    keyword whole domenu yellow
    keyword whole dosbin yellow
    keyword whole dosed yellow
    keyword whole dosym yellow
    keyword whole eaclocal yellow
    keyword whole eautoconf yellow
    keyword whole eautoreconf yellow
    keyword whole eautomake yellow
    keyword whole ebegin yellow
    keyword whole econf yellow
    keyword whole eend yellow
    keyword whole eerror yellow
    keyword whole einfo yellow
    keyword whole einstall yellow
    keyword whole elibtoolize yellow
    keyword whole elog yellow
    keyword whole emake yellow
    keyword whole epatch yellow
    keyword whole ewarn yellow
    keyword whole exeinto yellow
    keyword whole exeopts yellow
    keyword whole enewgroup yellow
    keyword whole enewuser yellow
    keyword whole fowners yellow
    keyword whole fperms yellow
    keyword whole has yellow
    keyword whole hasq yellow
    keyword whole has_version yellow
    keyword whole insinto yellow
    keyword whole insopts yellow
    keyword whole intltoolize yellow
    keyword whole into yellow
    keyword whole keepdir yellow
    keyword whole libopts yellow
    keyword whole local yellow
    keyword whole newbin yellow
    keyword whole newconfd yellow
    keyword whole newdoc yellow
    keyword whole newexe yellow
    keyword whole newins yellow
    keyword whole newman yellow
    keyword whole newsbin yellow
    keyword whole newinitd yellow
    keyword whole prepall yellow
    keyword whole prepalldocs yellow
    keyword whole prepallinfo yellow
    keyword whole prepallman yellow
    keyword whole unpack yellow
    keyword whole use yellow
    keyword whole use_enable yellow
    keyword whole use_with yellow
    #base
    keyword whole base_src_unpack yellow
    #cvs
    keyword whole cvs_src_unpack yellow
    #darcs
    keyword whole darcs_src_unpack yellow
    #elisp-common
    keyword whole elisp-compile yellow
    keyword whole elisp-install yellow
    keyword whole elisp-site-file-install yellow
    keyword whole elisp-site-regen yellow
    #flag-o-matic
    keyword whole append-flags yellow
    keyword whole filter-flags yellow
    keyword whole replace-flags yellow
    keyword whole strip-flags yellow
    keyword whole strip-unsupported-flags yellow
    #git
    keyword whole git_src_unpack yellow
    #java-ant-2
    keyword whole EANT_BUILD_TARGET yellow
    #mercurial
    keyword whole mercurial_src_unpack yellow
    #svn
    keyword whole subversion_src_unpack yellow

####################
# here starts original sh.syntax (with core commands only)
####################

    keyword ! brightred
    keyword ;; brightred
    keyword \\@ brightred
    keyword \\$ brightred
    keyword \\\\ brightred
    keyword \\" brightred
    keyword \\' brightred
    keyword \\` brightred
    keyword ` brightred
    keyword ; brightcyan
    keyword $(*) brightgreen
    keyword ${*} brightgreen
    keyword { brightcyan
    keyword } brightcyan

    keyword whole linestart #!\[\s\]*\n brightcyan black

    keyword $\* brightred
    keyword $@ brightred
    keyword $# brightred
    keyword $? brightred
    keyword $- brightred
    keyword $$ brightred
    keyword $! brightred
    keyword $_ brightred

    keyword whole 2>&1 brightred
    keyword whole 1>&2 brightred
    keyword whole 2>   brightred
    keyword whole 1>   brightred

    keyword wholeright $\[0123456789\] brightred

    keyword wholeright $+ brightgreen

    keyword $ brightgreen

    keyword wholeleft linestart function*() brightmagenta
    keyword wholeleft linestart function\[\s\]+ brightmagenta
    keyword wholeright +() brightmagenta

wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._

    keyword whole break yellow
    keyword whole case yellow
    keyword whole clear         yellow
    keyword whole continue yellow
    keyword whole declare       yellow
    keyword whole done yellow
    keyword whole do yellow
    keyword whole elif yellow
    keyword whole else yellow
    keyword whole esac yellow
    keyword whole exit yellow
    keyword whole export yellow
    keyword whole fi yellow
    keyword whole for yellow
    keyword whole getopts       yellow
    keyword whole if yellow
    keyword whole in yellow
    keyword whole read yellow
    keyword whole return yellow
    keyword whole select yellow
    keyword whole shift yellow
    keyword whole source        yellow
    keyword whole then yellow
    keyword whole trap yellow
    keyword whole until yellow
    keyword whole unset yellow
    keyword whole wait yellow
    keyword whole while yellow

# here goes usable subset for .ebuild commands
    keyword whole awk        cyan
    keyword whole cd         cyan
    keyword whole chown      cyan
    keyword whole chmod      cyan
    keyword whole cmake      cyan
    keyword whole cp         cyan
    keyword whole echo       cyan
    keyword whole egrep      cyan
    keyword whole fgrep      cyan
    keyword whole find       cyan
    keyword whole grep       cyan
    keyword whole ln         cyan
    keyword whole make       cyan
    keyword whole mkdir      cyan
    keyword whole mknod      cyan
    keyword whole mv         cyan
    keyword whole perl       cyan
    keyword whole pod2man    cyan
    keyword whole rm         cyan
    keyword whole sed        cyan
    keyword whole sh         cyan
    keyword whole touch      cyan
    keyword whole xmkmf      cyan

# some interesting files to copy
    keyword whole ANNOUNCEMENT  white
    keyword whole AUTHORS       white
    keyword whole BUGS          white
    keyword whole CHANGES       white
    keyword whole COPYING       white
    keyword whole COPYRIGHT     white
    keyword whole CREDITS       white
    keyword whole ChangeLog     white
    keyword whole FAQ           white
    keyword whole HACKING       white
    keyword whole INSTALL       white
    keyword whole LICENSE       white
    keyword whole NEWS          white
    keyword whole README        white
    keyword whole THANKS        white
    keyword whole TODO          white
    keyword whole VERSION       white

    keyword whole /dev/audio  brightblue
    keyword whole /dev/dsp    brightblue
    keyword whole /dev/null   brightblue
    keyword whole /dev/mixed  brightblue
    keyword whole /dev/stdin  brightblue
    keyword whole /dev/stdout brightblue
    keyword whole /dev/stderr brightblue
    keyword whole /dev/zero   brightblue

wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

context # \n brown
    spellcheck

context exclusive whole <<\[\s\]\[-\]\[\s\]\[\\\]EOF EOF green
context exclusive whole <<\[\s\]\[-\]\[\s\]\[\\\]END END green

context ' ' green

context " " green
    keyword \\* brightgreen
    keyword \\@ brightgreen
    keyword \\$ brightgreen
    keyword \\\\ brightgreen
    keyword \\` brightgreen
    keyword \\" brightgreen
    keyword $(*) brightgreen
    keyword ${*} brightgreen
    keyword $\* brightred
    keyword $@ brightred
    keyword $# brightred
    keyword $? brightred
    keyword $- brightred
    keyword $$ brightred
    keyword $! brightred
    keyword $_ brightred
    keyword wholeright $\[0123456789\] brightred

    keyword wholeright $+ brightgreen

    keyword $ brightgreen

context exclusive ` ` lightgray black
    keyword '*' green
    keyword " green
    keyword \\` green
    keyword ; brightcyan
    keyword $(*) brightgreen
    keyword ${*} brightgreen
    keyword { brightcyan
    keyword } brightcyan

    keyword $\* brightred
    keyword $@ brightred
    keyword $# brightred
    keyword $? brightred
    keyword $- brightred
    keyword $$ brightred
    keyword $! brightred
    keyword $_ brightred

    keyword whole 2>&1 brightred
    keyword whole 2>   brightred
    keyword whole 1>   brightred

    keyword wholeright $\[0123456789\] brightred

    keyword wholeright $+ brightgreen

    keyword $ brightgreen

wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._

    keyword whole break yellow
    keyword whole case yellow
    keyword whole clear         yellow
    keyword whole continue yellow
    keyword whole declare       yellow
    keyword whole done yellow
    keyword whole do yellow
    keyword whole elif yellow
    keyword whole else yellow
    keyword whole esac yellow
    keyword whole exit yellow
    keyword whole export yellow
    keyword whole fi yellow
    keyword whole for yellow
    keyword whole getopts       yellow
    keyword whole if yellow
    keyword whole in yellow
    keyword whole read yellow
    keyword whole return yellow
    keyword whole select yellow
    keyword whole shift yellow
    keyword whole source        yellow
    keyword whole then yellow
    keyword whole trap yellow
    keyword whole until yellow
    keyword whole unset yellow
    keyword whole wait          yellow
    keyword whole while yellow

# here goes usable subset for .ebuild commands
    keyword whole awk        cyan
    keyword whole sed        cyan

    keyword whole /dev/audio  brightblue
    keyword whole /dev/dsp    brightblue
    keyword whole /dev/null   brightblue
    keyword whole /dev/mixed  brightblue
    keyword whole /dev/stdin  brightblue
    keyword whole /dev/stdout brightblue
    keyword whole /dev/stderr brightblue
    keyword whole /dev/zero   brightblue

context inherit \n magenta
    keyword whole inherit yellow
