diff --git a/plugins/language-support-cpp-java/plugin.c b/plugins/language-support-cpp-java/plugin.c index 76dac50..ba6f142 100644 --- a/plugins/language-support-cpp-java/plugin.c +++ b/plugins/language-support-cpp-java/plugin.c @@ -827,7 +827,7 @@ static gchar *generate_widget_member_init_str(gchar *widget_name) } static gboolean insert_after_mark (IAnjutaEditor* editor, gchar* mark, -gchar* code_to_add) +gchar* code_to_add, CppJavaPlugin *lang_plugin) { IAnjutaIterable* mark_position; mark_position = language_support_get_mark_position (editor, mark); @@ -835,6 +835,66 @@ gchar* code_to_add) return FALSE; ianjuta_editor_insert (editor, mark_position, code_to_add, -1, NULL); + int line = ianjuta_editor_get_line_from_position (editor, mark_position, NULL); + gchar *filename = ianjuta_document_get_filename (IANJUTA_DOCUMENT (editor), NULL); + + + IAnjutaSymbolManager *symbol_manager = + anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell, IAnjutaSymbolManager, NULL); + IAnjutaSymbolQuery *query_scope = + ianjuta_symbol_manager_create_query (symbol_manager, + IANJUTA_SYMBOL_QUERY_SEARCH_SCOPE, + IANJUTA_SYMBOL_QUERY_DB_PROJECT, NULL); + + if (query_scope) printf("Query creation sucessful!\n"); + + printf ("Inserting in line %d in file %s.\n", line, filename); + + printf ("Trying to get scope...\n"); + GFile *file = ianjuta_file_get_file (IANJUTA_FILE(editor), NULL); + gchar* path = g_file_get_path (file); + printf ("File complete path is %s.\n", path); + IAnjutaIterable* scope = + ianjuta_symbol_query_search_scope (query_scope, + path, + line, + NULL); + + if (scope) { + printf ("Scope found!\n"); + gchar* symbol_name; + symbol_name = ianjuta_symbol_get_string (IANJUTA_SYMBOL(scope), + IANJUTA_SYMBOL_FIELD_NAME, + NULL); + printf ("Scope: %s.\n", symbol_name); + + printf ("Preparing members query...\n"); + + IAnjutaSymbolQuery *query_members = + ianjuta_symbol_manager_create_query (symbol_manager, + IANJUTA_SYMBOL_QUERY_SEARCH_MEMBERS, + IANJUTA_SYMBOL_QUERY_DB_PROJECT, + NULL); + + + if (query_members) { + printf ("Members query creation sucessful!\n"); + printf ("Querying...\n"); + IAnjutaIterable *members = + ianjuta_symbol_query_search_members (query_members, IANJUTA_SYMBOL(scope), NULL); + + if (members) { + printf ("Members found!\n"); + do { + IAnjutaSymbol *symbol = IANJUTA_SYMBOL (members); + printf ("%s\n", ianjuta_symbol_get_string (symbol, + IANJUTA_SYMBOL_FIELD_NAME, NULL)); + }while (ianjuta_iterable_next (members, NULL)); + + + } else printf ("No members found :(\n"); + } + } /* Emit code-added signal, so symbols will be updated */ g_signal_emit_by_name (G_OBJECT (editor), "code-added", mark_position, code_to_add); @@ -852,8 +912,8 @@ static void insert_member_decl_and_init (IAnjutaEditor* editor, gchar* widget_na status = anjuta_shell_get_status (ANJUTA_PLUGIN (lang_plugin)->shell, NULL); - if(insert_after_mark (editor, "/* ANJUTA: Widgets declaration - DO NOT REMOVE */", member_decl) && - insert_after_mark (editor, "/* ANJUTA: Widgets initialization - DO NOT REMOVE */", member_init)) + if(insert_after_mark (editor, "/* ANJUTA: Widgets declaration - DO NOT REMOVE */", member_decl, lang_plugin) && + insert_after_mark (editor, "/* ANJUTA: Widgets initialization - DO NOT REMOVE */", member_init, lang_plugin)) anjuta_status_set (status, _("Code added for widget.")); g_free (member_decl);