[gtksourceview] Vala syntax highlighting plugin updated
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] Vala syntax highlighting plugin updated
- Date: Mon, 25 Apr 2011 17:39:22 +0000 (UTC)
commit c4cefd24310f8712563268d51d98bdd879170fc3
Author: Marco Trevisan (Treviño) <mail 3v1n0 net>
Date: Sun Mar 13 21:34:38 2011 +0100
Vala syntax highlighting plugin updated
* Added extension support to *.vapi files
* Support for verbatim strings (triple quoted strings)
* Dropped standard string support since Vala supports multiline
strings by default
* Support for string templates highlighting
Each string starting with @" is now parsed for variable references
(using the $ prefix) or for expressions (using the $(expr) container)
* Dropped support for strings with single quote (they are char's!)
* Support for directives (#if, #else, #elif, #endif)
* Support for #if 0, #if false comments
* Support for @identifiers: they aren't highlighted now
* Added async modifier keyword
* Use void as a type
* Support for Vala attributes
* Support for types declaration highlighting
* Support for gtk-doc syntax in comments
* Fallback to c implementations for decimal, hexadecimal, float, octal
and char (before not supported)
data/language-specs/vala.lang | 206 ++++++++++++++++++++++++++++++++++-------
1 files changed, 172 insertions(+), 34 deletions(-)
---
diff --git a/data/language-specs/vala.lang b/data/language-specs/vala.lang
index 4462526..40b9b77 100644
--- a/data/language-specs/vala.lang
+++ b/data/language-specs/vala.lang
@@ -8,6 +8,7 @@
Copyright (C) 2004 Jeroen Zwartepoorte <jeroen xs4all nl>
Copyright (C) 2004 Alessio Frusciante <algol firenze linux it>
Copyright (C) 2005 Brion Vibber <brion pobox com>
+ Copyright (C) 2011 Marco Trevisan <mail 3v1n0 net>
GtkSourceView is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -27,7 +28,7 @@
<language id="vala" _name="Vala" version="2.0" _section="Sources">
<metadata>
<property name="mimetypes">text/x-vala</property>
- <property name="globs">*.vala</property>
+ <property name="globs">*.vala;*.vapi</property>
<property name="line-comment-start">//</property>
<property name="block-comment-start">/*</property>
<property name="block-comment-end">*/</property>
@@ -39,14 +40,17 @@
<style id="type" _name="Data Type" map-to="def:type"/>
<style id="string" _name="String" map-to="def:string"/>
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
- <style id="null-value" _name="Null Value" map-to="def:special-constant"/>
<style id="boolean" _name="Boolean value" map-to="def:boolean"/>
- <style id="decimal" _name="Decimal number" map-to="def:decimal"/>
- <style id="hexadecimal" _name="Hexadecimal number" map-to="def:base-n-integer"/>
- <style id="real" _name="Real number" map-to="def:floating-point"/>
+ <style id="null-value" _name="Null Value" map-to="def:special-constant"/>
+ <style id="directive" name="Directives" map-to="def:preprocessor"/>
+ <style id="attributes" name="Vala Attributes" map-to="def:function"/>
+ <style id="string-template" name="Vala String template" map-to="def:function"/>
</styles>
<definitions>
+ <define-regex id="preproc-start">^\s*#\s*</define-regex>
+ <define-regex id="identifier">[_a-zA-Z][_a-zA-Z0-9]*</define-regex>
+ <define-regex id="type_name">[_a-zA-Z][_a-zA-Z0-9.]*</define-regex>
<context id="line-comment" style-ref="comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
<start>//</start>
@@ -67,15 +71,88 @@
<match>\*/(?!\*)</match>
</context>
+ <context id="multiline-double-quoted-string" class="string" style-ref="string" class-disabled="no-spell-check">
+ <start>"""</start>
+ <end>"""</end>
+ <include>
+ <context ref="c:printf"/>
+ <context ref="c:escaped-character"/>
+ <context ref="def:line-continue"/>
+ </include>
+ </context>
+
<context id="multiline-string" style-ref="string" class="string" class-disabled="no-spell-check">
- <start>@"([^"]|"")*</start>
+ <start>"</start>
+ <end>"</end>
+ <include>
+ <context ref="c:printf"/>
+ <context ref="c:escaped-character"/>
+ <context ref="def:line-continue"/>
+ </include>
+ </context>
+
+ <context id="multiline-string-templates" style-ref="string" class="string" class-disabled="no-spell-check">
+ <start>@"</start>
<end>"</end>
<include>
- <context ref="def:escape"/>
+ <context ref="c:printf"/>
+ <context ref="c:escaped-character"/>
<context ref="def:line-continue"/>
+ <context id="string-templates" style-ref="string-template">
+ <match>\$\%{identifier}</match>
+ </context>
+ <context id="string-templates-brackets" style-ref="string-template">
+ <start>\$\(</start>
+ <end>\)</end>
+ <include>
+ <context id="in-string-templates-brackets">
+ <include>
+ <context>
+ <start>\(</start>
+ <end>\)</end>
+ <include>
+ <context ref="in-string-templates-brackets"/>
+ </include>
+ </context>
+ </include>
+ </context>
+ </include>
+ </context>
</include>
</context>
+ <context id="if0-comment" style-ref="comment">
+ <start>\%{preproc-start}if\b\s*(0|false|\!true|\!1)\b</start>
+ <end>(\%{preproc-start}endif)|(\%{preproc-start}(else|elif).*)\b</end>
+ <include>
+ <context sub-pattern="2" where="end" style-ref="directive"/>
+ <context id="if-in-if0">
+ <start>\%{preproc-start}if\b</start>
+ <end>\%{preproc-start}endif\b</end>
+ <include>
+ <context ref="if-in-if0"/>
+ <context ref="def:in-comment"/>
+ </include>
+ </context>
+ <context ref="def:in-comment"/>
+ </include>
+ </context>
+
+ <context id="directive" style-ref="directive" end-at-line-end="true">
+ <start extended="true">
+ \%{preproc-start}
+ (if|else|elif|endif)
+ \b
+ </start>
+ <include>
+ <context ref="boolean"/>
+ </include>
+ </context>
+
+ <context id="at-identifier">
+ <match>@\%{identifier}</match>
+ </context>
+
<context id="keywords" style-ref="keyword">
<keyword>class</keyword>
<keyword>delegate</keyword>
@@ -88,6 +165,7 @@
<keyword>using</keyword>
<!-- modifiers -->
<keyword>abstract</keyword>
+ <keyword>async</keyword>
<keyword>const</keyword>
<keyword>dynamic</keyword>
<keyword>extern</keyword>
@@ -127,6 +205,7 @@
<keyword>is</keyword>
<keyword>lock</keyword>
<keyword>new</keyword>
+ <keyword>params</keyword>
<keyword>requires</keyword>
<keyword>return</keyword>
<keyword>set</keyword>
@@ -139,7 +218,6 @@
<keyword>typeof</keyword>
<keyword>value</keyword>
<keyword>var</keyword>
- <keyword>void</keyword>
<keyword>while</keyword>
<keyword>yield</keyword>
<keyword>yields</keyword>
@@ -169,6 +247,51 @@
<keyword>ulong</keyword>
<keyword>unichar</keyword>
<keyword>ushort</keyword>
+ <keyword>void</keyword>
+ </context>
+
+ <define-regex id="attributes-names" extended="true">
+ Assert|
+ CCode|
+ SimpleType|
+ BooleanType|
+ IntegerType|
+ FloatingType|
+ Signal|
+ Deprecated|
+ Description|
+ DBus|
+ Compact|
+ Diagnostics|
+ ErrorBase|
+ Flags|
+ GIR|
+ HasEmitter|
+ Immutable|
+ ModuleInit|
+ NoAccessorMethod|
+ NoArrayLength|
+ NoReturn|
+ NoThrow|
+ NoWrapper|
+ PointerType|
+ Print|
+ PrintfFormat|
+ ReturnsModifiedPointer|
+ ScanfFormat|
+ ThreadLocal
+ </define-regex>
+
+ <context id="attributes" style-ref="attributes">
+ <start>\[\s*(\%{attributes-names})</start>
+ <end>\]</end>
+ <include>
+ <context sub-pattern="1" where="start" style-ref="type"/>
+ <context ref="boolean"/>
+ <context ref="multiline-string"/>
+ <context ref="c:float"/>
+ <context ref="c:decimal"/>
+ </include>
</context>
<context id="null-value" style-ref="null-value">
@@ -180,47 +303,62 @@
<keyword>true</keyword>
</context>
- <context id="decimal" style-ref="decimal">
- <match extended="true">
- (?<![\w\.])
- [0-9]+[uUlL]*
- (?![\w\.])
- </match>
- </context>
+ <define-regex id="type-prefixes" extended="true">
+ class|
+ delegate|
+ enum|
+ errordomain|
+ interface|
+ namespace|
+ struct
+ </define-regex>
- <context id="hexadecimal" style-ref="hexadecimal">
- <match extended="true">
- (?<![\w\.])
- 0[xX][a-fA-F0-9]+[uUlL]*
- (?![\w\.])
- </match>
+ <context id="type-declaration">
+ <start>(\%{type-prefixes})\s+(\%{type_name})(\s*<[^>]>)?\s*(\s*:\s*(\%{type_name}))?</start>
+ <end>\s</end>
+ <include>
+ <context sub-pattern="1" where="start" style-ref="keyword"/>
+ <context sub-pattern="2" where="start" style-ref="type"/>
+ <context sub-pattern="5" where="start" style-ref="type"/>
+ <context ref="vala"/>
+ </include>
</context>
- <context id="real" style-ref="real">
- <match extended="true">
- (?<![\w\.])
- ((\.[0-9]+|[0-9]+\.[0-9]*)([Ee][+-]?[0-9]*)?[FfDdMm]?|
- ([0-9]+[Ee][+-]?[0-9]*)[FfDdMm]? |
- ([0-9]+)[FfDdMm])
- (?![\w\.])
- </match>
+<!-- Function support, disabled by default.
+ <context id="function">
+ <start>(\%{identifier})\s*\(</start>
+ <end>\)</end>
+ <include>
+ <context sub-pattern="1" where="start" style-ref="def:function"/>
+ <context ref="vala"/>
+ </include>
</context>
+-->
<context id="vala" class="no-spell-check">
<include>
- <context ref="def:string"/>
- <context ref="def:single-quoted-string"/>
+ <context ref="gtk-doc:inline-docs-section"/>
<context ref="line-comment"/>
<context ref="multiline-comment"/>
<context ref="close-comment-outside-comment"/>
+ <context ref="multiline-string-templates"/>
+ <context ref="multiline-double-quoted-string"/>
<context ref="multiline-string"/>
+ <context ref="at-identifier"/>
+ <context ref="type-declaration"/>
<context ref="keywords"/>
<context ref="primitives"/>
+ <context ref="attributes"/>
<context ref="null-value"/>
<context ref="boolean"/>
- <context ref="decimal"/>
- <context ref="hexadecimal"/>
- <context ref="real"/>
+ <context ref="c:char"/>
+ <context ref="c:decimal"/>
+ <context ref="c:hexadecimal"/>
+ <context ref="c:float"/>
+ <context ref="c:octal"/>
+ <context ref="if0-comment"/>
+ <context ref="directive"/>
+ <!-- <context ref="function"/> -->
</include>
</context>
</definitions>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]