# 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 popd cyan
    keyword whole pushd 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
