SF.net SVN: geany:[3603] trunk

frlan at users.sourceforge.net frlan at xxxxx
Thu Feb 26 01:25:38 UTC 2009


Revision: 3603
          http://geany.svn.sourceforge.net/geany/?rev=3603&view=rev
Author:   frlan
Date:     2009-02-26 01:25:38 +0000 (Thu, 26 Feb 2009)

Log Message:
-----------
Removed deprecated plugin VC Diff. Please use geanyVC instead

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/plugins/Makefile.am
    trunk/po/POTFILES.in
    trunk/wscript

Removed Paths:
-------------
    trunk/plugins/vcdiff.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-02-25 23:29:34 UTC (rev 3602)
+++ trunk/ChangeLog	2009-02-26 01:25:38 UTC (rev 3603)
@@ -1,3 +1,9 @@
+2009-02-26  Frank Lanitz  <frank(at)frank(dot)uvena(dot)de>
+
+ * plugins/vcdiff.c, plugins/Makefile.am, po/POTFILES.in:
+   Removed deprecated plugin VC Diff
+
+
 2009-02-25  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * src/templates.c:

Modified: trunk/plugins/Makefile.am
===================================================================
--- trunk/plugins/Makefile.am	2009-02-25 23:29:34 UTC (rev 3602)
+++ trunk/plugins/Makefile.am	2009-02-26 01:25:38 UTC (rev 3603)
@@ -24,7 +24,6 @@
 classbuilder_la_LDFLAGS  = -module -avoid-version
 htmlchars_la_LDFLAGS     = -module -avoid-version
 export_la_LDFLAGS        = -module -avoid-version
-vcdiff_la_LDFLAGS        = -module -avoid-version
 saveactions_la_LDFLAGS   = -module -avoid-version
 filebrowser_la_LDFLAGS   = -module -avoid-version
 splitwindow_la_LDFLAGS   = -module -avoid-version
@@ -51,7 +50,6 @@
 	classbuilder.dll \
 	htmlchars.dll \
 	export.dll \
-	vcdiff.dll \
 	saveactions.dll \
 	filebrowser.dll
 # Split Window is broken on Windows
@@ -71,7 +69,6 @@
 	classbuilder.la \
 	htmlchars.la \
 	export.la \
-	vcdiff.la \
 	saveactions.la \
 	filebrowser.la \
 	splitwindow.la
@@ -84,7 +81,6 @@
 classbuilder_la_SOURCES  = classbuilder.c
 htmlchars_la_SOURCES     = htmlchars.c
 export_la_SOURCES        = export.c
-vcdiff_la_SOURCES        = vcdiff.c
 saveactions_la_SOURCES   = saveactions.c
 filebrowser_la_SOURCES   = filebrowser.c
 splitwindow_la_SOURCES   = splitwindow.c
@@ -94,7 +90,6 @@
 classbuilder_la_LIBADD  = $(GTK_LIBS)
 htmlchars_la_LIBADD     = $(GTK_LIBS)
 export_la_LIBADD        = $(GTK_LIBS)
-vcdiff_la_LIBADD        = $(GTK_LIBS)
 saveactions_la_LIBADD   = $(GTK_LIBS)
 filebrowser_la_LIBADD   = $(GTK_LIBS)
 splitwindow_la_LIBADD   = $(GTK_LIBS)

Deleted: trunk/plugins/vcdiff.c
===================================================================
--- trunk/plugins/vcdiff.c	2009-02-25 23:29:34 UTC (rev 3602)
+++ trunk/plugins/vcdiff.c	2009-02-26 01:25:38 UTC (rev 3603)
@@ -1,561 +0,0 @@
-/*
- *      vcdiff.c - this file is part of Geany, a fast and lightweight IDE
- *
- *      Copyright 2007-2009 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
- *      Copyright 2007-2009 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
- *      Copyright 2007-2009 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
- *      Copyright 2007-2008 Yura Siamashka <yurand2(at)gmail(dot)com>
- *
- *      This program is free software; you can redistribute it and/or modify
- *      it under the terms of the GNU General Public License as published by
- *      the Free Software Foundation; either version 2 of the License, or
- *      (at your option) any later version.
- *
- *      This program is distributed in the hope that it will be useful,
- *      but WITHOUT ANY WARRANTY; without even the implied warranty of
- *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *      GNU General Public License for more details.
- *
- *      You should have received a copy of the GNU General Public License
- *      along with this program; if not, write to the Free Software
- *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-/* Version Diff plugin */
-/* This small plugin uses svn/git/etc. to generate a diff against the current
- * version inside version control.
- * Which VC program to use is detected by looking for a version control subdirectory,
- * e.g. ".svn". */
-
-#include "geany.h"
-#include <string.h>
-
-#include "support.h"
-#include "plugindata.h"
-#include "document.h"
-#include "editor.h"
-#include "filetypes.h"
-#include "utils.h"
-#include "project.h"
-#include "ui_utils.h"
-#include "geanyfunctions.h"
-
-#define project	geany->app->project
-
-
-GeanyData		*geany_data;
-GeanyFunctions	*geany_functions;
-
-
-PLUGIN_VERSION_CHECK(GEANY_API_VERSION)
-
-PLUGIN_SET_INFO(_("Version Diff"), _("Creates a patch of a file against version control."), VERSION,
-	_("The Geany developer team"))
-
-
-static GtkWidget *main_menu_item = NULL;
-
-
-enum
-{
-	VC_COMMAND_DIFF_FILE,
-	VC_COMMAND_DIFF_DIR,
-	VC_COMMAND_DIFF_PROJECT
-};
-
-/* The addresses of these strings act as enums, their contents are not used. */
-static const gchar DIRNAME[] = "*DIRNAME*";
-static const gchar FILENAME[] = "*FILENAME*";
-static const gchar BASE_FILENAME[] = "*BASE_FILENAME*";
-
-
-static const gchar* SVN_CMD_DIFF_FILE[] = {"svn", "diff", "--non-interactive", FILENAME, NULL};
-static const gchar* SVN_CMD_DIFF_DIR[]  = {"svn", "diff", "--non-interactive", DIRNAME, NULL};
-static const gchar* SVN_CMD_DIFF_PROJECT[] = {"svn", "diff", "--non-interactive", DIRNAME, NULL};
-
-static void* SVN_COMMANDS[] = { SVN_CMD_DIFF_FILE, SVN_CMD_DIFF_DIR, SVN_CMD_DIFF_PROJECT };
-
-
-static const gchar* CVS_CMD_DIFF_FILE[] = {"cvs", "diff", "-u", BASE_FILENAME, NULL};
-static const gchar* CVS_CMD_DIFF_DIR[]  = {"cvs", "diff", "-u",NULL};
-static const gchar* CVS_CMD_DIFF_PROJECT[] = {"cvs", "diff", "-u", NULL};
-
-static void* CVS_COMMANDS[] = { CVS_CMD_DIFF_FILE, CVS_CMD_DIFF_DIR, CVS_CMD_DIFF_PROJECT };
-
-
-static const gchar* GIT_CMD_DIFF_FILE[] = {"git", "diff", "HEAD", "--", BASE_FILENAME,  NULL};
-static const gchar* GIT_CMD_DIFF_DIR[]  = {"git", "diff", "HEAD", NULL};
-static const gchar* GIT_CMD_DIFF_PROJECT[] = {"git", "diff", "HEAD", NULL};
-
-static const gchar* GIT_ENV_DIFF_FILE[] = {"PAGER=cat", NULL};
-static const gchar* GIT_ENV_DIFF_DIR[]  = {"PAGER=cat", NULL};
-static const gchar* GIT_ENV_DIFF_PROJECT[] = {"PAGER=cat", NULL};
-
-static void* GIT_COMMANDS[] = { GIT_CMD_DIFF_FILE, GIT_CMD_DIFF_DIR, GIT_CMD_DIFF_PROJECT };
-static void* GIT_ENV[]      = { GIT_ENV_DIFF_FILE, GIT_ENV_DIFF_DIR, GIT_ENV_DIFF_PROJECT };
-
-
-typedef struct VC_RECORD
-{
-	void** commands;
-	void** envs;
-	const gchar *program;
-	const gchar *subdir;	/* version control subdirectory, e.g. ".svn" */
-	gboolean check_parents;	/* check parent dirs to find subdir */
-} VC_RECORD;
-
-
-static void *NO_ENV[] = {NULL, NULL, NULL};
-
-/* Adding another VC system should be as easy as adding another entry in this array. */
-static VC_RECORD VC[] = {
-	{SVN_COMMANDS, NO_ENV, "svn", ".svn", FALSE},
-	{CVS_COMMANDS, NO_ENV, "cvs", "CVS", FALSE},
-	{GIT_COMMANDS, GIT_ENV, "git", ".git", TRUE},
-};
-
-
-static gboolean find_subdir(const gchar* filename, const gchar *subdir)
-{
-	gboolean ret = FALSE;
-	gchar *base;
-	gchar *gitdir;
-	gchar *base_prev = g_strdup(":");
-
-	if (g_file_test(filename, G_FILE_TEST_IS_DIR))
-		base = g_strdup(filename);
-	else
-		base = g_path_get_dirname(filename);
-
-	while (strcmp(base, base_prev) != 0)
-	{
-		gitdir = g_build_path("/", base, subdir, NULL);
-		ret = g_file_test(gitdir, G_FILE_TEST_IS_DIR);
-		g_free(gitdir);
-		if (ret)
-			break;
-		g_free(base_prev);
-		base_prev = base;
-		base = g_path_get_dirname(base);
-	}
-
-	g_free(base);
-	g_free(base_prev);
-	return ret;
-}
-
-
-static gboolean check_filename(const gchar* filename, VC_RECORD *vc)
-{
-	gboolean ret;
-	gchar *base;
-	gchar *dir;
-	gchar *path;
-
-	if (! filename)
-		return FALSE;
-
-	path = g_find_program_in_path(vc->program);
-	if (!path)
-		return FALSE;
-	g_free(path);
-
-	if (vc->check_parents)
-		return find_subdir(filename, vc->subdir);
-
-	if (g_file_test(filename, G_FILE_TEST_IS_DIR))
-		base = g_strdup(filename);
-	else
-		base = g_path_get_dirname(filename);
-	dir = g_build_path("/", base, vc->subdir, NULL);
-
-	ret = g_file_test(dir, G_FILE_TEST_IS_DIR);
-
-	g_free(base);
-	g_free(dir);
-
-	return ret;
-}
-
-
-static void* find_cmd_env(gint cmd_type, gboolean cmd, const gchar* filename)
-{
-	guint i, len;
-
-	len = G_N_ELEMENTS(VC);
-	for (i = 0; i < len; i++)
-	{
-		if (check_filename(filename, &VC[i]))
-		{
-			if (cmd)
-				return VC[i].commands[cmd_type];
-			else
-				return VC[i].envs[cmd_type];
-		}
-	}
-	return NULL;
-}
-
-
-static gchar *quote_path(const gchar *path)
-{
-#ifdef G_OS_WIN32
-	/* On Windows we need to quote the path in order to handle spaces in paths correctly. */
-	return g_strconcat("\"", path, "\"", NULL);
-#else
-	return g_strdup(path);
-#endif
-}
-
-
-static void* get_cmd_env(gint cmd_type, gboolean cmd, const gchar* filename, int *size)
-{
-	int i;
-	gint len = 0;
-	gchar** argv;
-	gchar** ret;
-	gchar* dir;
-	gchar* base_filename;
-
-	argv = find_cmd_env(cmd_type, cmd, filename);
-	if (!argv)
-		return NULL;
-
-	if (g_file_test(filename, G_FILE_TEST_IS_DIR))
-	{
-		dir = g_strdup(filename);
-	}
-	else
-	{
-		dir = g_path_get_dirname(filename);
-	}
-	base_filename = g_path_get_basename(filename);
-
-	while(1)
-	{
-		if (argv[len] == NULL)
-			break;
-		len++;
-	}
-	ret = g_malloc(sizeof(gchar*) * (len+1));
-	memset(ret, 0, sizeof(gchar*) * (len+1));
-	for (i = 0; i < len; i++)
-	{
-		if (argv[i] == DIRNAME)
-		{
-			ret[i] = quote_path(dir);
-		}
-		else if (argv[i] == FILENAME)
-		{
-			ret[i] = quote_path(filename);
-		}
-		else if (argv[i] == BASE_FILENAME)
-		{
-			ret[i] = quote_path(base_filename);
-		}
-		else
-			ret[i] = quote_path(argv[i]);
-	}
-
-	*size = len;
-
-	g_free(dir);
-	g_free(base_filename);
-	return ret;
-}
-
-
-/* utf8_name_prefix can have a path. */
-static void show_output(const gchar *std_output, const gchar *utf8_name_prefix,
-		const gchar *force_encoding)
-{
-	gchar	*text, *detect_enc = NULL;
-	gint 	page;
-	GeanyDocument *doc;
-	GtkNotebook *book;
-	gchar	*filename;
-
-	filename = g_path_get_basename(utf8_name_prefix);
-	setptr(filename, g_strconcat(filename, ".vc.diff", NULL));
-
-	/* need to convert input text from the encoding of the original file into
-	 * UTF-8 because internally Geany always needs UTF-8 */
-	if (force_encoding)
-	{
-		text = encodings_convert_to_utf8_from_charset(
-			std_output, (gsize)-1, force_encoding, TRUE);
-	}
-	else
-	{
-		text = encodings_convert_to_utf8(std_output, (gsize)-1, &detect_enc);
-	}
-	if (text)
-	{
-		GeanyIndentType indent_type =
-			document_get_current()->editor->indent_type;
-
-		doc = document_find_by_filename(filename);
-		if (doc == NULL)
-		{
-			GeanyFiletype *ft = filetypes_lookup_by_name("Diff");
-			doc = document_new_file(filename, ft, text);
-		}
-		else
-		{
-			sci_set_text(doc->editor->sci, text);
-			book = GTK_NOTEBOOK(geany->main_widgets->notebook);
-			page = gtk_notebook_page_num(book, GTK_WIDGET(doc->editor->sci));
-			gtk_notebook_set_current_page(book, page);
-			document_set_text_changed(doc, FALSE);
-		}
-		editor_set_indent_type(doc->editor, indent_type);
-
-		document_set_encoding(doc,
-			force_encoding ? force_encoding : detect_enc);
-	}
-	else
-	{
-		ui_set_statusbar(FALSE, _("Input conversion of the diff output failed."));
-	}
-	g_free(text);
-	g_free(detect_enc);
-	g_free(filename);
-}
-
-
-static gchar *make_diff(const gchar *filename, gint cmd)
-{
-	gchar	*std_output = NULL;
-	gchar	*std_error = NULL;
-	gchar	*text = NULL;
-	gchar   *dir;
-	gint	 argc = 0;
-	gchar  **env  = get_cmd_env(cmd, FALSE, filename, &argc);
-	gchar  **argv = get_cmd_env(cmd, TRUE, filename, &argc);
-	gint	 exit_code = 0;
-	GError	*error = NULL;
-
-	if (! argv)
-	{
-		if (env)
-			g_strfreev(env);
-		return NULL;
-	}
-
-	if (g_file_test(filename, G_FILE_TEST_IS_DIR))
-	{
-		dir = g_strdup(filename);
-	}
-	else
-	{
-		dir = g_path_get_dirname(filename);
-	}
-
-	if (utils_spawn_sync(dir, argv, env, G_SPAWN_SEARCH_PATH, NULL, NULL,
-			&std_output, &std_error, &exit_code, &error))
-	{
-		/* CVS dump stuff to stderr when diff nested dirs */
-		if (strcmp(argv[0], "cvs") != 0 && NZV(std_error))
-		{
-			dialogs_show_msgbox(GTK_MESSAGE_WARNING,
-				_("%s exited with an error: \n%s."), argv[0], g_strstrip(std_error));
-		}
-		else if (NZV(std_output))
-		{
-			text = std_output;
-		}
-		else
-		{
-			ui_set_statusbar(FALSE, _("No changes were made."));
-		}
-		/* win32_spawn() returns sometimes TRUE but error is set anyway, has to be fixed */
-		if (error != NULL)
-		{
-			g_error_free(error);
-		}
-	}
-	else
-	{
-		gchar *msg;
-
-		if (error != NULL)
-		{
-			msg = g_strdup(error->message);
-			g_error_free(error);
-		}
-		else
-		{	/* if we don't have an exact error message, print at least the failing command */
-			msg = g_strdup_printf(_("unknown error while trying to spawn a process for %s"),
-				argv[0]);
-		}
-		ui_set_statusbar(FALSE, _("An error occurred (%s)."), msg);
-		g_free(msg);
-	}
-
-	g_free(dir);
-	g_free(std_error);
-	g_strfreev(env);
-	g_strfreev(argv);
-	return text;
-}
-
-
-/* Make a diff from the current directory */
-static void vcdirectory_activated(GtkMenuItem *menuitem, gpointer gdata)
-{
-	GeanyDocument *doc;
-	gchar	*base_name = NULL;
-	gchar	*locale_filename = NULL;
-	gchar	*text;
-
-	doc = document_get_current();
-
-	g_return_if_fail(doc != NULL && doc->file_name != NULL);
-
-	if (doc->changed)
-	{
-		document_save_file(doc, FALSE);
-	}
-
-	locale_filename = utils_get_locale_from_utf8(doc->file_name);
-	base_name = g_path_get_dirname(locale_filename);
-
-	text = make_diff(base_name, VC_COMMAND_DIFF_DIR);
-	if (text)
-	{
-		setptr(base_name, utils_get_utf8_from_locale(base_name));
-		show_output(text, base_name, NULL);
-		g_free(text);
-	}
-
-	g_free(base_name);
-	g_free(locale_filename);
-}
-
-
-/* Callback if menu item for the current project was activated */
-static void vcproject_activated(GtkMenuItem *menuitem, gpointer gdata)
-{
-	GeanyDocument *doc;
-	gchar	*locale_filename = NULL;
-	gchar	*text;
-
-	doc = document_get_current();
-
-	g_return_if_fail(project != NULL && NZV(project->base_path));
-
-	if (doc != NULL && doc->changed && doc->file_name != NULL)
-	{
-		document_save_file(doc, FALSE);
-	}
-
-	locale_filename = utils_get_locale_from_utf8(project->base_path);
-	text = make_diff(locale_filename, VC_COMMAND_DIFF_PROJECT);
-	if (text)
-	{
-		show_output(text, project->name, NULL);
-		g_free(text);
-	}
-	g_free(locale_filename);
-}
-
-
-/* Callback if menu item for a single file was activated */
-static void vcfile_activated(GtkMenuItem *menuitem, gpointer gdata)
-{
-	GeanyDocument *doc;
-	gchar *locale_filename, *text;
-
-	doc = document_get_current();
-
-	g_return_if_fail(doc != NULL && doc->file_name != NULL);
-
-	if (doc->changed)
-	{
-		document_save_file(doc, FALSE);
-	}
-
-	locale_filename = utils_get_locale_from_utf8(doc->file_name);
-
-	text = make_diff(locale_filename, VC_COMMAND_DIFF_FILE);
-	if (text)
-	{
-		show_output(text, doc->file_name, doc->encoding);
-		g_free(text);
-	}
-	g_free(locale_filename);
-}
-
-
-static GtkWidget *menu_vcdiff_file = NULL;
-static GtkWidget *menu_vcdiff_dir = NULL;
-static GtkWidget *menu_vcdiff_project = NULL;
-
-static void update_menu_items(void)
-{
-	GeanyDocument *doc;
-	gboolean	have_file;
-	gboolean    have_vc = FALSE;
-
-	doc = document_get_current();
-	have_file = doc && doc->file_name && g_path_is_absolute(doc->file_name);
-	if (find_cmd_env(VC_COMMAND_DIFF_FILE, TRUE, doc->file_name))
-		have_vc = TRUE;
-
-	gtk_widget_set_sensitive(menu_vcdiff_file, have_vc && have_file);
-	gtk_widget_set_sensitive(menu_vcdiff_dir, have_vc && have_file);
-	gtk_widget_set_sensitive(menu_vcdiff_project,
-		project != NULL && NZV(project->base_path));
-}
-
-
-/* Called by Geany to initialize the plugin */
-void plugin_init(GeanyData *data)
-{
-	GtkWidget	*menu_vcdiff = NULL;
-	GtkWidget	*menu_vcdiff_menu = NULL;
-
-	menu_vcdiff = gtk_image_menu_item_new_with_mnemonic(_("_Version Diff"));
-	gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), menu_vcdiff);
-
-	g_signal_connect(menu_vcdiff, "activate", G_CALLBACK(update_menu_items), NULL);
-
-	menu_vcdiff_menu = gtk_menu_new ();
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_vcdiff), menu_vcdiff_menu);
-
-	/* Single file */
-	menu_vcdiff_file = gtk_menu_item_new_with_mnemonic(_("From Current _File"));
-	gtk_container_add(GTK_CONTAINER (menu_vcdiff_menu), menu_vcdiff_file);
-	ui_widget_set_tooltip_text(menu_vcdiff_file, _("Make a diff from the current active file"));
-
-	g_signal_connect(menu_vcdiff_file, "activate", G_CALLBACK(vcfile_activated), NULL);
-
-	/* Directory */
-	menu_vcdiff_dir = gtk_menu_item_new_with_mnemonic(_("From Current _Directory"));
-	gtk_container_add(GTK_CONTAINER (menu_vcdiff_menu), menu_vcdiff_dir);
-	ui_widget_set_tooltip_text(menu_vcdiff_dir,
-		_("Make a diff from the directory of the current active file"));
-
-	g_signal_connect(menu_vcdiff_dir, "activate", G_CALLBACK(vcdirectory_activated), NULL);
-
-	/* Project */
-	menu_vcdiff_project = gtk_menu_item_new_with_mnemonic(_("From Current _Project"));
-	gtk_container_add(GTK_CONTAINER (menu_vcdiff_menu), menu_vcdiff_project);
-	ui_widget_set_tooltip_text(menu_vcdiff_project,
-		_("Make a diff from the current project's base path"));
-
-	g_signal_connect(menu_vcdiff_project, "activate", G_CALLBACK(vcproject_activated), NULL);
-
-	gtk_widget_show_all(menu_vcdiff);
-
-	ui_add_document_sensitive(menu_vcdiff);
-	main_menu_item = menu_vcdiff;
-}
-
-
-/* Called by Geany before unloading the plugin. */
-void plugin_cleanup(void)
-{
-	/* remove the menu item added in plugin_init() */
-	gtk_widget_destroy(main_menu_item);
-}

Modified: trunk/po/POTFILES.in
===================================================================
--- trunk/po/POTFILES.in	2009-02-25 23:29:34 UTC (rev 3602)
+++ trunk/po/POTFILES.in	2009-02-26 01:25:38 UTC (rev 3603)
@@ -42,7 +42,6 @@
 plugins/classbuilder.c
 plugins/htmlchars.c
 plugins/export.c
-plugins/vcdiff.c
 plugins/filebrowser.c
 plugins/saveactions.c
 plugins/splitwindow.c

Modified: trunk/wscript
===================================================================
--- trunk/wscript	2009-02-25 23:29:34 UTC (rev 3602)
+++ trunk/wscript	2009-02-26 01:25:38 UTC (rev 3603)
@@ -330,7 +330,6 @@
 		build_plugin('htmlchars')
 		build_plugin('saveactions')
 		build_plugin('splitwindow')
-		build_plugin('vcdiff')
 
 	# Translations
 	bld.new_task_gen(


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