gedit r6727 - in trunk: . gedit gedit/dialogs gedit/smclient plugin-loaders/python/bindings win32
- From: pborelli svn gnome org
- To: svn-commits-list gnome org
- Subject: gedit r6727 - in trunk: . gedit gedit/dialogs gedit/smclient plugin-loaders/python/bindings win32
- Date: Thu, 25 Dec 2008 21:02:48 +0000 (UTC)
Author: pborelli
Date: Thu Dec 25 21:02:48 2008
New Revision: 6727
URL: http://svn.gnome.org/viewvc/gedit?rev=6727&view=rev
Log:
merge win32 branch containing the fixes needed to compile and run on windows and the windows installer
Added:
trunk/gedit/gedit-dirs.c
- copied unchanged from r6726, /branches/win32/gedit/gedit-dirs.c
trunk/gedit/gedit-dirs.h
- copied unchanged from r6726, /branches/win32/gedit/gedit-dirs.h
trunk/win32/ (props changed)
- copied from r6726, /branches/win32/win32/
Modified:
trunk/ (props changed)
trunk/ChangeLog
trunk/Makefile.am
trunk/configure.ac
trunk/gedit/Makefile.am
trunk/gedit/dialogs/gedit-encodings-dialog.c
trunk/gedit/dialogs/gedit-open-location-dialog.c
trunk/gedit/dialogs/gedit-preferences-dialog.c
trunk/gedit/dialogs/gedit-search-dialog.c
trunk/gedit/dialogs/gedit-style-scheme-dialog.c
trunk/gedit/gedit-app.c
trunk/gedit/gedit-commands-help.c
trunk/gedit/gedit-document-loader.c
trunk/gedit/gedit-document-saver.c
trunk/gedit/gedit-document.c
trunk/gedit/gedit-document.h
trunk/gedit/gedit-language-manager.c
trunk/gedit/gedit-language-manager.h
trunk/gedit/gedit-metadata-manager.c
trunk/gedit/gedit-plugins-engine.c
trunk/gedit/gedit-plugins-engine.h
trunk/gedit/gedit-prefs-manager-app.c
trunk/gedit/gedit-prefs-manager.c
trunk/gedit/gedit-prefs-manager.h
trunk/gedit/gedit-print-job.c
trunk/gedit/gedit-style-scheme-manager.c
trunk/gedit/gedit-tab.c
trunk/gedit/gedit-utils.c
trunk/gedit/gedit-utils.h
trunk/gedit/gedit-window.c
trunk/gedit/gedit.c
trunk/gedit/smclient/eggdesktopfile.c
trunk/plugin-loaders/python/bindings/gedit.defs
Modified: trunk/Makefile.am
==============================================================================
--- trunk/Makefile.am (original)
+++ trunk/Makefile.am Thu Dec 25 21:02:48 2008
@@ -1,7 +1,7 @@
## Process this file with automake to produce Makefile.in
ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = plugin-loaders gedit pixmaps po help data plugins docs
+SUBDIRS = plugin-loaders gedit pixmaps po help data plugins docs win32
distuninstallcheck_listfiles = find . -type f -print | grep -v scrollkeeper
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Thu Dec 25 21:02:48 2008
@@ -205,7 +205,8 @@
AC_SUBST(GEDIT_LIBS)
AC_SUBST(GEDIT_CFLAGS)
-if test "$platform_osx" = "no"; then
+if test "$platform_osx" = "no" &&
+ test "$platform_win32" = no; then
PKG_CHECK_MODULES(EGG_SMCLIENT, [
sm >= 1.0.0
])
@@ -365,15 +366,15 @@
# so we create a lib
if test "$platform_win32" = yes; then
GEDIT_IMPLIB="-lgedit-$GEDIT_API_VERSION"
- PLUGIN_LIBTOOL_FLAGS="-module -avoid-version -no-undefined -Wl,\$(top_builddir)/gedit/libgedit-\$(GEDIT_API_VERSION).a"
+ PLUGIN_LIBTOOL_FLAGS="-module -avoid-version -no-undefined -mwindows -Wl,\$(top_builddir)/gedit/libgedit-\$(GEDIT_API_VERSION).a"
+ LOADER_LIBTOOL_FLAGS="-module -avoid-version -no-undefined -mwindows -Wl,\$(top_builddir)/gedit/libgedit-\$(GEDIT_API_VERSION).a"
else
GEDIT_IMPLIB=""
PLUGIN_LIBTOOL_FLAGS="-module -avoid-version"
+ LOADER_LIBTOOL_FLAGS="-module -avoid-version"
fi
AC_SUBST(GEDIT_IMPLIB)
AC_SUBST(PLUGIN_LIBTOOL_FLAGS)
-
-LOADER_LIBTOOL_FLAGS="-module -avoid-version"
AC_SUBST(LOADER_LIBTOOL_FLAGS)
AC_CONFIG_FILES([
@@ -416,7 +417,9 @@
plugins/spell/Makefile
plugins/taglist/Makefile
plugins/time/Makefile
-po/Makefile.in])
+po/Makefile.in
+win32/gedit.iss
+win32/Makefile])
AC_OUTPUT
Modified: trunk/gedit/Makefile.am
==============================================================================
--- trunk/gedit/Makefile.am (original)
+++ trunk/gedit/Makefile.am Thu Dec 25 21:02:48 2008
@@ -13,12 +13,7 @@
$(WARN_CFLAGS) \
$(DISABLE_DEPRECATED_CFLAGS) \
-DDATADIR=\""$(datadir)"\" \
- -DGEDIT_DATADIR=\""$(datadir)/gedit-2"\" \
- -DGEDIT_LOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
- -DGEDIT_UIDIR=\""$(datadir)/gedit-2/ui/"\" \
- -DGEDIT_PLUGINDIR=\""$(libdir)/gedit-2/plugins"\" \
- -DGEDIT_LOADERDIR=\""$(libdir)/gedit-2/plugin-loaders"\" \
- -DGEDIT_ICONDIR=\""$(datadir)/gedit-2/icons"\"
+ -DLIBDIR=\""$(libdir)"\"
gedit_SOURCES = \
gedit.c
@@ -26,7 +21,7 @@
gedit_LDADD = libgedit.la $(GEDIT_LIBS) $(EGG_SMCLIENT_LIBS)
if PLATFORM_WIN32
-gedit_LDFLAGS = -Wl,--export-all-symbols -Wl,--out-implib,libgedit-$(GEDIT_API_VERSION).a
+gedit_LDFLAGS = -Wl,--export-all-symbols -mwindows -Wl,--out-implib,libgedit-$(GEDIT_API_VERSION).a
else
gedit_LDFLAGS = -export-dynamic -no-undefined -export-symbols-regex "^[[^_]].*"
endif
@@ -76,7 +71,8 @@
gedit-prefs-manager-private.h \
sexy-icon-entry.h \
gedittextregion.h \
- gedit-session.h
+ gedit-session.h \
+ gedit-dirs.h
INST_H_FILES = \
gedit-app.h \
@@ -107,9 +103,19 @@
header_DATA = \
$(INST_H_FILES)
+if !PLATFORM_WIN32
+POSIXIO_FILES = \
+ gedit-mmap-document-loader.c \
+ gedit-local-document-saver.c
+else
+POSIXIO_FILES =
+endif
+
+
libgedit_la_SOURCES = \
$(BUILT_SOURCES) \
$(BACON_FILES) \
+ $(POSIXIO_FILES) \
gedit-app.c \
gedit-commands-documents.c \
gedit-commands-edit.c \
@@ -120,12 +126,11 @@
gedit-commands-view.c \
gedit-convert.c \
gedit-debug.c \
+ gedit-dirs.c \
gedit-document.c \
gedit-document-loader.c \
- gedit-mmap-document-loader.c \
gedit-gio-document-loader.c \
gedit-document-saver.c \
- gedit-local-document-saver.c \
gedit-gio-document-saver.c \
gedit-documents-panel.c \
gedit-encodings.c \
@@ -194,15 +199,20 @@
cd $(distdir); rm -f $(BUILT_SOURCES)
install-exec-hook:
- rm -f $(DESTDIR)$(bindir)/gnome-text-editor
- ln -s gedit $(DESTDIR)$(bindir)/gnome-text-editor
if PLATFORM_WIN32
$(mkinstalldirs) "$(DESTDIR)$(libdir)"
$(INSTALL_DATA) libgedit-$(GEDIT_API_VERSION).a "$(DESTDIR)$(libdir)"
+else
+ rm -f $(DESTDIR)$(bindir)/gnome-text-editor
+ ln -s gedit $(DESTDIR)$(bindir)/gnome-text-editor
endif
+if !PLATFORM_WIN32
BACON_DIR=$(srcdir)/../../libbacon/src/
BACON_FILES=bacon-message-connection.h bacon-message-connection.c
regenerate-built-sources:
BACONFILES="$(BACON_FILES)" BACONDIR="$(BACON_DIR)" $(top_srcdir)/gedit/update-from-bacon.sh
+else
+BACON_DIR=
+endif
Modified: trunk/gedit/dialogs/gedit-encodings-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-encodings-dialog.c (original)
+++ trunk/gedit/dialogs/gedit-encodings-dialog.c Thu Dec 25 21:02:48 2008
@@ -44,6 +44,7 @@
#include "gedit-utils.h"
#include "gedit-debug.h"
#include "gedit-help.h"
+#include "gedit-dirs.h"
#define GEDIT_ENCODINGS_DIALOG_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
GEDIT_TYPE_ENCODINGS_DIALOG, \
@@ -300,6 +301,7 @@
GtkWidget *error_widget;
int i;
gboolean ret;
+ gchar *file;
gchar *root_objects[] = {
"encodings-dialog-contents",
NULL
@@ -334,7 +336,8 @@
G_CALLBACK (response_handler),
dlg);
- ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-encodings-dialog.ui",
+ file = gedit_dirs_get_ui_file ("gedit-encodings-dialog.ui");
+ ret = gedit_utils_get_ui_objects (file,
root_objects,
&error_widget,
"encodings-dialog-contents", &content,
@@ -343,6 +346,7 @@
"available-treeview", &dlg->priv->available_treeview,
"displayed-treeview", &dlg->priv->displayed_treeview,
NULL);
+ g_free (file);
if (!ret)
{
Modified: trunk/gedit/dialogs/gedit-open-location-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-open-location-dialog.c (original)
+++ trunk/gedit/dialogs/gedit-open-location-dialog.c Thu Dec 25 21:02:48 2008
@@ -41,6 +41,7 @@
#include "gedit-encodings-option-menu.h"
#include "gedit-utils.h"
#include "gedit-help.h"
+#include "gedit-dirs.h"
#define GEDIT_OPEN_LOCATION_DIALOG_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ((object), \
GEDIT_TYPE_OPEN_LOCATION_DIALOG, \
@@ -117,6 +118,7 @@
GtkWidget *encoding_hbox;
GtkWidget *error_widget;
gboolean ret;
+ gchar *file;
gchar *root_objects[] = {
"open_uri_dialog_content",
NULL
@@ -154,7 +156,8 @@
G_CALLBACK (response_handler),
NULL);
- ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-open-location-dialog.ui",
+ file = gedit_dirs_get_ui_file ("gedit-open-location-dialog.ui");
+ ret = gedit_utils_get_ui_objects (file,
root_objects,
&error_widget,
"open_uri_dialog_content", &content,
@@ -163,6 +166,7 @@
"encoding_label", &encoding_label,
"encoding_hbox", &encoding_hbox,
NULL);
+ g_free (file);
if (!ret)
{
Modified: trunk/gedit/dialogs/gedit-preferences-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-preferences-dialog.c (original)
+++ trunk/gedit/dialogs/gedit-preferences-dialog.c Thu Dec 25 21:02:48 2008
@@ -48,6 +48,7 @@
#include "gedit-style-scheme-manager.h"
#include "gedit-plugin-manager.h"
#include "gedit-help.h"
+#include "gedit-dirs.h"
/*
* gedit-preferences dialog is a singleton since we don't
@@ -1062,6 +1063,7 @@
{
GtkWidget *error_widget;
gboolean ret;
+ gchar *file;
gchar *root_objects[] = {
"notebook",
"adjustment1",
@@ -1097,7 +1099,8 @@
G_CALLBACK (dialog_response_handler),
NULL);
- ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-preferences-dialog.ui",
+ file = gedit_dirs_get_ui_file ("gedit-preferences-dialog.ui");
+ ret = gedit_utils_get_ui_objects (file,
root_objects,
&error_widget,
@@ -1135,6 +1138,7 @@
"plugin_manager_place_holder", &dlg->priv->plugin_manager_place_holder,
NULL);
+ g_free (file);
if (!ret)
{
Modified: trunk/gedit/dialogs/gedit-search-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-search-dialog.c (original)
+++ trunk/gedit/dialogs/gedit-search-dialog.c Thu Dec 25 21:02:48 2008
@@ -40,6 +40,7 @@
#include "gedit-history-entry.h"
#include "gedit-utils.h"
#include "gedit-marshal.h"
+#include "gedit-dirs.h"
#define GEDIT_SEARCH_DIALOG_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
GEDIT_TYPE_SEARCH_DIALOG, \
@@ -321,6 +322,7 @@
GtkWidget *content;
GtkWidget *error_widget;
gboolean ret;
+ gchar *file;
gchar *root_objects[] = {
"search_dialog_content",
NULL
@@ -342,7 +344,8 @@
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->action_area), 5);
gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dlg)->action_area), 6);
- ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-search-dialog.ui",
+ file = gedit_dirs_get_ui_file ("gedit-search-dialog.ui");
+ ret = gedit_utils_get_ui_objects (file,
root_objects,
&error_widget,
"search_dialog_content", &content,
@@ -354,6 +357,7 @@
"search_backwards_checkbutton", &dlg->priv->backwards_checkbutton,
"wrap_around_checkbutton", &dlg->priv->wrap_around_checkbutton,
NULL);
+ g_free (file);
if (!ret)
{
Modified: trunk/gedit/dialogs/gedit-style-scheme-dialog.c
==============================================================================
--- trunk/gedit/dialogs/gedit-style-scheme-dialog.c (original)
+++ trunk/gedit/dialogs/gedit-style-scheme-dialog.c Thu Dec 25 21:02:48 2008
@@ -39,6 +39,7 @@
#include "gedit-utils.h"
#include "gedit-debug.h"
#include "gedit-help.h"
+#include "gedit-dirs.h"
#define GEDIT_STYLE_SCHEME_DIALOG_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
GEDIT_TYPE_STYLE_SCHEME_DIALOG, \
@@ -121,6 +122,7 @@
GtkWidget *error_widget;
GtkWidget *main_vbox;
gboolean ret;
+ gchar *file;
gchar *root_objects[] = {
"contents",
NULL
@@ -147,7 +149,8 @@
G_CALLBACK (dialog_response_handler),
NULL);
- ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-style-scheme-dialog.ui",
+ file = gedit_dirs_get_ui_file ("gedit-style-scheme-dialog.ui");
+ ret = gedit_utils_get_ui_objects (file,
root_objects,
&error_widget,
@@ -174,6 +177,7 @@
"search_hl_colorbutton", &dlg->priv->search_hl_colorbutton,
NULL);
+ g_free (file);
if (!ret)
{
Modified: trunk/gedit/gedit-app.c
==============================================================================
--- trunk/gedit/gedit-app.c (original)
+++ trunk/gedit/gedit-app.c Thu Dec 25 21:02:48 2008
@@ -44,6 +44,7 @@
#include "gedit-debug.h"
#include "gedit-utils.h"
#include "gedit-enum-types.h"
+#include "gedit-dirs.h"
#define GEDIT_PAGE_SETUP_FILE "gedit-page-setup"
@@ -126,31 +127,12 @@
g_type_class_add_private (object_class, sizeof(GeditAppPrivate));
}
-static gchar *
-get_accel_file (void)
-{
- const gchar *home;
-
- home = g_get_home_dir();
-
- if (home != NULL)
- {
- return g_build_filename (home,
- ".gnome2",
- "accels"
- "gedit",
- NULL);
- }
-
- return NULL;
-}
-
static void
load_accels (void)
{
gchar *filename;
- filename = get_accel_file ();
+ filename = gedit_dirs_get_user_accels_file ();
if (filename != NULL)
{
gedit_debug_message (DEBUG_APP, "Loading keybindings from %s\n", filename);
@@ -164,7 +146,7 @@
{
gchar *filename;
- filename = get_accel_file ();
+ filename = gedit_dirs_get_user_accels_file ();
if (filename != NULL)
{
gedit_debug_message (DEBUG_APP, "Saving keybindings in %s\n", filename);
@@ -176,19 +158,20 @@
static gchar *
get_page_setup_file (void)
{
- const gchar *home;
+ gchar *config_dir;
+ gchar *setup = NULL;
- home = g_get_home_dir ();
- if (home != NULL)
+ config_dir = gedit_dirs_get_user_config_dir ();
+
+ if (config_dir != NULL)
{
- return g_build_filename (home,
- ".gnome2",
- "gedit",
- GEDIT_PAGE_SETUP_FILE,
- NULL);
+ setup = g_build_filename (config_dir,
+ GEDIT_PAGE_SETUP_FILE,
+ NULL);
+ g_free (config_dir);
}
- return NULL;
+ return setup;
}
static void
@@ -248,19 +231,20 @@
static gchar *
get_print_settings_file (void)
{
- const gchar *home;
+ gchar *config_dir;
+ gchar *settings = NULL;
- home = g_get_home_dir ();
- if (home != NULL)
+ config_dir = gedit_dirs_get_user_config_dir ();
+
+ if (config_dir != NULL)
{
- return g_build_filename (home,
- ".gnome2",
- "gedit",
- GEDIT_PRINT_SETTINGS_FILE,
- NULL);
+ settings = g_build_filename (config_dir,
+ GEDIT_PRINT_SETTINGS_FILE,
+ NULL);
+ g_free (config_dir);
}
- return NULL;
+ return settings;
}
static void
@@ -436,16 +420,14 @@
static gchar *
gen_role (void)
{
- time_t t;
+ GTimeVal result;
static gint serial;
+
+ g_get_current_time (&result);
- t = time (NULL);
-
- return g_strdup_printf ("gedit-window-%d-%d-%d-%ld-%d %s",
- getpid (),
- getgid (),
- getppid (),
- (long) t,
+ return g_strdup_printf ("gedit-window-%ld-%ld-%d-%s",
+ result.tv_sec,
+ result.tv_usec,
serial++,
g_get_host_name ());
}
Modified: trunk/gedit/gedit-commands-help.c
==============================================================================
--- trunk/gedit/gedit-commands-help.c (original)
+++ trunk/gedit/gedit-commands-help.c Thu Dec 25 21:02:48 2008
@@ -40,6 +40,7 @@
#include "gedit-commands.h"
#include "gedit-debug.h"
#include "gedit-help.h"
+#include "gedit-dirs.h"
void
_gedit_cmd_help_contents (GtkAction *action,
@@ -81,11 +82,19 @@
"GNOME Desktop");
GdkPixbuf *logo;
+ gchar *data_dir;
+ gchar *logo_file;
gedit_debug (DEBUG_COMMANDS);
- logo = gdk_pixbuf_new_from_file (GEDIT_DATADIR "/logo/gedit-logo.png",
- NULL);
+ data_dir = gedit_dirs_get_gedit_data_dir ();
+ logo_file = g_build_filename (data_dir,
+ "logo",
+ "gedit-logo.png",
+ NULL);
+ g_free (data_dir);
+ logo = gdk_pixbuf_new_from_file (logo_file, NULL);
+ g_free (logo_file);
gtk_show_about_dialog (GTK_WINDOW (window),
"program-name", "gedit",
Modified: trunk/gedit/gedit-document-loader.c
==============================================================================
--- trunk/gedit/gedit-document-loader.c (original)
+++ trunk/gedit/gedit-document-loader.c Thu Dec 25 21:02:48 2008
@@ -364,9 +364,11 @@
g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), NULL);
+#ifndef G_OS_WIN32
if (gedit_utils_uri_has_file_scheme (uri))
loader_type = GEDIT_TYPE_MMAP_DOCUMENT_LOADER;
else
+#endif
loader_type = GEDIT_TYPE_GIO_DOCUMENT_LOADER;
loader = GEDIT_DOCUMENT_LOADER (g_object_new (loader_type,
Modified: trunk/gedit/gedit-document-saver.c
==============================================================================
--- trunk/gedit/gedit-document-saver.c (original)
+++ trunk/gedit/gedit-document-saver.c Thu Dec 25 21:02:48 2008
@@ -218,9 +218,11 @@
g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), NULL);
+#ifndef G_OS_WIN32
if (gedit_utils_uri_has_file_scheme (uri))
saver_type = GEDIT_TYPE_LOCAL_DOCUMENT_SAVER;
else
+#endif
saver_type = GEDIT_TYPE_GIO_DOCUMENT_SAVER;
if (encoding == NULL)
Modified: trunk/gedit/gedit-document.c
==============================================================================
--- trunk/gedit/gedit-document.c (original)
+++ trunk/gedit/gedit-document.c Thu Dec 25 21:02:48 2008
@@ -109,7 +109,7 @@
const GeditEncoding *encoding;
- gchar *mime_type;
+ gchar *content_type;
time_t mtime;
@@ -143,6 +143,7 @@
PROP_URI,
PROP_SHORTNAME,
+ PROP_CONTENT_TYPE,
PROP_MIME_TYPE,
PROP_READ_ONLY,
PROP_ENCODING,
@@ -278,7 +279,7 @@
}
g_free (doc->priv->uri);
- g_free (doc->priv->mime_type);
+ g_free (doc->priv->content_type);
g_free (doc->priv->search_text);
if (doc->priv->to_search_region != NULL)
@@ -306,8 +307,11 @@
case PROP_SHORTNAME:
g_value_take_string (value, gedit_document_get_short_name_for_display (doc));
break;
+ case PROP_CONTENT_TYPE:
+ g_value_take_string (value, gedit_document_get_content_type (doc));
+ break;
case PROP_MIME_TYPE:
- g_value_set_string (value, doc->priv->mime_type);
+ g_value_take_string (value, gedit_document_get_mime_type (doc));
break;
case PROP_READ_ONLY:
g_value_set_boolean (value, doc->priv->readonly);
@@ -416,6 +420,14 @@
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (object_class, PROP_CONTENT_TYPE,
+ g_param_spec_string ("content-type",
+ "Content Type",
+ "The document's Content Type",
+ NULL,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
+
g_object_class_install_property (object_class, PROP_MIME_TYPE,
g_param_spec_string ("mime-type",
"MIME Type",
@@ -689,7 +701,7 @@
doc->priv->uri = NULL;
doc->priv->untitled_number = get_untitled_number ();
- doc->priv->mime_type = g_strdup ("text/plain");
+ doc->priv->content_type = g_content_type_from_mime_type ("text/plain");
doc->priv->readonly = FALSE;
@@ -739,12 +751,57 @@
return GEDIT_DOCUMENT (g_object_new (GEDIT_TYPE_DOCUMENT, NULL));
}
-/* If mime type is null, we guess from the filename */
-/* If uri is null, we only set the mime-type */
+static GtkSourceLanguage *
+guess_language (const gchar *uri,
+ const gchar *content_type)
+
+{
+ gchar *data;
+ GtkSourceLanguage *language = NULL;
+
+ data = gedit_metadata_manager_get (uri, "language");
+
+ if (data != NULL)
+ {
+ gedit_debug_message (DEBUG_DOCUMENT, "Language from metadata: %s", data);
+
+ if (strcmp (data, "_NORMAL_") != 0)
+ {
+ language = gtk_source_language_manager_get_language (
+ gedit_get_language_manager (),
+ data);
+ }
+
+ g_free (data);
+ }
+ else
+ {
+ GFile *file;
+ gchar *basename;
+
+ gedit_debug_message (DEBUG_DOCUMENT, "Sniffing Language");
+
+ file = g_file_new_for_uri (uri);
+ basename = g_file_get_basename (file);
+
+ language = gtk_source_language_manager_guess_language (
+ gedit_get_language_manager (),
+ basename,
+ content_type);
+
+ g_free (basename);
+ g_object_unref (file);
+ }
+
+ return language;
+}
+
+/* If content type is null, we guess from the filename */
+/* If uri is null, we only set the content-type */
static void
set_uri (GeditDocument *doc,
const gchar *uri,
- const gchar *mime_type)
+ const gchar *content_type)
{
gedit_debug (DEBUG_DOCUMENT);
@@ -765,66 +822,32 @@
}
}
- g_free (doc->priv->mime_type);
- if (mime_type != NULL)
+ g_free (doc->priv->content_type);
+
+ if (content_type != NULL)
{
- doc->priv->mime_type = g_strdup (mime_type);
+ doc->priv->content_type = g_strdup (content_type);
}
else
{
if (doc->priv->uri != NULL)
{
- gchar *content_type;
- gchar *detected_mime;
-
- content_type = g_content_type_guess (doc->priv->uri, NULL, 0, NULL);
-
- if (content_type == NULL || g_content_type_is_unknown (content_type))
- detected_mime = g_strdup ("text/plain");
- else
- detected_mime = g_content_type_get_mime_type (content_type);
-
- doc->priv->mime_type = detected_mime != NULL ? detected_mime : g_strdup ("text/plain");
-
- g_free (content_type);
+ doc->priv->content_type = g_content_type_guess (doc->priv->uri, NULL, 0, NULL);
}
else
{
- doc->priv->mime_type = g_strdup ("text/plain");
+ doc->priv->content_type = g_content_type_from_mime_type ("text/plain");
}
}
if (!doc->priv->language_set_by_user)
{
- gchar *data;
- GtkSourceLanguage *language = NULL;
-
- data = gedit_metadata_manager_get (doc->priv->uri, "language");
-
- if (data != NULL)
- {
- gedit_debug_message (DEBUG_DOCUMENT, "Language: %s", data);
-
- if (strcmp (data, "_NORMAL_") != 0)
- {
- language = gtk_source_language_manager_get_language (
- gedit_get_language_manager (),
- data);
- }
+ GtkSourceLanguage *language;
- g_free (data);
- }
- else
- {
- gedit_debug_message (DEBUG_DOCUMENT, "Language Normal");
+ language = guess_language (doc->priv->uri, doc->priv->content_type);
- if (strcmp (doc->priv->mime_type, "text/plain") != 0)
- {
- language = gedit_language_manager_get_language_from_mime_type (
- gedit_get_language_manager (),
- doc->priv->mime_type);
- }
- }
+ gedit_debug_message (DEBUG_DOCUMENT, "Language: %s",
+ language != NULL ? gtk_source_language_get_name (language) : "None");
set_language (doc, language, FALSE);
}
@@ -853,12 +876,7 @@
gedit_document_set_uri (GeditDocument *doc,
const gchar *uri)
{
- gchar *mime_type;
-
- mime_type = g_strdup (doc->priv->mime_type);
- set_uri (doc, uri, mime_type);
-
- g_free (mime_type);
+ set_uri (doc, uri, doc->priv->content_type);
}
/* Never returns NULL */
@@ -887,14 +905,29 @@
return gedit_utils_basename_for_display (doc->priv->uri);
}
+gchar *
+gedit_document_get_content_type (GeditDocument *doc)
+{
+ g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), NULL);
+
+ return g_strdup (doc->priv->content_type);
+}
+
/* Never returns NULL */
gchar *
gedit_document_get_mime_type (GeditDocument *doc)
{
+ gchar *mime_type = NULL;
+
g_return_val_if_fail (GEDIT_IS_DOCUMENT (doc), "text/plain");
- g_return_val_if_fail (doc->priv->mime_type != NULL, "text/plain");
- return g_strdup (doc->priv->mime_type);
+ if ((doc->priv->content_type != NULL) &&
+ (!g_content_type_is_unknown (doc->priv->content_type)))
+ {
+ mime_type = g_content_type_get_mime_type (doc->priv->content_type);
+ }
+
+ return mime_type != NULL ? g_strdup (mime_type) : g_strdup ("text/plain");
}
/* Note: do not emit the notify::read-only signal */
@@ -987,12 +1020,8 @@
{
GtkTextIter iter;
const gchar *content_type;
- gchar *mime_type = NULL;
content_type = gedit_document_loader_get_content_type (loader);
-
- if (content_type)
- mime_type = g_content_type_get_mime_type (content_type);
doc->priv->mtime = gedit_document_loader_get_mtime (loader);
@@ -1006,9 +1035,7 @@
(doc->priv->requested_encoding != NULL));
/* We already set the uri */
- set_uri (doc, NULL, mime_type);
-
- g_free (mime_type);
+ set_uri (doc, NULL, content_type);
/* move the cursor at the requested line if any */
if (doc->priv->requested_line_pos > 0)
@@ -1184,12 +1211,10 @@
{
const gchar *uri;
const gchar *content_type;
- gchar *mime_type;
uri = gedit_document_saver_get_uri (saver);
content_type = gedit_document_saver_get_content_type (saver);
- mime_type = g_content_type_get_mime_type (content_type);
doc->priv->mtime = gedit_document_saver_get_mtime (saver);
@@ -1200,9 +1225,7 @@
gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (doc),
FALSE);
- set_uri (doc, uri, mime_type);
-
- g_free (mime_type);
+ set_uri (doc, uri, content_type);
set_encoding (doc,
doc->priv->requested_encoding,
@@ -1226,7 +1249,7 @@
size = gedit_document_saver_get_file_size (saver);
written = gedit_document_saver_get_bytes_written (saver);
- gedit_debug_message (DEBUG_DOCUMENT, "save progress: %Lu of %Lu", written, size);
+ gedit_debug_message (DEBUG_DOCUMENT, "save progress: %" G_GINT64_FORMAT " of %" G_GINT64_FORMAT, written, size);
g_signal_emit (doc,
document_signals[SAVING],
Modified: trunk/gedit/gedit-document.h
==============================================================================
--- trunk/gedit/gedit-document.h (original)
+++ trunk/gedit/gedit-document.h Thu Dec 25 21:02:48 2008
@@ -162,6 +162,9 @@
gchar *gedit_document_get_short_name_for_display
(GeditDocument *doc);
+gchar *gedit_document_get_content_type
+ (GeditDocument *doc);
+
gchar *gedit_document_get_mime_type (GeditDocument *doc);
gboolean gedit_document_get_readonly (GeditDocument *doc);
Modified: trunk/gedit/gedit-language-manager.c
==============================================================================
--- trunk/gedit/gedit-language-manager.c (original)
+++ trunk/gedit/gedit-language-manager.c Thu Dec 25 21:02:48 2008
@@ -88,135 +88,3 @@
return g_slist_sort (languages, (GCompareFunc)language_compare);
}
-/* Returns a hash table that is used as a cache of already matched mime-types */
-static GHashTable *
-get_languages_cache (GtkSourceLanguageManager *lm)
-{
- static GQuark id = 0;
- GHashTable *res;
-
- if (id == 0)
- id = g_quark_from_static_string ("gedit_languages_manager_cache");
-
- res = (GHashTable *)g_object_get_qdata (G_OBJECT (lm), id);
- if (res == NULL)
- {
- res = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- NULL);
-
- g_object_set_qdata_full (G_OBJECT (lm),
- id,
- res,
- (GDestroyNotify)g_hash_table_unref);
- }
-
- return res;
-}
-
-static GtkSourceLanguage *
-get_language_from_cache (GtkSourceLanguageManager *lm,
- const gchar *mime_type)
-{
- GHashTable *cache;
-
- cache = get_languages_cache (lm);
-
- return g_hash_table_lookup (cache, mime_type);
-}
-
-static void
-add_language_to_cache (GtkSourceLanguageManager *lm,
- const gchar *mime_type,
- GtkSourceLanguage *lang)
-{
- GHashTable *cache;
-
- cache = get_languages_cache (lm);
- g_hash_table_replace (cache, g_strdup (mime_type), lang);
-}
-
-GtkSourceLanguage *
-gedit_language_manager_get_language_from_mime_type (GtkSourceLanguageManager *lm,
- const gchar *mime_type)
-{
- const gchar* const *languages;
- GtkSourceLanguage *lang;
- GtkSourceLanguage *parent = NULL;
-
- g_return_val_if_fail (mime_type != NULL, NULL);
-
- lang = get_language_from_cache (lm, mime_type);
- if (lang != NULL)
- {
- gedit_debug_message (DEBUG_DOCUMENT,
- "Cache hit for %s", mime_type);
- return lang;
- }
- gedit_debug_message (DEBUG_DOCUMENT,
- "Cache miss for %s", mime_type);
-
- languages = gtk_source_language_manager_get_language_ids (lm);
- if (languages == NULL)
- return NULL;
-
- while (*languages != NULL)
- {
- gchar **mime_types;
- gchar *found = NULL;
- gint i;
-
- lang = gtk_source_language_manager_get_language (lm, *languages);
- g_return_val_if_fail (GTK_IS_SOURCE_LANGUAGE (lang), NULL);
- ++languages;
-
- mime_types = gtk_source_language_get_mime_types (lang);
- if (mime_types == NULL)
- continue;
-
- for (i = 0; mime_types[i] != NULL; ++i)
- {
- if (g_content_type_equals(mime_type, mime_types[i]))
- {
- /* If the mime-type of lang is identical to "mime-type" then
- return lang */
- gedit_debug_message (DEBUG_DOCUMENT,
- "%s is indentical to %s\n",
- mime_types[i], mime_type);
-
- found = mime_types[i];
-
- break;
- }
- else if (parent == NULL && g_content_type_is_a (mime_type, mime_types[i]))
- {
- /* If the mime-type of lang is a parent of "mime-type" then
- remember it. We will return it if we don't find
- an exact match. The first "parent" wins */
- parent = lang;
-
- gedit_debug_message (DEBUG_DOCUMENT,
- "%s is a parent of %s\n",
- mime_types[i], mime_type);
- }
- }
-
- if (found != NULL)
- {
- add_language_to_cache (lm, mime_type, lang);
-
- g_strfreev (mime_types);
-
- return lang;
- }
-
- g_strfreev (mime_types);
- }
-
- if (parent != NULL)
- add_language_to_cache (lm, mime_type, parent);
-
- return parent;
-}
-
Modified: trunk/gedit/gedit-language-manager.h
==============================================================================
--- trunk/gedit/gedit-language-manager.h (original)
+++ trunk/gedit/gedit-language-manager.h Thu Dec 25 21:02:48 2008
@@ -42,10 +42,6 @@
(GtkSourceLanguageManager *lm,
gboolean include_hidden);
-GtkSourceLanguage *gedit_language_manager_get_language_from_mime_type
- (GtkSourceLanguageManager *lm,
- const gchar *mime_type);
-
G_END_DECLS
#endif /* __GEDIT_LANGUAGES_MANAGER_H__ */
Modified: trunk/gedit/gedit-metadata-manager.c
==============================================================================
--- trunk/gedit/gedit-metadata-manager.c (original)
+++ trunk/gedit/gedit-metadata-manager.c Thu Dec 25 21:02:48 2008
@@ -36,6 +36,7 @@
#include <libxml/xmlreader.h>
#include "gedit-metadata-manager.h"
#include "gedit-debug.h"
+#include "gedit-dirs.h"
/*
#define GEDIT_METADATA_VERBOSE_DEBUG 1
@@ -220,16 +221,18 @@
static gchar *
get_metadata_filename (void)
{
- const gchar *home;
+ gchar *cache_dir;
+ gchar *metadata;
- home = g_get_home_dir ();
- if (home == NULL)
- {
- g_warning ("Could not get home directory\n");
- return NULL;
- }
+ cache_dir = gedit_dirs_get_user_cache_dir ();
+
+ metadata = g_build_filename (cache_dir,
+ METADATA_FILE,
+ NULL);
+
+ g_free (cache_dir);
- return g_build_filename (home, ".gnome2", METADATA_FILE, NULL);
+ return metadata;
}
static gboolean
@@ -536,7 +539,18 @@
file_name = get_metadata_filename ();
if (file_name != NULL)
{
- xmlSaveFormatFile (file_name, doc, 1);
+ gchar *cache_dir;
+ int res;
+
+ /* make sure the cache dir exists */
+ cache_dir = gedit_dirs_get_user_cache_dir ();
+ res = g_mkdir_with_parents (cache_dir, 0755);
+ if (res != -1)
+ {
+ xmlSaveFormatFile (file_name, doc, 1);
+ }
+
+ g_free (cache_dir);
g_free (file_name);
}
Modified: trunk/gedit/gedit-plugins-engine.c
==============================================================================
--- trunk/gedit/gedit-plugins-engine.c (original)
+++ trunk/gedit/gedit-plugins-engine.c Thu Dec 25 21:02:48 2008
@@ -35,17 +35,16 @@
#include <string.h>
#include <glib/gi18n.h>
-#include <gconf/gconf-client.h>
#include "gedit-plugins-engine.h"
#include "gedit-plugin-info-priv.h"
#include "gedit-plugin.h"
#include "gedit-debug.h"
#include "gedit-app.h"
+#include "gedit-prefs-manager.h"
#include "gedit-plugin-loader.h"
#include "gedit-object-module.h"
-
-#define USER_GEDIT_LOCATION ".gnome2/gedit/"
+#include "gedit-dirs.h"
#define GEDIT_PLUGINS_ENGINE_BASE_KEY "/apps/gedit-2/plugins"
#define GEDIT_PLUGINS_ENGINE_KEY GEDIT_PLUGINS_ENGINE_BASE_KEY "/active-plugins"
@@ -76,16 +75,11 @@
GList *plugin_list;
GHashTable *loaders;
- GConfClient *gconf_client;
- gboolean activate_from_gconf;
+ gboolean activate_from_prefs;
};
GeditPluginsEngine *default_engine = NULL;
-static void gedit_plugins_engine_active_plugins_changed (GConfClient *client,
- guint cnxn_id,
- GConfEntry *entry,
- gpointer user_data);
static void gedit_plugins_engine_activate_plugin_real (GeditPluginsEngine *engine,
GeditPluginInfo *info);
static void gedit_plugins_engine_deactivate_plugin_real (GeditPluginsEngine *engine,
@@ -178,27 +172,23 @@
LoadDirCallback callback,
gpointer userdata)
{
- const gchar *home;
+ gchar *config_dir;
const gchar *pdirs_env = NULL;
gchar **pdirs;
int i;
/* load user's plugins */
- home = g_get_home_dir ();
-
- if (home == NULL)
- {
- g_warning ("Could not get HOME directory\n");
- }
- else
+ config_dir = gedit_dirs_get_user_config_dir ();
+
+ if (config_dir != NULL)
{
gchar *pdir;
gboolean ret = TRUE;
- pdir = g_build_filename (home,
- USER_GEDIT_LOCATION,
+ pdir = g_build_filename (config_dir,
dir,
NULL);
+ g_free (config_dir);
if (g_file_test (pdir, G_FILE_TEST_IS_DIR))
ret = load_dir_real (engine, pdir, suffix, callback, userdata);
@@ -230,13 +220,18 @@
static void
load_all_plugins (GeditPluginsEngine *engine)
{
+ gchar *plugin_dir;
+
+ plugin_dir = gedit_dirs_get_gedit_plugins_dir ();
+
load_all_real (engine,
"plugins",
"GEDIT_PLUGINS_PATH",
- GEDIT_PLUGINDIR,
+ plugin_dir,
PLUGIN_EXT,
load_plugin_info,
NULL);
+ g_free (plugin_dir);
}
static guint
@@ -299,24 +294,11 @@
GEDIT_TYPE_PLUGINS_ENGINE,
GeditPluginsEnginePrivate);
- engine->priv->gconf_client = gconf_client_get_default ();
- g_return_if_fail (engine->priv->gconf_client != NULL);
-
- gconf_client_add_dir (engine->priv->gconf_client,
- GEDIT_PLUGINS_ENGINE_BASE_KEY,
- GCONF_CLIENT_PRELOAD_ONELEVEL,
- NULL);
-
- gconf_client_notify_add (engine->priv->gconf_client,
- GEDIT_PLUGINS_ENGINE_KEY,
- gedit_plugins_engine_active_plugins_changed,
- engine, NULL, NULL);
-
load_all_plugins (engine);
-
- /* make sure that the first reactivation will read active plugins from
- gconf */
- engine->priv->activate_from_gconf = TRUE;
+
+ /* make sure that the first reactivation will read active plugins
+ from the prefs */
+ engine->priv->activate_from_prefs = TRUE;
/* mapping from loadername -> loader object */
engine->priv->loaders = g_hash_table_new_full (hash_lowercase,
@@ -348,8 +330,6 @@
gedit_debug (DEBUG_PLUGINS);
- g_return_if_fail (engine->priv->gconf_client != NULL);
-
/* Firs deactivate all plugins */
for (item = engine->priv->plugin_list; item; item = item->next)
{
@@ -371,7 +351,6 @@
}
g_list_free (engine->priv->plugin_list);
- g_object_unref (engine->priv->gconf_client);
}
static void
@@ -486,15 +465,20 @@
if (loader_info == NULL)
{
+ gchar *loader_dir;
+
+ loader_dir = gedit_dirs_get_gedit_plugin_loaders_dir ();
+
/* loader could not be found in the hash, try to find it by
scanning */
load_all_real (engine,
"plugin-loaders",
NULL,
- GEDIT_LOADERDIR,
+ loader_dir,
LOADER_EXT,
(LoadDirCallback)load_loader,
NULL);
+ g_free (loader_dir);
loader_info = (LoaderInfo *)g_hash_table_lookup (
engine->priv->loaders,
@@ -546,6 +530,7 @@
GList *l = g_list_find_custom (engine->priv->plugin_list,
name,
(GCompareFunc) compare_plugin_info_and_name);
+
return l == NULL ? NULL : (GeditPluginInfo *) l->data;
}
@@ -554,7 +539,6 @@
{
GSList *active_plugins = NULL;
GList *l;
- gboolean res;
for (l = engine->priv->plugin_list; l != NULL; l = l->next)
{
@@ -567,14 +551,7 @@
}
}
- res = gconf_client_set_list (engine->priv->gconf_client,
- GEDIT_PLUGINS_ENGINE_KEY,
- GCONF_VALUE_STRING,
- active_plugins,
- NULL);
-
- if (!res)
- g_warning ("Error saving the list of active plugins.");
+ gedit_prefs_manager_set_active_plugins (active_plugins);
g_slist_free (active_plugins);
}
@@ -702,35 +679,32 @@
gedit_plugins_engine_activate_plugins (GeditPluginsEngine *engine,
GeditWindow *window)
{
- GList *pl;
GSList *active_plugins = NULL;
+ GList *pl;
gedit_debug (DEBUG_PLUGINS);
g_return_if_fail (GEDIT_IS_PLUGINS_ENGINE (engine));
g_return_if_fail (GEDIT_IS_WINDOW (window));
-
+
/* the first time, we get the 'active' plugins from gconf */
- if (engine->priv->activate_from_gconf)
+ if (engine->priv->activate_from_prefs)
{
- active_plugins = gconf_client_get_list (engine->priv->gconf_client,
- GEDIT_PLUGINS_ENGINE_KEY,
- GCONF_VALUE_STRING,
- NULL);
+ active_plugins = gedit_prefs_manager_get_active_plugins ();
}
for (pl = engine->priv->plugin_list; pl; pl = pl->next)
{
GeditPluginInfo *info = (GeditPluginInfo*)pl->data;
- if (engine->priv->activate_from_gconf &&
+ if (engine->priv->activate_from_prefs &&
g_slist_find_custom (active_plugins,
gedit_plugin_info_get_module_name (info),
(GCompareFunc)strcmp) == NULL)
continue;
/* If plugin is not active, don't try to activate/load it */
- if (!engine->priv->activate_from_gconf &&
+ if (!engine->priv->activate_from_prefs &&
!gedit_plugin_info_is_active (info))
continue;
@@ -739,11 +713,11 @@
window);
}
- if (engine->priv->activate_from_gconf)
+ if (engine->priv->activate_from_prefs)
{
g_slist_foreach (active_plugins, (GFunc) g_free, NULL);
g_slist_free (active_plugins);
- engine->priv->activate_from_gconf = FALSE;
+ engine->priv->activate_from_prefs = FALSE;
}
gedit_debug_message (DEBUG_PLUGINS, "End");
@@ -834,35 +808,16 @@
gtk_widget_show (conf_dlg);
}
-static void
-gedit_plugins_engine_active_plugins_changed (GConfClient *client,
- guint cnxn_id,
- GConfEntry *entry,
- gpointer user_data)
+void
+gedit_plugins_engine_active_plugins_changed (GeditPluginsEngine *engine)
{
- GeditPluginsEngine *engine;
- GList *pl;
gboolean to_activate;
GSList *active_plugins;
+ GList *pl;
gedit_debug (DEBUG_PLUGINS);
- g_return_if_fail (entry->key != NULL);
- g_return_if_fail (entry->value != NULL);
-
- engine = GEDIT_PLUGINS_ENGINE (user_data);
-
- if (!((entry->value->type == GCONF_VALUE_LIST) &&
- (gconf_value_get_list_type (entry->value) == GCONF_VALUE_STRING)))
- {
- g_warning ("The gconf key '%s' may be corrupted.", GEDIT_PLUGINS_ENGINE_KEY);
- return;
- }
-
- active_plugins = gconf_client_get_list (engine->priv->gconf_client,
- GEDIT_PLUGINS_ENGINE_KEY,
- GCONF_VALUE_STRING,
- NULL);
+ active_plugins = gedit_prefs_manager_get_active_plugins ();
for (pl = engine->priv->plugin_list; pl; pl = pl->next)
{
@@ -885,4 +840,3 @@
g_slist_free (active_plugins);
}
-
Modified: trunk/gedit/gedit-plugins-engine.h
==============================================================================
--- trunk/gedit/gedit-plugins-engine.h (original)
+++ trunk/gedit/gedit-plugins-engine.h Thu Dec 25 21:02:48 2008
@@ -78,7 +78,6 @@
GeditPluginInfo *gedit_plugins_engine_get_plugin_info (GeditPluginsEngine *engine,
const gchar *name);
-
/* plugin load and unloading (overall, for all windows) */
gboolean gedit_plugins_engine_activate_plugin (GeditPluginsEngine *engine,
GeditPluginInfo *info);
@@ -97,6 +96,10 @@
void gedit_plugins_engine_update_plugins_ui (GeditPluginsEngine *engine,
GeditWindow *window);
+/* private for gconf notification */
+void gedit_plugins_engine_active_plugins_changed
+ (GeditPluginsEngine *engine);
+
G_END_DECLS
#endif /* __GEDIT_PLUGINS_ENGINE_H__ */
Modified: trunk/gedit/gedit-prefs-manager-app.c
==============================================================================
--- trunk/gedit/gedit-prefs-manager-app.c (original)
+++ trunk/gedit/gedit-prefs-manager-app.c Thu Dec 25 21:02:48 2008
@@ -43,7 +43,9 @@
#include "gedit-view.h"
#include "gedit-window.h"
#include "gedit-window-private.h"
+#include "gedit-plugins-engine.h"
#include "gedit-style-scheme-manager.h"
+#include "gedit-dirs.h"
static void gedit_prefs_manager_editor_font_changed (GConfClient *client,
guint cnxn_id,
@@ -126,6 +128,11 @@
GConfEntry *entry,
gpointer user_data);
+static void gedit_prefs_manager_active_plugins_changed (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data);
+
static void gedit_prefs_manager_lockdown_changed (GConfClient *client,
guint cnxn_id,
GConfEntry *entry,
@@ -139,7 +146,7 @@
#define GEDIT_STATE_DEFAULT_SIDE_PANEL_SIZE 200
#define GEDIT_STATE_DEFAULT_BOTTOM_PANEL_SIZE 140
-#define GEDIT_STATE_FILE_LOCATION ".gnome2/gedit-2"
+#define GEDIT_STATE_FILE_LOCATION "gedit-2"
#define GEDIT_STATE_WINDOW_GROUP "window"
#define GEDIT_STATE_WINDOW_STATE "state"
@@ -162,6 +169,26 @@
static gint bottom_panel_active_page = 0;
static gint active_file_filter = -1;
+
+static gchar *
+get_state_filename (void)
+{
+ gchar *config_dir;
+ gchar *filename = NULL;
+
+ config_dir = gedit_dirs_get_user_config_dir ();
+
+ if (config_dir != NULL)
+ {
+ filename = g_build_filename (config_dir,
+ GEDIT_STATE_FILE_LOCATION,
+ NULL);
+ g_free (config_dir);
+ }
+
+ return filename;
+}
+
static GKeyFile *
get_gedit_state_file ()
{
@@ -169,25 +196,15 @@
if (state_file == NULL)
{
- const gchar *home;
- gchar *path;
+ gchar *filename;
GError *err = NULL;
state_file = g_key_file_new ();
- home = g_get_home_dir ();
- if (home == NULL)
- {
- g_warning ("Could not get HOME directory\n");
- goto out;
- }
-
- path = g_build_filename (home,
- GEDIT_STATE_FILE_LOCATION,
- NULL);
+ filename = get_state_filename ();
if (!g_key_file_load_from_file (state_file,
- path,
+ filename,
G_KEY_FILE_NONE,
&err))
{
@@ -201,11 +218,9 @@
g_error_free (err);
}
- g_free (path);
+ g_free (filename);
}
- out:
- g_return_val_if_fail (state_file != NULL, NULL);
return state_file;
}
@@ -266,26 +281,30 @@
gedit_state_file_sync ()
{
GKeyFile *state_file;
- const gchar *home;
- gchar *path;
- gchar *content;
+ gchar *config_dir;
+ gchar *filename = NULL;
+ gchar *content = NULL;
gsize length;
+ gint res;
GError *err = NULL;
gboolean ret = FALSE;
state_file = get_gedit_state_file ();
g_return_val_if_fail (state_file != NULL, FALSE);
- home = g_get_home_dir ();
- if (home == NULL)
+ config_dir = gedit_dirs_get_user_config_dir ();
+ if (config_dir == NULL)
{
- g_warning ("Could not get HOME directory\n");
+ g_warning ("Could not get config directory\n");
return ret;
}
- path = g_build_filename (home,
- GEDIT_STATE_FILE_LOCATION,
- NULL);
+ res = g_mkdir_with_parents (config_dir, 0755);
+ if (res < 0)
+ {
+ g_warning ("Could not create config directory\n");
+ goto out;
+ }
content = g_key_file_to_data (state_file,
&length,
@@ -298,15 +317,18 @@
goto out;
}
- if ((content != NULL) &&
- (!g_file_set_contents (path,
- content,
- length,
- &err)))
+ if (content != NULL)
{
- g_warning ("Could not write gedit state file: %s\n",
- err->message);
- goto out;
+ filename = get_state_filename ();
+ if (!g_file_set_contents (filename,
+ content,
+ length,
+ &err))
+ {
+ g_warning ("Could not write gedit state file: %s\n",
+ err->message);
+ goto out;
+ }
}
ret = TRUE;
@@ -315,10 +337,11 @@
if (err != NULL)
g_error_free (err);
+ g_free (config_dir);
+ g_free (filename);
g_free (content);
- g_free (path);
- return TRUE;
+ return ret;
}
/* Window state */
@@ -610,6 +633,11 @@
GPM_PREFS_DIR,
GCONF_CLIENT_PRELOAD_RECURSIVE,
NULL);
+
+ gconf_client_add_dir (gedit_prefs_manager->gconf_client,
+ GPM_PLUGINS_DIR,
+ GCONF_CLIENT_PRELOAD_RECURSIVE,
+ NULL);
gconf_client_add_dir (gedit_prefs_manager->gconf_client,
GPM_LOCKDOWN_DIR,
@@ -695,7 +723,12 @@
GPM_SAVE_DIR,
gedit_prefs_manager_auto_save_changed,
NULL, NULL, NULL);
-
+
+ gconf_client_notify_add (gedit_prefs_manager->gconf_client,
+ GPM_ACTIVE_PLUGINS,
+ gedit_prefs_manager_active_plugins_changed,
+ NULL, NULL, NULL);
+
gconf_client_notify_add (gedit_prefs_manager->gconf_client,
GPM_LOCKDOWN_DIR,
gedit_prefs_manager_lockdown_changed,
@@ -1521,6 +1554,31 @@
}
}
+static void
+gedit_prefs_manager_active_plugins_changed (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data)
+{
+ gedit_debug (DEBUG_PREFS);
+
+ g_return_if_fail (entry->key != NULL);
+ g_return_if_fail (entry->value != NULL);
+
+ if (strcmp (entry->key, GPM_ACTIVE_PLUGINS) == 0)
+ {
+ if ((entry->value->type == GCONF_VALUE_LIST) &&
+ (gconf_value_get_list_type (entry->value) == GCONF_VALUE_STRING))
+ {
+ GeditPluginsEngine *engine;
+
+ engine = gedit_plugins_engine_get_default ();
+
+ gedit_plugins_engine_active_plugins_changed (engine);
+ }
+ }
+}
+
static void
gedit_prefs_manager_lockdown_changed (GConfClient *client,
guint cnxn_id,
Modified: trunk/gedit/gedit-prefs-manager.c
==============================================================================
--- trunk/gedit/gedit-prefs-manager.c (original)
+++ trunk/gedit/gedit-prefs-manager.c Thu Dec 25 21:02:48 2008
@@ -669,6 +669,7 @@
{
GSList *strings;
GSList *res = NULL;
+
gedit_debug (DEBUG_PREFS);
g_return_val_if_fail (gedit_prefs_manager != NULL, NULL);
@@ -738,6 +739,7 @@
{
GSList *strings;
GSList *res = NULL;
+
gedit_debug (DEBUG_PREFS);
g_return_val_if_fail (gedit_prefs_manager != NULL, NULL);
@@ -813,8 +815,8 @@
GPM_SHOWN_IN_MENU_ENCODINGS,
GCONF_VALUE_STRING,
list,
- NULL);
-
+ NULL);
+
g_slist_free (list);
}
@@ -982,7 +984,51 @@
GPM_DEFAULT_RESTORE_CURSOR_POSITION);
}
+/* Plugins: we just store/return a list of strings, all the magic has to
+ * happen in the plugin engine */
+
+GSList *
+gedit_prefs_manager_get_active_plugins (void)
+{
+ GSList *plugins;
+
+ gedit_debug (DEBUG_PREFS);
+
+ g_return_val_if_fail (gedit_prefs_manager != NULL, NULL);
+ g_return_val_if_fail (gedit_prefs_manager->gconf_client != NULL, NULL);
+
+ plugins = gconf_client_get_list (gedit_prefs_manager->gconf_client,
+ GPM_ACTIVE_PLUGINS,
+ GCONF_VALUE_STRING,
+ NULL);
+
+ return plugins;
+}
+
+void
+gedit_prefs_manager_set_active_plugins (const GSList *plugins)
+{
+ g_return_if_fail (gedit_prefs_manager != NULL);
+ g_return_if_fail (gedit_prefs_manager->gconf_client != NULL);
+ g_return_if_fail (gedit_prefs_manager_active_plugins_can_set ());
+
+ gconf_client_set_list (gedit_prefs_manager->gconf_client,
+ GPM_ACTIVE_PLUGINS,
+ GCONF_VALUE_STRING,
+ (GSList *) plugins,
+ NULL);
+}
+
+gboolean
+gedit_prefs_manager_active_plugins_can_set (void)
+{
+ gedit_debug (DEBUG_PREFS);
+
+ return gedit_prefs_manager_key_is_writable (GPM_ACTIVE_PLUGINS);
+}
+
/* Global Lockdown */
+
GeditLockdownMask
gedit_prefs_manager_get_lockdown (void)
{
Modified: trunk/gedit/gedit-prefs-manager.h
==============================================================================
--- trunk/gedit/gedit-prefs-manager.h (original)
+++ trunk/gedit/gedit-prefs-manager.h Thu Dec 25 21:02:48 2008
@@ -131,6 +131,10 @@
/* White list of writable gnome-vfs methods */
#define GPM_WRITABLE_VFS_SCHEMES GPM_SAVE_DIR "/writable_vfs_schemes"
+/* Plugins */
+#define GPM_PLUGINS_DIR GEDIT_BASE_KEY "/plugins"
+#define GPM_ACTIVE_PLUGINS GPM_PLUGINS_DIR "/active-plugins"
+
/* Global Lockdown keys */
#define GPM_LOCKDOWN_DIR "/desktop/gnome/lockdown"
#define GPM_LOCKDOWN_COMMAND_LINE GPM_LOCKDOWN_DIR "/disable_command_line"
@@ -269,7 +273,6 @@
void gedit_prefs_manager_set_insert_spaces (gboolean ai);
gboolean gedit_prefs_manager_insert_spaces_can_set (void);
-
/* Auto indent */
gboolean gedit_prefs_manager_get_auto_indent (void);
void gedit_prefs_manager_set_auto_indent (gboolean ai);
@@ -401,6 +404,11 @@
void gedit_prefs_manager_set_source_style_scheme (const gchar *scheme);
gboolean gedit_prefs_manager_source_style_scheme_can_set(void);
+/* Plugins */
+GSList *gedit_prefs_manager_get_active_plugins (void);
+void gedit_prefs_manager_set_active_plugins (const GSList *plugins);
+gboolean gedit_prefs_manager_active_plugins_can_set (void);
+
/* Global lockdown */
GeditLockdownMask gedit_prefs_manager_get_lockdown (void);
Modified: trunk/gedit/gedit-print-job.c
==============================================================================
--- trunk/gedit/gedit-print-job.c (original)
+++ trunk/gedit/gedit-print-job.c Thu Dec 25 21:02:48 2008
@@ -42,6 +42,7 @@
#include "gedit-print-preview.h"
#include "gedit-marshal.h"
#include "gedit-utils.h"
+#include "gedit-dirs.h"
#define GEDIT_PRINT_JOB_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
@@ -311,13 +312,15 @@
gint line_numbers;
gboolean can_set;
GtkWrapMode wrap_mode;
+ gchar *file;
gchar *root_objects[] = {
"adjustment1",
"contents",
NULL
};
- ret = gedit_utils_get_ui_objects (GEDIT_UIDIR "gedit-print-preferences.ui",
+ file = gedit_dirs_get_ui_file ("gedit-print-preferences.ui");
+ ret = gedit_utils_get_ui_objects (file,
root_objects,
&error_widget,
"contents", &widget,
@@ -337,6 +340,7 @@
"numbers_fontbutton", &job->priv->numbers_fontbutton,
"restore_button", &job->priv->restore_button,
NULL);
+ g_free (file);
if (!ret)
{
Modified: trunk/gedit/gedit-style-scheme-manager.c
==============================================================================
--- trunk/gedit/gedit-style-scheme-manager.c (original)
+++ trunk/gedit/gedit-style-scheme-manager.c Thu Dec 25 21:02:48 2008
@@ -36,27 +36,27 @@
#include "gedit-style-scheme-manager.h"
#include "gedit-prefs-manager.h"
+#include "gedit-dirs.h"
static GtkSourceStyleSchemeManager *style_scheme_manager = NULL;
-#define GEDIT_STYLES_DIR ".gnome2/gedit/styles"
-
static gchar *
get_gedit_styles_path (void)
{
- const gchar *home;
-
- home = g_get_home_dir ();
- if (home != NULL)
- {
- gchar *dir;
+ gchar *config_dir;
+ gchar *dir = NULL;
- dir = g_build_filename (home, GEDIT_STYLES_DIR, NULL);
+ config_dir = gedit_dirs_get_user_config_dir ();
- return dir;
+ if (config_dir != NULL)
+ {
+ dir = g_build_filename (config_dir,
+ "styles",
+ NULL);
+ g_free (config_dir);
}
- return NULL;
+ return dir;
}
static void
@@ -131,7 +131,6 @@
{
GtkSourceStyleScheme *scheme;
const gchar *filename;
- const gchar *home;
gchar *dir;
gboolean res = FALSE;
@@ -143,13 +142,7 @@
if (filename == NULL)
return FALSE;
- home = g_get_home_dir ();
- if (home == NULL)
- return FALSE;
-
- dir = g_strdup_printf ("%s/%s",
- home,
- GEDIT_STYLES_DIR);
+ dir = get_gedit_styles_path ();
res = g_str_has_prefix (filename, dir);
Modified: trunk/gedit/gedit-tab.c
==============================================================================
--- trunk/gedit/gedit-tab.c (original)
+++ trunk/gedit/gedit-tab.c Thu Dec 25 21:02:48 2008
@@ -1717,9 +1717,10 @@
switch (tab->priv->state)
{
+ gchar *content_type;
gchar *mime_type;
- gchar *mime_description;
- gchar *mime_full_description;
+ gchar *content_description;
+ gchar *content_full_description;
gchar *encoding;
const GeditEncoding *enc;
@@ -1738,16 +1739,17 @@
ruri_markup);
break;
default:
+ content_type = gedit_document_get_content_type (doc);
mime_type = gedit_document_get_mime_type (doc);
- mime_description = g_content_type_get_description (mime_type);
+ content_description = g_content_type_get_description (content_type);
- if (mime_description == NULL)
- mime_full_description = g_strdup (mime_type);
+ if (content_description == NULL)
+ content_full_description = g_strdup (mime_type);
else
- mime_full_description = g_strdup_printf ("%s (%s)",
- mime_description, mime_type);
+ content_full_description = g_strdup_printf ("%s (%s)",
+ content_description, mime_type);
- g_free (mime_description);
+ g_free (content_description);
g_free (mime_type);
enc = gedit_document_get_encoding (doc);
@@ -1761,15 +1763,15 @@
"<b>%s</b> %s\n"
"<b>%s</b> %s",
_("Name:"), ruri,
- _("MIME Type:"), mime_full_description,
+ _("MIME Type:"), content_full_description,
_("Encoding:"), encoding);
g_free (encoding);
- g_free (mime_full_description);
+ g_free (content_full_description);
break;
}
-
+
g_free (ruri);
g_free (ruri_markup);
Modified: trunk/gedit/gedit-utils.c
==============================================================================
--- trunk/gedit/gedit-utils.c (original)
+++ trunk/gedit/gedit-utils.c Thu Dec 25 21:02:48 2008
@@ -482,51 +482,6 @@
return g_string_free (str, FALSE);
}
-#define GEDIT_STDIN_BUFSIZE 1024
-
-gchar *
-gedit_utils_get_stdin (void)
-{
- GString * file_contents;
- gchar *tmp_buf = NULL;
- guint buffer_length;
- fd_set rfds;
- struct timeval tv;
-
- FD_ZERO (&rfds);
- FD_SET (0, &rfds);
-
- /* wait for 1/4 of a second */
- tv.tv_sec = 0;
- tv.tv_usec = STDIN_DELAY_MICROSECONDS;
-
- if (select (1, &rfds, NULL, NULL, &tv) != 1)
- return NULL;
-
- tmp_buf = g_new0 (gchar, GEDIT_STDIN_BUFSIZE + 1);
- g_return_val_if_fail (tmp_buf != NULL, FALSE);
-
- file_contents = g_string_new (NULL);
-
- while (feof (stdin) == 0)
- {
- buffer_length = fread (tmp_buf, 1, GEDIT_STDIN_BUFSIZE, stdin);
- tmp_buf [buffer_length] = '\0';
- g_string_append (file_contents, tmp_buf);
-
- if (ferror (stdin) != 0)
- {
- g_free (tmp_buf);
- g_string_free (file_contents, TRUE);
- return NULL;
- }
- }
-
- fclose (stdin);
-
- return g_string_free (file_contents, FALSE);
-}
-
void
gedit_warning (GtkWindow *parent, const gchar *format, ...)
{
Modified: trunk/gedit/gedit-utils.h
==============================================================================
--- trunk/gedit/gedit-utils.h (original)
+++ trunk/gedit/gedit-utils.h Thu Dec 25 21:02:48 2008
@@ -99,8 +99,6 @@
gchar *gedit_utils_unescape_search_text (const gchar *text);
-gchar *gedit_utils_get_stdin (void);
-
void gedit_warning (GtkWindow *parent,
const gchar *format,
...) G_GNUC_PRINTF(2, 3);
Modified: trunk/gedit/gedit-window.c
==============================================================================
--- trunk/gedit/gedit-window.c (original)
+++ trunk/gedit/gedit-window.c Thu Dec 25 21:02:48 2008
@@ -54,6 +54,7 @@
#include "gedit-documents-panel.h"
#include "gedit-plugins-engine.h"
#include "gedit-enum-types.h"
+#include "gedit-dirs.h"
#define LANGUAGE_NONE (const gchar *)"LangNone"
#define GEDIT_UIFILE "gedit-ui.xml"
@@ -1313,6 +1314,7 @@
GtkRecentFilter *filter;
GError *error = NULL;
GeditLockdownMask lockdown;
+ gchar *ui_file;
gedit_debug (DEBUG_WINDOW);
@@ -1378,7 +1380,9 @@
window->priv->quit_action_group = action_group;
/* now load the UI definition */
- gtk_ui_manager_add_ui_from_file (manager, GEDIT_UIDIR GEDIT_UIFILE, &error);
+ ui_file = gedit_dirs_get_ui_file (GEDIT_UIFILE);
+ gtk_ui_manager_add_ui_from_file (manager, ui_file, &error);
+ g_free (ui_file);
if (error != NULL)
{
g_warning ("Could not merge %s: %s", GEDIT_UIFILE, error->message);
Modified: trunk/gedit/gedit.c
==============================================================================
--- trunk/gedit/gedit.c (original)
+++ trunk/gedit/gedit.c Thu Dec 25 21:02:48 2008
@@ -48,6 +48,7 @@
#include "gedit-app.h"
#include "gedit-commands.h"
#include "gedit-debug.h"
+#include "gedit-dirs.h"
#include "gedit-encodings.h"
#include "gedit-metadata-manager.h"
#include "gedit-plugins-engine.h"
@@ -56,12 +57,24 @@
#include "gedit-utils.h"
#include "gedit-window.h"
-#include "bacon-message-connection.h"
#include "eggsmclient.h"
#include "eggdesktopfile.h"
+#ifdef G_OS_WIN32
+#define SAVE_DATADIR DATADIR
+#undef DATADIR
+#include <windows.h>
+#define DATADIR SAVE_DATADIR
+#undef SAVE_DATADIR
+#endif
+
static guint32 startup_timestamp = 0;
+
+#ifndef G_OS_WIN32
+#include "bacon-message-connection.h"
+
static BaconMessageConnection *connection;
+#endif
static void
show_version_and_quit (void)
@@ -207,6 +220,7 @@
}
/* serverside */
+#ifndef G_OS_WIN32
static void
on_message_received (const char *message,
gpointer data)
@@ -456,6 +470,37 @@
g_string_free (command, TRUE);
}
+#endif /* G_OS_WIN32 */
+
+#ifdef G_OS_WIN32
+static void
+setup_path (void)
+{
+ /* Set PATH to include the gedit executable's folder */
+ wchar_t exe_filename[MAX_PATH];
+ wchar_t *p;
+ gchar *exe_folder_utf8;
+ gchar *path;
+
+ GetModuleFileNameW (NULL, exe_filename, G_N_ELEMENTS (exe_filename));
+
+ p = wcsrchr (exe_filename, L'\\');
+ g_assert (p != NULL);
+
+ *p = L'\0';
+ exe_folder_utf8 = g_utf16_to_utf8 (exe_filename, -1, NULL, NULL, NULL);
+
+ path = g_build_path (";",
+ exe_folder_utf8,
+ g_getenv ("PATH"),
+ NULL);
+ if (!g_setenv ("PATH", path, TRUE))
+ g_warning ("Could not set PATH for gedit");
+
+ g_free (exe_folder_utf8);
+ g_free (path);
+}
+#endif
int
main (int argc, char *argv[])
@@ -466,6 +511,8 @@
GeditApp *app;
gboolean restored = FALSE;
GError *error = NULL;
+ gchar *dir;
+ gchar *icon_dir;
/* Init glib threads asap */
g_thread_init (NULL);
@@ -476,7 +523,9 @@
setlocale (LC_ALL, "");
- bindtextdomain (GETTEXT_PACKAGE, GEDIT_LOCALEDIR);
+ dir = gedit_dirs_get_gedit_locale_dir ();
+ bindtextdomain (GETTEXT_PACKAGE, dir);
+ g_free (dir);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
@@ -488,6 +537,10 @@
g_option_context_add_group (context, gtk_get_option_group (FALSE));
g_option_context_add_group (context, egg_sm_client_get_option_group ());
+#ifdef G_OS_WIN32
+ setup_path ();
+#endif
+
gtk_init (&argc, &argv);
if (!g_option_context_parse (context, &argc, &argv, &error))
@@ -500,6 +553,7 @@
g_option_context_free (context);
+#ifndef G_OS_WIN32
gedit_debug_message (DEBUG_APP, "Create bacon connection");
connection = bacon_message_connection_new ("gedit");
@@ -536,15 +590,27 @@
{
g_warning ("Cannot create the 'gedit' connection.");
}
+#endif
gedit_debug_message (DEBUG_APP, "Set icon");
+ dir = gedit_dirs_get_gedit_data_dir ();
+ icon_dir = g_build_filename (dir,
+ "icons",
+ NULL);
+ g_free (dir);
+
gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
- GEDIT_ICONDIR);
+ icon_dir);
+ g_free (icon_dir);
+#if !defined PLATFORM_OSX && !defined G_OS_WIN32
/* Set the associated .desktop file */
-#ifndef PLATFORM_OSX
egg_set_desktop_file (DATADIR "/applications/gedit.desktop");
+#else
+ /* manually set name and icon */
+ g_set_application_name("gedit");
+ gtk_window_set_default_icon_name ("accessories-text-editor");
#endif
/* Load user preferences */
@@ -607,7 +673,9 @@
gedit_debug_message (DEBUG_APP, "Start gtk-main");
gtk_main();
+#ifndef G_OS_WIN32
bacon_message_connection_free (connection);
+#endif
/* We kept the original engine reference here. So let's unref it to
* finalize it properly.
Modified: trunk/gedit/smclient/eggdesktopfile.c
==============================================================================
--- trunk/gedit/smclient/eggdesktopfile.c (original)
+++ trunk/gedit/smclient/eggdesktopfile.c Thu Dec 25 21:02:48 2008
@@ -987,7 +987,7 @@
NULL);
}
-#define EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH (30 /* seconds */ * 1000)
+#define EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH (30 /* seconds */)
typedef struct {
GdkDisplay *display;
@@ -1017,8 +1017,8 @@
sn_data->display = g_object_ref (display);
sn_data->startup_id = g_strdup (startup_id);
- g_timeout_add (EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH,
- startup_notification_timeout, sn_data);
+ g_timeout_add_seconds (EGG_DESKTOP_FILE_SN_TIMEOUT_LENGTH,
+ startup_notification_timeout, sn_data);
}
#endif /* GTK 2.12 */
Modified: trunk/plugin-loaders/python/bindings/gedit.defs
==============================================================================
--- trunk/plugin-loaders/python/bindings/gedit.defs (original)
+++ trunk/plugin-loaders/python/bindings/gedit.defs Thu Dec 25 21:02:48 2008
@@ -244,6 +244,12 @@
(return-type "gchar*")
)
+(define-method get_content_type
+ (of-object "GeditDocument")
+ (c-name "gedit_document_get_content_type")
+ (return-type "gchar*")
+)
+
(define-method get_mime_type
(of-object "GeditDocument")
(c-name "gedit_document_get_mime_type")
@@ -988,15 +994,6 @@
)
)
-(define-function language_manager_get_language_from_mime_type
- (c-name "gedit_language_manager_get_language_from_mime_type")
- (return-type "GtkSourceLanguage*")
- (parameters
- '("GtkSourceLanguageManager*" "lm")
- '("const-gchar*" "mime_type")
- )
-)
-
;; From ../../gedit/gedit-debug.h
(define-function debug
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]