geany  1.38
About: Geany is a text editor (using GTK2) with basic features of an integrated development environment (syntax highlighting, code folding, symbol name auto-completion, ...). F: office T: editor programming GTK+ IDE
  Fossies Dox: geany-1.38.tar.bz2  ("unofficial" and yet experimental doxygen-generated source code documentation)  

plugins.c File Reference
#include "plugins.h"
#include "app.h"
#include "dialogs.h"
#include "documentprivate.h"
#include "encodings.h"
#include "geanyobject.h"
#include "geanywraplabel.h"
#include "highlighting.h"
#include "keybindingsprivate.h"
#include "keyfile.h"
#include "main.h"
#include "msgwindow.h"
#include "navqueue.h"
#include "plugindata.h"
#include "pluginprivate.h"
#include "pluginutils.h"
#include "prefs.h"
#include "sciwrappers.h"
#include "stash.h"
#include "support.h"
#include "symbols.h"
#include "templates.h"
#include "toolbar.h"
#include "ui_utils.h"
#include "utils.h"
#include "win32.h"
#include <gtk/gtk.h>
#include <string.h>
Include dependency graph for plugins.c:

Go to the source code of this file.

Classes

struct  ForEachDocData
 
struct  PluginProxy
 
struct  LegacyRealFuncs
 
struct  PluginManagerWidgets
 

Macros

#define PLUGIN_VERSION_CODE(api, abi)   ((abi) != GEANY_ABI_VERSION ? -1 : (api))
 
#define CHECK_FUNC(__x)
 

Enumerations

enum  {
  PLUGIN_COLUMN_CHECK = 0 , PLUGIN_COLUMN_CAN_UNCHECK , PLUGIN_COLUMN_PLUGIN , PLUGIN_N_COLUMNS ,
  PM_BUTTON_KEYBINDINGS , PM_BUTTON_CONFIGURE , PM_BUTTON_HELP
}
 

Functions

static gchar * get_plugin_path (void)
 
static void pm_show_dialog (GtkMenuItem *menuitem, gpointer user_data)
 
static gpointer plugin_load_gmodule (GeanyPlugin *proxy, GeanyPlugin *plugin, const gchar *filename, gpointer pdata)
 
static void plugin_unload_gmodule (GeanyPlugin *proxy, GeanyPlugin *plugin, gpointer load_data, gpointer pdata)
 
static void plugin_free (Plugin *plugin)
 
static void geany_data_init (void)
 
static void proxied_count_inc (Plugin *proxy)
 
static void proxied_count_dec (Plugin *proxy)
 
static gboolean plugin_loaded (Plugin *plugin)
 
static Pluginfind_active_plugin_by_name (const gchar *filename)
 
static gboolean plugin_check_version (Plugin *plugin, int plugin_version_code)
 
static void add_callbacks (Plugin *plugin, PluginCallback *callbacks)
 
static void read_key_group (Plugin *plugin)
 
static gint cmp_plugin_names (gconstpointer a, gconstpointer b)
 
gboolean geany_plugin_register (GeanyPlugin *plugin, gint api_version, gint min_api_version, gint abi_version)
 Register a plugin to Geany. More...
 
gboolean geany_plugin_register_full (GeanyPlugin *plugin, gint api_version, gint min_api_version, gint abi_version, gpointer pdata, GDestroyNotify free_func)
 Register a plugin to Geany, with plugin-defined data. More...
 
static gboolean legacy_init (GeanyPlugin *plugin, gpointer pdata)
 
static void legacy_cleanup (GeanyPlugin *plugin, gpointer pdata)
 
static void legacy_help (GeanyPlugin *plugin, gpointer pdata)
 
static GtkWidget * legacy_configure (GeanyPlugin *plugin, GtkDialog *parent, gpointer pdata)
 
static void free_legacy_cbs (gpointer data)
 
static void register_legacy_plugin (Plugin *plugin, GModule *module)
 
static gboolean plugin_load (Plugin *plugin)
 
static Pluginplugin_new (Plugin *proxy, const gchar *fname, gboolean load_plugin, gboolean add_to_list)
 
static void on_object_weak_notify (gpointer data, GObject *old_ptr)
 
void plugin_watch_object (Plugin *plugin, gpointer object)
 
static void remove_callbacks (Plugin *plugin)
 
static void remove_sources (Plugin *plugin)
 
void plugin_make_resident (Plugin *plugin)
 
gpointer plugin_get_module_symbol (Plugin *plugin, const gchar *sym)
 
static gboolean is_active_plugin (Plugin *plugin)
 
static void remove_each_doc_data (GQuark key_id, gpointer data, gpointer user_data)
 
static void remove_doc_data (Plugin *plugin)
 
static void plugin_cleanup (Plugin *plugin)
 
static void free_subplugins (Plugin *proxy)
 
static gboolean unregister_proxy (Plugin *proxy)
 
static gchar * get_custom_plugin_path (const gchar *plugin_path_config, const gchar *plugin_path_system)
 
static gboolean check_plugin_path (const gchar *fname)
 
static PluginProxyis_plugin (const gchar *file)
 
static void load_active_plugins (void)
 
static void load_plugins_from_path (const gchar *path)
 
static gint cmp_plugin_by_proxy (gconstpointer a, gconstpointer b)
 
static void load_all_plugins (void)
 
static void on_tools_menu_show (GtkWidget *menu_item, G_GNUC_UNUSED gpointer user_data)
 
void plugins_load_active (void)
 
static void update_active_plugins_pref (void)
 
void plugins_init (void)
 
static void plugin_free_leaf (Plugin *p)
 
void plugins_finalize (void)
 
gboolean plugins_have_preferences (void)
 
static void pm_update_buttons (Plugin *p)
 
static void pm_selection_changed (GtkTreeSelection *selection, gpointer user_data)
 
static gboolean find_iter_for_plugin (Plugin *p, GtkTreeModel *model, GtkTreeIter *iter)
 
static void pm_populate (GtkTreeStore *store)
 
static void pm_plugin_toggled (GtkCellRendererToggle *cell, gchar *pth, gpointer data)
 
static gboolean pm_treeview_query_tooltip (GtkWidget *widget, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip, gpointer user_data)
 
static void pm_treeview_text_cell_data_func (GtkTreeViewColumn *column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
 
static gboolean pm_treeview_button_press_cb (GtkWidget *widget, GdkEventButton *event, G_GNUC_UNUSED gpointer user_data)
 
static gint pm_tree_sort_func (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
 
static gboolean pm_tree_search (const gchar *key, const gchar *haystack)
 
static gboolean pm_tree_filter_func (GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 
static void on_pm_tree_filter_entry_changed_cb (GtkEntry *entry, gpointer user_data)
 
static void on_pm_tree_filter_entry_icon_release_cb (GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer user_data)
 
static void pm_prepare_treeview (GtkWidget *tree, GtkTreeStore *store)
 
static void pm_on_plugin_button_clicked (G_GNUC_UNUSED GtkButton *button, gpointer user_data)
 
static void free_non_active_plugin (gpointer data, gpointer user_data)
 
static void pm_dialog_response (GtkDialog *dialog, gint response, gpointer user_data)
 
gboolean geany_plugin_register_proxy (GeanyPlugin *plugin, const gchar **extensions)
 Register the plugin as a proxy for other plugins. More...
 

Variables

GList * active_plugin_list = NULL
 
static gboolean want_plugins = FALSE
 
static GList * plugin_list = NULL
 
static gchar ** active_plugins_pref = NULL
 
static GList * failed_plugins_list = NULL
 
static GtkWidget * menu_separator = NULL
 
static Plugin builtin_so_proxy_plugin
 
static PluginProxy builtin_so_proxy
 
static GQueue active_proxies = G_QUEUE_INIT
 
static GeanyData geany_data
 
static PluginManagerWidgets pm_widgets
 

Macro Definition Documentation

◆ CHECK_FUNC

#define CHECK_FUNC (   __x)
Value:
if (! g_module_symbol(module, "plugin_" #__x, (void *) (&p_##__x))) \
{ \
geany_debug("Plugin \"%s\" has no plugin_" #__x "() function - ignoring plugin!", \
g_module_name(module)); \
return; \
}

◆ PLUGIN_VERSION_CODE

#define PLUGIN_VERSION_CODE (   api,
  abi 
)    ((abi) != GEANY_ABI_VERSION ? -1 : (api))

Definition at line 222 of file plugins.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
PLUGIN_COLUMN_CHECK 
PLUGIN_COLUMN_CAN_UNCHECK 
PLUGIN_COLUMN_PLUGIN 
PLUGIN_N_COLUMNS 
PM_BUTTON_KEYBINDINGS 
PM_BUTTON_CONFIGURE 
PM_BUTTON_HELP 

Definition at line 1396 of file plugins.c.

Function Documentation

◆ add_callbacks()

◆ check_plugin_path()

static gboolean check_plugin_path ( const gchar *  fname)
static

Definition at line 1025 of file plugins.c.

References app, GeanyApp::configdir, get_custom_plugin_path(), get_plugin_path(), and NULL.

Referenced by load_active_plugins().

◆ cmp_plugin_by_proxy()

static gint cmp_plugin_by_proxy ( gconstpointer  a,
gconstpointer  b 
)
static

Definition at line 1176 of file plugins.c.

References builtin_so_proxy_plugin, and GeanyPluginPrivate::proxy.

Referenced by load_all_plugins().

◆ cmp_plugin_names()

static gint cmp_plugin_names ( gconstpointer  a,
gconstpointer  b 
)
static

Definition at line 315 of file plugins.c.

References GeanyPluginPrivate::info, and PluginInfo::name.

Referenced by plugin_load().

◆ find_active_plugin_by_name()

static Plugin * find_active_plugin_by_name ( const gchar *  filename)
static

Definition at line 205 of file plugins.c.

References active_plugin_list, filename, NULL, and utils_str_equal().

Referenced by plugin_new().

◆ find_iter_for_plugin()

static gboolean find_iter_for_plugin ( Plugin p,
GtkTreeModel *  model,
GtkTreeIter *  iter 
)
static

Definition at line 1465 of file plugins.c.

References PLUGIN_COLUMN_PLUGIN.

Referenced by pm_populate().

◆ free_legacy_cbs()

static void free_legacy_cbs ( gpointer  data)
static

Definition at line 473 of file plugins.c.

Referenced by register_legacy_plugin().

◆ free_non_active_plugin()

static void free_non_active_plugin ( gpointer  data,
gpointer  user_data 
)
static

Definition at line 1878 of file plugins.c.

References is_active_plugin(), and plugin_free().

Referenced by pm_dialog_response().

◆ free_subplugins()

static void free_subplugins ( Plugin proxy)
static

Definition at line 925 of file plugins.c.

References plugin_free(), plugin_list, and GeanyPluginPrivate::proxy.

Referenced by plugin_free().

◆ geany_data_init()

◆ geany_plugin_register()

gboolean geany_plugin_register ( GeanyPlugin plugin,
gint  api_version,
gint  min_api_version,
gint  abi_version 
)

Register a plugin to Geany.

The plugin will show up in the plugin manager. The user can interact with it based on the functions it provides and installed GUI elements.

You must initialize the info and funcs fields of GeanyPlugin appropriately prior to calling this, otherwise registration will fail. For info at least a valid name must be set (possibly localized). For funcs, at least init() and cleanup() functions must be implemented and set.

The return value must be checked. It may be FALSE if the plugin failed to register which can mainly happen for two reasons (future Geany versions may add new failure conditions):

  • Not all mandatory fields of GeanyPlugin have been set.
  • The ABI or API versions reported by the plugin are incompatible with the running Geany.

Do not call this directly. Use GEANY_PLUGIN_REGISTER() instead which automatically handles api_version and abi_version.

Parameters
pluginThe plugin provided by Geany
api_versionThe API version the plugin is compiled against (pass GEANY_API_VERSION)
min_api_versionThe minimum API version required by the plugin
abi_versionThe exact ABI version the plugin is compiled against (pass GEANY_ABI_VERSION)
Returns
TRUE if the plugin was successfully registered. Otherwise FALSE.
Since
1.26 (API 225)
See also
GEANY_PLUGIN_REGISTER()

Definition at line 353 of file plugins.c.

References GeanyPluginFuncs::cleanup, EMPTY, GeanyPluginPrivate::filename, GeanyPluginPrivate::flags, GeanyPlugin::funcs, geany_debug(), GeanyPluginPrivate::info, GeanyPluginFuncs::init, LOADED_OK, name, PluginInfo::name, NULL, plugin_check_version(), PLUGIN_LOADED_OK, PLUGIN_VERSION_CODE, and GeanyPlugin::priv.

Referenced by geany_plugin_register_full().

◆ geany_plugin_register_full()

gboolean geany_plugin_register_full ( GeanyPlugin plugin,
gint  api_version,
gint  min_api_version,
gint  abi_version,
gpointer  pdata,
GDestroyNotify  free_func 
)

Register a plugin to Geany, with plugin-defined data.

This is a variant of geany_plugin_register() that also allows to set the plugin-defined data. Refer to that function for more details on registering in general.

pdata is the pointer going to be passed to the individual plugin callbacks of GeanyPlugin::funcs. When the plugin module is unloaded, free_func is invoked on pdata, which connects the data to the plugin's module life time.

You cannot use geany_plugin_set_data() after registering with this function. Use geany_plugin_register() if you need to.

Do not call this directly. Use GEANY_PLUGIN_REGISTER_FULL() instead which automatically handles api_version and abi_version.

Parameters
pluginThe plugin provided by Geany.
api_versionThe API version the plugin is compiled against (pass GEANY_API_VERSION).
min_api_versionThe minimum API version required by the plugin.
abi_versionThe exact ABI version the plugin is compiled against (pass GEANY_ABI_VERSION).
pdataPointer to the plugin-defined data. Must not be NULL.
free_funcFunction used to deallocate pdata, may be NULL.
Returns
TRUE if the plugin was successfully registered. Otherwise FALSE.
Since
1.26 (API 225)
See also
GEANY_PLUGIN_REGISTER_FULL()
geany_plugin_register()

Definition at line 422 of file plugins.c.

References GeanyPluginPrivate::flags, geany_plugin_register(), geany_plugin_set_data(), LOAD_DATA, and GeanyPlugin::priv.

◆ geany_plugin_register_proxy()

gboolean geany_plugin_register_proxy ( GeanyPlugin plugin,
const gchar **  extensions 
)

Register the plugin as a proxy for other plugins.

Proxy plugins register a list of file extensions and a set of callbacks that are called appropriately. A plugin can be a proxy for multiple types of sub-plugins by handling separate file extensions, however they must share the same set of hooks, because this function can only be called at most once per plugin.

Each callback receives the plugin-defined data as parameter (see geany_plugin_register()). The callbacks must be set prior to calling this, by assigning to plugin->proxy_funcs. GeanyProxyFuncs::load and GeanyProxyFuncs::unload must be implemented.

Nested proxies are unsupported at this point (TODO).

Note
It is entirely up to the proxy to provide access to Geany's plugin API. Native code can naturally call Geany's API directly, for interpreted languages the proxy has to implement some kind of bindings that the plugin can use.
See also
proxy for detailed documentation and an example.
Parameters
pluginThe pointer to the plugin's GeanyPlugin instance
extensionsA NULL-terminated string array of file extensions, excluding the dot.
Returns
TRUE if the proxy was successfully registered, otherwise FALSE
Since
1.26 (API 226)

Definition at line 2042 of file plugins.c.

References _, active_proxies, PluginProxy::extension, foreach_list, foreach_strv, GeanyPluginPrivate::info, GeanyProxyFuncs::load, PluginInfo::name, NULL, PluginProxy::plugin, GeanyPlugin::priv, GeanyPlugin::proxy_funcs, and GeanyProxyFuncs::unload.

Referenced by demoproxy_init().

◆ get_custom_plugin_path()

static gchar * get_custom_plugin_path ( const gchar *  plugin_path_config,
const gchar *  plugin_path_system 
)
static

◆ get_plugin_path()

static gchar * get_plugin_path ( void  )
static

Definition at line 1168 of file plugins.c.

References utils_resource_dir().

Referenced by check_plugin_path(), load_all_plugins(), and plugins_init().

◆ is_active_plugin()

static gboolean is_active_plugin ( Plugin plugin)
static

Definition at line 854 of file plugins.c.

References active_plugin_list, and NULL.

Referenced by free_non_active_plugin(), plugin_free(), pm_populate(), and pm_update_buttons().

◆ is_plugin()

◆ legacy_cleanup()

static void legacy_cleanup ( GeanyPlugin plugin,
gpointer  pdata 
)
static

Definition at line 453 of file plugins.c.

References LegacyRealFuncs::cleanup.

Referenced by register_legacy_plugin().

◆ legacy_configure()

static GtkWidget * legacy_configure ( GeanyPlugin plugin,
GtkDialog *  parent,
gpointer  pdata 
)
static

Definition at line 467 of file plugins.c.

References LegacyRealFuncs::configure.

Referenced by register_legacy_plugin().

◆ legacy_help()

static void legacy_help ( GeanyPlugin plugin,
gpointer  pdata 
)
static

Definition at line 461 of file plugins.c.

References LegacyRealFuncs::help.

Referenced by register_legacy_plugin().

◆ legacy_init()

static gboolean legacy_init ( GeanyPlugin plugin,
gpointer  pdata 
)
static

Definition at line 446 of file plugins.c.

References GeanyPlugin::geany_data, and LegacyRealFuncs::init.

Referenced by register_legacy_plugin().

◆ load_active_plugins()

static void load_active_plugins ( void  )
static

◆ load_all_plugins()

static void load_all_plugins ( void  )
static

◆ load_plugins_from_path()

static void load_plugins_from_path ( const gchar *  path)
static

◆ on_object_weak_notify()

static void on_object_weak_notify ( gpointer  data,
GObject *  old_ptr 
)
static

Definition at line 755 of file plugins.c.

References SignalConnection::object, and GeanyPluginPrivate::signal_ids.

Referenced by plugin_watch_object(), and remove_callbacks().

◆ on_pm_tree_filter_entry_changed_cb()

static void on_pm_tree_filter_entry_changed_cb ( GtkEntry *  entry,
gpointer  user_data 
)
static

Definition at line 1782 of file plugins.c.

References pm_widgets, and PluginManagerWidgets::tree.

Referenced by on_pm_tree_filter_entry_icon_release_cb(), and pm_show_dialog().

◆ on_pm_tree_filter_entry_icon_release_cb()

static void on_pm_tree_filter_entry_icon_release_cb ( GtkEntry *  entry,
GtkEntryIconPosition  icon_pos,
GdkEvent *  event,
gpointer  user_data 
)
static

Definition at line 1789 of file plugins.c.

References entry, and on_pm_tree_filter_entry_changed_cb().

Referenced by pm_show_dialog().

◆ on_tools_menu_show()

static void on_tools_menu_show ( GtkWidget *  menu_item,
G_GNUC_UNUSED gpointer  user_data 
)
static

Definition at line 1232 of file plugins.c.

References list, menu_separator, NULL, and ui_widget_show_hide().

Referenced by plugins_load_active().

◆ plugin_check_version()

static gboolean plugin_check_version ( Plugin plugin,
int  plugin_version_code 
)
static

◆ plugin_cleanup()

◆ plugin_free()

◆ plugin_free_leaf()

static void plugin_free_leaf ( Plugin p)
static

Definition at line 1351 of file plugins.c.

References plugin_free(), and GeanyPluginPrivate::proxied_count.

Referenced by plugins_finalize().

◆ plugin_get_module_symbol()

gpointer plugin_get_module_symbol ( Plugin plugin,
const gchar *  sym 
)

◆ plugin_load()

◆ plugin_load_gmodule()

static gpointer plugin_load_gmodule ( GeanyPlugin proxy,
GeanyPlugin plugin,
const gchar *  filename,
gpointer  pdata 
)
static

◆ plugin_loaded()

static gboolean plugin_loaded ( Plugin plugin)
static

Definition at line 165 of file plugins.c.

References active_plugin_list, GeanyPluginPrivate::filename, NULL, plugin_list, and utils_str_equal().

Referenced by plugin_new().

◆ plugin_make_resident()

void plugin_make_resident ( Plugin plugin)

◆ plugin_new()

◆ plugin_unload_gmodule()

static void plugin_unload_gmodule ( GeanyPlugin proxy,
GeanyPlugin plugin,
gpointer  load_data,
gpointer  pdata 
)
static

Definition at line 646 of file plugins.c.

References GeanyPluginPrivate::filename, NULL, and GeanyPlugin::priv.

◆ plugin_watch_object()

void plugin_watch_object ( Plugin plugin,
gpointer  object 
)

Definition at line 780 of file plugins.c.

References on_object_weak_notify().

Referenced by plugin_signal_connect().

◆ plugins_finalize()

void plugins_finalize ( void  )

Definition at line 1359 of file plugins.c.

References active_plugin_list, active_plugins_pref, failed_plugins_list, NULL, and plugin_free_leaf().

Referenced by do_main_quit().

◆ plugins_have_preferences()

gboolean plugins_have_preferences ( void  )

◆ plugins_init()

◆ plugins_load_active()

◆ pm_dialog_response()

static void pm_dialog_response ( GtkDialog *  dialog,
gint  response,
gpointer  user_data 
)
static

◆ pm_on_plugin_button_clicked()

◆ pm_plugin_toggled()

◆ pm_populate()

◆ pm_prepare_treeview()

◆ pm_selection_changed()

static void pm_selection_changed ( GtkTreeSelection *  selection,
gpointer  user_data 
)
static

Definition at line 1449 of file plugins.c.

References NULL, PLUGIN_COLUMN_PLUGIN, and pm_update_buttons().

Referenced by pm_prepare_treeview().

◆ pm_show_dialog()

◆ pm_tree_filter_func()

static gboolean pm_tree_filter_func ( GtkTreeModel *  model,
GtkTreeIter *  iter,
gpointer  user_data 
)
static

◆ pm_tree_search()

static gboolean pm_tree_search ( const gchar *  key,
const gchar *  haystack 
)
static

Definition at line 1716 of file plugins.c.

References foreach_strv, NULL, strstr(), and utils_string_replace_all().

Referenced by pm_tree_filter_func().

◆ pm_tree_sort_func()

static gint pm_tree_sort_func ( GtkTreeModel *  model,
GtkTreeIter *  a,
GtkTreeIter *  b,
gpointer  user_data 
)
static

Definition at line 1701 of file plugins.c.

References GeanyPluginPrivate::info, PluginInfo::name, and PLUGIN_COLUMN_PLUGIN.

Referenced by pm_prepare_treeview().

◆ pm_treeview_button_press_cb()

static gboolean pm_treeview_button_press_cb ( GtkWidget *  widget,
GdkEventButton *  event,
G_GNUC_UNUSED gpointer  user_data 
)
static

Definition at line 1689 of file plugins.c.

References NULL, pm_widgets, and PluginManagerWidgets::popup_menu.

Referenced by pm_prepare_treeview().

◆ pm_treeview_query_tooltip()

static gboolean pm_treeview_query_tooltip ( GtkWidget *  widget,
gint  x,
gint  y,
gboolean  keyboard_mode,
GtkTooltip *  tooltip,
gpointer  user_data 
)
static

◆ pm_treeview_text_cell_data_func()

static void pm_treeview_text_cell_data_func ( GtkTreeViewColumn *  column,
GtkCellRenderer *  cell,
GtkTreeModel *  model,
GtkTreeIter *  iter,
gpointer  data 
)
static

◆ pm_update_buttons()

◆ proxied_count_dec()

static void proxied_count_dec ( Plugin proxy)
static

Definition at line 150 of file plugins.c.

References NULL, GeanyPluginPrivate::proxied_count, and GeanyPluginPrivate::proxy.

Referenced by plugin_cleanup().

◆ proxied_count_inc()

static void proxied_count_inc ( Plugin proxy)
static

Definition at line 140 of file plugins.c.

References NULL, GeanyPluginPrivate::proxied_count, and GeanyPluginPrivate::proxy.

Referenced by plugin_load().

◆ read_key_group()

◆ register_legacy_plugin()

◆ remove_callbacks()

static void remove_callbacks ( Plugin plugin)
static

◆ remove_doc_data()

◆ remove_each_doc_data()

static void remove_each_doc_data ( GQuark  key_id,
gpointer  data,
gpointer  user_data 
)
static

◆ remove_sources()

static void remove_sources ( Plugin plugin)
static

Definition at line 804 of file plugins.c.

References NULL, and GeanyPluginPrivate::sources.

Referenced by plugin_cleanup().

◆ unregister_proxy()

static gboolean unregister_proxy ( Plugin proxy)
static

Definition at line 944 of file plugins.c.

References active_proxies, foreach_list_safe, and PluginProxy::plugin.

Referenced by plugin_free().

◆ update_active_plugins_pref()

static void update_active_plugins_pref ( void  )
static

Variable Documentation

◆ active_plugin_list

◆ active_plugins_pref

gchar** active_plugins_pref = NULL
static

◆ active_proxies

GQueue active_proxies = G_QUEUE_INIT
static

◆ builtin_so_proxy

PluginProxy builtin_so_proxy
static
Initial value:
= {
.extension = G_MODULE_SUFFIX,
}
static Plugin builtin_so_proxy_plugin
Definition: plugins.c:94

Definition at line 102 of file plugins.c.

Referenced by plugins_init().

◆ builtin_so_proxy_plugin

Plugin builtin_so_proxy_plugin
static
Initial value:
= {
.proxy_cbs = {
},
}
static gpointer plugin_load_gmodule(GeanyPlugin *proxy, GeanyPlugin *plugin, const gchar *filename, gpointer pdata)
Definition: plugins.c:601
static void plugin_unload_gmodule(GeanyPlugin *proxy, GeanyPlugin *plugin, gpointer load_data, gpointer pdata)
Definition: plugins.c:646

Definition at line 94 of file plugins.c.

Referenced by cmp_plugin_by_proxy(), plugin_get_module_symbol(), plugin_load(), plugin_make_resident(), pm_plugin_toggled(), and pm_populate().

◆ failed_plugins_list

GList* failed_plugins_list = NULL
static

Definition at line 78 of file plugins.c.

Referenced by load_active_plugins(), plugins_finalize(), and update_active_plugins_pref().

◆ geany_data

GeanyData geany_data
static

Definition at line 111 of file plugins.c.

Referenced by geany_data_init(), plugin_new(), and register_legacy_plugin().

◆ menu_separator

GtkWidget* menu_separator = NULL
static

Definition at line 80 of file plugins.c.

Referenced by on_tools_menu_show(), and plugins_load_active().

◆ plugin_list

GList* plugin_list = NULL
static

◆ pm_widgets

◆ want_plugins

gboolean want_plugins = FALSE
static

Definition at line 72 of file plugins.c.

Referenced by plugins_load_active(), and update_active_plugins_pref().