# 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 AT_M4DIR brightcyan
    keyword whole BDEPEND brightcyan
    keyword whole CABAL_FEATURES brightcyan
    keyword whole CHECKREQS_DISK_BUILD brightcyan
    keyword whole CHECKREQS_DISK_USR brightcyan
    keyword whole CHECKREQS_DISK_VAR brightcyan
    keyword whole CHECKREQS_MEMORY brightcyan
    keyword whole CONFIG_CHECK brightcyan
    keyword whole DEPEND brightcyan
    keyword whole DESCRIPTION brightcyan
    keyword whole EAPI brightcyan
    keyword whole ECONF_SOURCE 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_SUBMODULES 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 PYTHON_COMPAT brightcyan
    keyword whole QA_AM_MAINTAINER_MODE brightcyan
    keyword whole QA_CONFIGURE_OPTIONS brightcyan
    keyword whole QA_DESKTOP_FILE brightcyan
    keyword whole QA_DT_NEEDED brightcyan
    keyword whole QA_EXECSTACK brightcyan
    keyword whole QA_FLAGS_IGNORED brightcyan
    keyword whole QA_MULTILIB_PATHS brightcyan
    keyword whole QA_PREBUILT brightcyan
    keyword whole QA_PRESTRIPPED brightcyan
    keyword whole QA_SONAME brightcyan
    keyword whole QA_TEXTRELS brightcyan
    keyword whole QA_WX_LOAD brightcyan
    keyword whole RDEPEND brightcyan
    keyword whole REQUIRED_USE 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 HTML_DOCS brightcyan
    keyword LINGUAS brightcyan

    keyword whole addpredict yellow
    keyword whole best_version yellow
    keyword whole built_with_use yellow
    keyword whole check_KV yellow
    keyword whole default yellow
    keyword whole die yellow
    keyword whole diropts yellow
    keyword whole dobin yellow
    keyword whole docinto yellow
    keyword whole docompress 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 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 dosbin yellow
    keyword whole dosed yellow
    keyword whole dosym yellow
    keyword whole eapply yellow
    keyword whole eapply_user 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 einstalldocs yellow
    keyword whole elog yellow
    keyword whole emake yellow
    keyword whole epatch yellow
    keyword whole epatch_user 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 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 pax-mark 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 usev yellow
    keyword whole usex yellow
    keyword whole use_enable yellow
    keyword whole use_with yellow
    #autotools
    keyword whole _elibtoolize yellow
    keyword whole eaclocal yellow
    keyword whole eautoconf yellow
    keyword whole eautopoint yellow
    keyword whole eautoreconf yellow
    keyword whole eautomake yellow
    #bashcomp
    keyword whole bashcomp_alias yellow
    keyword whole dobashcomp yellow
    keyword whole newbashcomp yellow
    #cvs
    keyword whole cvs_src_unpack yellow
    #darcs
    keyword whole darcs_src_unpack yellow
    #default
    keyword whole default_src_unpack yellow
    #desktop
    keyword whole doicon yellow
    keyword whole domenu yellow
    keyword whole make_desktop_entry yellow
    keyword whole make_session_desktop yellow
    keyword whole newicon yellow
    keyword whole newmenu 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-cflags yellow
    keyword whole append-cxxflags yellow
    keyword whole append-flags yellow
    keyword whole append-ldflags yellow
    keyword whole append-lfs-flags yellow
    keyword whole filter-flags yellow
    keyword whole replace-flags yellow
    keyword whole strip-flags yellow
    keyword whole strip-unsupported-flags yellow
    #git-r3
    keyword whole git-r3_checkout yellow
    keyword whole git-r3_fetch yellow
    keyword whole git-r3_src_unpack yellow
    #java-ant-2
    keyword whole EANT_BUILD_TARGET yellow
    #kernel-2
    keyword whole kernel-2_src_unpack yellow
    keyword whole kernel_is yellow
    #libtool
    keyword whole elibtoolize yellow
    #mercurial
    keyword whole mercurial_src_unpack yellow
    #mozilla
    keyword whole mozconfig_annotate yellow
    keyword whole mozconfig_config yellow
    keyword whole mozconfig_final yellow
    keyword whole mozconfig_init yellow
    keyword whole mozconfig_install_prefs yellow
    keyword whole mozconfig_use_enable yellow
    keyword whole mozconfig_use_with yellow
    keyword whole moz_pkg_setup yellow
    #multilib
    keyword whole multilib_copy_sources yellow
    keyword whole multilib_env yellow
    keyword whole multilib_foreach_abi yellow
    keyword whole multilib_is_native_abi yellow
    keyword whole multilib_layout yellow
    keyword whole multilib_parallel_foreach_abi yellow
    keyword whole multilib_toolchain_setup yellow
    #ninja-utils
    keyword whole eninja yellow
    #pam
    keyword whole cleanpamd yellow
    keyword whole dopamd yellow
    keyword whole dopammod yellow
    keyword whole dopamsecurity yellow
    keyword whole newpamd yellow
    keyword whole newpammod yellow
    keyword whole newpamsecurity yellow
    keyword whole pamd_mimic yellow
    keyword whole pamd_mimic_system yellow
    #prefix
    keyword whole eprefixify yellow
    #preserve-libs
    keyword whole preserve_old_lib yellow
    keyword whole preserve_old_lib_notify yellow
    #python
    keyword whole python_copy_sources yellow
    keyword whole python_do yellow
    keyword whole python_doexe yellow
    keyword whole python_doheader yellow
    keyword whole python_domodule yellow
    keyword whole python_doscript yellow
    keyword whole python_export yellow
    keyword whole python_export_best yellow
    keyword whole python_fix_shebang yellow
    keyword whole python_foreach_impl yellow
    keyword whole python_is_python3 yellow
    keyword whole python_moduleinto yellow
    keyword whole python_newexe yellow
    keyword whole python_newscript yellow
    keyword whole python_optimize yellow
    keyword whole python_replicate_script yellow
    keyword whole python_scriptinto yellow
    keyword whole python_setup yellow
    #rpm
    keyword whole rpm_src_unpack yellow
    keyword whole rpm_unpack yellow
    #svn
    keyword whole subversion_src_unpack yellow
    #systemd
    keyword whole systemd_dotmpfilesd yellow
    keyword whole systemd_dounit yellow
    keyword whole systemd_douserunit yellow
    keyword whole systemd_enable_ntpunit yellow
    keyword whole systemd_install_serviced yellow
    keyword whole systemd_logger yellow
    keyword whole systemd_newtmpfilesd yellow
    keyword whole systemd_newunit yellow
    keyword whole systemd_reenable yellow
    keyword whole systemd_update_catalog yellow
    #toolchain-funcs
    keyword whole gen_usr_ldscript yellow
    keyword whole tc-check-openmp yellow
    keyword whole tc-enables-pie yellow
    keyword whole tc-export yellow
    keyword whole tc-export_build_env yellow
    keyword whole tc-has-openmp yellow
    keyword whole tc-has-tls yellow
    keyword whole tc-is-clang yellow
    keyword whole tc-is-cross-compiler yellow
    keyword whole tc-is-gcc yellow
    keyword whole tc-is-static-only yellow
    keyword whole tc-ld-disable-gold yellow
    #toolchain
    keyword whole toolchain_src_unpack yellow
    #unpacker
    keyword whole unpacker_src_unpack yellow
    #virtualx
    keyword whole virtx yellow
    #xdg
    keyword whole xdg_desktop_database_update yellow
    keyword whole xdg_environment_reset yellow
    keyword whole xdg_icon_cache_update yellow
    keyword whole xdg_mimeinfo_database_update yellow

    #bashism (builtin extended 'test')
    keyword whole [[ brightcyan
    keyword whole ]] brightcyan

    #common Makefile variables
    keyword whole AR cyan
    keyword whole AS cyan
    keyword whole BINDIR cyan
    keyword whole CC cyan
    keyword whole CFLAGS cyan
    keyword whole CPPFLAGS cyan
    keyword whole CXX cyan
    keyword whole CXXFLAGS cyan
    keyword whole DESTDIR cyan
    keyword whole DOCDIR cyan
    keyword whole LD cyan
    keyword whole LDFLAGS cyan
    keyword whole LIBDIR cyan
    keyword whole MANDIR cyan
    keyword whole NM cyan
    keyword whole OBJCOPY cyan
    keyword whole PKG_CONFIG cyan
    keyword whole PREFIX cyan
    keyword whole RANLIB cyan
    keyword whole SBINDIR cyan
    keyword whole SHELL cyan
    keyword whole STRIP cyan
    keyword whole SYSCONFDIR cyan
    keyword whole YACC cyan

####################
# 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 local 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 printf cyan
    keyword whole pushd cyan
    keyword whole rm cyan
    keyword whole rmdir cyan
    keyword whole sed cyan
    keyword whole sh cyan
    keyword whole shopt 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
