[gnome-builder/wip/chergert/vcs-plugins] plugins: start extracting VCS implementations into plugins
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/vcs-plugins] plugins: start extracting VCS implementations into plugins
- Date: Sun, 23 Aug 2015 03:52:36 +0000 (UTC)
commit e56f2708c12ae9bb1ddc570e2bcacfbbcdb5ba2a
Author: Christian Hergert <christian hergert me>
Date: Sat Aug 22 20:52:11 2015 -0700
plugins: start extracting VCS implementations into plugins
configure.ac | 1 +
libide/Makefile.am | 10 -----
libide/ide-vcs.c | 37 +++++++++-----------
libide/ide-vcs.h | 9 ++---
libide/ide.c | 12 ------
libide/ide.h | 3 --
plugins/Makefile.am | 1 +
plugins/fallback/Makefile.am | 2 +
plugins/fallback/fallback.plugin | 1 -
.../fallback}/ide-directory-vcs.c | 27 ++++++++------
.../fallback}/ide-directory-vcs.h | 5 +--
plugins/git/Makefile.am | 26 ++++++++++++++
.../git/git-plugin.c | 23 +++++-------
plugins/git/git.plugin | 8 ++++
.../git/ide-git-buffer-change-monitor.c | 0
.../git/ide-git-buffer-change-monitor.h | 0
{libide => plugins}/git/ide-git-remote-callbacks.c | 5 +--
{libide => plugins}/git/ide-git-remote-callbacks.h | 0
{libide => plugins}/git/ide-git-vcs.c | 20 ++++++----
{libide => plugins}/git/ide-git-vcs.h | 5 +--
20 files changed, 100 insertions(+), 95 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 9f06494..0764551 100644
--- a/configure.ac
+++ b/configure.ac
@@ -402,6 +402,7 @@ AC_CONFIG_FILES([
plugins/device-manager/Makefile
plugins/fallback/Makefile
plugins/file-search/Makefile
+ plugins/git/Makefile
plugins/gnome-code-assistance/Makefile
plugins/html-completion/Makefile
plugins/jedi/Makefile
diff --git a/libide/Makefile.am b/libide/Makefile.am
index 4a25409..fb0b1f8 100644
--- a/libide/Makefile.am
+++ b/libide/Makefile.am
@@ -7,16 +7,10 @@ pkglibdir = $(libdir)/gnome-builder
pkglib_LTLIBRARIES = libide-1.0.la
libide_1_0_la_public_sources = \
- directory/ide-directory-vcs.c \
- directory/ide-directory-vcs.h \
doap/ide-doap-person.c \
doap/ide-doap-person.h \
doap/ide-doap.c \
doap/ide-doap.h \
- git/ide-git-remote-callbacks.c \
- git/ide-git-remote-callbacks.h \
- git/ide-git-vcs.c \
- git/ide-git-vcs.h \
ide-back-forward-item.c \
ide-back-forward-item.h \
ide-back-forward-list.c \
@@ -185,8 +179,6 @@ libide_1_0_la_SOURCES = \
editorconfig/ide-editorconfig-file-settings.c \
editorconfig/ide-editorconfig-file-settings.h \
gconstructor.h \
- git/ide-git-buffer-change-monitor.c \
- git/ide-git-buffer-change-monitor.h \
gjs/ide-gjs-script.cpp \
gjs/ide-gjs-script.h \
gsettings/ide-gsettings-file-settings.c \
@@ -255,10 +247,8 @@ libide_1_0_la_includes = \
-I$(top_srcdir)/contrib/search \
-I$(top_srcdir)/contrib/xml \
-I$(srcdir) \
- -I$(srcdir)/directory \
-I$(srcdir)/doap \
-I$(srcdir)/editorconfig \
- -I$(srcdir)/git \
-I$(srcdir)/gjs \
-I$(srcdir)/gsettings \
-I$(srcdir)/local \
diff --git a/libide/ide-vcs.c b/libide/ide-vcs.c
index 0648c69..f3f7ce3 100644
--- a/libide/ide-vcs.c
+++ b/libide/ide-vcs.c
@@ -20,15 +20,10 @@
#include "ide-buffer-change-monitor.h"
#include "ide-vcs.h"
-G_DEFINE_ABSTRACT_TYPE (IdeVcs, ide_vcs, IDE_TYPE_OBJECT)
+G_DEFINE_INTERFACE (IdeVcs, ide_vcs, IDE_TYPE_OBJECT)
static void
-ide_vcs_class_init (IdeVcsClass *klass)
-{
-}
-
-static void
-ide_vcs_init (IdeVcs *self)
+ide_vcs_default_init (IdeVcsInterface *iface)
{
}
@@ -39,8 +34,8 @@ ide_vcs_is_ignored (IdeVcs *self,
{
g_return_val_if_fail (IDE_IS_VCS (self), FALSE);
- if (IDE_VCS_GET_CLASS (self)->is_ignored)
- return IDE_VCS_GET_CLASS (self)->is_ignored (self, file, error);
+ if (IDE_VCS_GET_IFACE (self)->is_ignored)
+ return IDE_VCS_GET_IFACE (self)->is_ignored (self, file, error);
return FALSE;
}
@@ -59,8 +54,8 @@ ide_vcs_get_working_directory (IdeVcs *self)
{
g_return_val_if_fail (IDE_IS_VCS (self), NULL);
- if (IDE_VCS_GET_CLASS (self)->get_working_directory)
- return IDE_VCS_GET_CLASS (self)->get_working_directory (self);
+ if (IDE_VCS_GET_IFACE (self)->get_working_directory)
+ return IDE_VCS_GET_IFACE (self)->get_working_directory (self);
return NULL;
}
@@ -82,8 +77,8 @@ ide_vcs_get_buffer_change_monitor (IdeVcs *self,
g_return_val_if_fail (IDE_IS_VCS (self), NULL);
g_return_val_if_fail (IDE_IS_BUFFER (buffer), NULL);
- if (IDE_VCS_GET_CLASS (self)->get_buffer_change_monitor)
- ret = IDE_VCS_GET_CLASS (self)->get_buffer_change_monitor (self, buffer);
+ if (IDE_VCS_GET_IFACE (self)->get_buffer_change_monitor)
+ ret = IDE_VCS_GET_IFACE (self)->get_buffer_change_monitor (self, buffer);
g_return_val_if_fail (!ret || IDE_IS_BUFFER_CHANGE_MONITOR (ret), NULL);
@@ -97,15 +92,17 @@ ide_vcs_new_async (IdeContext *context,
GAsyncReadyCallback callback,
gpointer user_data)
{
- ide_object_new_async (IDE_VCS_EXTENSION_POINT,
- io_priority,
- cancellable,
- callback,
- user_data,
- "context", context,
- NULL);
+ ide_object_new_for_extension_async (IDE_TYPE_VCS, NULL, NULL,
+ io_priority, cancellable, callback, user_data,
+ "context", context,
+ NULL);
}
+/**
+ * ide_vcs_new_finish:
+ *
+ * Returns: (transfer full): A new #IdeVcs or %NULL and @error is set.
+ */
IdeVcs *
ide_vcs_new_finish (GAsyncResult *result,
GError **error)
diff --git a/libide/ide-vcs.h b/libide/ide-vcs.h
index 48f0181..d37f8bd 100644
--- a/libide/ide-vcs.h
+++ b/libide/ide-vcs.h
@@ -25,14 +25,13 @@
G_BEGIN_DECLS
-#define IDE_TYPE_VCS (ide_vcs_get_type())
-#define IDE_VCS_EXTENSION_POINT "org.gnome.libide.extensions.vcs"
+#define IDE_TYPE_VCS (ide_vcs_get_type())
-G_DECLARE_DERIVABLE_TYPE (IdeVcs, ide_vcs, IDE, VCS, IdeObject)
+G_DECLARE_INTERFACE (IdeVcs, ide_vcs, IDE, VCS, IdeObject)
-struct _IdeVcsClass
+struct _IdeVcsInterface
{
- IdeObjectClass parent;
+ GTypeInterface parent_iface;
GFile *(*get_working_directory) (IdeVcs *self);
IdeBufferChangeMonitor *(*get_buffer_change_monitor) (IdeVcs *self,
diff --git a/libide/ide.c b/libide/ide.c
index 70d5441..041e8cc 100644
--- a/libide/ide.c
+++ b/libide/ide.c
@@ -24,10 +24,8 @@
#include "gconstructor.h"
#include "ide.h"
-#include "ide-directory-vcs.h"
#include "ide-editorconfig-file-settings.h"
#include "ide-file-settings.h"
-#include "ide-git-vcs.h"
#include "ide-gjs-script.h"
#include "ide-gsettings-file-settings.h"
#include "ide-modelines-file-settings.h"
@@ -81,7 +79,6 @@ ide_init_ctor (void)
g_io_extension_point_register (IDE_FILE_SETTINGS_EXTENSION_POINT);
g_io_extension_point_register (IDE_SCRIPT_EXTENSION_POINT);
- g_io_extension_point_register (IDE_VCS_EXTENSION_POINT);
g_io_extension_point_implement (IDE_FILE_SETTINGS_EXTENSION_POINT,
IDE_TYPE_MODELINES_FILE_SETTINGS,
@@ -106,15 +103,6 @@ ide_init_ctor (void)
IDE_SCRIPT_EXTENSION_POINT".py",
-100);
- g_io_extension_point_implement (IDE_VCS_EXTENSION_POINT,
- IDE_TYPE_GIT_VCS,
- IDE_VCS_EXTENSION_POINT".git",
- -100);
- g_io_extension_point_implement (IDE_VCS_EXTENSION_POINT,
- IDE_TYPE_DIRECTORY_VCS,
- IDE_VCS_EXTENSION_POINT".directory",
- -200);
-
modeline_parser_init ();
ggit_init ();
diff --git a/libide/ide.h b/libide/ide.h
index e6689af..e3b5e4e 100644
--- a/libide/ide.h
+++ b/libide/ide.h
@@ -94,11 +94,8 @@ G_BEGIN_DECLS
#include "ide-vcs.h"
#include "ide-vcs-uri.h"
-#include "directory/ide-directory-vcs.h"
#include "doap/ide-doap-person.h"
#include "doap/ide-doap.h"
-#include "git/ide-git-remote-callbacks.h"
-#include "git/ide-git-vcs.h"
#include "local/ide-local-device.h"
#include "theatrics/ide-animation.h"
#include "util/ide-line-reader.h"
diff --git a/plugins/Makefile.am b/plugins/Makefile.am
index 9faf082..db08651 100644
--- a/plugins/Makefile.am
+++ b/plugins/Makefile.am
@@ -8,6 +8,7 @@ SUBDIRS = \
device-manager \
fallback \
file-search \
+ git \
gnome-code-assistance \
html-completion \
jedi \
diff --git a/plugins/fallback/Makefile.am b/plugins/fallback/Makefile.am
index 11e8637..474995e 100644
--- a/plugins/fallback/Makefile.am
+++ b/plugins/fallback/Makefile.am
@@ -6,6 +6,8 @@ libfallback_plugin_la_SOURCES = \
fallback-plugin.c \
ide-directory-build-system.c \
ide-directory-build-system.h \
+ ide-directory-vcs.c \
+ ide-directory-vcs.h \
$(NULL)
libfallback_plugin_la_CFLAGS = \
diff --git a/plugins/fallback/fallback.plugin b/plugins/fallback/fallback.plugin
index c733bee..1fce652 100644
--- a/plugins/fallback/fallback.plugin
+++ b/plugins/fallback/fallback.plugin
@@ -6,4 +6,3 @@ Authors=Christian Hergert <christian hergert me>
Copyright=Copyright © 2015 Christian Hergert
Builtin=true
Hidden=true
-X-Build-System-Priority=10000000
diff --git a/libide/directory/ide-directory-vcs.c b/plugins/fallback/ide-directory-vcs.c
similarity index 92%
rename from libide/directory/ide-directory-vcs.c
rename to plugins/fallback/ide-directory-vcs.c
index ea50434..b5e4fdd 100644
--- a/libide/directory/ide-directory-vcs.c
+++ b/plugins/fallback/ide-directory-vcs.c
@@ -16,6 +16,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#define G_LOG_DOMAIN "directory-vcs"
+
#include <glib/gi18n.h>
#include "ide-context.h"
@@ -24,18 +26,16 @@
struct _IdeDirectoryVcs
{
- IdeVcs parent_instance;
-
- GFile *working_directory;
+ IdeObject parent_instance;
+ GFile *working_directory;
};
-#define LOAD_MAX_FILES 5000
-
static void async_initable_iface_init (GAsyncInitableIface *iface);
+static void vcs_iface_init (IdeVcsInterface *iface);
-G_DEFINE_TYPE_EXTENDED (IdeDirectoryVcs, ide_directory_vcs, IDE_TYPE_VCS, 0,
- G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE,
- async_initable_iface_init))
+G_DEFINE_TYPE_EXTENDED (IdeDirectoryVcs, ide_directory_vcs, IDE_TYPE_OBJECT, 0,
+ G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)
+ G_IMPLEMENT_INTERFACE (IDE_TYPE_VCS, vcs_iface_init))
static GFile *
ide_directory_vcs_get_working_directory (IdeVcs *vcs)
@@ -91,14 +91,17 @@ ide_directory_vcs_dispose (GObject *object)
}
static void
+vcs_iface_init (IdeVcsInterface *iface)
+{
+ iface->get_working_directory = ide_directory_vcs_get_working_directory;
+ iface->is_ignored = ide_directory_vcs_is_ignored;
+}
+
+static void
ide_directory_vcs_class_init (IdeDirectoryVcsClass *klass)
{
- IdeVcsClass *vcs_class = IDE_VCS_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- vcs_class->get_working_directory = ide_directory_vcs_get_working_directory;
- vcs_class->is_ignored = ide_directory_vcs_is_ignored;
-
object_class->dispose = ide_directory_vcs_dispose;
}
diff --git a/libide/directory/ide-directory-vcs.h b/plugins/fallback/ide-directory-vcs.h
similarity index 87%
copy from libide/directory/ide-directory-vcs.h
copy to plugins/fallback/ide-directory-vcs.h
index e0a6e78..f3911fa 100644
--- a/libide/directory/ide-directory-vcs.h
+++ b/plugins/fallback/ide-directory-vcs.h
@@ -19,14 +19,13 @@
#ifndef IDE_DIRECTORY_VCS_H
#define IDE_DIRECTORY_VCS_H
-#include "ide-vcs.h"
+#include <ide.h>
G_BEGIN_DECLS
#define IDE_TYPE_DIRECTORY_VCS (ide_directory_vcs_get_type())
-G_DECLARE_FINAL_TYPE (IdeDirectoryVcs, ide_directory_vcs,
- IDE, DIRECTORY_VCS, IdeVcs)
+G_DECLARE_FINAL_TYPE (IdeDirectoryVcs, ide_directory_vcs, IDE, DIRECTORY_VCS, IdeObject)
G_END_DECLS
diff --git a/plugins/git/Makefile.am b/plugins/git/Makefile.am
new file mode 100644
index 0000000..603dc11
--- /dev/null
+++ b/plugins/git/Makefile.am
@@ -0,0 +1,26 @@
+plugindir = $(libdir)/gnome-builder/plugins
+plugin_LTLIBRARIES = libgit-plugin.la
+plugin_DATA = git.plugin
+
+libgit_plugin_la_SOURCES = \
+ git-plugin.c \
+ ide-git-buffer-change-monitor.c \
+ ide-git-buffer-change-monitor.h \
+ ide-git-remote-callbacks.c \
+ ide-git-remote-callbacks.h \
+ ide-git-vcs.c \
+ ide-git-vcs.h \
+ $(NULL)
+
+libgit_plugin_la_CFLAGS = \
+ $(BUILDER_CFLAGS) \
+ -I$(top_srcdir)/libide \
+ -I$(top_srcdir)/contrib/egg \
+ $(NULL)
+
+libgit_plugin_la_LDFLAGS = \
+ -avoid-version \
+ -module \
+ $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/libide/directory/ide-directory-vcs.h b/plugins/git/git-plugin.c
similarity index 68%
rename from libide/directory/ide-directory-vcs.h
rename to plugins/git/git-plugin.c
index e0a6e78..23b1bbc 100644
--- a/libide/directory/ide-directory-vcs.h
+++ b/plugins/git/git-plugin.c
@@ -1,4 +1,4 @@
-/* ide-directory-vcs.h
+/* git-plugin.c
*
* Copyright (C) 2015 Christian Hergert <christian hergert me>
*
@@ -16,18 +16,13 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef IDE_DIRECTORY_VCS_H
-#define IDE_DIRECTORY_VCS_H
+#include <libpeas/peas.h>
+#include <ide.h>
-#include "ide-vcs.h"
+#include "ide-git-vcs.h"
-G_BEGIN_DECLS
-
-#define IDE_TYPE_DIRECTORY_VCS (ide_directory_vcs_get_type())
-
-G_DECLARE_FINAL_TYPE (IdeDirectoryVcs, ide_directory_vcs,
- IDE, DIRECTORY_VCS, IdeVcs)
-
-G_END_DECLS
-
-#endif /* IDE_DIRECTORY_VCS_H */
+void
+peas_register_types (PeasObjectModule *module)
+{
+ peas_object_module_register_extension_type (module, IDE_TYPE_VCS, IDE_TYPE_GIT_VCS);
+}
diff --git a/plugins/git/git.plugin b/plugins/git/git.plugin
new file mode 100644
index 0000000..5ef4602
--- /dev/null
+++ b/plugins/git/git.plugin
@@ -0,0 +1,8 @@
+[Plugin]
+Module=git-plugin
+Name=Git
+Description=Provides git integration with Builder.
+Authors=Christian Hergert <christian hergert me>
+Copyright=Copyright © 2015 Christian Hergert
+Builtin=true
+Hidden=true
diff --git a/libide/git/ide-git-buffer-change-monitor.c b/plugins/git/ide-git-buffer-change-monitor.c
similarity index 100%
rename from libide/git/ide-git-buffer-change-monitor.c
rename to plugins/git/ide-git-buffer-change-monitor.c
diff --git a/libide/git/ide-git-buffer-change-monitor.h b/plugins/git/ide-git-buffer-change-monitor.h
similarity index 100%
rename from libide/git/ide-git-buffer-change-monitor.h
rename to plugins/git/ide-git-buffer-change-monitor.h
diff --git a/libide/git/ide-git-remote-callbacks.c b/plugins/git/ide-git-remote-callbacks.c
similarity index 98%
rename from libide/git/ide-git-remote-callbacks.c
rename to plugins/git/ide-git-remote-callbacks.c
index 9d8b996..98d1611 100644
--- a/libide/git/ide-git-remote-callbacks.c
+++ b/plugins/git/ide-git-remote-callbacks.c
@@ -17,12 +17,9 @@
*/
#include <glib/gi18n.h>
+#include <ide.h>
-#include "ide-animation.h"
-#include "ide-debug.h"
#include "ide-git-remote-callbacks.h"
-#include "ide-macros.h"
-#include "ide-progress.h"
#define ANIMATION_DURATION_MSEC 250
diff --git a/libide/git/ide-git-remote-callbacks.h b/plugins/git/ide-git-remote-callbacks.h
similarity index 100%
rename from libide/git/ide-git-remote-callbacks.h
rename to plugins/git/ide-git-remote-callbacks.h
diff --git a/libide/git/ide-git-vcs.c b/plugins/git/ide-git-vcs.c
similarity index 96%
rename from libide/git/ide-git-vcs.c
rename to plugins/git/ide-git-vcs.c
index f6e098a..9249987 100644
--- a/libide/git/ide-git-vcs.c
+++ b/plugins/git/ide-git-vcs.c
@@ -35,7 +35,7 @@
struct _IdeGitVcs
{
- IdeVcs parent_instance;
+ IdeObject parent_instance;
GgitRepository *repository;
GgitRepository *change_monitor_repository;
@@ -50,6 +50,7 @@ struct _IdeGitVcs
};
static void g_async_initable_init_interface (GAsyncInitableIface *iface);
+static void ide_vcs_iface_init (IdeVcsInterface *iface);
static void ide_git_vcs_reload_async (IdeGitVcs *self,
GCancellable *cancellable,
GAsyncReadyCallback callback,
@@ -59,8 +60,8 @@ static gboolean ide_git_vcs_reload_finish (IdeGitVcs *self,
GError **error);
G_DEFINE_TYPE_EXTENDED (IdeGitVcs, ide_git_vcs, IDE_TYPE_VCS, 0,
- G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE,
- g_async_initable_init_interface))
+ G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, g_async_initable_init_interface)
+ G_IMPLEMENT_INTERFACE (IDE_TYPE_VCS, ide_vcs_iface_init))
enum {
PROP_0,
@@ -361,18 +362,21 @@ ide_git_vcs_get_property (GObject *object,
}
static void
+ide_vcs_iface_init (IdeVcsInterface *iface)
+{
+ iface->get_working_directory = ide_git_vcs_get_working_directory;
+ iface->get_buffer_change_monitor = ide_git_vcs_get_buffer_change_monitor;
+ iface->is_ignored = ide_git_vcs_is_ignored;
+}
+
+static void
ide_git_vcs_class_init (IdeGitVcsClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- IdeVcsClass *vcs_class = IDE_VCS_CLASS (klass);
object_class->dispose = ide_git_vcs_dispose;
object_class->get_property = ide_git_vcs_get_property;
- vcs_class->get_working_directory = ide_git_vcs_get_working_directory;
- vcs_class->get_buffer_change_monitor = ide_git_vcs_get_buffer_change_monitor;
- vcs_class->is_ignored = ide_git_vcs_is_ignored;
-
/**
* IdeGitVcs:repository:
*
diff --git a/libide/git/ide-git-vcs.h b/plugins/git/ide-git-vcs.h
similarity index 91%
rename from libide/git/ide-git-vcs.h
rename to plugins/git/ide-git-vcs.h
index 24c4683..d7b62ba 100644
--- a/libide/git/ide-git-vcs.h
+++ b/plugins/git/ide-git-vcs.h
@@ -20,14 +20,13 @@
#define IDE_GIT_VCS_H
#include <libgit2-glib/ggit.h>
-
-#include "ide-vcs.h"
+#include <ide.h>
G_BEGIN_DECLS
#define IDE_TYPE_GIT_VCS (ide_git_vcs_get_type())
-G_DECLARE_FINAL_TYPE (IdeGitVcs, ide_git_vcs, IDE, GIT_VCS, IdeVcs)
+G_DECLARE_FINAL_TYPE (IdeGitVcs, ide_git_vcs, IDE, GIT_VCS, IdeObject)
GgitRepository *ide_git_vcs_get_repository (IdeGitVcs *vcs);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]