summaryrefslogtreecommitdiff
path: root/ebuild.lang
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ebuild.lang113
1 files changed, 113 insertions, 0 deletions
diff --git a/ebuild.lang b/ebuild.lang
new file mode 100644
index 0000000..d01eb3c
--- /dev/null
+++ b/ebuild.lang
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ GtkSourceView syntax highlight for Gentoo-specific files
+
+ Originally written for gtksourceview-1.x by:
+ Leonardo Ferreira Fontenelle <leo.fontenelle@gmail.com>, 2006.
+ Rewritten for gtksourceview-2 by:
+ Rene 'Necoro' Neumann <necoro@necoro.net>, 2007
+
+ Distributed under the same license(s) as gtksourceview.
+
+ TODO:
+ - do not highlight "enable" in the configure options
+ - perhaps highlight portage variables and portage functions different
+
+-->
+
+<language name="ebuild" id="ebuild" version="2.0" _section="Scripts">
+ <metadata>
+ <property name="mimetypes">text/plain</property>
+ <property name="globs">*.ebuild;*.eclass</property>
+ <property name="line-comment-start">#</property>
+ </metadata>
+
+ <styles>
+ <style id="variable" _name="Portage variables" map-to="def:builtin" />
+ <style id="command" _name="Portage command" map-to="def:type" />
+ <style id="function" _name="Portage function" map-to="def:function" />
+ </styles>
+
+ <definitions>
+
+ <!-- rewrite shell string to show highlighted variables -->
+ <context id="string" style-ref="def:string">
+ <start>"</start>
+ <end>"</end>
+ <include>
+ <context ref="def:escape"/>
+ <context ref="def:line-continue"/>
+ <context ref="sh:variable1"/>
+ </include>
+ </context>
+
+ <context id="string-2" style-ref="def:string">
+ <start>'</start>
+ <end>'</end>
+ <include>
+ <context ref="def:escape"/>
+ <context ref="def:line-continue"/>
+ <context ref="sh:variable1"/>
+ </include>
+ </context>
+
+ <!-- subprograms:
+ - $(..) is not supported currently in the normal sh.lang
+ - `...` is interpreted as string - I think the subshell behavior is more acurate -->
+ <context id="subprogram">
+ <start>\$\(</start>
+ <end>\)</end>
+ <include>
+ <context sub-pattern="0" where="start" style-ref="sh:keyword"/>
+ <context sub-pattern="0" where="end" style-ref="sh:keyword"/>
+ <context ref="ebuild"/>
+ </include>
+ </context>
+
+ <context id="subprogram-2">
+ <start>`</start>
+ <end>`</end>
+ <include>
+ <context sub-pattern="0" where="start" style-ref="sh:keyword"/>
+ <context sub-pattern="0" where="end" style-ref="sh:keyword"/>
+ <context ref="ebuild"/>
+ </include>
+ </context>
+
+ <!-- portage variables - currently unused -->
+ <context id="portvars" style-ref="variable">
+ <match>\b((ARCH|HOMEPAGE|DESCRIPTION|IUSE|SRC_URI|LICENSE|SLOT|KEYWORDS|FILESDIR|WORKDIR|(P|R)?DEPEND|PROVIDE|DISTDIR|RESTRICT|USERLAND)|(S|D|T|PV|PF|P|PN|A)|C(XX)?FLAGS|LDFLAGS|C(HOST|TARGET|BUILD))\b</match>
+ </context>
+
+ <!-- portage functions - currently unused -->
+ <context id="portfuncs" style-ref="function">
+ <match>^(src_(unpack|compile|install|test)|pkg_(config|nofetch|setup|(pre|post)(inst|rm)))</match>
+ </context>
+
+ <!-- extra portage commands -->
+ <context id="portcmds" style-ref="command">
+ <match>\b(e(begin|end|conf|install|make|warn|infon?|error|patch)|die|use(_(with|enable))?|inherit|has|(has|best)_version|unpack|(do|new)(ins|s?bin|doc|lib(|\.so|\.a)|man|info|exe|initd|confd|envd|pam|menu|icon)|do(python|sed|dir|hard|sym|html|jar|mo)|keepdir|prepall(|docs|info|man|strip)|prep(info|lib|lib\.(so|a)|man|strip)|(|doc|ins|exe)into|f(owners|perms)|(exe|ins|dir)opts)\b</match>
+ </context>
+
+ <context id="built-in-command">
+ <include> <!-- do not include "sh:built-in-command" as it is replaced down there - which would lead to an endless loop -->
+ <context ref="sh:built-in-command-1" />
+ <context ref="sh:built-in-command-2" />
+ <context ref="portcmds" />
+ </include>
+ </context>
+
+ <!-- ebuild is just a shell with the replacements -->
+ <replace id="sh:string" ref="string" />
+ <replace id="sh:string-2" ref="string-2" />
+ <replace id="sh:built-in-command" ref="built-in-command" />
+ <replace id="sh:backtick-string" ref="subprogram-2" />
+ <context id="ebuild">
+ <include>
+ <context ref="subprogram"/>
+ <context ref="sh:sh"/>
+ </include>
+ </context>
+ </definitions>
+</language>