Esempio n. 1
0
static void
install_support (JSLang *plugin)
{
	const gchar *lang;
	IAnjutaLanguage* lang_manager;

	setPlugin (plugin);

	if (!IANJUTA_IS_EDITOR (plugin->current_editor))
		return;
	lang_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (plugin)->shell,
							IAnjutaLanguage, NULL);
	if (!lang_manager)
		return;
	lang = ianjuta_language_get_name_from_editor (lang_manager,
													   IANJUTA_EDITOR_LANGUAGE (plugin->current_editor), NULL);
	if (!lang || !g_str_equal (lang, "JavaScript"))
		return;

	DEBUG_PRINT ("%s", "JSLang: Install support");

	ianjuta_editor_assist_add (IANJUTA_EDITOR_ASSIST(plugin->current_editor), IANJUTA_PROVIDER(plugin), NULL);
}
Esempio n. 2
0
/* Enable/Disable language-support */
static void
install_support (CppJavaPlugin *lang_plugin)
{
	/* Searching for association */
	gchar *ui_filename = get_text_between (lang_plugin->current_editor,
										   WIDGETS_DECLARATION_MARKER_PREFIX,
										   WIDGETS_DECLARATION_MARKER_SUFFIX);

	if (ui_filename)
	{
		GFile *file = ianjuta_file_get_file (IANJUTA_FILE (lang_plugin->current_editor), NULL);
		gchar *filename = g_file_get_basename (file);

		IAnjutaGlade *glade = anjuta_shell_get_interface (
										  ANJUTA_PLUGIN (lang_plugin)->shell,
										  IAnjutaGlade,
										  NULL);

		ianjuta_glade_add_association (glade, ui_filename, filename, NULL);
	}

    IAnjutaLanguage* lang_manager =
        anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell,
                                    IAnjutaLanguage, NULL);
	
    if (!lang_manager)
        return;

    if (lang_plugin->support_installed)
        return;

    lang_plugin->current_language =
        ianjuta_language_get_name_from_editor (lang_manager,
                                               IANJUTA_EDITOR_LANGUAGE (lang_plugin->current_editor), NULL);

    DEBUG_PRINT("Language support installed for: %s",
                lang_plugin->current_language);

    if (!(lang_plugin->current_language &&
        (g_str_equal (lang_plugin->current_language, "C")
         || g_str_equal (lang_plugin->current_language, "C++")
         || g_str_equal (lang_plugin->current_language, "Vala")
         || g_str_equal (lang_plugin->current_language, "Java"))))
    {
        return;
    }

    init_file_type (lang_plugin);
	
    if (g_str_equal (lang_plugin->current_language, "C" ) ||
        g_str_equal (lang_plugin->current_language, "C++"))
    {
        if (IANJUTA_IS_EDITOR_GLADE_SIGNAL (lang_plugin->current_editor))
        {
            g_signal_connect (lang_plugin->current_editor,
                              "drop-possible", G_CALLBACK (on_glade_drop_possible),
                              lang_plugin);
            g_signal_connect (lang_plugin->current_editor,
                              "drop", G_CALLBACK (on_glade_drop),
                              lang_plugin);
        }

        g_signal_connect (lang_plugin->current_editor,
                          "glade-callback-add",
                          G_CALLBACK (on_glade_callback_add),
                          lang_plugin);

        g_signal_connect (lang_plugin->current_editor,
                          "glade-member-add",
                          G_CALLBACK (on_glade_member_add),
                          lang_plugin);

        lang_plugin->packages = cpp_packages_new (ANJUTA_PLUGIN (lang_plugin));
        cpp_packages_load(lang_plugin->packages, FALSE);
    }

    lang_plugin->support_installed = TRUE;
}
Esempio n. 3
0
static void
install_support (PythonPlugin *lang_plugin)
{	
	IAnjutaLanguage* lang_manager =
		anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell,
									IAnjutaLanguage, NULL);
	IAnjutaSymbolManager* sym_manager = 
		anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell,
		                            IAnjutaSymbolManager,
		                            NULL);
	IAnjutaDocumentManager* docman = 
		anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell,
		                            IAnjutaDocumentManager,
		                            NULL);
		
	if (!lang_manager || !sym_manager || !docman)
		return;
	
	if (lang_plugin->support_installed)
		return;
	
	lang_plugin->current_language = 
		ianjuta_language_get_name_from_editor (lang_manager, 
											   IANJUTA_EDITOR_LANGUAGE (lang_plugin->current_editor), NULL);
	
	if (lang_plugin->current_language &&
		(g_str_equal (lang_plugin->current_language, "Python")))
	{
		g_signal_connect (lang_plugin->current_editor,
						  "char-added",
						  G_CALLBACK (on_editor_char_inserted_python),
						  lang_plugin);
	}
	else
	{
		return;
	}
	
	python_indent_init (lang_plugin);
	/* Disable editor intern auto-indent */
	ianjuta_editor_set_auto_indent (IANJUTA_EDITOR(lang_plugin->current_editor),
								    FALSE, NULL);
	
	if (IANJUTA_IS_EDITOR_ASSIST (lang_plugin->current_editor) )
	{
		AnjutaPlugin *plugin;		
		AnjutaUI *ui;
		IAnjutaEditorAssist* iassist;

		const gchar *project_root;
		gchar *editor_filename;		

		check_support (lang_plugin);
		
		plugin = ANJUTA_PLUGIN (lang_plugin);
		ui = anjuta_shell_get_ui (plugin->shell, NULL);
		iassist = IANJUTA_EDITOR_ASSIST (lang_plugin->current_editor);
		
		g_assert (lang_plugin->assist == NULL);

		project_root = ANJUTA_PLUGIN_PYTHON(plugin)->project_root_directory;
		editor_filename = ANJUTA_PLUGIN_PYTHON(plugin)->current_editor_filename;

		lang_plugin->assist = python_assist_new (iassist,
		                                         sym_manager,
		                                         docman,
		                                         lang_plugin->settings,
		                                         editor_filename,
		                                         project_root);
	}	

	if (IANJUTA_IS_EDITOR_GLADE_SIGNAL (lang_plugin->current_editor))
	{
		g_signal_connect (lang_plugin->current_editor,
		                  "drop-possible", G_CALLBACK (gtk_true), NULL);
		g_signal_connect (lang_plugin->current_editor,
		                  "drop", G_CALLBACK (on_glade_drop),
		                  lang_plugin);
	}

	lang_plugin->support_installed = TRUE;
}