Revision: 765 Author: eht16 Date: 2006-08-27 10:39:34 -0700 (Sun, 27 Aug 2006) ViewCVS: http://svn.sourceforge.net/geany/?rev=765&view=rev
Log Message: ----------- Added new filetypes Diff and Ferite.
Modified Paths: -------------- trunk/ChangeLog trunk/data/filetype_extensions.conf trunk/src/filetypes.c trunk/src/filetypes.h trunk/src/highlighting.c trunk/src/highlighting.h trunk/src/msgwindow.c trunk/tagmanager/c.c trunk/tagmanager/parsers.h
Added Paths: ----------- trunk/data/filetypes.diff trunk/data/filetypes.ferite Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-08-26 17:12:55 UTC (rev 764) +++ trunk/ChangeLog 2006-08-27 17:39:34 UTC (rev 765) @@ -1,3 +1,11 @@ +2006-08-27 Enrico Tröger enrico.troeger@uvena.de + + * tagmanager/parsers.h, tagmanager/c.c, data/filetype_extensions.conf, + data/filetypes.diff, data/filetypes.ferite, src/highlighting.c, + src/filetypes.c, src/msgwindow.c: + Added new filetypes Diff and Ferite. + + 2006-08-26 Enrico Tröger enrico.troeger@uvena.de
* src/geany.h, src/main.c, src/utils.c:
Modified: trunk/data/filetype_extensions.conf =================================================================== --- trunk/data/filetype_extensions.conf 2006-08-26 17:12:55 UTC (rev 764) +++ trunk/data/filetype_extensions.conf 2006-08-27 17:39:34 UTC (rev 765) @@ -9,6 +9,7 @@ Pascal=*.pas;*.pp;*.inc;*.dpr;*.dpk; ASM=*.asm; Fortran=*.f;*.f77;*.f90;*.f95;*.for;*.ftn; +Ferite=*.fe; CAML=*.ml;*.mli; Perl=*.pl;*.perl;*.pm; PHP=*.php;*.php3;*.php4;*.php5;*.html;*.htm; @@ -24,4 +25,5 @@ LaTeX=*.tex;*.sty;*.idx; O-Matrix=*.oms; Conf=*.conf;*.ini;config;*rc;*.cfg; +Diff=*.diff;*.patch; None=*;
Added: trunk/data/filetypes.diff =================================================================== --- trunk/data/filetypes.diff (rev 0) +++ trunk/data/filetypes.diff 2006-08-27 17:39:34 UTC (rev 765) @@ -0,0 +1,20 @@ +# For complete documentation of this file, please see Geany's main documentation +[styling] +# foreground;background;bold;italic +default=0x000000;0xffffff;false;false +comment=0x808080;0xffffff;false;false +command=0x7f7f00;0xffffff;false;false +header=0x7f0000;0xffffff;false;false +position=0x00007f;0xffffff;false;false +deleted=0xff2727;0xffffff;false;false +added=0x34b034;0xffffff;false;false + + +[settings] +# the following characters are these which a "word" can contains, see documentation +wordchars=_#&abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + +# only the text before the first --- is a comment +comment_open= +comment_close= +
Added: trunk/data/filetypes.ferite =================================================================== --- trunk/data/filetypes.ferite (rev 0) +++ trunk/data/filetypes.ferite 2006-08-27 17:39:34 UTC (rev 765) @@ -0,0 +1,54 @@ +# For complete documentation of this file, please see Geany's main documentation +[styling] +# foreground;background;bold;italic +default=0x000000;0xffffff;false;false +comment=0xff0000;0xffffff;false;false +commentline=0xff0000;0xffffff;false;false +commentdoc=0xff0000;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=0xff0000;0xffffff;true;false +commentdockeyword=0xff0000;0xffffff;true;true +globalclass=0x1111bb;0xffffff;true;false + +[keywords] +# all items must be in one line +primary=false null self super true abstract alias arguments attribute_missing break case class closure conformsToProtocol constructor default deliver destructor diliver do else extends final fix for function if iferr implements include instanceof method_missing modifies namespace new private protected protocol public recipient rename return static switch uses using while +types=string number array object void +docComment=@brief @class @declaration @description @end @example @extends @function @group @implements @modifies @module @namespace @param @protocol @return @return @static @type @variable @warning + +[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= +# this is an alternative way, so multiline comments are used +#comment_open=/* +#comment_close=*/ + +# set to false if a comment character/string should start at column 0 of a line, true uses any +# indention 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 + +[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=ferite -c "%f" +run_cmd=ferite "%f"
Modified: trunk/src/filetypes.c =================================================================== --- trunk/src/filetypes.c 2006-08-26 17:12:55 UTC (rev 764) +++ trunk/src/filetypes.c 2006-08-27 17:39:34 UTC (rev 765) @@ -58,8 +58,10 @@ FILETYPE_UID_TCL, // 19 FILETYPE_UID_ALL, // 20 FILETYPE_UID_D, // 21 - FILETYPE_UID_FORTRAN // 22 - //FILETYPE_UID_HTML, // 23 + FILETYPE_UID_FORTRAN, // 22 + FILETYPE_UID_DIFF, // 23 + FILETYPE_UID_FERITE // 24 + //FILETYPE_UID_HTML, // 25 };
@@ -98,6 +100,8 @@ case FILETYPE_UID_ALL: return filetypes[GEANY_FILETYPES_ALL]; case FILETYPE_UID_D: return filetypes[GEANY_FILETYPES_D]; case FILETYPE_UID_FORTRAN: return filetypes[GEANY_FILETYPES_FORTRAN]; + case FILETYPE_UID_DIFF: return filetypes[GEANY_FILETYPES_DIFF]; + case FILETYPE_UID_FERITE: return filetypes[GEANY_FILETYPES_FERITE]; //case FILETYPE_UID_HTML: return filetypes[GEANY_FILETYPES_HTML]; default: return NULL; } @@ -397,6 +401,25 @@ filetypes_init_build_programs(filetypes[GEANY_FILETYPES_TCL]); filetypes_create_menu_item(filetype_menu, filetypes[GEANY_FILETYPES_TCL]->title, filetypes[GEANY_FILETYPES_TCL]);
+#define FERITE + filetypes[GEANY_FILETYPES_FERITE] = g_new0(filetype, 1); + filetypes[GEANY_FILETYPES_FERITE]->id = GEANY_FILETYPES_FERITE; + filetypes[GEANY_FILETYPES_FERITE]->uid = FILETYPE_UID_FERITE; + filetypes[GEANY_FILETYPES_FERITE]->item = NULL; + filetypes[GEANY_FILETYPES_FERITE]->lang = 19; + filetypes[GEANY_FILETYPES_FERITE]->name = g_strdup("Ferite"); + filetypes[GEANY_FILETYPES_FERITE]->has_tags = TRUE; + filetypes[GEANY_FILETYPES_FERITE]->title = g_strdup(_("Ferite source file")); + filetypes[GEANY_FILETYPES_FERITE]->extension = g_strdup("fe"); + filetypes[GEANY_FILETYPES_FERITE]->pattern = g_new0(gchar*, 2); + filetypes[GEANY_FILETYPES_FERITE]->pattern[0] = g_strdup("*.fe"); + filetypes[GEANY_FILETYPES_FERITE]->pattern[1] = NULL; + filetypes[GEANY_FILETYPES_FERITE]->style_func_ptr = styleset_ferite; + filetypes[GEANY_FILETYPES_FERITE]->comment_open = g_strdup("/*"); + filetypes[GEANY_FILETYPES_FERITE]->comment_close = g_strdup("*/"); + filetypes_init_build_programs(filetypes[GEANY_FILETYPES_FERITE]); + filetypes_create_menu_item(filetype_menu, filetypes[GEANY_FILETYPES_FERITE]->title, filetypes[GEANY_FILETYPES_FERITE]); + #define SH filetypes[GEANY_FILETYPES_SH] = g_new0(filetype, 1); filetypes[GEANY_FILETYPES_SH]->id = GEANY_FILETYPES_SH; @@ -559,6 +582,26 @@ filetypes_init_build_programs(filetypes[GEANY_FILETYPES_OMS]); filetypes_create_menu_item(filetype_menu, filetypes[GEANY_FILETYPES_OMS]->title, filetypes[GEANY_FILETYPES_OMS]);
+#define DIFF + filetypes[GEANY_FILETYPES_DIFF] = g_new0(filetype, 1); + filetypes[GEANY_FILETYPES_DIFF]->id = GEANY_FILETYPES_DIFF; + filetypes[GEANY_FILETYPES_DIFF]->uid = FILETYPE_UID_DIFF; + filetypes[GEANY_FILETYPES_DIFF]->item = NULL; + filetypes[GEANY_FILETYPES_DIFF]->lang = -2; + filetypes[GEANY_FILETYPES_DIFF]->name = g_strdup("Diff"); + filetypes[GEANY_FILETYPES_DIFF]->has_tags = FALSE; + filetypes[GEANY_FILETYPES_DIFF]->title = g_strdup(_("Diff file")); + filetypes[GEANY_FILETYPES_DIFF]->extension = g_strdup("diff"); + filetypes[GEANY_FILETYPES_DIFF]->pattern = g_new0(gchar*, 3); + filetypes[GEANY_FILETYPES_DIFF]->pattern[0] = g_strdup("*.diff"); + filetypes[GEANY_FILETYPES_DIFF]->pattern[1] = g_strdup("*.patch"); + filetypes[GEANY_FILETYPES_DIFF]->pattern[2] = NULL; + filetypes[GEANY_FILETYPES_DIFF]->style_func_ptr = styleset_diff; + filetypes[GEANY_FILETYPES_DIFF]->comment_open = g_strdup("#"); + filetypes[GEANY_FILETYPES_DIFF]->comment_close = NULL; + filetypes_init_build_programs(filetypes[GEANY_FILETYPES_DIFF]); + filetypes_create_menu_item(filetype_menu, filetypes[GEANY_FILETYPES_DIFF]->title, filetypes[GEANY_FILETYPES_DIFF]); + #define CONF filetypes[GEANY_FILETYPES_CONF] = g_new0(filetype, 1); filetypes[GEANY_FILETYPES_CONF]->id = GEANY_FILETYPES_CONF;
Modified: trunk/src/filetypes.h =================================================================== --- trunk/src/filetypes.h 2006-08-26 17:12:55 UTC (rev 764) +++ trunk/src/filetypes.h 2006-08-27 17:39:34 UTC (rev 765) @@ -47,6 +47,7 @@ GEANY_FILETYPES_PYTHON, GEANY_FILETYPES_RUBY, GEANY_FILETYPES_TCL, + GEANY_FILETYPES_FERITE, GEANY_FILETYPES_SH, GEANY_FILETYPES_MAKE, GEANY_FILETYPES_XML, @@ -58,6 +59,7 @@ GEANY_FILETYPES_SQL, GEANY_FILETYPES_LATEX, GEANY_FILETYPES_OMS, + GEANY_FILETYPES_DIFF, GEANY_FILETYPES_CONF, GEANY_FILETYPES_ALL, GEANY_MAX_FILE_TYPES
Modified: trunk/src/highlighting.c =================================================================== --- trunk/src/highlighting.c 2006-08-26 17:12:55 UTC (rev 764) +++ trunk/src/highlighting.c 2006-08-27 17:39:34 UTC (rev 765) @@ -738,6 +738,58 @@ }
+static void styleset_diff_init(void) +{ + GKeyFile *config = g_key_file_new(); + GKeyFile *config_home = g_key_file_new(); + gchar *f0 = g_strconcat(app->datadir, G_DIR_SEPARATOR_S "filetypes.diff", NULL); + gchar *f = g_strconcat(app->configdir, G_DIR_SEPARATOR_S GEANY_FILEDEFS_SUBDIR G_DIR_SEPARATOR_S "filetypes.diff", NULL); + + styleset_load_file(config, f0, G_KEY_FILE_KEEP_COMMENTS, NULL); + g_key_file_load_from_file(config_home, f, G_KEY_FILE_KEEP_COMMENTS, NULL); + + types[GEANY_FILETYPES_DIFF] = g_new(style_set, 1); + styleset_get_hex(config, config_home, "styling", "default", "0x000000", "0xffffff", "false", types[GEANY_FILETYPES_DIFF]->styling[0]); + styleset_get_hex(config, config_home, "styling", "comment", "0x808080", "0xffffff", "false", types[GEANY_FILETYPES_DIFF]->styling[1]); + styleset_get_hex(config, config_home, "styling", "command", "0x7f7f00", "0xffffff", "false", types[GEANY_FILETYPES_DIFF]->styling[2]); + styleset_get_hex(config, config_home, "styling", "header", "0x7f0000", "0xffffff", "false", types[GEANY_FILETYPES_DIFF]->styling[3]); + styleset_get_hex(config, config_home, "styling", "position", "0x00007f", "0xffffff", "false", types[GEANY_FILETYPES_DIFF]->styling[4]); + styleset_get_hex(config, config_home, "styling", "deleted", "0xff2727", "0xffffff", "false", types[GEANY_FILETYPES_DIFF]->styling[5]); + styleset_get_hex(config, config_home, "styling", "added", "0x34b034", "0xffffff", "false", types[GEANY_FILETYPES_DIFF]->styling[6]); + + types[GEANY_FILETYPES_DIFF]->keywords = NULL; + + styleset_get_wordchars(config, config_home, GEANY_FILETYPES_DIFF, GEANY_WORDCHARS); + filetypes_get_config(config, config_home, GEANY_FILETYPES_DIFF); + + g_key_file_free(config); + g_key_file_free(config_home); + g_free(f0); + g_free(f); +} + + +void styleset_diff(ScintillaObject *sci) +{ + if (types[GEANY_FILETYPES_DIFF] == NULL) styleset_diff_init(); + + styleset_common(sci, 5); + + SSM (sci, SCI_SETLEXER, SCLEX_DIFF, 0); + + SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) types[GEANY_FILETYPES_DIFF]->wordchars); + + styleset_set_style(sci, STYLE_DEFAULT, GEANY_FILETYPES_DIFF, 0); + styleset_set_style(sci, SCE_DIFF_DEFAULT, GEANY_FILETYPES_DIFF, 0); + styleset_set_style(sci, SCE_DIFF_COMMENT, GEANY_FILETYPES_DIFF, 1); + styleset_set_style(sci, SCE_DIFF_COMMAND, GEANY_FILETYPES_DIFF, 2); + styleset_set_style(sci, SCE_DIFF_HEADER, GEANY_FILETYPES_DIFF, 3); + styleset_set_style(sci, SCE_DIFF_POSITION, GEANY_FILETYPES_DIFF, 4); + styleset_set_style(sci, SCE_DIFF_DELETED, GEANY_FILETYPES_DIFF, 5); + styleset_set_style(sci, SCE_DIFF_ADDED, GEANY_FILETYPES_DIFF, 6); +} + + static void styleset_latex_init(void) { GKeyFile *config = g_key_file_new(); @@ -788,7 +840,7 @@ SSM (sci, SCI_SETLEXER, SCLEX_LATEX, 0);
SSM(sci, SCI_SETKEYWORDS, 0, (sptr_t) types[GEANY_FILETYPES_LATEX]->keywords[0]); - SSM (sci, SCI_SETWORDCHARS, 0, (sptr_t) types[GEANY_FILETYPES_LATEX]->wordchars); + SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) types[GEANY_FILETYPES_LATEX]->wordchars);
styleset_set_style(sci, STYLE_DEFAULT, GEANY_FILETYPES_LATEX, 0); styleset_set_style(sci, SCE_L_DEFAULT, GEANY_FILETYPES_LATEX, 0); @@ -846,8 +898,8 @@
styleset_common(sci, 7);
- SSM (sci, SCI_SETPROPERTY, (sptr_t) "phpscript.mode", (sptr_t) "1"); - SSM (sci, SCI_SETLEXER, SCLEX_HTML, 0); + SSM(sci, SCI_SETPROPERTY, (sptr_t) "phpscript.mode", (sptr_t) "1"); + SSM(sci, SCI_SETLEXER, SCLEX_HTML, 0);
SSM(sci, SCI_AUTOCSETMAXHEIGHT, app->autocompletion_max_height, 0);
@@ -2529,3 +2581,97 @@ styleset_set_style(sci, SCE_C_GLOBALCLASS, GEANY_FILETYPES_D, 18); }
+ +static void styleset_ferite_init(void) +{ + GKeyFile *config = g_key_file_new(); + GKeyFile *config_home = g_key_file_new(); + gchar *f0 = g_strconcat(app->datadir, G_DIR_SEPARATOR_S "filetypes.ferite", NULL); + gchar *f = g_strconcat(app->configdir, G_DIR_SEPARATOR_S GEANY_FILEDEFS_SUBDIR G_DIR_SEPARATOR_S "filetypes.ferite", NULL); + + styleset_load_file(config, f0, G_KEY_FILE_KEEP_COMMENTS, NULL); + g_key_file_load_from_file(config_home, f, G_KEY_FILE_KEEP_COMMENTS, NULL); + + types[GEANY_FILETYPES_FERITE] = g_new(style_set, 1); + styleset_get_hex(config, config_home, "styling", "default", "0x000000", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[0]); + styleset_get_hex(config, config_home, "styling", "comment", "0xff0000", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[1]); + styleset_get_hex(config, config_home, "styling", "commentline", "0xff0000", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[2]); + styleset_get_hex(config, config_home, "styling", "commentdoc", "0xff0000", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[3]); + styleset_get_hex(config, config_home, "styling", "number", "0x007f00", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[4]); + styleset_get_hex(config, config_home, "styling", "word", "0x00007f", "0xffffff", "true", types[GEANY_FILETYPES_FERITE]->styling[5]); + styleset_get_hex(config, config_home, "styling", "word2", "0x991111", "0xffffff", "true", types[GEANY_FILETYPES_FERITE]->styling[6]); + styleset_get_hex(config, config_home, "styling", "string", "0xff901e", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[7]); + styleset_get_hex(config, config_home, "styling", "character", "0xff901e", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[8]); + styleset_get_hex(config, config_home, "styling", "uuid", "0x404080", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[9]); + styleset_get_hex(config, config_home, "styling", "preprocessor", "0x007f7f", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[10]); + styleset_get_hex(config, config_home, "styling", "operator", "0x301010", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[11]); + styleset_get_hex(config, config_home, "styling", "identifier", "0x000000", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[12]); + styleset_get_hex(config, config_home, "styling", "stringeol", "0x000000", "0xe0c0e0", "false", types[GEANY_FILETYPES_FERITE]->styling[13]); + styleset_get_hex(config, config_home, "styling", "verbatim", "0x101030", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[14]); + styleset_get_hex(config, config_home, "styling", "regex", "0x105090", "0xffffff", "false", types[GEANY_FILETYPES_FERITE]->styling[15]); + styleset_get_hex(config, config_home, "styling", "commentlinedoc", "0xff0000", "0xffffff", "true", types[GEANY_FILETYPES_FERITE]->styling[16]); + styleset_get_hex(config, config_home, "styling", "commentdockeyword", "0xff0000", "0xffffff", "true", types[GEANY_FILETYPES_FERITE]->styling[17]); + styleset_get_hex(config, config_home, "styling", "globalclass", "0x1111bb", "0xffffff", "true", types[GEANY_FILETYPES_FERITE]->styling[18]); + styleset_get_int(config, config_home, "styling", "styling_within_preprocessor", 1, 0, types[GEANY_FILETYPES_FERITE]->styling[19]); + + types[GEANY_FILETYPES_FERITE]->keywords = g_new(gchar*, 4); + styleset_get_keywords(config, config_home, "keywords", "primary", GEANY_FILETYPES_FERITE, 0, "false null self super true abstract alias arguments attribute_missing break case class closure conformsToProtocol constructor default deliver destructor diliver do else extends final fix for function if iferr implements include instanceof method_missing modifies namespace new private protected protocol public recipient rename return static switch uses using while"); + styleset_get_keywords(config, config_home, "keywords", "types", GEANY_FILETYPES_FERITE, 1, "number string array object void"); + styleset_get_keywords(config, config_home, "keywords", "docComment", GEANY_FILETYPES_FERITE, 2, "@brief @class @declaration @description @end @example @extends @function @group @implements @modifies @module @namespace @param @protocol @return @return @static @type @variable @warning"); + types[GEANY_FILETYPES_FERITE]->keywords[3] = NULL; + + styleset_get_wordchars(config, config_home, GEANY_FILETYPES_FERITE, GEANY_WORDCHARS); + filetypes_get_config(config, config_home, GEANY_FILETYPES_FERITE); + + g_key_file_free(config); + g_key_file_free(config_home); + g_free(f0); + g_free(f); +} + + +void styleset_ferite(ScintillaObject *sci) +{ + if (types[GEANY_FILETYPES_FERITE] == NULL) styleset_ferite_init(); + + styleset_common(sci, 5); + + SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) types[GEANY_FILETYPES_FERITE]->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) types[GEANY_FILETYPES_FERITE]->keywords[0]); + SSM(sci, SCI_SETKEYWORDS, 1, (sptr_t) types[GEANY_FILETYPES_FERITE]->keywords[1]); + SSM(sci, SCI_SETKEYWORDS, 2, (sptr_t) types[GEANY_FILETYPES_FERITE]->keywords[2]); + + styleset_set_style(sci, STYLE_DEFAULT, GEANY_FILETYPES_FERITE, 0); + styleset_set_style(sci, SCE_C_DEFAULT, GEANY_FILETYPES_FERITE, 0); + styleset_set_style(sci, SCE_C_COMMENT, GEANY_FILETYPES_FERITE, 1); + styleset_set_style(sci, SCE_C_COMMENTLINE, GEANY_FILETYPES_FERITE, 2); + styleset_set_style(sci, SCE_C_COMMENTDOC, GEANY_FILETYPES_FERITE, 3); + styleset_set_style(sci, SCE_C_NUMBER, GEANY_FILETYPES_FERITE, 4); + styleset_set_style(sci, SCE_C_WORD, GEANY_FILETYPES_FERITE, 5); + styleset_set_style(sci, SCE_C_WORD2, GEANY_FILETYPES_FERITE, 6); + styleset_set_style(sci, SCE_C_STRING, GEANY_FILETYPES_FERITE, 7); + styleset_set_style(sci, SCE_C_CHARACTER, GEANY_FILETYPES_FERITE, 8); + styleset_set_style(sci, SCE_C_UUID, GEANY_FILETYPES_FERITE, 9); + styleset_set_style(sci, SCE_C_PREPROCESSOR, GEANY_FILETYPES_FERITE, 10); + styleset_set_style(sci, SCE_C_OPERATOR, GEANY_FILETYPES_FERITE, 11); + styleset_set_style(sci, SCE_C_IDENTIFIER, GEANY_FILETYPES_FERITE, 12); + styleset_set_style(sci, SCE_C_STRINGEOL, GEANY_FILETYPES_FERITE, 13); + styleset_set_style(sci, SCE_C_VERBATIM, GEANY_FILETYPES_FERITE, 14); + styleset_set_style(sci, SCE_C_REGEX, GEANY_FILETYPES_FERITE, 15); + styleset_set_style(sci, SCE_C_COMMENTLINEDOC, GEANY_FILETYPES_FERITE, 16); + styleset_set_style(sci, SCE_C_COMMENTDOCKEYWORD, GEANY_FILETYPES_FERITE, 17); + + SSM(sci, SCI_STYLESETFORE, SCE_C_COMMENTDOCKEYWORDERROR, invert(0x0000ff)); + SSM(sci, SCI_STYLESETBACK, SCE_C_COMMENTDOCKEYWORDERROR, invert(0xffffff)); + SSM(sci, SCI_STYLESETITALIC, SCE_C_COMMENTDOCKEYWORDERROR, TRUE); + + // is used for local structs and typedefs + styleset_set_style(sci, SCE_C_GLOBALCLASS, GEANY_FILETYPES_FERITE, 18); +} +
Modified: trunk/src/highlighting.h =================================================================== --- trunk/src/highlighting.h 2006-08-26 17:12:55 UTC (rev 764) +++ trunk/src/highlighting.h 2006-08-27 17:39:34 UTC (rev 765) @@ -92,4 +92,8 @@
void styleset_fortran(ScintillaObject *sci);
+void styleset_diff(ScintillaObject *sci); + +void styleset_ferite(ScintillaObject *sci); + #endif
Modified: trunk/src/msgwindow.c =================================================================== --- trunk/src/msgwindow.c 2006-08-26 17:12:55 UTC (rev 764) +++ trunk/src/msgwindow.c 2006-08-27 17:39:34 UTC (rev 765) @@ -415,6 +415,16 @@ field_idx_file = 2; break; } + case GEANY_FILETYPES_FERITE: + { + // Error: Parse Error: on line 5 in "/misc/tmp/testfiles_geany/hello.fe" + pattern = " ""; + field_min_len = 10; + field_idx_line = 5; + field_idx_file = 8; + break; + } + default: return; }
@@ -441,8 +451,11 @@ if (strncmp(fields[field_idx_file], "./", 2) == 0) skip_dot_slash = 2;
// get the build directory to get the path to look for other files - *filename = g_strconcat(build_info.dir, G_DIR_SEPARATOR_S, - fields[field_idx_file] + skip_dot_slash, NULL); + if (! utils_is_absolute_path(fields[field_idx_file])) + *filename = g_strconcat(build_info.dir, G_DIR_SEPARATOR_S, + fields[field_idx_file] + skip_dot_slash, NULL); + else + *filename = g_strdup(fields[field_idx_file]);
g_strfreev(fields); }
Modified: trunk/tagmanager/c.c =================================================================== --- trunk/tagmanager/c.c 2006-08-26 17:12:55 UTC (rev 764) +++ trunk/tagmanager/c.c 2006-08-27 17:39:34 UTC (rev 765) @@ -76,7 +76,7 @@ KEYWORD_SYNCHRONIZED, KEYWORD_TEMPLATE, KEYWORD_THROW, KEYWORD_THROWS, KEYWORD_TRANSIENT, KEYWORD_TRY, KEYWORD_TYPEDEF, KEYWORD_TYPENAME, - KEYWORD_UNION, KEYWORD_UNSIGNED, KEYWORD_USING, + KEYWORD_UNION, KEYWORD_UNSIGNED, KEYWORD_USES, KEYWORD_USING, KEYWORD_VIRTUAL, KEYWORD_VOID, KEYWORD_VOLATILE, KEYWORD_WCHAR_T } keywordId; @@ -234,6 +234,7 @@ static langType Lang_cpp; static langType Lang_java; static langType Lang_d; +static langType Lang_ferite;
/* Used to index into the CKinds table. */ typedef enum { @@ -326,6 +327,7 @@ { "typename", KEYWORD_TYPENAME, { 0, 1, 0 } }, { "union", KEYWORD_UNION, { 1, 1, 0 } }, { "unsigned", KEYWORD_UNSIGNED, { 1, 1, 0 } }, + { "uses", KEYWORD_USES, { 0, 1, 0 } }, { "using", KEYWORD_USING, { 0, 1, 0 } }, { "virtual", KEYWORD_VIRTUAL, { 0, 1, 0 } }, { "void", KEYWORD_VOID, { 1, 1, 1 } }, @@ -709,7 +711,7 @@ */ if (! partial) st->member.access = st->member.accessDefault; - + /* Init first token */ if (!partial) initToken(st->firstToken); @@ -820,7 +822,9 @@ static const char* accessField (const statementInfo *const st) { const char* result = NULL; - if ((isLanguage (Lang_cpp) || isLanguage (Lang_d)) && st->scope == SCOPE_FRIEND) + + if ((isLanguage (Lang_cpp) || isLanguage (Lang_d) || isLanguage (Lang_ferite)) && + st->scope == SCOPE_FRIEND) result = "friend"; else if (st->member.access != ACCESS_UNDEFINED) result = accessString (st->member.access); @@ -867,7 +871,8 @@ vStringValue (st->parentClasses); } if (st->implementation != IMP_DEFAULT && - (isLanguage (Lang_cpp) || isLanguage (Lang_java) || isLanguage (Lang_d))) + (isLanguage (Lang_cpp) || isLanguage (Lang_java) || + isLanguage (Lang_d) || isLanguage (Lang_ferite))) { tag->extensionFields.implementation = implementationString (st->implementation); @@ -878,7 +883,7 @@ } if ((TRUE == st->gotArgs) && (TRUE == Option.extensionFields.argList) && ((TAG_FUNCTION == type) || (TAG_METHOD == type) || (TAG_PROTOTYPE == type))) { - + if (1) { tag->extensionFields.arglist = getArglistFromPos( tag->filePosition, tag->name); @@ -886,7 +891,7 @@ } break; } - + if ((TAG_FIELD == tag->type) || (TAG_MEMBER == tag->type) || (TAG_EXTERN_VAR == tag->type) || (TAG_TYPEDEF == tag->type) || (TAG_VARIABLE == tag->type) || (TAG_METHOD == tag->type) || @@ -901,7 +906,8 @@
static void addContextSeparator (vString *const scope) { - if (isLanguage (Lang_c) || isLanguage (Lang_cpp) || isLanguage (Lang_d)) + if (isLanguage (Lang_c) || isLanguage (Lang_cpp) || + isLanguage (Lang_d) || isLanguage (Lang_ferite)) vStringCatS (scope, "::"); else if (isLanguage (Lang_java)) vStringCatS (scope, "."); @@ -1004,9 +1010,17 @@ if (isType (token, TOKEN_NAME) && vStringLength (token->name) > 0 /* && includeTag (type, isFileScope) */) { - vString *scope = vStringNew (); + vString *scope; tagEntryInfo e;
+ // take only functions which are introduced by "function ..." + if (type == TAG_FUNCTION && isLanguage (Lang_ferite) && + strncmp("function", st->firstToken->name->buffer, 8) != 0) + { + return; + } + + scope = vStringNew (); initTagEntry (&e, vStringValue (token->name));
e.lineNumber = token->lineNumber; @@ -1427,7 +1441,7 @@ { if (isMember (st)) { - if (isLanguage (Lang_cpp) || isLanguage (Lang_d)) + if (isLanguage (Lang_cpp) || isLanguage (Lang_d) || isLanguage (Lang_ferite)) { int c = skipToNonWhite ();
@@ -1982,7 +1996,8 @@ { if (vStringLength (st->context->name) > 0) { - if (isLanguage (Lang_c) || isLanguage (Lang_cpp) || isLanguage (Lang_d)) + if (isLanguage (Lang_c) || isLanguage (Lang_cpp) || + isLanguage (Lang_d) || isLanguage (Lang_ferite)) vStringCatS (st->context->name, "::"); else if (isLanguage (Lang_java)) vStringCatS (st->context->name, "."); @@ -2005,7 +2020,7 @@ else { cppUngetc (c); - if ((isLanguage (Lang_cpp) || isLanguage (Lang_d)) && ( + if ((isLanguage (Lang_cpp) || isLanguage (Lang_d) || isLanguage (Lang_ferite)) && ( st->declaration == DECL_CLASS || st->declaration == DECL_STRUCT)) { readParents (st, ':'); @@ -2132,7 +2147,7 @@ default: parseGeneralToken (st, c); break; } } while (isType (token, TOKEN_NONE)); - + /* We want to know about non-keyword variable types */ if (TOKEN_NONE == st->firstToken->type) { @@ -2407,9 +2422,15 @@ static void initializeDParser (const langType language) { Lang_d = language; - buildKeywordHash (language, 17); + buildKeywordHash (language, 1); }
+static void initializeFeriteParser (const langType language) +{ + Lang_ferite = language; + buildKeywordHash (language, 1); +} + extern parserDefinition* CParser (void) { static const char *const extensions [] = { "c", "pc", "sc", NULL }; @@ -2425,8 +2446,7 @@ extern parserDefinition* CppParser (void) { static const char *const extensions [] = { - "c++", "cc", "cp", "cpp", "cxx", "h", "h++", "hh", "hp", "hpp", "hxx", -"i", + "c++", "cc", "cp", "cpp", "cxx", "h", "h++", "hh", "hp", "hpp", "hxx", "i", #ifndef CASE_INSENSITIVE_FILENAMES "C", "H", #endif @@ -2465,5 +2485,16 @@ return def; }
+extern parserDefinition* FeriteParser (void) +{ + static const char *const extensions [] = { "fe", NULL }; + parserDefinition* def = parserNew ("Ferite"); + def->kinds = CKinds; + def->kindCount = KIND_COUNT (CKinds); + def->extensions = extensions; + def->parser2 = findCTags; + def->initialize = initializeFeriteParser; + return def; +}
/* vi:set tabstop=8 shiftwidth=4: */
Modified: trunk/tagmanager/parsers.h =================================================================== --- trunk/tagmanager/parsers.h 2006-08-26 17:12:55 UTC (rev 764) +++ trunk/tagmanager/parsers.h 2006-08-27 17:39:34 UTC (rev 765) @@ -33,7 +33,8 @@ TclParser, \ ShParser, \ DParser, \ - FortranParser + FortranParser, \ + FeriteParser
/* langType of each parser @@ -56,6 +57,7 @@ 16 ShParser 17 DParser 18 FortranParser +19 FeriteParser */ #endif /* _PARSERS_H */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.