SF.net SVN: geany:[4080] branches/custom-filetypes
ntrel at users.sourceforge.net
ntrel at xxxxx
Fri Aug 14 11:05:47 UTC 2009
Revision: 4080
http://geany.svn.sourceforge.net/geany/?rev=4080&view=rev
Author: ntrel
Date: 2009-08-14 11:05:47 +0000 (Fri, 14 Aug 2009)
Log Message:
-----------
Fix setting wordchars for custom filetypes.
Use style_sets array for custom filetypes too.
Replace styleset_none() with styleset_default().
Modified Paths:
--------------
branches/custom-filetypes/ChangeLog
branches/custom-filetypes/src/highlighting.c
branches/custom-filetypes/src/main.c
Modified: branches/custom-filetypes/ChangeLog
===================================================================
--- branches/custom-filetypes/ChangeLog 2009-08-13 21:59:33 UTC (rev 4079)
+++ branches/custom-filetypes/ChangeLog 2009-08-14 11:05:47 UTC (rev 4080)
@@ -1,3 +1,11 @@
+2009-08-14 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/highlighting.c, src/main.c:
+ Fix setting wordchars for custom filetypes.
+ Use style_sets array for custom filetypes too.
+ Replace styleset_none() with styleset_default().
+
+
2009-08-12 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/templates.c, src/highlighting.c, src/dialogs.c, src/filetypes.c,
Modified: branches/custom-filetypes/src/highlighting.c
===================================================================
--- branches/custom-filetypes/src/highlighting.c 2009-08-13 21:59:33 UTC (rev 4079)
+++ branches/custom-filetypes/src/highlighting.c 2009-08-14 11:05:47 UTC (rev 4080)
@@ -62,7 +62,7 @@
} StyleSet;
/* each filetype has a styleset except GEANY_FILETYPES_NONE, which uses common_style_set */
-static StyleSet style_sets[GEANY_MAX_BUILT_IN_FILETYPES] = {{0, NULL, NULL, NULL}};
+static StyleSet *style_sets = NULL;
enum /* Geany common styling */
@@ -402,7 +402,7 @@
static GeanyLexerStyle *get_style(guint ft_id, guint styling_index)
{
- g_assert(ft_id < GEANY_MAX_BUILT_IN_FILETYPES);
+ g_assert(ft_id < filetypes_array->len);
if (G_UNLIKELY(ft_id == GEANY_FILETYPES_NONE))
{
@@ -432,13 +432,16 @@
void highlighting_free_styles()
{
- gint i;
+ guint i;
- for (i = 0; i < GEANY_MAX_BUILT_IN_FILETYPES; i++)
+ for (i = 0; i < filetypes_array->len; i++)
styleset_free(i);
if (named_style_hash)
g_hash_table_destroy(named_style_hash);
+
+ if (style_sets)
+ g_free(style_sets);
}
@@ -600,10 +603,15 @@
}
-static void styleset_common(ScintillaObject *sci)
+static void styleset_common(ScintillaObject *sci, filetype_id ft_id)
{
SSM(sci, SCI_STYLECLEARALL, 0, 0);
+ SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) (ft_id == GEANY_FILETYPES_NONE ?
+ common_style_set.wordchars : style_sets[ft_id].wordchars));
+ /* have to set whitespace after setting wordchars */
+ SSM(sci, SCI_SETWHITESPACECHARS, 0, (sptr_t) whitespace_chars);
+
/* caret colour, style and width */
SSM(sci, SCI_SETCARETFORE, invert(common_style_set.styling[GCS_CARET].foreground), 0);
SSM(sci, SCI_SETCARETWIDTH, common_style_set.styling[GCS_CARET].background, 0);
@@ -793,13 +801,7 @@
SSM(sci, SCI_SETLEXER, lexer, 0);
- SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) style_sets[ft_id].wordchars);
- /* have to set whitespace after setting wordchars */
- SSM(sci, SCI_SETWHITESPACECHARS, 0, (sptr_t) whitespace_chars);
-
- SSM(sci, SCI_AUTOCSETMAXHEIGHT, editor_prefs.symbolcompletion_max_height, 0);
-
- styleset_common(sci);
+ styleset_common(sci, ft_id);
}
@@ -2164,17 +2166,14 @@
}
-static void styleset_none(ScintillaObject *sci)
+static void styleset_default(ScintillaObject *sci, gint ft_id)
{
SSM(sci, SCI_SETLEXER, SCLEX_NULL, 0);
/* we need to set STYLE_DEFAULT before we call SCI_STYLECLEARALL in styleset_common() */
set_sci_style(sci, STYLE_DEFAULT, GEANY_FILETYPES_NONE, GCS_DEFAULT);
- styleset_common(sci);
-
- SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) common_style_set.wordchars);
- SSM(sci, SCI_SETWHITESPACECHARS, 0, (sptr_t) whitespace_chars);
+ styleset_common(sci, ft_id);
}
@@ -2897,8 +2896,6 @@
{
const filetype_id ft_id = GEANY_FILETYPES_MATLAB;
- styleset_common(sci);
-
apply_filetype_properties(sci, SCLEX_MATLAB, ft_id);
SSM(sci, SCI_SETKEYWORDS, 0, (sptr_t) style_sets[GEANY_FILETYPES_MATLAB].keywords[0]);
@@ -3497,10 +3494,10 @@
/* Called by filetypes_load_config(). */
void highlighting_init_styles(gint filetype_idx, GKeyFile *config, GKeyFile *configh)
{
- if (filetype_idx >= GEANY_MAX_BUILT_IN_FILETYPES)
- return; /* not supported yet */
+ if (!style_sets)
+ style_sets = g_new0(StyleSet, filetypes_array->len);
- /* Clear old information if necessary - e.g. reloading config */
+ /* Clear old information if necessary - e.g. when reloading config */
styleset_free(filetype_idx);
/* All stylesets depend on filetypes.common */
@@ -3619,8 +3616,9 @@
styleset_case(GEANY_FILETYPES_VHDL, styleset_vhdl);
styleset_case(GEANY_FILETYPES_XML, styleset_xml);
styleset_case(GEANY_FILETYPES_YAML, styleset_yaml);
+ case GEANY_FILETYPES_NONE:
default:
- styleset_case(GEANY_FILETYPES_NONE, styleset_none);
+ styleset_default(sci, filetype_idx);
}
}
@@ -3635,7 +3633,7 @@
* @see Scintilla messages @c SCI_STYLEGETFORE, etc, for use with ScintillaFuncs::send_message(). */
const GeanyLexerStyle *highlighting_get_style(gint ft_id, gint style_id)
{
- if (ft_id < 0 || ft_id > GEANY_MAX_BUILT_IN_FILETYPES)
+ if (ft_id < 0 || ft_id >= (gint)filetypes_array->len)
return NULL;
/* ensure filetype loaded */
Modified: branches/custom-filetypes/src/main.c
===================================================================
--- branches/custom-filetypes/src/main.c 2009-08-13 21:59:33 UTC (rev 4079)
+++ branches/custom-filetypes/src/main.c 2009-08-14 11:05:47 UTC (rev 4080)
@@ -1088,7 +1088,6 @@
navqueue_free();
keybindings_free();
filetypes_save_commands();
- filetypes_free_types();
highlighting_free_styles();
templates_free_templates();
msgwin_finalize();
@@ -1103,6 +1102,7 @@
toolbar_finalize();
treeviews_finalize();
configuration_finalize();
+ filetypes_free_types();
log_finalize();
tm_workspace_free(TM_WORK_OBJECT(app->tm_workspace));
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