SF.net SVN: geany: [2561] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Thu May 8 14:16:36 UTC 2008
Revision: 2561
http://geany.svn.sourceforge.net/geany/?rev=2561&view=rev
Author: ntrel
Date: 2008-05-08 07:16:35 -0700 (Thu, 08 May 2008)
Log Message:
-----------
Fix C headers getting detected as C++ files (iterate through
filetypes_array, not filetypes_hash as the order is not consistent
with the filetype_id enum).
Add static function filetypes_find_source().
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/filetypes.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-05-07 16:32:23 UTC (rev 2560)
+++ trunk/ChangeLog 2008-05-08 14:16:35 UTC (rev 2561)
@@ -1,3 +1,12 @@
+2008-05-08 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/filetypes.c:
+ Fix C headers getting detected as C++ files (iterate through
+ filetypes_array, not filetypes_hash as the order is not consistent
+ with the filetype_id enum).
+ Add static function filetypes_find_source().
+
+
2008-05-07 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/templates.c, src/build.c, src/utils.c, src/win32.c,
Modified: trunk/src/filetypes.c
===================================================================
--- trunk/src/filetypes.c 2008-05-07 16:32:23 UTC (rev 2560)
+++ trunk/src/filetypes.c 2008-05-08 14:16:35 UTC (rev 2561)
@@ -537,17 +537,34 @@
}
-static gboolean match_basename(G_GNUC_UNUSED gpointer key, gpointer value, gpointer user_data)
+typedef gboolean FileTypesPredicate(filetype *ft, gpointer user_data);
+
+/* Find a filetype that predicate returns TRUE for, otherwise return NULL.
+ * Only search source file filetypes. */
+static filetype *filetypes_find_source(FileTypesPredicate predicate, gpointer user_data)
{
- filetype *ft = value;
+ guint i;
+
+ for (i = 0; i < filetypes_array->len; i++)
+ {
+ filetype *ft = filetypes[i];
+
+ if (i == GEANY_FILETYPES_NONE)
+ continue; /* None is not for source files */
+
+ if (predicate(ft, user_data))
+ return ft;
+ }
+ return NULL;
+}
+
+
+static gboolean match_basename(filetype *ft, gpointer user_data)
+{
const gchar *base_filename = user_data;
gint j;
gboolean ret = FALSE;
- /* Don't match '*' because it comes before any custom filetypes */
- if (ft->id == GEANY_FILETYPES_NONE)
- return FALSE;
-
for (j = 0; ft->pattern[j] != NULL; j++)
{
GPatternSpec *pattern = g_pattern_spec_new(ft->pattern[j]);
@@ -578,7 +595,7 @@
setptr(base_filename, g_utf8_strdown(base_filename, -1));
#endif
- ft = g_hash_table_find(filetypes_hash, match_basename, base_filename);
+ ft = filetypes_find_source(match_basename, base_filename);
if (ft == NULL)
ft = filetypes[GEANY_FILETYPES_NONE];
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