SF.net SVN: geany:[5740] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Tue Apr 26 15:01:04 UTC 2011
Revision: 5740
http://geany.svn.sourceforge.net/geany/?rev=5740&view=rev
Author: ntrel
Date: 2011-04-26 15:01:04 +0000 (Tue, 26 Apr 2011)
Log Message:
-----------
Make filetype groups configurable using [Groups] in
filetype_extensions.conf.
Read filetype_extensions.conf when calling filetypes_init_types(),
don't require doclist initialization.
Modified Paths:
--------------
trunk/ChangeLog
trunk/data/filetype_extensions.conf
trunk/src/filetypes.c
trunk/src/filetypes.h
trunk/src/main.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2011-04-26 13:52:43 UTC (rev 5739)
+++ trunk/ChangeLog 2011-04-26 15:01:04 UTC (rev 5740)
@@ -1,3 +1,13 @@
+2011-04-26 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/filetypes.c, src/filetypes.h, src/main.c,
+ data/filetype_extensions.conf:
+ Make filetype groups configurable using [Groups] in
+ filetype_extensions.conf.
+ Read filetype_extensions.conf when calling filetypes_init_types(),
+ don't require doclist initialization.
+
+
2011-04-26 Colomban Wendling <colomban(at)geany(dot)org>
* src/callbacks.c, src/document.c, src/document.h,
Modified: trunk/data/filetype_extensions.conf
===================================================================
--- trunk/data/filetype_extensions.conf 2011-04-26 13:52:43 UTC (rev 5739)
+++ trunk/data/filetype_extensions.conf 2011-04-26 15:01:04 UTC (rev 5740)
@@ -56,3 +56,11 @@
XML=*.xml;*.sgml;*.xsl;*.xslt;*.xsd;*.xhtml;
YAML=*.yaml;*.yml;
None=*;
+
+# Note: restarting is required after editing groups
+[Groups]
+Compiled=Genie;Scala;
+Script=Typoscript;
+Markup=
+Misc=
+None=
Modified: trunk/src/filetypes.c
===================================================================
--- trunk/src/filetypes.c 2011-04-26 13:52:43 UTC (rev 5739)
+++ trunk/src/filetypes.c 2011-04-26 15:01:04 UTC (rev 5740)
@@ -64,6 +64,7 @@
static void create_radio_menu_item(GtkWidget *menu, GeanyFiletype *ftype);
static gchar *filetypes_get_conf_extension(gint filetype_idx);
+static void read_filetype_config(void);
enum TitleType
@@ -637,6 +638,8 @@
/* sort last instead of on insertion to prevent exponential time */
filetypes_by_title = g_slist_sort_with_data(filetypes_by_title,
cmp_filetype, GINT_TO_POINTER(FALSE));
+
+ read_filetype_config();
}
@@ -648,7 +651,7 @@
f = utils_build_path(app->configdir, "filetype_extensions.conf", NULL);
if (utils_str_equal(doc->real_path, f))
- filetypes_read_extensions();
+ filetypes_reload_extensions();
g_free(f);
f = utils_build_path(app->configdir, GEANY_FILEDEFS_SUBDIR, "filetypes.common", NULL);
@@ -725,6 +728,7 @@
GSList *node;
filetypes_init_types();
+
/* this has to be here as GTK isn't initialized in filetypes_init_types(). */
foreach_slist(node, filetypes_by_title)
{
@@ -1601,20 +1605,11 @@
#endif
-void filetypes_read_extensions(void)
+static void read_extensions(GKeyFile *sysconfig, GKeyFile *userconfig)
{
guint i;
gsize len = 0;
- gchar *sysconfigfile = g_strconcat(app->datadir, G_DIR_SEPARATOR_S,
- "filetype_extensions.conf", NULL);
- gchar *userconfigfile = g_strconcat(app->configdir, G_DIR_SEPARATOR_S,
- "filetype_extensions.conf", NULL);
- GKeyFile *sysconfig = g_key_file_new();
- GKeyFile *userconfig = g_key_file_new();
- g_key_file_load_from_file(sysconfig, sysconfigfile, G_KEY_FILE_NONE, NULL);
- g_key_file_load_from_file(userconfig, userconfigfile, G_KEY_FILE_NONE, NULL);
-
/* read the keys */
for (i = 0; i < filetypes_array->len; i++)
{
@@ -1633,12 +1628,65 @@
convert_filetype_extensions_to_lower_case(filetypes[i]->pattern, len);
#endif
}
+}
+
+static void read_group(GKeyFile *config, const gchar *group_name, gint group_id)
+{
+ gchar **names = g_key_file_get_string_list(config, "Groups", group_name, NULL, NULL);
+ gchar **name;
+
+ foreach_strv(name, names)
+ {
+ GeanyFiletype *ft = filetypes_lookup_by_name(*name);
+
+ if (ft)
+ ft->group = group_id;
+ else
+ geany_debug("Filetype '%s' not found for group '%s'!", *name, group_name);
+ }
+}
+
+
+static void read_groups(GKeyFile *config)
+{
+ read_group(config, "Compiled", GEANY_FILETYPE_GROUP_COMPILED);
+ read_group(config, "Script", GEANY_FILETYPE_GROUP_SCRIPT);
+ read_group(config, "Markup", GEANY_FILETYPE_GROUP_MARKUP);
+ read_group(config, "Misc", GEANY_FILETYPE_GROUP_MISC);
+ read_group(config, "None", GEANY_FILETYPE_GROUP_NONE);
+}
+
+
+static void read_filetype_config(void)
+{
+ gchar *sysconfigfile = g_strconcat(app->datadir, G_DIR_SEPARATOR_S,
+ "filetype_extensions.conf", NULL);
+ gchar *userconfigfile = g_strconcat(app->configdir, G_DIR_SEPARATOR_S,
+ "filetype_extensions.conf", NULL);
+ GKeyFile *sysconfig = g_key_file_new();
+ GKeyFile *userconfig = g_key_file_new();
+
+ g_key_file_load_from_file(sysconfig, sysconfigfile, G_KEY_FILE_NONE, NULL);
+ g_key_file_load_from_file(userconfig, userconfigfile, G_KEY_FILE_NONE, NULL);
+
+ read_extensions(sysconfig, userconfig);
+ read_groups(sysconfig);
+ read_groups(userconfig);
+
g_free(sysconfigfile);
g_free(userconfigfile);
g_key_file_free(sysconfig);
g_key_file_free(userconfig);
+}
+
+void filetypes_reload_extensions(void)
+{
+ guint i;
+
+ read_filetype_config();
+
/* Redetect filetype of any documents with none set */
foreach_document(i)
{
Modified: trunk/src/filetypes.h
===================================================================
--- trunk/src/filetypes.h 2011-04-26 13:52:43 UTC (rev 5739)
+++ trunk/src/filetypes.h 2011-04-26 15:01:04 UTC (rev 5740)
@@ -175,7 +175,7 @@
void filetypes_init_types(void);
-void filetypes_read_extensions(void);
+void filetypes_reload_extensions(void);
void filetypes_reload(void);
Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c 2011-04-26 13:52:43 UTC (rev 5739)
+++ trunk/src/main.c 2011-04-26 15:01:04 UTC (rev 5740)
@@ -564,12 +564,9 @@
{
gboolean ret;
- document_init_doclist();
filetypes_init_types();
- filetypes_read_extensions(); /* needed for *.lang.tags filetype matching */
ret = symbols_generate_global_tags(*argc, *argv, ! no_preprocessing);
filetypes_free_types();
- document_finalize();
exit(ret);
}
@@ -1044,7 +1041,6 @@
navqueue_init();
document_init_doclist();
symbols_init();
- filetypes_read_extensions();
editor_snippets_init();
/* set window icon */
@@ -1277,9 +1273,7 @@
editor_snippets_free();
editor_snippets_init();
- /* reload filetype extensions */
- filetypes_read_extensions();
-
+ filetypes_reload_extensions();
filetypes_reload();
/* C tag names to ignore */
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