## Syntax highlighting for Gentoo ebuilds/eclasses, ## and (further down) for Portage control files. syntax ebuild "\.e(build|class)$" comment "#" linter bash -n ## All the standard portage functions: color brightgreen "(^|\" color brightgreen "^pkg_(config|nofetch|info|pretend|setup|(pre|post)(inst|rm))\>" color brightgreen "\" ## Bash-related syntax: color green "\<(break|case|continue|do|done|elif|else|esac|exit|fi|for|function|if|in|read|return|select|shift|then|time|until|while)\>" color green "\<(declare|eval|exec|export|let|local)\>" color green "[][{}():;|`$<>!=&\]" color green "-[defhnrsuwxzL]\>" color green "-(eq|ne|gt|lt|ge|le|ef|ot|nt)\>" ## Variables... official portage ones in red, all others in bright red: color brightred "\$[-0-9@*#?$!]" "\$[[:alpha:]_][[:alnum:]_]*" color brightred "\$\{[#!]?([-@*#?$!]|[0-9]+|[[:alpha:]_][[:alnum:]_]*)(\[([[:digit:]]|@)+\])?(([#%/]|:?[-=?+])[^}]*\}|\[|\})" color red "\<(EAPI|ARCH|HOMEPAGE|DESCRIPTION|IUSE|SRC_URI|LICENSE|SLOT|KEYWORDS|[BIPR]?DEPEND|PROVIDE|PROPERTIES|REQUIRED_USE|RESTRICT)\>" color red "\<(S|E?D|T|PV|PF|P|PN|PR|PVR|A|CATEGORY|DISTDIR|FILESDIR|EPREFIX|(B|E|E?SYS)?ROOT|WORKDIR)\>" color red "\<(T|TMPDIR|HOME)\>" color red "\<(AS|C(PP|XX)?|FF|GO|LD|RUST)FLAGS\>" "\" "\<(MERGE_TYPE|REPLACING_VERSIONS|REPLACED_BY_VERSION)\>" color red "\" color red "\" color red "\<(PATCHES|(HTML_)?DOCS)\>" "\" "\" "\" "\" color red "\" ## Portage commands: color magenta "\<(use(_(with|enable|if_iuse)|x|v)?|in_iuse) [!a-zA-Z0-9_+ -]*" "inherit.*" color brightblue "\" color brightblue "\" "\" color brightblue "\" "\" "\" "\" color brightblue "\" "\" color brightblue "\<(assert|die|hasv?|inherit|nonfatal)\>" "\<(use(_(with|enable|if_iuse)|x|v)?|in_iuse)\>" "\<(has|best)_version\>" color brightblue "\<(do|new)(ins|s?bin|doc|header|lib(\.so|\.a)?|man|info|exe|initd|confd|envd|pam|menu|icon)\>" color brightblue "\" "\" color brightblue "\" "\" color brightblue "\<(doc|ins|exe)?into\>" "\" "\<(exe|ins|dir)opts\>" color brightblue "\" ### common eclasses color brightblue "\" ### flag-o-matic.eclass, toolchain-funcs.eclass color brightblue "\<(all-flag-vars)\>" color brightblue "\<(filter-(flags|lfs-flags|lto|mfpmath))\>" color brightblue "\" color brightblue "\" color brightblue "\" "\" color brightblue "\" color brightblue "\<(append-atomic-flags|no-as-needed|raw-ldflags|append-libs|replace-sparc64-flags|get-flag|strip-unsupported-flags)\>" color brightblue "\" color brightblue "\" color brightblue "\" color brightblue "\" color brightblue "\" color brightblue "\<(clang|gcc)-(fullversion|(major-|minor|micro-)version)\>" ### debugging color brightblue "\" ## Common commands used in ebuilds: color blue "\<(awk|cat|cd|chmod|chown|cp|echo|env|find|e?grep|ln|make|mkdir|mv|popd|printf|pushd|rm|rmdir|sed|set|tar|touch|unset|xargs)\>" ## Comments (doesn't work that well): color yellow "(^|[[:space:]])#.*" ## Strings (doesn't work that well): color brightyellow ""([^"\]|\\.)*"|'([^'\]|\\.)*'" ## Trailing space is bad! color ,green "[[:space:]]+$" ## Mixed whitespace is also bad. color ,green " " syntax /etc/portage "\.(accept_keywords|env|keywords|mask|unmask|use)(/.+)?$" comment "#" ## Base text: color green ".+" ## Likely version and slot numbers: color magenta "-[[:digit:].]+(_(alpha|beta|pre|rc|p)[[:digit:]]*)*(-r[[:digit:]]+)?([:[:space:]]|$)" color magenta ":[^[:space:]]+([[:space:]]|$)" ## Use flags (must come after version/slot): color brightred "[[:space:]]+\+?[A-Za-z0-9+_@-]+" color brightblue "[[:space:]]+-[A-Za-z0-9+_@-]+" ## Accepted arches: color white "[~-]?\<(alpha|amd64|arm(64)?|hppa|ia64|loong|m68k|mips|ppc(64)?|riscv|s390|sparc|x86)(-(linux|macos|solaris))?\>" color white "[[:space:]][*~-]?\*" ## Categories: color cyan "^[[:space:]]*[^/]*/" ## Masking regulators: color brightmagenta "^[[:space:]]*(=|~|<|<=|>|>=)" ## Comments: color yellow "#.*" ## Trailing space is bad! color ,green "[[:space:]]+$" ## Mixed whitespace is also bad. color ,green " "