Synced with upstream
parent
fb6fe1c916
commit
bdbcd9152e
|
@ -104,11 +104,32 @@ _gtk_source_language_new_from_file (const gchar *filename,
|
|||
}
|
||||
|
||||
if (lang != NULL)
|
||||
{
|
||||
lang->priv->language_manager = lm;
|
||||
g_object_add_weak_pointer (G_OBJECT (lm),
|
||||
(gpointer*) &lang->priv->language_manager);
|
||||
}
|
||||
|
||||
return lang;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_source_language_dispose (GObject *object)
|
||||
{
|
||||
GtkSourceLanguage *lang;
|
||||
|
||||
lang = GTK_SOURCE_LANGUAGE (object);
|
||||
|
||||
if (lang->priv->language_manager != NULL)
|
||||
{
|
||||
g_object_remove_weak_pointer (G_OBJECT (lang->priv->language_manager),
|
||||
(gpointer*) &lang->priv->language_manager);
|
||||
lang->priv->language_manager = NULL;
|
||||
}
|
||||
|
||||
G_OBJECT_CLASS (gtk_source_language_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_source_language_finalize (GObject *object)
|
||||
{
|
||||
|
@ -135,6 +156,7 @@ gtk_source_language_class_init (GtkSourceLanguageClass *klass)
|
|||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->dispose = gtk_source_language_dispose;
|
||||
object_class->finalize = gtk_source_language_finalize;
|
||||
|
||||
g_type_class_add_private (object_class, sizeof(GtkSourceLanguagePrivate));
|
||||
|
@ -534,23 +556,31 @@ _gtk_source_language_create_engine (GtkSourceLanguage *language)
|
|||
gboolean success = FALSE;
|
||||
GtkSourceContextData *ctx_data;
|
||||
|
||||
ctx_data = _gtk_source_context_data_new (language);
|
||||
|
||||
switch (language->priv->version)
|
||||
if (language->priv->language_manager == NULL)
|
||||
{
|
||||
case GTK_SOURCE_LANGUAGE_VERSION_1_0:
|
||||
success = _gtk_source_language_file_parse_version1 (language, ctx_data);
|
||||
break;
|
||||
|
||||
case GTK_SOURCE_LANGUAGE_VERSION_2_0:
|
||||
success = _gtk_source_language_file_parse_version2 (language, ctx_data);
|
||||
break;
|
||||
g_critical ("_gtk_source_language_create_engine() is called after "
|
||||
"language manager was finalized");
|
||||
}
|
||||
|
||||
if (!success)
|
||||
_gtk_source_context_data_unref (ctx_data);
|
||||
else
|
||||
language->priv->ctx_data = ctx_data;
|
||||
{
|
||||
ctx_data = _gtk_source_context_data_new (language);
|
||||
|
||||
switch (language->priv->version)
|
||||
{
|
||||
case GTK_SOURCE_LANGUAGE_VERSION_1_0:
|
||||
success = _gtk_source_language_file_parse_version1 (language, ctx_data);
|
||||
break;
|
||||
|
||||
case GTK_SOURCE_LANGUAGE_VERSION_2_0:
|
||||
success = _gtk_source_language_file_parse_version2 (language, ctx_data);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!success)
|
||||
_gtk_source_context_data_unref (ctx_data);
|
||||
else
|
||||
language->priv->ctx_data = ctx_data;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -138,7 +138,6 @@ gtk_source_language_manager_init (GtkSourceLanguageManager *lm)
|
|||
{
|
||||
lm->priv = G_TYPE_INSTANCE_GET_PRIVATE (lm, GTK_TYPE_SOURCE_LANGUAGE_MANAGER,
|
||||
GtkSourceLanguageManagerPrivate);
|
||||
lm->priv = g_new0 (GtkSourceLanguageManagerPrivate, 1);
|
||||
lm->priv->language_ids = NULL;
|
||||
lm->priv->available_languages = NULL;
|
||||
lm->priv->lang_dirs = NULL;
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "gtksourcestylescheme.h"
|
||||
#include "gtksourceview.h"
|
||||
#include "gtksourcelanguage-private.h"
|
||||
#include <gtk/gtk.h>
|
||||
#include <string.h>
|
||||
|
||||
#define STYLE_HAS_FOREGROUND(s) ((s) && ((s)->mask & GTK_SOURCE_STYLE_USE_FOREGROUND))
|
||||
|
@ -32,7 +33,9 @@
|
|||
#define STYLE_BRACKET_MATCH "bracket-match"
|
||||
#define STYLE_BRACKET_MISMATCH "bracket-mismatch"
|
||||
#define STYLE_CURSOR "cursor"
|
||||
#define STYLE_SECONDARY_CURSOR "secondary-cursor"
|
||||
#define STYLE_CURRENT_LINE "current-line"
|
||||
#define STYLE_LINE_NUMBERS "line-numbers"
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
|
@ -355,17 +358,101 @@ set_text_style (GtkWidget *widget,
|
|||
}
|
||||
|
||||
static void
|
||||
set_cursor_color (GtkWidget *widget,
|
||||
GtkSourceStyle *style)
|
||||
set_line_numbers_style (GtkWidget *widget,
|
||||
GtkSourceStyle *style)
|
||||
{
|
||||
GdkColor *color;
|
||||
gint i;
|
||||
GdkColor *fg = NULL;
|
||||
GdkColor *bg = NULL;
|
||||
|
||||
if (style != NULL && STYLE_HAS_FOREGROUND (style))
|
||||
color = &style->foreground;
|
||||
else
|
||||
color = &widget->style->text[GTK_STATE_NORMAL];
|
||||
fg = &style->foreground;
|
||||
if (style != NULL && STYLE_HAS_BACKGROUND (style))
|
||||
bg = &style->background;
|
||||
|
||||
g_print ("implement me\n");
|
||||
for (i = 0; i < 5; ++i)
|
||||
{
|
||||
gtk_widget_modify_fg (widget, i, fg);
|
||||
gtk_widget_modify_bg (widget, i, bg);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
set_cursor_colors (GtkWidget *widget,
|
||||
const GdkColor *primary,
|
||||
const GdkColor *secondary)
|
||||
{
|
||||
#if !GTK_CHECK_VERSION(2,11,3)
|
||||
char *rc_string;
|
||||
char *widget_name;
|
||||
|
||||
widget_name = g_strdup_printf ("gtk-source-view-%p", (gpointer) widget);
|
||||
|
||||
if (strcmp (widget_name, gtk_widget_get_name (widget)) != 0)
|
||||
gtk_widget_set_name (widget, widget_name);
|
||||
|
||||
rc_string = g_strdup_printf (
|
||||
"style \"%p\"\n"
|
||||
"{\n"
|
||||
" GtkWidget::cursor-color = \"#%02x%02x%02x\"\n"
|
||||
" GtkWidget::secondary-cursor-color = \"#%02x%02x%02x\"\n"
|
||||
"}\n"
|
||||
"widget \"*.%s\" style \"%p\"\n",
|
||||
(gpointer) widget,
|
||||
primary->red >> 8, primary->green >> 8, primary->blue >> 8,
|
||||
secondary->red >> 8, secondary->green >> 8, secondary->blue >> 8,
|
||||
widget_name,
|
||||
(gpointer) widget
|
||||
);
|
||||
|
||||
gtk_rc_parse_string (rc_string);
|
||||
|
||||
g_free (rc_string);
|
||||
g_free (widget_name);
|
||||
#else
|
||||
gtk_widget_modify_cursor (widget, primary, secondary);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
unset_cursor_colors (GtkWidget *widget)
|
||||
{
|
||||
#if !GTK_CHECK_VERSION(2,11,3)
|
||||
set_cursor_colors (widget,
|
||||
&widget->style->text[GTK_STATE_NORMAL],
|
||||
&widget->style->text_aa[GTK_STATE_NORMAL]);
|
||||
#else
|
||||
gtk_widget_modify_cursor (widget, NULL, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
update_cursor_colors (GtkWidget *widget,
|
||||
GtkSourceStyle *style_primary,
|
||||
GtkSourceStyle *style_secondary)
|
||||
{
|
||||
GdkColor color;
|
||||
GdkColor *primary = NULL, *secondary = NULL;
|
||||
|
||||
if (style_primary != NULL && STYLE_HAS_FOREGROUND (style_primary))
|
||||
primary = &style_primary->foreground;
|
||||
|
||||
if (style_secondary != NULL && STYLE_HAS_FOREGROUND (style_secondary))
|
||||
secondary = &style_secondary->foreground;
|
||||
|
||||
if (primary != NULL && secondary == NULL)
|
||||
{
|
||||
GdkColor tmp = widget->style->base[GTK_STATE_NORMAL];
|
||||
color.red = ((gint) tmp.red + primary->red) / 2;
|
||||
color.green = ((gint) tmp.green + primary->green) / 2;
|
||||
color.blue = ((gint) tmp.blue + primary->blue) / 2;
|
||||
secondary = &color;
|
||||
}
|
||||
|
||||
if (primary != NULL)
|
||||
set_cursor_colors (widget, primary, secondary);
|
||||
else
|
||||
unset_cursor_colors (widget);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -386,7 +473,7 @@ _gtk_source_style_scheme_apply (GtkSourceStyleScheme *scheme,
|
|||
|
||||
if (scheme != NULL)
|
||||
{
|
||||
GtkSourceStyle *style;
|
||||
GtkSourceStyle *style, *style2;
|
||||
|
||||
gtk_widget_ensure_style (widget);
|
||||
|
||||
|
@ -401,8 +488,14 @@ _gtk_source_style_scheme_apply (GtkSourceStyleScheme *scheme,
|
|||
set_text_style (widget, style, GTK_STATE_SELECTED);
|
||||
gtk_source_style_free (style);
|
||||
|
||||
style = gtk_source_style_scheme_get_style (scheme, STYLE_LINE_NUMBERS);
|
||||
set_line_numbers_style (widget, style);
|
||||
gtk_source_style_free (style);
|
||||
|
||||
style = gtk_source_style_scheme_get_style (scheme, STYLE_CURSOR);
|
||||
set_cursor_color (widget, style);
|
||||
style2 = gtk_source_style_scheme_get_style (scheme, STYLE_SECONDARY_CURSOR);
|
||||
update_cursor_colors (widget, style, style2);
|
||||
gtk_source_style_free (style2);
|
||||
gtk_source_style_free (style);
|
||||
}
|
||||
else
|
||||
|
@ -412,7 +505,8 @@ _gtk_source_style_scheme_apply (GtkSourceStyleScheme *scheme,
|
|||
set_text_style (widget, NULL, GTK_STATE_PRELIGHT);
|
||||
set_text_style (widget, NULL, GTK_STATE_INSENSITIVE);
|
||||
set_text_style (widget, NULL, GTK_STATE_SELECTED);
|
||||
set_cursor_color (widget, NULL);
|
||||
set_line_numbers_style (widget, NULL);
|
||||
unset_cursor_colors (widget);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,110 +1,215 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE language SYSTEM "language.dtd">
|
||||
<language _name="Objective Caml" version="1.0" _section="Sources" mimetypes="text/x-ocaml">
|
||||
<!-- vim: set sts=2 sw=2: -->
|
||||
<language id="objective-caml" _name="Objective Caml" version="2.0" _section="Sources">
|
||||
<metadata>
|
||||
<property name="mimetypes">text/x-ocaml</property>
|
||||
<property name="globs">*.ml;*.mli;*.mll;*.mly</property>
|
||||
<property name="block-comment-start">(*</property>
|
||||
<property name="block-comment-end">*)</property>
|
||||
</metadata>
|
||||
|
||||
<escape-char>\</escape-char>
|
||||
<styles>
|
||||
<style id="comment" _name="Comment" map-to="def:comment"/>
|
||||
<style id="ocamldoc" _name="Ocamldoc Comments" map-to="def:note"/>
|
||||
<style id="base-n-integer" _name="Base-N Integer" map-to="def:base-n-integer"/>
|
||||
<style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
|
||||
<style id="decimal" _name="Decimal" map-to="def:decimal"/>
|
||||
<style id="string" _name="String" map-to="def:string"/>
|
||||
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
|
||||
<style id="meta-keyword" _name="Type, module or object keyword" map-to="def:keyword"/>
|
||||
<style id="fun-keyword" _name="Builtin-function keyword" map-to="def:keyword"/>
|
||||
<style id="data-type" _name="Data Type" map-to="def:data-type"/>
|
||||
<style id="label" _name="Labeled argument" map-to="def:data-type"/>
|
||||
<style id="poly-variant" _name="Polymorphic Variant" map-to="def:data-type"/>
|
||||
<style id="variant" _name="Variant Constructor" map-to="def:data-type"/>
|
||||
<style id="type-var" _name="Type Variable" map-to="def:data-type"/>
|
||||
<style id="module" _name="Module Path" map-to="def:data-type"/>
|
||||
<style id="escape" _name="String/Char escape" map-to="def:escape"/>
|
||||
<style id="boolean" _name="Boolean constant" map-to="def:string"/>
|
||||
<style id="error" _name="Error" map-to="def:error"/>
|
||||
</styles>
|
||||
|
||||
<block-comment _name = "Comment" style = "Comment">
|
||||
<start-regex>\(\*</start-regex>
|
||||
<end-regex>\*\)</end-regex>
|
||||
</block-comment>
|
||||
|
||||
<pattern-item _name = "Decimal" style = "Decimal">
|
||||
<regex>\b[-]?[0-9][0-9_]*[lLn]?\b</regex>
|
||||
</pattern-item>
|
||||
|
||||
<pattern-item _name = "Hex Number" style = "Base-N Integer">
|
||||
<regex>\b[-]?0[xX][0-9A-Fa-f][0-9A-Fa-f_]*[lL]?\b</regex>
|
||||
</pattern-item>
|
||||
|
||||
<pattern-item _name = "Octal Number" style = "Base-N Integer">
|
||||
<regex>\b[-]?0[oO][0-7][0-7_]*[lL]?\b</regex>
|
||||
</pattern-item>
|
||||
|
||||
<pattern-item _name = "Binary Number" style = "Base-N Integer">
|
||||
<regex>\b[-]?0[bB][01][01_]*[lL]?\b</regex>
|
||||
</pattern-item>
|
||||
|
||||
<pattern-item _name = "Floating Point Number" style = "Floating Point">
|
||||
<regex>\b[-]?[0-9][0-9_]*(\.[0-9_]*)?([Ee][+-]?[0-9][0-9_]*)?</regex>
|
||||
</pattern-item>
|
||||
|
||||
<string _name = "Character Constant" style = "String" end-at-line-end = "TRUE">
|
||||
<start-regex>'</start-regex>
|
||||
<end-regex>'</end-regex>
|
||||
</string>
|
||||
|
||||
<string _name = "String" style = "String" end-at-line-end = "FALSE">
|
||||
<start-regex>"</start-regex>
|
||||
<end-regex>"</end-regex>
|
||||
</string>
|
||||
|
||||
<keyword-list _name = "Boolean Constant" style = "String" case-sensitive="FALSE">
|
||||
<keyword>true</keyword>
|
||||
<keyword>false</keyword>
|
||||
</keyword-list>
|
||||
|
||||
<pattern-item _name = "Module" style = "Data Type">
|
||||
<regex>\b[A-Z][A-Za-z0-9_']*</regex>
|
||||
</pattern-item>
|
||||
|
||||
<pattern-item _name = "Label" style = "Data Type">
|
||||
<regex>[~?][a-z][A-Za-z0-9_']*</regex>
|
||||
</pattern-item>
|
||||
|
||||
<keyword-list _name = "Keywords" style = "Keyword" case-sensitive="TRUE">
|
||||
<keyword>and</keyword>
|
||||
<keyword>as</keyword>
|
||||
<keyword>assert</keyword>
|
||||
<keyword>asr</keyword>
|
||||
<keyword>begin</keyword>
|
||||
<keyword>class</keyword>
|
||||
<keyword>constraint</keyword>
|
||||
<keyword>do</keyword>
|
||||
<keyword>done</keyword>
|
||||
<keyword>downto</keyword>
|
||||
<keyword>else</keyword>
|
||||
<keyword>end</keyword>
|
||||
<keyword>exception</keyword>
|
||||
<keyword>external</keyword>
|
||||
<keyword>for</keyword>
|
||||
<keyword>fun</keyword>
|
||||
<keyword>function</keyword>
|
||||
<keyword>functor</keyword>
|
||||
<keyword>if</keyword>
|
||||
<keyword>in</keyword>
|
||||
<keyword>include</keyword>
|
||||
<keyword>inherit</keyword>
|
||||
<keyword>initializer</keyword>
|
||||
<keyword>land</keyword>
|
||||
<keyword>lazy</keyword>
|
||||
<keyword>let</keyword>
|
||||
<keyword>lor</keyword>
|
||||
<keyword>lsl</keyword>
|
||||
<keyword>lsr</keyword>
|
||||
<keyword>lxor</keyword>
|
||||
<keyword>match</keyword>
|
||||
<keyword>method</keyword>
|
||||
<keyword>mod</keyword>
|
||||
<keyword>module</keyword>
|
||||
<keyword>mutable</keyword>
|
||||
<keyword>new</keyword>
|
||||
<keyword>object</keyword>
|
||||
<keyword>of</keyword>
|
||||
<keyword>open</keyword>
|
||||
<keyword>or</keyword>
|
||||
<keyword>private</keyword>
|
||||
<keyword>rec</keyword>
|
||||
<keyword>sig</keyword>
|
||||
<keyword>struct</keyword>
|
||||
<keyword>then</keyword>
|
||||
<keyword>to</keyword>
|
||||
<keyword>try</keyword>
|
||||
<keyword>type</keyword>
|
||||
<keyword>val</keyword>
|
||||
<keyword>virtual</keyword>
|
||||
<keyword>when</keyword>
|
||||
<keyword>while</keyword>
|
||||
<keyword>with</keyword>
|
||||
</keyword-list>
|
||||
<definitions>
|
||||
<define-regex id="cap-ident">[A-Z][A-Za-z0-9_']*</define-regex>
|
||||
<define-regex id="low-ident">[a-z][A-Za-z0-9_']*</define-regex>
|
||||
<define-regex id="char-esc">\\((\\|"|'|n|t|b|r)|[0-9]{3}|x[0-9a-fA-F]{2})</define-regex>
|
||||
<context id="escape-seq" style-ref="escape">
|
||||
<match>\%{char-esc}</match>
|
||||
</context>
|
||||
<!-- here's the main context -->
|
||||
<context id="objective-caml">
|
||||
<include>
|
||||
<context id="ocamldoc" style-ref="ocamldoc">
|
||||
<start>\(\*\*</start>
|
||||
<end>\*\)</end>
|
||||
<include>
|
||||
<context id="comment-in-comment" style-ref="comment">
|
||||
<start>\(\*</start>
|
||||
<end>\*\)</end>
|
||||
<include>
|
||||
<context ref="string"/>
|
||||
<context ref="comment-in-comment"/>
|
||||
<context ref="def:in-comment:*"/>
|
||||
</include>
|
||||
</context>
|
||||
<context ref="string"/>
|
||||
<context ref="def:in-comment:*"/>
|
||||
</include>
|
||||
</context>
|
||||
<context id="comment" style-ref="comment">
|
||||
<start>\(\*</start>
|
||||
<end>\*\)</end>
|
||||
<include>
|
||||
<context ref="string"/>
|
||||
<context ref="comment-in-comment"/>
|
||||
<context ref="def:in-comment:*"/>
|
||||
</include>
|
||||
</context>
|
||||
<context id="decimal" style-ref="decimal">
|
||||
<match>[-]?[0-9][0-9_]*[lLn]?</match>
|
||||
</context>
|
||||
<context id="hex-number" style-ref="base-n-integer">
|
||||
<match>[-]?0[xX][0-9A-Fa-f][0-9A-Fa-f_]*[lL]?</match>
|
||||
</context>
|
||||
<context id="octal-number" style-ref="base-n-integer">
|
||||
<match>[-]?0[oO][0-7][0-7_]*[lL]?</match>
|
||||
</context>
|
||||
<context id="binary-number" style-ref="base-n-integer">
|
||||
<match>[-]?0[bB][01][01_]*[lL]?</match>
|
||||
</context>
|
||||
<context id="floating-point-number" style-ref="floating-point">
|
||||
<match>[-]?[0-9][0-9_]*(\.[0-9_]*)?([Ee][+-]?[0-9][0-9_]*)?</match>
|
||||
</context>
|
||||
<context id="label" style-ref="label">
|
||||
<match>[~?]\%{low-ident}</match>
|
||||
</context>
|
||||
<context id="poly-variant" style-ref="poly-variant">
|
||||
<match>`\%{cap-ident}</match>
|
||||
</context>
|
||||
<context id="modpath" style-ref="module">
|
||||
<!-- include final '.'? At the moment, no. -->
|
||||
<match>\%{cap-ident}(\.\%{cap-ident})*(?=\.)</match>
|
||||
</context>
|
||||
<context id="variant" style-ref="variant">
|
||||
<match>\%{cap-ident}</match>
|
||||
</context>
|
||||
<context id="string" style-ref="string">
|
||||
<start>"</start>
|
||||
<end>"</end>
|
||||
<include>
|
||||
<context ref="escape-seq"/>
|
||||
</include>
|
||||
</context>
|
||||
<context id="character-constant" style-ref="string">
|
||||
<match>('\%{char-esc}')|('[^\\']')</match>
|
||||
</context>
|
||||
<context id="type-var" style-ref="type-var">
|
||||
<match>'\%{low-ident}</match>
|
||||
</context>
|
||||
<context id="arraylit">
|
||||
<start>\[\|</start>
|
||||
<end>\|\]</end>
|
||||
<include>
|
||||
<context ref="objective-caml"/>
|
||||
</include>
|
||||
</context>
|
||||
<context id="badarray" style-ref="error" extend-parent="false">
|
||||
<match>\|\]</match>
|
||||
</context>
|
||||
<context id="listlit">
|
||||
<start>\[</start>
|
||||
<end>(?<!\|)\]</end>
|
||||
<include>
|
||||
<context ref="objective-caml"/>
|
||||
</include>
|
||||
</context>
|
||||
<context id="badlist" style-ref="error" extend-parent="false">
|
||||
<match>\]</match>
|
||||
</context>
|
||||
<context id="boolean-constant" style-ref="boolean">
|
||||
<keyword>true</keyword>
|
||||
<keyword>false</keyword>
|
||||
</context>
|
||||
<!-- Flow control & common keywords -->
|
||||
<context id="keywords" style-ref="keyword">
|
||||
<keyword>and</keyword>
|
||||
<keyword>assert</keyword>
|
||||
<keyword>begin</keyword>
|
||||
<keyword>do</keyword>
|
||||
<keyword>done</keyword>
|
||||
<keyword>downto</keyword>
|
||||
<keyword>else</keyword>
|
||||
<keyword>end</keyword>
|
||||
<keyword>for</keyword>
|
||||
<keyword>fun</keyword>
|
||||
<keyword>function</keyword>
|
||||
<keyword>if</keyword>
|
||||
<keyword>in</keyword>
|
||||
<keyword>let</keyword>
|
||||
<keyword>match</keyword>
|
||||
<keyword>rec</keyword>
|
||||
<keyword>then</keyword>
|
||||
<keyword>to</keyword>
|
||||
<keyword>try</keyword>
|
||||
<keyword>val</keyword>
|
||||
<keyword>when</keyword>
|
||||
<keyword>while</keyword>
|
||||
<keyword>with</keyword>
|
||||
</context>
|
||||
<!-- types, objects and modules -->
|
||||
<context id="meta-words" style-ref="meta-keyword">
|
||||
<keyword>as</keyword>
|
||||
<keyword>class</keyword>
|
||||
<keyword>constraint</keyword>
|
||||
<keyword>exception</keyword>
|
||||
<keyword>external</keyword>
|
||||
<keyword>functor</keyword>
|
||||
<keyword>include</keyword>
|
||||
<keyword>inherit</keyword>
|
||||
<keyword>initializer</keyword>
|
||||
<keyword>method</keyword>
|
||||
<keyword>module</keyword>
|
||||
<keyword>mutable</keyword>
|
||||
<keyword>new</keyword>
|
||||
<keyword>object</keyword>
|
||||
<keyword>of</keyword>
|
||||
<keyword>open</keyword>
|
||||
<keyword>private</keyword>
|
||||
<keyword>struct</keyword>
|
||||
<keyword>sig</keyword>
|
||||
<keyword>type</keyword>
|
||||
<keyword>virtual</keyword>
|
||||
</context>
|
||||
<context id="function-keywords" style-ref="fun-keyword">
|
||||
<!-- function-like keywords -->
|
||||
<keyword>asr</keyword>
|
||||
<keyword>land</keyword>
|
||||
<keyword>lazy</keyword>
|
||||
<keyword>lor</keyword>
|
||||
<keyword>lsl</keyword>
|
||||
<keyword>lsr</keyword>
|
||||
<keyword>lxor</keyword>
|
||||
<keyword>mod</keyword>
|
||||
<keyword>or</keyword>
|
||||
<!-- from pervasives, but same as others -->
|
||||
<keyword>lnot</keyword>
|
||||
</context>
|
||||
<context id="types" style-ref="data-type">
|
||||
<!-- pervasives types -->
|
||||
<keyword>option</keyword>
|
||||
<keyword>ignore</keyword>
|
||||
<keyword>ref</keyword>
|
||||
<keyword>array</keyword>
|
||||
<keyword>bool</keyword>
|
||||
<keyword>char</keyword>
|
||||
<keyword>float</keyword>
|
||||
<keyword>int</keyword>
|
||||
<keyword>list</keyword>
|
||||
<keyword>string</keyword>
|
||||
<keyword>unit</keyword>
|
||||
<!-- note: Some and None are highlighted as variants -->
|
||||
</context>
|
||||
</include>
|
||||
</context>
|
||||
</definitions>
|
||||
</language>
|
||||
|
|
|
@ -7,11 +7,12 @@
|
|||
</metadata>
|
||||
|
||||
<styles>
|
||||
<style id="comment" name="Comment" map-to="def:comment"/>
|
||||
<style id="data-type" name="Data Type" map-to="def:data-type"/>
|
||||
<style id="string" name="String" map-to="def:string"/>
|
||||
<style id="keyword" name="Keyword" map-to="def:keyword"/>
|
||||
<style id="others" name="Others"/>
|
||||
<style id="comment" _name="Comment" map-to="def:comment"/>
|
||||
<style id="data-type" _name="Data Type" map-to="def:data-type"/>
|
||||
<style id="string" _name="String" map-to="def:string"/>
|
||||
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
|
||||
<style id="operator" _name="Operator" map-to="def:keyword"/>
|
||||
<style id="others" _name="Others"/>
|
||||
</styles>
|
||||
|
||||
<definitions>
|
||||
|
@ -66,221 +67,239 @@
|
|||
<match>->[a-zA-Z_][a-zA-Z0-9_]*</match>
|
||||
</context>
|
||||
|
||||
<context id="keywords" style-ref="keyword">
|
||||
<context id="operators" style-ref="operator">
|
||||
<keyword>and</keyword>
|
||||
<keyword>cmp</keyword>
|
||||
<keyword>eq</keyword>
|
||||
<keyword>ge</keyword>
|
||||
<keyword>gt</keyword>
|
||||
<keyword>le</keyword>
|
||||
<keyword>lt</keyword>
|
||||
<keyword>m</keyword>
|
||||
<keyword>ne</keyword>
|
||||
<keyword>not</keyword>
|
||||
<keyword>or</keyword>
|
||||
<keyword>read</keyword>
|
||||
<keyword>keys</keyword>
|
||||
<keyword>chomp</keyword>
|
||||
<keyword>if</keyword>
|
||||
<keyword>else</keyword>
|
||||
<keyword>elsif</keyword>
|
||||
<keyword>unless</keyword>
|
||||
<keyword>open</keyword>
|
||||
<keyword>close</keyword>
|
||||
<keyword>split</keyword>
|
||||
<keyword>for</keyword>
|
||||
<keyword>while</keyword>
|
||||
<keyword>foreach</keyword>
|
||||
<keyword>exit</keyword>
|
||||
<keyword>sub</keyword>
|
||||
<keyword>print</keyword>
|
||||
<keyword>use</keyword>
|
||||
<keyword>require</keyword>
|
||||
<keyword>elseif</keyword>
|
||||
<keyword>continue</keyword>
|
||||
<keyword>until</keyword>
|
||||
<keyword>do</keyword>
|
||||
<keyword>last</keyword>
|
||||
<keyword>next</keyword>
|
||||
<keyword>redo</keyword>
|
||||
<keyword>goto</keyword>
|
||||
<keyword>chop</keyword>
|
||||
<keyword>chr</keyword>
|
||||
<keyword>crypt</keyword>
|
||||
<keyword>hex</keyword>
|
||||
<keyword>index</keyword>
|
||||
<keyword>lc</keyword>
|
||||
<keyword>lcfirst</keyword>
|
||||
<keyword>length</keyword>
|
||||
<keyword>oct</keyword>
|
||||
<keyword>ord</keyword>
|
||||
<keyword>reverse</keyword>
|
||||
<keyword>rindex</keyword>
|
||||
<keyword>printf</keyword>
|
||||
<keyword>sprintf</keyword>
|
||||
<keyword>substr</keyword>
|
||||
<keyword>uc</keyword>
|
||||
<keyword>ucfirst</keyword>
|
||||
<keyword>pos</keyword>
|
||||
<keyword>quotemeta</keyword>
|
||||
<keyword>study</keyword>
|
||||
<keyword>q</keyword>
|
||||
<keyword>qq</keyword>
|
||||
<keyword>qr</keyword>
|
||||
<keyword>qw</keyword>
|
||||
<keyword>qx</keyword>
|
||||
<keyword>s</keyword>
|
||||
<keyword>tr</keyword>
|
||||
<keyword>xor</keyword>
|
||||
</context>
|
||||
|
||||
<context id="keywords" style-ref="keyword">
|
||||
<keyword>abs</keyword>
|
||||
<keyword>accept</keyword>
|
||||
<keyword>alarm</keyword>
|
||||
<keyword>atan2</keyword>
|
||||
<keyword>cos</keyword>
|
||||
<keyword>exp</keyword>
|
||||
<keyword>int</keyword>
|
||||
<keyword>log</keyword>
|
||||
<keyword>rand</keyword>
|
||||
<keyword>sin</keyword>
|
||||
<keyword>sqrt</keyword>
|
||||
<keyword>srand</keyword>
|
||||
<keyword>pop</keyword>
|
||||
<keyword>push</keyword>
|
||||
<keyword>shift</keyword>
|
||||
<keyword>splice</keyword>
|
||||
<keyword>unshift</keyword>
|
||||
<keyword>grep</keyword>
|
||||
<keyword>join</keyword>
|
||||
<keyword>map</keyword>
|
||||
<keyword>sort</keyword>
|
||||
<keyword>unpack</keyword>
|
||||
<keyword>pack</keyword>
|
||||
<keyword>delete</keyword>
|
||||
<keyword>each</keyword>
|
||||
<keyword>exists</keyword>
|
||||
<keyword>values</keyword>
|
||||
<keyword>bind</keyword>
|
||||
<keyword>binmode</keyword>
|
||||
<keyword>closedir</keyword>
|
||||
<keyword>dbmclose</keyword>
|
||||
<keyword>dbmopen</keyword>
|
||||
<keyword>die</keyword>
|
||||
<keyword>eof</keyword>
|
||||
<keyword>fileno</keyword>
|
||||
<keyword>flock</keyword>
|
||||
<keyword>format</keyword>
|
||||
<keyword>getc</keyword>
|
||||
<keyword>readdir</keyword>
|
||||
<keyword>rewinddir</keyword>
|
||||
<keyword>seek</keyword>
|
||||
<keyword>seekdir</keyword>
|
||||
<keyword>select</keyword>
|
||||
<keyword>syscall</keyword>
|
||||
<keyword>sysread</keyword>
|
||||
<keyword>sysseek</keyword>
|
||||
<keyword>syswrite</keyword>
|
||||
<keyword>tell</keyword>
|
||||
<keyword>telldir</keyword>
|
||||
<keyword>truncate</keyword>
|
||||
<keyword>warn</keyword>
|
||||
<keyword>write</keyword>
|
||||
<keyword>vec</keyword>
|
||||
<keyword>bless</keyword>
|
||||
<keyword>caller</keyword>
|
||||
<keyword>chdir</keyword>
|
||||
<keyword>chmod</keyword>
|
||||
<keyword>chomp</keyword>
|
||||
<keyword>chop</keyword>
|
||||
<keyword>chown</keyword>
|
||||
<keyword>chr</keyword>
|
||||
<keyword>chroot</keyword>
|
||||
<keyword>fcntl</keyword>
|
||||
<keyword>glob</keyword>
|
||||
<keyword>ioctl</keyword>
|
||||
<keyword>link</keyword>
|
||||
<keyword>lstat</keyword>
|
||||
<keyword>mkdir</keyword>
|
||||
<keyword>opendir</keyword>
|
||||
<keyword>readlink</keyword>
|
||||
<keyword>rename</keyword>
|
||||
<keyword>rmdir</keyword>
|
||||
<keyword>stat</keyword>
|
||||
<keyword>symlink</keyword>
|
||||
<keyword>umask</keyword>
|
||||
<keyword>unlink</keyword>
|
||||
<keyword>utime</keyword>
|
||||
<keyword>caller</keyword>
|
||||
<keyword>dump</keyword>
|
||||
<keyword>eval</keyword>
|
||||
<keyword>return</keyword>
|
||||
<keyword>wantarray</keyword>
|
||||
<keyword>import</keyword>
|
||||
<keyword>local</keyword>
|
||||
<keyword>my</keyword>
|
||||
<keyword>our</keyword>
|
||||
<keyword>package</keyword>
|
||||
<keyword>closedir</keyword>
|
||||
<keyword>close</keyword>
|
||||
<keyword>connect</keyword>
|
||||
<keyword>continue</keyword>
|
||||
<keyword>cos</keyword>
|
||||
<keyword>crypt</keyword>
|
||||
<keyword>dbmclose</keyword>
|
||||
<keyword>dbmopen</keyword>
|
||||
<keyword>defined</keyword>
|
||||
<keyword>formline</keyword>
|
||||
<keyword>prototype</keyword>
|
||||
<keyword>reset</keyword>
|
||||
<keyword>scalar</keyword>
|
||||
<keyword>undef</keyword>
|
||||
<keyword>alarm</keyword>
|
||||
<keyword>delete</keyword>
|
||||
<keyword>die</keyword>
|
||||
<keyword>do</keyword>
|
||||
<keyword>dump</keyword>
|
||||
<keyword>each</keyword>
|
||||
<keyword>elseif</keyword>
|
||||
<keyword>else</keyword>
|
||||
<keyword>elsif</keyword>
|
||||
<keyword>endgrent</keyword>
|
||||
<keyword>endhostent</keyword>
|
||||
<keyword>endnetent</keyword>
|
||||
<keyword>endprotoent</keyword>
|
||||
<keyword>endpwent</keyword>
|
||||
<keyword>endservent</keyword>
|
||||
<keyword>eof</keyword>
|
||||
<keyword>eval</keyword>
|
||||
<keyword>exec</keyword>
|
||||
<keyword>exists</keyword>
|
||||
<keyword>exit</keyword>
|
||||
<keyword>exp</keyword>
|
||||
<keyword>fcntl</keyword>
|
||||
<keyword>fileno</keyword>
|
||||
<keyword>flock</keyword>
|
||||
<keyword>foreach</keyword>
|
||||
<keyword>for</keyword>
|
||||
<keyword>fork</keyword>
|
||||
<keyword>format</keyword>
|
||||
<keyword>formline</keyword>
|
||||
<keyword>getc</keyword>
|
||||
<keyword>getgrent</keyword>
|
||||
<keyword>getgrgid</keyword>
|
||||
<keyword>getgrnam</keyword>
|
||||
<keyword>gethostbyaddr</keyword>
|
||||
<keyword>gethostbyname</keyword>
|
||||
<keyword>gethostent</keyword>
|
||||
<keyword>getlogin</keyword>
|
||||
<keyword>getnetbyaddr</keyword>
|
||||
<keyword>getnetbyname</keyword>
|
||||
<keyword>getnetent</keyword>
|
||||
<keyword>getpeername</keyword>
|
||||
<keyword>getpgrp</keyword>
|
||||
<keyword>getppid</keyword>
|
||||
<keyword>getpriority</keyword>
|
||||
<keyword>kill</keyword>
|
||||
<keyword>pipe</keyword>
|
||||
<keyword>setpgrp</keyword>
|
||||
<keyword>setpriority</keyword>
|
||||
<keyword>sleep</keyword>
|
||||
<keyword>system</keyword>
|
||||
<keyword>times</keyword>
|
||||
<keyword>wait</keyword>
|
||||
<keyword>waitpid</keyword>
|
||||
<keyword>no</keyword>
|
||||
<keyword>bless</keyword>
|
||||
<keyword>ref</keyword>
|
||||
<keyword>tie</keyword>
|
||||
<keyword>tied</keyword>
|
||||
<keyword>untie</keyword>
|
||||
<keyword>accept</keyword>
|
||||
<keyword>bind</keyword>
|
||||
<keyword>connect</keyword>
|
||||
<keyword>getpeername</keyword>
|
||||
<keyword>getprotobyname</keyword>
|
||||
<keyword>getprotobynumber</keyword>
|
||||
<keyword>getprotoent</keyword>
|
||||
<keyword>getpwent</keyword>
|
||||
<keyword>getpwnam</keyword>
|
||||
<keyword>getpwuid</keyword>
|
||||
<keyword>getservbyname</keyword>
|
||||
<keyword>getservbyport</keyword>
|
||||
<keyword>getservent</keyword>
|
||||
<keyword>getsockname</keyword>
|
||||
<keyword>getsockopt</keyword>
|
||||
<keyword>glob</keyword>
|
||||
<keyword>gmtime</keyword>
|
||||
<keyword>goto</keyword>
|
||||
<keyword>grep</keyword>
|
||||
<keyword>hex</keyword>
|
||||
<keyword>if</keyword>
|
||||
<keyword>import</keyword>
|
||||
<keyword>index</keyword>
|
||||
<keyword>int</keyword>
|
||||
<keyword>ioctl</keyword>
|
||||
<keyword>join</keyword>
|
||||
<keyword>keys</keyword>
|
||||
<keyword>kill</keyword>
|
||||
<keyword>last</keyword>
|
||||
<keyword>lcfirst</keyword>
|
||||
<keyword>lc</keyword>
|
||||
<keyword>length</keyword>
|
||||
<keyword>link</keyword>
|
||||
<keyword>listen</keyword>
|
||||
<keyword>recv</keyword>
|
||||
<keyword>send</keyword>
|
||||
<keyword>setsockopt</keyword>
|
||||
<keyword>shutdown</keyword>
|
||||
<keyword>socket</keyword>
|
||||
<keyword>socketpair</keyword>
|
||||
<keyword>local</keyword>
|
||||
<keyword>localtime</keyword>
|
||||
<keyword>log</keyword>
|
||||
<keyword>lstat</keyword>
|
||||
<keyword>map</keyword>
|
||||
<keyword>mkdir</keyword>
|
||||
<keyword>msgctl</keyword>
|
||||
<keyword>msgget</keyword>
|
||||
<keyword>msgrcv</keyword>
|
||||
<keyword>msgsnd</keyword>
|
||||
<keyword>my</keyword>
|
||||
<keyword>next</keyword>
|
||||
<keyword>no</keyword>
|
||||
<keyword>oct</keyword>
|
||||
<keyword>opendir</keyword>
|
||||
<keyword>open</keyword>
|
||||
<keyword>ord</keyword>
|
||||
<keyword>our</keyword>
|
||||
<keyword>package</keyword>
|
||||
<keyword>pack</keyword>
|
||||
<keyword>pipe</keyword>
|
||||
<keyword>pop</keyword>
|
||||
<keyword>pos</keyword>
|
||||
<keyword>printf</keyword>
|
||||
<keyword>print</keyword>
|
||||
<keyword>prototype</keyword>
|
||||
<keyword>push</keyword>
|
||||
<keyword>quotemeta</keyword>
|
||||
<keyword>rand</keyword>
|
||||
<keyword>readdir</keyword>
|
||||
<keyword>read</keyword>
|
||||
<keyword>readlink</keyword>
|
||||
<keyword>recv</keyword>
|
||||
<keyword>redo</keyword>
|
||||
<keyword>ref</keyword>
|
||||
<keyword>rename</keyword>
|
||||
<keyword>require</keyword>
|
||||
<keyword>reset</keyword>
|
||||
<keyword>return</keyword>
|
||||
<keyword>reverse</keyword>
|
||||
<keyword>rewinddir</keyword>
|
||||
<keyword>rindex</keyword>
|
||||
<keyword>rmdir</keyword>
|
||||
<keyword>scalar</keyword>
|
||||
<keyword>seekdir</keyword>
|
||||
<keyword>seek</keyword>
|
||||
<keyword>select</keyword>
|
||||
<keyword>semctl</keyword>
|
||||
<keyword>semget</keyword>
|
||||
<keyword>semop</keyword>
|
||||
<keyword>send</keyword>
|
||||
<keyword>setgrent</keyword>
|
||||
<keyword>sethostent</keyword>
|
||||
<keyword>setnetent</keyword>
|
||||
<keyword>setpgrp</keyword>
|
||||
<keyword>setpriority</keyword>
|
||||
<keyword>setprotoent</keyword>
|
||||
<keyword>setpwent</keyword>
|
||||
<keyword>setservent</keyword>
|
||||
<keyword>setsockopt</keyword>
|
||||
<keyword>shift</keyword>
|
||||
<keyword>shmctl</keyword>
|
||||
<keyword>shmget</keyword>
|
||||
<keyword>shmread</keyword>
|
||||
<keyword>shmwrite</keyword>
|
||||
<keyword>endgrent</keyword>
|
||||
<keyword>endhostent</keyword>
|
||||
<keyword>endnetent</keyword>
|
||||
<keyword>endpwent</keyword>
|
||||
<keyword>getgrent</keyword>
|
||||
<keyword>getgrgid</keyword>
|
||||
<keyword>getgrnam</keyword>
|
||||
<keyword>getlogin</keyword>
|
||||
<keyword>getpwent</keyword>
|
||||
<keyword>getpwnam</keyword>
|
||||
<keyword>getpwuid</keyword>
|
||||
<keyword>setgrent</keyword>
|
||||
<keyword>setpwent</keyword>
|
||||
<keyword>endprotoent</keyword>
|
||||
<keyword>endservent</keyword>
|
||||
<keyword>gethostbyaddr</keyword>
|
||||
<keyword>gethostbyname</keyword>
|
||||
<keyword>gethostent</keyword>
|
||||
<keyword>getnetbyaddr</keyword>
|
||||
<keyword>getnetbyname</keyword>
|
||||
<keyword>getnetent</keyword>
|
||||
<keyword>getprotobyname</keyword>
|
||||
<keyword>getprotobynumber</keyword>
|
||||
<keyword>getprotoent</keyword>
|
||||
<keyword>getservbyname</keyword>
|
||||
<keyword>getservbyport</keyword>
|
||||
<keyword>getservent</keyword>
|
||||
<keyword>sethostent</keyword>
|
||||
<keyword>setnetent</keyword>
|
||||
<keyword>setprotoent</keyword>
|
||||
<keyword>setservent</keyword>
|
||||
<keyword>gmtime</keyword>
|
||||
<keyword>localtime</keyword>
|
||||
<keyword>shutdown</keyword>
|
||||
<keyword>sin</keyword>
|
||||
<keyword>sleep</keyword>
|
||||
<keyword>socket</keyword>
|
||||
<keyword>socketpair</keyword>
|
||||
<keyword>sort</keyword>
|
||||
<keyword>splice</keyword>
|
||||
<keyword>split</keyword>
|
||||
<keyword>sprintf</keyword>
|
||||
<keyword>sqrt</keyword>
|
||||
<keyword>srand</keyword>
|
||||
<keyword>stat</keyword>
|
||||
<keyword>study</keyword>
|
||||
<keyword>sub</keyword>
|
||||
<keyword>substr</keyword>
|
||||
<keyword>symlink</keyword>
|
||||
<keyword>syscall</keyword>
|
||||
<keyword>sysread</keyword>
|
||||
<keyword>sysseek</keyword>
|
||||
<keyword>system</keyword>
|
||||
<keyword>syswrite</keyword>
|
||||
<keyword>telldir</keyword>
|
||||
<keyword>tell</keyword>
|
||||
<keyword>tied</keyword>
|
||||
<keyword>tie</keyword>
|
||||
<keyword>time</keyword>
|
||||
<keyword>times</keyword>
|
||||
<keyword>truncate</keyword>
|
||||
<keyword>ucfirst</keyword>
|
||||
<keyword>uc</keyword>
|
||||
<keyword>umask</keyword>
|
||||
<keyword>undef</keyword>
|
||||
<keyword>unless</keyword>
|
||||
<keyword>unlink</keyword>
|
||||
<keyword>unpack</keyword>
|
||||
<keyword>unshift</keyword>
|
||||
<keyword>untie</keyword>
|
||||
<keyword>until</keyword>
|
||||
<keyword>use</keyword>
|
||||
<keyword>utime</keyword>
|
||||
<keyword>values</keyword>
|
||||
<keyword>vec</keyword>
|
||||
<keyword>wait</keyword>
|
||||
<keyword>waitpid</keyword>
|
||||
<keyword>wantarray</keyword>
|
||||
<keyword>warn</keyword>
|
||||
<keyword>while</keyword>
|
||||
<keyword>write</keyword>
|
||||
</context>
|
||||
|
||||
<context id="perl">
|
||||
|
@ -294,6 +313,7 @@
|
|||
<context ref="variables"/>
|
||||
<context ref="function-call"/>
|
||||
<context ref="method-call"/>
|
||||
<context ref="operators"/>
|
||||
<context ref="keywords"/>
|
||||
</include>
|
||||
</context>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
</context>
|
||||
|
||||
<context end-at-line-end="true">
|
||||
<start>^([\w_]+)\s*\:\s*</start>
|
||||
<start>^([\w_\.]+)\s*\:\s*</start>
|
||||
<include>
|
||||
<context sub-pattern="1" where="start" style-ref="info"/>
|
||||
<context ref="var-value"/>
|
||||
|
|
Loading…
Reference in New Issue