SF.net SVN: geany: [1744] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Thu Jul 26 09:50:12 UTC 2007
Revision: 1744
http://geany.svn.sourceforge.net/geany/?rev=1744&view=rev
Author: eht16
Date: 2007-07-26 02:50:12 -0700 (Thu, 26 Jul 2007)
Log Message:
-----------
Add filetype Haxe (patch by blackdog, thank you).
Modified Paths:
--------------
trunk/ChangeLog
trunk/THANKS
trunk/data/filetype_extensions.conf
trunk/src/filetypes.c
trunk/src/filetypes.h
trunk/src/highlighting.c
trunk/src/highlighting.h
trunk/src/symbols.c
trunk/src/templates.c
trunk/tagmanager/Makefile.am
trunk/tagmanager/makefile.win32
trunk/tagmanager/parsers.h
Added Paths:
-----------
trunk/data/filetypes.haxe
trunk/tagmanager/haxe.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/ChangeLog 2007-07-26 09:50:12 UTC (rev 1744)
@@ -1,3 +1,13 @@
+2007-07-26 Enrico Tröger <enrico.troeger at uvena.de>
+
+ * THANKS, data/filetype_extensions.conf, data/filetypes.haxe,
+ tagmanager/haxe.c, tagmanager/parsers.h, tagmanager/makefile.win32,
+ tagmanager/Makefile.am, src/templates.c, src/highlighting.c,
+ src/highlighting.h, src/callbacks.c, src/filetypes.c,
+ src/filetypes.h, src/symbols.c:
+ Add filetype Haxe (patch by blackdog, thank you).
+
+
2007-07-25 Nick Treleaven <nick.treleaven at btinternet.com>
* po/POTFILES.in:
Modified: trunk/THANKS
===================================================================
--- trunk/THANKS 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/THANKS 2007-07-26 09:50:12 UTC (rev 1744)
@@ -35,6 +35,7 @@
Alexander Rodin <rodin(dot)alexander(at)gmail(dot)com> - class builder patch
Shiv <shivakumar(dot)gn(at)gmail(dot)com> - Sun Studio compiler compatibility patch
Jean-François Wauthy <pollux(at)xfce(dot)org> - Symbol list icons patch
+blackdog <blackdog(at)ipowerhouse(dot)com> - Haxe filetype patch
Translators:
------------
Modified: trunk/data/filetype_extensions.conf
===================================================================
--- trunk/data/filetype_extensions.conf 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/data/filetype_extensions.conf 2007-07-26 09:50:12 UTC (rev 1744)
@@ -32,4 +32,5 @@
VHDL=*.vhd;*.vhdl;
Diff=*.diff;*.patch;*.rej;
Conf=*.conf;*.ini;config;*rc;*.cfg;
+Haxe=*.hx;
None=*;
Added: trunk/data/filetypes.haxe
===================================================================
--- trunk/data/filetypes.haxe (rev 0)
+++ trunk/data/filetypes.haxe 2007-07-26 09:50:12 UTC (rev 1744)
@@ -0,0 +1,58 @@
+# For complete documentation of this file, please see Geany's main documentation
+[styling]
+# foreground;background;bold;italic
+default=0x000000;0xffffff;false;false
+comment=0xd00000;0xffffff;false;false
+commentline=0xd00000;0xffffff;false;false
+commentdoc=0x3f5fbf;0xffffff;false;false
+number=0x007f00;0xffffff;false;false
+word=0x00007f;0xffffff;true;false
+word2=0x991111;0xffffff;true;false
+string=0xff901e;0xffffff;false;false
+character=0xff901e;0xffffff;false;false
+uuid=0x404080;0xffffff;false;false
+preprocessor=0x007F7F;0xffffff;false;false
+operator=0x301010;0xffffff;false;false
+identifier=0x000000;0xffffff;false;false
+stringeol=0x000000;0xe0c0e0;false;false
+verbatim=0x101030;0xffffff;false;false
+regex=0x105090;0xffffff;false;false
+commentlinedoc=0x3f5fbf;0xffffff;true;false
+commentdockeyword=0x3f5fbf;0xffffff;true;true
+commentdockeyworderror=0x3f5fbf;0xffffff;false;false
+globalclass=0x0000d0;0xffffff;true;false
+
+[keywords]
+# all items must be in one line
+primary=abstract break case catch class const continue trace do else enum extends finally for function goto if implements import in instanceof int interface new package private public return static super switch this throw throws transient try typeof var void volatile while with
+secondary=Bool Float Int null Void Enum String
+classes=Array ArrayAccess Class Date DateTools EReg Hash IntHash IntIter Iterable Iterator Lambda List Math Null Protected Reflect Std StringBuf StringTools Type UInt ValueType Xml XmlType
+
+
+[settings]
+# the following characters are these which a "word" can contains, see documentation
+#wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
+
+# if only single comment char is supported like # in this file, leave comment_close blank
+comment_open=//
+comment_close=
+
+# set to false if a comment character/string should start at column 0 of a line, true uses any
+# indentation of the line, e.g. setting to true causes the following on pressing CTRL+d
+ #command_example();
+# setting to false would generate this
+# command_example();
+# This setting works only for single line comments
+comment_use_indent=true
+
+# context action command (please see Geany's main documentation for details)
+context_action_cmd=
+
+[build_settings]
+# %f will be replaced by the complete filename
+# %e will be replaced by the filename without extension
+# (use only one of it at one time)
+compiler=haxe -neko "%e.n" -cp . "%f"
+run_cmd=neko "%e"
+
+
Modified: trunk/src/filetypes.c
===================================================================
--- trunk/src/filetypes.c 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/src/filetypes.c 2007-07-26 09:50:12 UTC (rev 1744)
@@ -76,7 +76,8 @@
FILETYPE_UID_LUA, // 28
FILETYPE_UID_HASKELL, // 29
FILETYPE_UID_CS, // 30
- FILETYPE_UID_BASIC // 31
+ FILETYPE_UID_BASIC, // 31
+ FILETYPE_UID_HAXE // 32
};
@@ -122,6 +123,7 @@
case FILETYPE_UID_HASKELL: return filetypes[GEANY_FILETYPES_HASKELL];
case FILETYPE_UID_CS: return filetypes[GEANY_FILETYPES_CS];
case FILETYPE_UID_BASIC: return filetypes[GEANY_FILETYPES_BASIC];
+ case FILETYPE_UID_HAXE: return filetypes[GEANY_FILETYPES_HAXE];
default: return NULL;
}
}
@@ -521,6 +523,18 @@
filetypes[GEANY_FILETYPES_CONF]->comment_open = g_strdup("#");
filetypes[GEANY_FILETYPES_CONF]->comment_close = NULL;
+#define HAXE
+ filetypes[GEANY_FILETYPES_HAXE]->id = GEANY_FILETYPES_HAXE;
+ filetypes[GEANY_FILETYPES_HAXE]->uid = FILETYPE_UID_HAXE;
+ filetypes[GEANY_FILETYPES_HAXE]->lang = 27;
+ filetypes[GEANY_FILETYPES_HAXE]->name = g_strdup("Haxe");
+ filetypes[GEANY_FILETYPES_HAXE]->title = g_strdup(_("Haxe source file"));
+ filetypes[GEANY_FILETYPES_HAXE]->extension = g_strdup("hx");
+ filetypes[GEANY_FILETYPES_HAXE]->pattern = utils_strv_new("*.hx", NULL);
+ filetypes[GEANY_FILETYPES_HAXE]->style_func_ptr = styleset_haxe;
+ filetypes[GEANY_FILETYPES_HAXE]->comment_open = g_strdup("//");
+ filetypes[GEANY_FILETYPES_HAXE]->comment_close = NULL;
+
#define ALL
filetypes[GEANY_FILETYPES_ALL]->id = GEANY_FILETYPES_ALL;
filetypes[GEANY_FILETYPES_ALL]->name = g_strdup("None");
Modified: trunk/src/filetypes.h
===================================================================
--- trunk/src/filetypes.h 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/src/filetypes.h 2007-07-26 09:50:12 UTC (rev 1744)
@@ -48,6 +48,7 @@
GEANY_FILETYPES_CAML,
GEANY_FILETYPES_HASKELL,
GEANY_FILETYPES_VHDL,
+ GEANY_FILETYPES_HAXE,
// script languages
GEANY_FILETYPES_PERL,
Modified: trunk/src/highlighting.c
===================================================================
--- trunk/src/highlighting.c 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/src/highlighting.c 2007-07-26 09:50:12 UTC (rev 1744)
@@ -3225,3 +3225,66 @@
set_sci_style(sci, SCE_B_HEXNUMBER, GEANY_FILETYPES_BASIC, 17);
set_sci_style(sci, SCE_B_BINNUMBER, GEANY_FILETYPES_BASIC, 18);
}
+
+static void styleset_haxe_init(void)
+{
+ GKeyFile *config = g_key_file_new();
+ GKeyFile *config_home = g_key_file_new();
+
+ load_keyfiles(config, config_home, GEANY_FILETYPES_HAXE);
+
+ new_style_array(GEANY_FILETYPES_HAXE, 20);
+ styleset_c_like_init(config, config_home, GEANY_FILETYPES_HAXE);
+
+ style_sets[GEANY_FILETYPES_HAXE].keywords = g_new(gchar*, 4);
+
+ get_keyfile_keywords(config, config_home, "keywords", "primary", GEANY_FILETYPES_HAXE, 0, "\
+ abstract break case catch class \
+ continue default do else enum external extends \
+ finally float for function goto if implements import in \
+ interface new package protected public \
+ return static super switch this throw throws \
+ try type var while");
+
+ get_keyfile_keywords(config, config_home, "keywords", "secondary", GEANY_FILETYPES_HAXE, 1, "\
+ Bool Enum Float Int Null Void Dynamic String");
+
+ get_keyfile_keywords(config, config_home, "keywords", "classes", GEANY_FILETYPES_HAXE, 2, "\
+ Array ArrayAccess Class Date DateTools \
+ EReg Enum Hash IntHash IntIter \
+ Iterable Iterator Lambda List Math Protected \
+ Reflect Std StringBuf StringTools Type \
+ UInt ValueType Void Xml XmlType");
+
+ style_sets[GEANY_FILETYPES_HAXE].keywords[3] = NULL;
+
+ get_keyfile_wordchars(config, config_home, &style_sets[GEANY_FILETYPES_HAXE].wordchars);
+ filetypes_get_config(config, config_home, GEANY_FILETYPES_HAXE);
+
+ g_key_file_free(config);
+ g_key_file_free(config_home);
+}
+
+
+void styleset_haxe(ScintillaObject *sci)
+{
+ const filetype_id ft_id = GEANY_FILETYPES_HAXE;
+
+ styleset_common(sci, 5,ft_id);
+ if (style_sets[GEANY_FILETYPES_HAXE].styling == NULL) styleset_haxe_init();
+
+ SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) style_sets[GEANY_FILETYPES_HAXE].wordchars);
+ SSM(sci, SCI_AUTOCSETMAXHEIGHT, app->autocompletion_max_height, 0);
+
+ SSM(sci, SCI_SETLEXER, SCLEX_CPP, 0);
+
+ SSM(sci, SCI_SETCONTROLCHARSYMBOL, 32, 0);
+
+ SSM(sci, SCI_SETKEYWORDS, 0, (sptr_t) style_sets[GEANY_FILETYPES_HAXE].keywords[0]);
+ SSM(sci, SCI_SETKEYWORDS, 1, (sptr_t) style_sets[GEANY_FILETYPES_HAXE].keywords[1]);
+ SSM(sci, SCI_SETKEYWORDS, 2, (sptr_t) style_sets[GEANY_FILETYPES_HAXE].keywords[2]);
+
+ styleset_c_like(sci, GEANY_FILETYPES_HAXE);
+}
+
+
Modified: trunk/src/highlighting.h
===================================================================
--- trunk/src/highlighting.h 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/src/highlighting.h 2007-07-26 09:50:12 UTC (rev 1744)
@@ -99,4 +99,6 @@
void styleset_basic(ScintillaObject *sci);
+void styleset_haxe(ScintillaObject *sci);
+
#endif
Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/src/symbols.c 2007-07-26 09:50:12 UTC (rev 1744)
@@ -599,6 +599,17 @@
NULL);
break;
}
+ case GEANY_FILETYPES_HAXE:
+ {
+ tag_list_add_groups(tag_store,
+ &(tv_iters.tag_struct), _("Interfaces"), NULL,
+ &(tv_iters.tag_class), _("Classes"), "classviewer-class",
+ &(tv_iters.tag_function), _("Methods"), "classviewer-method",
+ &(tv_iters.tag_variable), _("Variables"), "classviewer-var",
+ NULL);
+
+ break;
+ }
case GEANY_FILETYPES_D:
default:
{
Modified: trunk/src/templates.c
===================================================================
--- trunk/src/templates.c 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/src/templates.c 2007-07-26 09:50:12 UTC (rev 1744)
@@ -400,6 +400,7 @@
}
case GEANY_FILETYPES_JS:
+ case GEANY_FILETYPES_HAXE:
{
line_prefix = "//";
break;
Modified: trunk/tagmanager/Makefile.am
===================================================================
--- trunk/tagmanager/Makefile.am 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/tagmanager/Makefile.am 2007-07-26 09:50:12 UTC (rev 1744)
@@ -54,6 +54,7 @@
sh.c\
vhdl.c\
ctags.c\
+ haxe.c\
entry.c\
get.c\
keyword.c\
Added: trunk/tagmanager/haxe.c
===================================================================
--- trunk/tagmanager/haxe.c (rev 0)
+++ trunk/tagmanager/haxe.c 2007-07-26 09:50:12 UTC (rev 1744)
@@ -0,0 +1,218 @@
+/*
+ * Copyright (c) 2007, Ritchie Turner
+ *
+ * This source code is released for free distribution under the terms of the
+ * GNU General Public License.
+ *
+ * borrowed from PHP
+ */
+
+/*
+ * INCLUDE FILES
+ */
+#include "general.h" /* must always come first */
+#include <ctype.h> /* to define isalpha () */
+#include <setjmp.h>
+#ifdef DEBUG
+#include <stdio.h>
+#endif
+#include <string.h>
+#include "main.h"
+#include "entry.h"
+#include "keyword.h"
+#include "parse.h"
+#include "read.h"
+#include "vstring.h"
+
+/*
+ * MACROS
+ */
+#define isType(token,t) (boolean) ((token)->type == (t))
+#define isKeyword(token,k) (boolean) ((token)->keyword == (k))
+
+/*
+ * DATA DEFINITIONS
+ */
+
+//static jmp_buf Exception;
+
+typedef enum {
+ HXTAG_METHODS,
+ HXTAG_CLASS,
+ HXTAG_ENUM,
+ HXTAG_VARIABLE,
+ HXTAG_INTERFACE,
+ HXTAG_COUNT
+} hxKind;
+
+static kindOption HxKinds [] = {
+ { TRUE, 'm', "method", "methods" },
+ { TRUE, 'c', "class", "classes" },
+ { TRUE, 'e', "enums", "enumerations" },
+ { TRUE, 'v', "variable", "variables" },
+ { TRUE, 'i', "interface", "interfaces" }
+
+};
+
+static void findHxTags (void)
+{
+ vString *name = vStringNew ();
+ vString *clsName = vStringNew();
+ vString *scope2 = vStringNew();
+ vString *laccess = vStringNew();
+ const char *const priv = "private";
+ const char *const pub = "public";
+
+ const unsigned char *line;
+
+ while ((line = fileReadLine ()) != NULL)
+ {
+ const unsigned char *cp = line;
+another:
+ while (isspace (*cp))
+ cp++;
+
+ vStringCopyS(laccess,priv);
+
+ if (strncmp ((const char*) cp, "var", (size_t) 3) == 0 &&
+ isspace ((int) cp [3]))
+ {
+ cp += 3;
+
+ while (isspace ((int) *cp))
+ ++cp;
+
+ vStringClear (name);
+ while (isalnum ((int) *cp) || *cp == '_')
+ {
+ vStringPut (name, (int) *cp);
+ ++cp;
+ }
+ vStringTerminate (name);
+ makeSimpleTag (name, HxKinds, HXTAG_VARIABLE);
+ /*
+ makeSimpleScopedTag(name, HxKinds,
+ HXTAG_VARIABLE,vStringValue(clsName),
+ strdup(vStringValue(scope2)),strdup(vStringValue(laccess)));
+ */
+
+ vStringClear (name);
+ }
+ else if (strncmp ((const char*) cp, "function", (size_t) 8) == 0 &&
+ isspace ((int) cp [8]))
+ {
+ cp += 8;
+
+ while (isspace ((int) *cp))
+ ++cp;
+
+ vStringClear (name);
+ while (isalnum ((int) *cp) || *cp == '_')
+ {
+ vStringPut (name, (int) *cp);
+ ++cp;
+ }
+ vStringTerminate (name);
+ makeSimpleTag (name, HxKinds, HXTAG_METHODS);
+ /*
+ makeSimpleScopedTag(name, HxKinds, HXTAG_METHODS,
+ strdup(vStringValue(clsName)),strdup(vStringValue(scope2)),strdup(vStringValue(laccess)));
+
+ */
+
+ vStringClear (name);
+ }
+ else if (strncmp ((const char*) cp, "class", (size_t) 5) == 0 &&
+ isspace ((int) cp [5]))
+ {
+ cp += 5;
+
+ while (isspace ((int) *cp))
+ ++cp;
+ vStringClear (name);
+ while (isalnum ((int) *cp) || *cp == '_')
+ {
+ vStringPut (name, (int) *cp);
+ ++cp;
+ }
+ vStringTerminate (name);
+ makeSimpleTag (name, HxKinds, HXTAG_CLASS);
+ vStringCopy(clsName,name);
+ vStringClear (name);
+ }
+ else if (strncmp ((const char*) cp, "enum", (size_t) 4) == 0 &&
+ isspace ((int) cp [4]))
+ {
+ cp += 4;
+
+ while (isspace ((int) *cp))
+ ++cp;
+ vStringClear (name);
+ while (isalnum ((int) *cp) || *cp == '_')
+ {
+ vStringPut (name, (int) *cp);
+ ++cp;
+ }
+ vStringTerminate (name);
+ makeSimpleTag (name, HxKinds, HXTAG_ENUM);
+ vStringClear (name);
+ } else if (strncmp ((const char*) cp, "public", (size_t) 6) == 0 &&
+ isspace((int) cp [6]))
+ {
+ cp += 6;
+ while (isspace ((int) *cp))
+ ++cp;
+ vStringCopyS(laccess,pub);
+ goto another;
+ } else if (strncmp ((const char*) cp, "static", (size_t) 6) == 0 &&
+ isspace((int) cp [6]))
+ {
+ cp += 6;
+ while (isspace ((int) *cp))
+ ++cp;
+ goto another;
+ } else if (strncmp ((const char*) cp, "interface", (size_t) 9) == 0 &&
+ isspace((int) cp [9]))
+ {
+ cp += 9;
+
+ while (isspace ((int) *cp))
+ ++cp;
+ vStringClear (name);
+ while (isalnum ((int) *cp) || *cp == '_') {
+ vStringPut (name, (int) *cp);
+ ++cp;
+ }
+ vStringTerminate (name);
+ makeSimpleTag (name, HxKinds, HXTAG_INTERFACE);
+ vStringClear (name);
+ }
+
+
+ }
+
+ vStringDelete (name);
+ vStringDelete(clsName);
+ vStringDelete(scope2);
+ vStringDelete(laccess);
+}
+
+
+/* Create parser definition stucture */
+extern parserDefinition* HaxeParser (void)
+{
+ static const char *const extensions [] = { "hx", NULL };
+
+ parserDefinition *const def = parserNew ("Haxe");
+ def->extensions = extensions;
+ /*
+ * New definitions for parsing instead of regex
+ */
+ def->kinds = HxKinds;
+ def->kindCount = KIND_COUNT (HxKinds);
+ def->parser = findHxTags;
+ //def->initialize = initialize;
+ return def;
+}
+
+
Modified: trunk/tagmanager/makefile.win32
===================================================================
--- trunk/tagmanager/makefile.win32 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/tagmanager/makefile.win32 2007-07-26 09:50:12 UTC (rev 1744)
@@ -33,7 +33,7 @@
-$(RM) deps.mak *.o $(COMPLIB)
$(COMPLIB): args.o c.o fortran.o make.o conf.o pascal.o perl.o php.o diff.o vhdl.o lua.o js.o \
-haskell.o python.o regex.o sh.o ctags.o entry.o get.o keyword.o options.o parse.o basic.o \
+haskell.o python.o regex.o sh.o ctags.o entry.o get.o keyword.o options.o parse.o basic.o haxe.o \
read.o sort.o strlist.o latex.o docbook.o tcl.o ruby.o asm.o sql.o css.o vstring.o tm_workspace.o tm_work_object.o \
tm_source_file.o tm_project.o tm_tag.o tm_symbol.o tm_file_entry.o \
tm_tagmanager.o
Modified: trunk/tagmanager/parsers.h
===================================================================
--- trunk/tagmanager/parsers.h 2007-07-25 11:59:34 UTC (rev 1743)
+++ trunk/tagmanager/parsers.h 2007-07-26 09:50:12 UTC (rev 1744)
@@ -41,7 +41,8 @@
JavaScriptParser, \
HaskellParser, \
CsharpParser, \
- FreeBasicParser
+ FreeBasicParser,\
+ HaxeParser
/*
langType of each parser
@@ -72,6 +73,7 @@
24 HaskellParser
25 CsharpParser
26 FreeBasicParser
+27 Haxe
*/
#endif /* _PARSERS_H */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list