[gtksourceview] Add Modelica language spec, based on the one from Kate.
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] Add Modelica language spec, based on the one from Kate.
- Date: Fri, 15 Feb 2013 13:41:26 +0000 (UTC)
commit 0f6523a08ed8d76482a6709d0ed9b1bc9b8d7eb1
Author: Jorn Baayen <jorn baayen baayen-heinz com>
Date: Wed Nov 7 14:19:32 2012 +0100
Add Modelica language spec, based on the one from Kate.
data/language-specs/Makefile.am | 1 +
data/language-specs/modelica.lang | 262 +++++++++++++++++++++++++++++++++++++
po/POTFILES.in | 1 +
tests/test-languagemanager.c | 6 +
4 files changed, 270 insertions(+), 0 deletions(-)
---
diff --git a/data/language-specs/Makefile.am b/data/language-specs/Makefile.am
index e8d0209..2cdf103 100644
--- a/data/language-specs/Makefile.am
+++ b/data/language-specs/Makefile.am
@@ -61,6 +61,7 @@ LANGUAGES = \
mallard.lang \
markdown.lang \
matlab.lang \
+ modelica.lang \
mxml.lang \
nemerle.lang \
netrexx.lang \
diff --git a/data/language-specs/modelica.lang b/data/language-specs/modelica.lang
new file mode 100644
index 0000000..d8682a8
--- /dev/null
+++ b/data/language-specs/modelica.lang
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ This file is part of GtkSourceView
+
+ Authors: Jorn Baayen
+ Copyright (C) 2012 Jorn Baayen <jorn baayen moct7 com>
+
+ Based on modelica.xml from Kate, Copyright (C) 2008 Federico Zenith.
+
+ GtkSourceView is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ GtkSourceView is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+-->
+<language id="modelica" _name="Modelica" version="2.0" _section="Scientific">
+ <metadata>
+ <property name="mimetypes">text/x-modelica</property>
+ <property name="globs">*.mo;*.mop</property>
+ <property name="line-comment-start">//</property>
+ <property name="block-comment-start">/*</property>
+ <property name="block-comment-end">*/</property>
+ </metadata>
+
+ <styles>
+ <style id="comment" _name="Comment" map-to="def:comment"/>
+ <style id="string" _name="String" map-to="def:string"/>
+ <style id="operator" _name="Operator" map-to="def:operator"/>
+ <style id="class-type" _name="Class type" map-to="def:type"/>
+ <style id="data-type" _name="Data type" map-to="def:type"/>
+ <style id="default-attribute" _name="Default Attribute" map-to="def:identifier"/>
+ <style id="boolean" _name="Boolean" map-to="def:boolean"/>
+ <style id="decimal" _name="Decimal" map-to="def:decimal"/>
+ <style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
+ <style id="base-n-integer" _name="Base-N Integer" map-to="def:base-n-integer"/>
+ <style id="keyword" _name="Keyword" map-to="def:keyword"/>
+ <style id="builtin" _name="Builtin" map-to="def:builtin"/>
+ </styles>
+
+ <definitions>
+
+ <context id="double-quoted-string" style-ref="string" end-at-line-end="false" class="string"
class-disabled="no-spell-check">
+ <start>"</start>
+ <end>"</end>
+ </context>
+
+ <!--To see the list of operators, use the function __operators__-->
+ <context id="operator" style-ref="operator">
+ <match extended="true">
+ (\.)?\+{1,2}?(?!\+) | # arithmetic operators
+ (\.)?\-{1,2}?(?!\-) | # already counting
+ (\.)?\*{1,2}?(?!\*) | # with auto increment,
+ (\.)?\/(?!\^) | # element by element,
+ (\.)?\\(?!\^) | # left division
+ (\.)?\^(?!\^) | # and both exp
+ (?<=[0-9a-zA-Z_)\]}])(\.)?' | # transpose operator
+ <=? | >=? | != | ~= | == | <> | # comparison operators
+ &{1,2}?(?!&) | \|{1,2}?(?!\|) | ! | ~ | # boolean operators
+ = | # assignment operator
+ : | # range operator
+ </match>
+ </context>
+
+ <context id="class-type" style-ref="class-type">
+ <keyword>class</keyword>
+ <keyword>block</keyword>
+ <keyword>connector</keyword>
+ <keyword>function</keyword>
+ <keyword>model</keyword>
+ <keyword>package</keyword>
+ <keyword>record</keyword>
+ <keyword>type</keyword>
+ </context>
+
+ <context id="data-type" style-ref="data-type">
+ <keyword>Boolean</keyword>
+ <keyword>enumeration</keyword>
+ <keyword>ExternalObject</keyword>
+ <keyword>Integer</keyword>
+ <keyword>Real</keyword>
+ <keyword>StateSelect</keyword>
+ <keyword>String</keyword>
+ </context>
+
+ <context id="default-attribute" style-ref="default-attribute">
+ <keyword>display</keyword>
+ <keyword>fixed</keyword>
+ <keyword>max</keyword>
+ <keyword>min</keyword>
+ <keyword>nominal</keyword>
+ <keyword>quantity</keyword>
+ <keyword>start</keyword>
+ <keyword>stateSelect</keyword>
+ <keyword>unit</keyword>
+ <keyword>value</keyword>
+ </context>
+
+ <context id="boolean" style-ref="boolean">
+ <!-- falase and true can be used as functions too. Do not highlight as
+ boolean if followed by parentheses -->
+ <suffix>\b(?!(\s)*\()</suffix>
+ <keyword>false</keyword>
+ <keyword>true</keyword>
+ </context>
+
+ <context id="decimal" style-ref="decimal">
+ <match>\b([1-9][0-9]*|0)([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b</match>
+ </context>
+
+ <context id="floating-point-number" style-ref="floating-point">
+ <match>\b([0-9]+[Ee][-]?[0-9]+|([0-9]*\.[0-9]+|[0-9]+\.)([Ee][-]?[0-9]+)?)[fFlL]?</match>
+ </context>
+
+ <!--To see the list of keywords, use the function __keywords__-->
+ <context id="keyword" style-ref="keyword">
+ <keyword>algorithm</keyword>
+ <keyword>and</keyword>
+ <keyword>annotation</keyword>
+ <keyword>assert</keyword>
+ <keyword>break</keyword>
+ <keyword>connect</keyword>
+ <keyword>constant</keyword>
+ <keyword>constrainedby</keyword>
+ <keyword>discrete</keyword>
+ <keyword>else</keyword>
+ <keyword>elseif</keyword>
+ <keyword>elsewhen</keyword>
+ <keyword>encapsulated</keyword>
+ <keyword>end</keyword>
+ <keyword>equation</keyword>
+ <keyword>expandable</keyword>
+ <keyword>extends</keyword>
+ <keyword>external</keyword>
+ <keyword>false</keyword>
+ <keyword>final</keyword>
+ <keyword>flow</keyword>
+ <keyword>for</keyword>
+ <keyword>if</keyword>
+ <keyword>import</keyword>
+ <keyword>in</keyword>
+ <keyword>inner</keyword>
+ <keyword>input</keyword>
+ <keyword>loop</keyword>
+ <keyword>not</keyword>
+ <keyword>or</keyword>
+ <keyword>outer</keyword>
+ <keyword>output</keyword>
+ <keyword>parameter</keyword>
+ <keyword>partial</keyword>
+ <keyword>protected</keyword>
+ <keyword>public</keyword>
+ <keyword>redeclare</keyword>
+ <keyword>replaceable</keyword>
+ <keyword>return</keyword>
+ <keyword>then</keyword>
+ <keyword>true</keyword>
+ <keyword>when</keyword>
+ <keyword>while</keyword>
+ <keyword>within</keyword>
+ </context>
+
+ <context id="builtin" style-ref="builtin">
+ <!-- NOTE this is more like a built-in variable, but as it changes
+ its value during the simulation it is more like a function
+ without the (), and has therefore been placed here.-->
+ <keyword>time</keyword>
+
+ <keyword>abs</keyword>
+ <keyword>ceil</keyword>
+ <keyword>div</keyword>
+ <keyword>floor</keyword>
+ <keyword>integer</keyword>
+ <keyword>mod</keyword>
+ <keyword>rem</keyword>
+ <keyword>sign</keyword>
+ <keyword>sqrt</keyword>
+
+ <keyword>sin</keyword>
+ <keyword>cos</keyword>
+ <keyword>tan</keyword>
+ <keyword>asin</keyword>
+ <keyword>acos</keyword>
+ <keyword>atan</keyword>
+ <keyword>atan2</keyword>
+ <keyword>sinh</keyword>
+ <keyword>cosh</keyword>
+ <keyword>tanh</keyword>
+ <keyword>exp</keyword>
+ <keyword>log</keyword>
+ <keyword>log10</keyword>
+
+ <keyword>analysisType</keyword>
+ <keyword>cardinality</keyword> <!-- NOTE deprecated in 3.0. -->
+ <keyword>change</keyword>
+ <keyword>delay</keyword>
+ <keyword>der</keyword>
+ <keyword>direction</keyword>
+ <keyword>edge</keyword>
+ <keyword>initial</keyword>
+ <keyword>isPresent</keyword>
+ <keyword>noEvent</keyword>
+ <keyword>pre</keyword>
+ <keyword>reinit</keyword>
+ <keyword>sample</keyword>
+ <keyword>semiLinear</keyword>
+ <keyword>smooth</keyword>
+ <keyword>terminal</keyword>
+ <keyword>terminate</keyword>
+
+ <keyword>ndims</keyword>
+ <keyword>size</keyword>
+ <keyword>scalar</keyword>
+ <keyword>vector</keyword>
+ <keyword>matrix</keyword>
+ <keyword>array</keyword>
+ <keyword>zeros</keyword>
+ <keyword>ones</keyword>
+ <keyword>fill</keyword>
+ <keyword>identity</keyword>
+ <keyword>diagonal</keyword>
+ <keyword>linspace</keyword>
+ <keyword>min</keyword>
+ <keyword>max</keyword>
+ <keyword>sum</keyword>
+ <keyword>product</keyword>
+ <keyword>transpose</keyword>
+ <keyword>outerProduct</keyword>
+ <keyword>symmetric</keyword>
+ <keyword>cross</keyword>
+ <keyword>skew</keyword>
+ <keyword>cat</keyword>
+ </context>
+
+ <context id="modelica" class="no-spell-check">
+ <include>
+ <context ref="def:c-like-comment"/>
+ <context ref="def:c-like-comment-multiline"/>
+ <context ref="def:c-like-close-comment-outside-comment"/>
+ <context ref="double-quoted-string"/>
+ <context ref="operator"/>
+ <context ref="class-type"/>
+ <context ref="data-type"/>
+ <context ref="default-attribute"/>
+ <context ref="boolean"/>
+ <context ref="decimal"/>
+ <context ref="floating-point-number"/>
+ <context ref="keyword"/>
+ <context ref="builtin"/>
+ </include>
+ </context>
+ </definitions>
+</language>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 68cee4d..8273b73 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -59,6 +59,7 @@ data/language-specs/makefile.lang
data/language-specs/mallard.lang
data/language-specs/markdown.lang
data/language-specs/matlab.lang
+data/language-specs/modelica.lang
data/language-specs/mxml.lang
data/language-specs/nemerle.lang
data/language-specs/netrexx.lang
diff --git a/tests/test-languagemanager.c b/tests/test-languagemanager.c
index 8dc1acc..01a3b49 100644
--- a/tests/test-languagemanager.c
+++ b/tests/test-languagemanager.c
@@ -96,6 +96,12 @@ test_guess_language (void)
l = gtk_source_language_manager_guess_language (lm, "foo.c", "text/x-csrc");
g_assert_cmpstr (gtk_source_language_get_id (l), ==, "c");
+
+ l = gtk_source_language_manager_guess_language (lm, "foo.mo", "text/x-modelica");
+ g_assert_cmpstr (gtk_source_language_get_id (l), ==, "modelica");
+
+ l = gtk_source_language_manager_guess_language (lm, "foo.mo", "");
+ g_assert_cmpstr (gtk_source_language_get_id (l), ==, "modelica");
/* when in disagreement, glob wins */
l = gtk_source_language_manager_guess_language (lm, "foo.c", "text/x-fortran");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]