anjuta r4491 - in trunk: . plugins/symbol-db
- From: mcora svn gnome org
- To: svn-commits-list gnome org
- Subject: anjuta r4491 - in trunk: . plugins/symbol-db
- Date: Sat, 27 Dec 2008 14:11:05 +0000 (UTC)
Author: mcora
Date: Sat Dec 27 14:11:04 2008
New Revision: 4491
URL: http://svn.gnome.org/viewvc/anjuta?rev=4491&view=rev
Log:
* plugins/symbol-db/plugin.c
(on_editor_buffer_symbols_update_timeout), (on_editor_saved):
* plugins/symbol-db/symbol-db-engine-core.c (on_scan_files_end_1),
(sdb_engine_init), (symbol_db_engine_set_ctags_path),
(symbol_db_engine_new), (sdb_engine_add_new_scope_definition),
(sdb_engine_second_pass_update_scope_1):
* plugins/symbol-db/symbol-db-engine-core.h:
fixed #565701 â Anjuta hangs if ctags not installed
* plugins/symbol-db/symbol-db-engine-queries.c
(symbol_db_engine_find_symbol_by_name_pattern):
* plugins/symbol-db/symbol-db-engine-queries.h:
* plugins/symbol-db/symbol-db-engine-utils.c
(symbol_db_glist_compare_func):
* plugins/symbol-db/symbol-db-prefs.c (on_listall_exit):
* plugins/symbol-db/symbol-db-system.c
(sdb_system_files_visit_dir):
* plugins/symbol-db/symbol-db-view.c (symbol_db_view_row_expanded):
code cleaning. strcmp () -> g_strcmp0 ().
Improved query symbol_db_engine_find_symbol_by_name_pattern().
Modified:
trunk/ChangeLog
trunk/plugins/symbol-db/plugin.c
trunk/plugins/symbol-db/symbol-db-engine-core.c
trunk/plugins/symbol-db/symbol-db-engine-core.h
trunk/plugins/symbol-db/symbol-db-engine-queries.c
trunk/plugins/symbol-db/symbol-db-engine-queries.h
trunk/plugins/symbol-db/symbol-db-engine-utils.c
trunk/plugins/symbol-db/symbol-db-prefs.c
trunk/plugins/symbol-db/symbol-db-system.c
trunk/plugins/symbol-db/symbol-db-view.c
Modified: trunk/plugins/symbol-db/plugin.c
==============================================================================
--- trunk/plugins/symbol-db/plugin.c (original)
+++ trunk/plugins/symbol-db/plugin.c Sat Dec 27 14:11:04 2008
@@ -183,7 +183,7 @@
*/
for (i = 0; i < sdb_plugin->buffer_update_files->len; i++)
{
- if (strcmp (g_ptr_array_index (sdb_plugin->buffer_update_files, i),
+ if (g_strcmp0 (g_ptr_array_index (sdb_plugin->buffer_update_files, i),
local_path) == 0)
{
/* hey we found it */
@@ -292,7 +292,7 @@
for (i = 0; i < sdb_plugin->buffer_update_files->len; i++)
{
- if (strcmp (g_ptr_array_index (sdb_plugin->buffer_update_files, i),
+ if (g_strcmp0 (g_ptr_array_index (sdb_plugin->buffer_update_files, i),
local_filename) == 0)
{
DEBUG_PRINT ("already scanning");
Modified: trunk/plugins/symbol-db/symbol-db-engine-core.c
==============================================================================
--- trunk/plugins/symbol-db/symbol-db-engine-core.c (original)
+++ trunk/plugins/symbol-db/symbol-db-engine-core.c Sat Dec 27 14:11:04 2008
@@ -1530,11 +1530,22 @@
static void
on_scan_files_end_1 (AnjutaLauncher * launcher, int child_pid,
int exit_status, gulong time_taken_in_seconds,
- gpointer data)
+ gpointer user_data)
{
- DEBUG_PRINT ("%s", "***** ctags ended *****");
-}
+ SymbolDBEngine *dbe = (SymbolDBEngine *) user_data;
+ SymbolDBEnginePriv *priv;
+
+ g_return_if_fail (user_data != NULL);
+
+ priv = dbe->priv;
+
+ DEBUG_PRINT ("***** ctags ended *****");
+
+ if (priv->shutting_down == TRUE)
+ return;
+ priv->ctags_path = NULL;
+}
static void
sdb_engine_ctags_launcher_create (SymbolDBEngine * dbe)
@@ -2173,7 +2184,7 @@
DYN_QUERY_POPULATE_INIT_NODE(sdbe->priv->dyn_query_list,
DYN_PREP_QUERY_FIND_SYMBOL_NAME_BY_PATTERN,
- FALSE);
+ TRUE);
DYN_QUERY_POPULATE_INIT_NODE(sdbe->priv->dyn_query_list,
DYN_PREP_QUERY_FIND_SYMBOL_BY_NAME_PATTERN_FILTERED,
@@ -2495,13 +2506,13 @@
return our_type;
}
-void
+gboolean
symbol_db_engine_set_ctags_path (SymbolDBEngine * dbe, const gchar * ctags_path)
{
SymbolDBEnginePriv *priv;
- g_return_if_fail (dbe != NULL);
- g_return_if_fail (ctags_path != NULL);
+ g_return_val_if_fail (dbe != NULL, FALSE);
+ g_return_val_if_fail (ctags_path != NULL, FALSE);
priv = dbe->priv;
@@ -2510,13 +2521,13 @@
{
g_warning ("symbol_db_engine_set_ctags_path (): Wrong path for ctags. Keeping "
"the old value %s", priv->ctags_path);
- return;
+ return priv->ctags_path != NULL;
}
/* have we already got it? */
if (priv->ctags_path != NULL &&
- strcmp (priv->ctags_path, ctags_path) == 0)
- return;
+ g_strcmp0 (priv->ctags_path, ctags_path) == 0)
+ return TRUE;
/* free the old value */
g_free (priv->ctags_path);
@@ -2536,6 +2547,7 @@
/* set the new one */
priv->ctags_path = g_strdup (ctags_path);
+ return TRUE;
}
SymbolDBEngine *
@@ -2551,7 +2563,10 @@
priv->mutex = g_mutex_new ();
/* set the mandatory ctags_path */
- symbol_db_engine_set_ctags_path (sdbe, ctags_path);
+ if (!symbol_db_engine_set_ctags_path (sdbe, ctags_path))
+ {
+ return NULL;
+ }
return sdbe;
}
@@ -3723,8 +3738,8 @@
scope = tag_entry->name;
/* filter out 'variable' and 'member' kinds. They define no scope. */
- if (strcmp (tag_entry->kind, "variable") == 0 ||
- strcmp (tag_entry->kind, "member") == 0)
+ if (g_strcmp0 (tag_entry->kind, "variable") == 0 ||
+ g_strcmp0 (tag_entry->kind, "member") == 0)
{
return -1;
}
@@ -4033,7 +4048,7 @@
/* handle special typedef case. Usually we have something like struct:my_foo.
* splitting we have [0]-> struct [1]-> my_foo
*/
- if (strcmp (token_name, "typedef") == 0)
+ if (g_strcmp0 (token_name, "typedef") == 0)
{
free_token_name = TRUE;
token_name = g_strdup (tmp_str_splitted[0]);
Modified: trunk/plugins/symbol-db/symbol-db-engine-core.h
==============================================================================
--- trunk/plugins/symbol-db/symbol-db-engine-core.h (original)
+++ trunk/plugins/symbol-db/symbol-db-engine-core.h Sat Dec 27 14:11:04 2008
@@ -79,7 +79,7 @@
/**
* Set a new path for ctags executable.
*/
-void
+gboolean
symbol_db_engine_set_ctags_path (SymbolDBEngine *dbe,
const gchar * ctags_path);
Modified: trunk/plugins/symbol-db/symbol-db-engine-queries.c
==============================================================================
--- trunk/plugins/symbol-db/symbol-db-engine-queries.c (original)
+++ trunk/plugins/symbol-db/symbol-db-engine-queries.c Sat Dec 27 14:11:04 2008
@@ -1705,11 +1705,9 @@
priv->project_directory);
}
-/**
- * Use this function to find symbols names by patterns like '%foo_func%'
- * that will return a family of my_foo_func_1, your_foo_func_2 etc
- * @pattern must not be NULL.
- */
+#define DYN_FIND_SYMBOL_NAME_BY_PATTERN_EXTRA_PAR_EXACT_MATCH_YES 0x010000
+#define DYN_FIND_SYMBOL_NAME_BY_PATTERN_EXTRA_PAR_EXACT_MATCH_NO 0x020000
+
SymbolDBEngineIterator *
symbol_db_engine_find_symbol_by_name_pattern (SymbolDBEngine *dbe,
const gchar *pattern, SymExtraInfo sym_info)
@@ -1722,8 +1720,9 @@
GdaHolder *param;
const DynChildQueryNode *dyn_node;
GValue *ret_value;
- gboolean ret_bool;
-
+ gboolean ret_bool;
+ const gchar *match_str;
+ gint other_parameters;
g_return_val_if_fail (dbe != NULL, NULL);
priv = dbe->priv;
@@ -1733,8 +1732,24 @@
g_mutex_lock (priv->mutex);
}
+ other_parameters = 0;
+
+ /* check for match */
+ if (g_strrstr (pattern, "%") == NULL)
+ {
+ other_parameters |=
+ DYN_FIND_SYMBOL_NAME_BY_PATTERN_EXTRA_PAR_EXACT_MATCH_YES;
+ match_str = " = ## /* name:'pattern' type:gchararray */";
+ }
+ else
+ {
+ other_parameters |=
+ DYN_FIND_SYMBOL_NAME_BY_PATTERN_EXTRA_PAR_EXACT_MATCH_NO;
+ match_str = " LIKE ## /* name:'pattern' type:gchararray */";
+ }
+
if ((dyn_node = sdb_engine_get_dyn_query_node_by_id (dbe,
- DYN_PREP_QUERY_FIND_SYMBOL_NAME_BY_PATTERN, sym_info, 0)) == NULL)
+ DYN_PREP_QUERY_FIND_SYMBOL_NAME_BY_PATTERN, sym_info, other_parameters)) == NULL)
{
/* info_data contains the stuff after SELECT and befor FROM */
info_data = g_string_new ("");
@@ -1751,12 +1766,11 @@
"symbol.name AS name, symbol.file_position AS file_position, "
"symbol.is_file_scope AS is_file_scope, symbol.signature AS signature "
"%s FROM symbol "
- "%s WHERE symbol.name LIKE ## /* name:'pattern' type:gchararray */",
- info_data->str, join_data->str);
+ "%s WHERE symbol.name %s", info_data->str, join_data->str, match_str);
dyn_node = sdb_engine_insert_dyn_query_node_by_id (dbe,
DYN_PREP_QUERY_FIND_SYMBOL_NAME_BY_PATTERN,
- sym_info, 0,
+ sym_info, other_parameters,
query_str);
g_free (query_str);
Modified: trunk/plugins/symbol-db/symbol-db-engine-queries.h
==============================================================================
--- trunk/plugins/symbol-db/symbol-db-engine-queries.h (original)
+++ trunk/plugins/symbol-db/symbol-db-engine-queries.h Sat Dec 27 14:11:04 2008
@@ -40,8 +40,8 @@
/**
* Use this function to find symbols names by patterns like '%foo_func%'
* that will return a family of my_foo_func_1, your_foo_func_2 etc
- * @name must not be NULL.
- * @name must include the optional '%' character to have a wider match, e.g. "foo_func%"
+ * @param pattern must not be NULL.
+ * It must include the optional '%' character to have a wider match, e.g. "foo_func%"
*/
SymbolDBEngineIterator *
symbol_db_engine_find_symbol_by_name_pattern (SymbolDBEngine *dbe,
Modified: trunk/plugins/symbol-db/symbol-db-engine-utils.c
==============================================================================
--- trunk/plugins/symbol-db/symbol-db-engine-utils.c (original)
+++ trunk/plugins/symbol-db/symbol-db-engine-utils.c Sat Dec 27 14:11:04 2008
@@ -52,7 +52,7 @@
gint
symbol_db_glist_compare_func (gconstpointer a, gconstpointer b)
{
- return strcmp ((const gchar*)a, (const gchar*)b);
+ return g_strcmp0 ((const gchar*)a, (const gchar*)b);
}
gint
Modified: trunk/plugins/symbol-db/symbol-db-prefs.c
==============================================================================
--- trunk/plugins/symbol-db/symbol-db-prefs.c (original)
+++ trunk/plugins/symbol-db/symbol-db-prefs.c Sat Dec 27 14:11:04 2008
@@ -125,12 +125,6 @@
DEBUG_PRINT ("%s", "on_gconf_notify_prefs ()");
}
-static gint
-pkg_list_compare (gconstpointer a, gconstpointer b)
-{
- return strcmp ((const gchar*)a, (const gchar*)b);
-}
-
static void
on_listall_output (AnjutaLauncher * launcher,
AnjutaLauncherOutputType output_type,
@@ -213,7 +207,7 @@
return;
}
- priv->pkg_list = g_list_sort (priv->pkg_list, pkg_list_compare);
+ priv->pkg_list = g_list_sort (priv->pkg_list, symbol_db_glist_compare_func);
item = priv->pkg_list;
while (item != NULL)
Modified: trunk/plugins/symbol-db/symbol-db-system.c
==============================================================================
--- trunk/plugins/symbol-db/symbol-db-system.c (original)
+++ trunk/plugins/symbol-db/symbol-db-system.c Sat Dec 27 14:11:04 2008
@@ -348,8 +348,8 @@
if (info->type == GNOME_VFS_FILE_TYPE_DIRECTORY)
{
- if (strcmp (info->name, ".") == 0 ||
- strcmp (info->name, "..") == 0)
+ if (g_strcmp0 (info->name, ".") == 0 ||
+ g_strcmp0 (info->name, "..") == 0)
continue;
gchar *tmp = g_strdup_printf ("%s/%s", uri, info->name);
Modified: trunk/plugins/symbol-db/symbol-db-view.c
==============================================================================
--- trunk/plugins/symbol-db/symbol-db-view.c (original)
+++ trunk/plugins/symbol-db/symbol-db-view.c Sat Dec 27 14:11:04 2008
@@ -1233,7 +1233,7 @@
iter_node = SYMBOL_DB_ENGINE_ITERATOR_NODE (iterator);
symbol_kind = symbol_db_engine_iterator_node_get_symbol_extra_string (
iter_node, SYMINFO_KIND);
- if (strcmp (symbol_kind, "namespace") == 0)
+ if (g_strcmp0 (symbol_kind, "namespace") == 0)
{
sdb_view_namespace_row_expanded (dbv, dbe, expanded_iter,
expanded_symbol_id);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]