From 14e61b9bdb228d0bc9ae4d31c30edb0b249c5e0d Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Tue, 6 Apr 2010 16:37:27 +0000 Subject: [PATCH] Re-detect any document filetypes set to None after reloading filetype extensions (closes #2979661). git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4803 ea778897-0a13-0410-b9d1-a72fbfd435f5 --- ChangeLog | 7 +++++++ src/filetypes.c | 15 ++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 440f2074b..bcf8c3682 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2010-04-06 Nick Treleaven + + * src/filetypes.c: + Re-detect any document filetypes set to None after reloading + filetype extensions (closes #2979661). + + 2010-04-05 Enrico Tröger * data/filetypes.perl: diff --git a/src/filetypes.c b/src/filetypes.c index 68deaf64d..f9ebef731 100644 --- a/src/filetypes.c +++ b/src/filetypes.c @@ -1579,7 +1579,6 @@ void filetypes_read_extensions(void) "filetype_extensions.conf", NULL); gchar *userconfigfile = g_strconcat(app->configdir, G_DIR_SEPARATOR_S, "filetype_extensions.conf", NULL); - gchar **list; GKeyFile *sysconfig = g_key_file_new(); GKeyFile *userconfig = g_key_file_new(); @@ -1591,20 +1590,30 @@ void filetypes_read_extensions(void) { gboolean userset = g_key_file_has_key(userconfig, "Extensions", filetypes[i]->name, NULL); - list = g_key_file_get_string_list( + gchar **list = g_key_file_get_string_list( (userset) ? userconfig : sysconfig, "Extensions", filetypes[i]->name, &len, NULL); + if (G_LIKELY(list) && G_LIKELY(len > 0)) { g_strfreev(filetypes[i]->pattern); filetypes[i]->pattern = list; } - else g_strfreev(list); + else + g_strfreev(list); } g_free(sysconfigfile); g_free(userconfigfile); g_key_file_free(sysconfig); g_key_file_free(userconfig); + + foreach_document(i) + { + GeanyDocument *doc = documents[i]; + if (doc->file_type->id != GEANY_FILETYPES_NONE) + continue; + document_set_filetype(doc, filetypes_detect_from_document(doc)); + } } -- 2.11.4.GIT