Branch: refs/heads/master
Author: Colomban Wendling <ban(a)herbesfolles.org>
Committer: Colomban Wendling <ban(a)herbesfolles.org>
Date: Sun, 27 Apr 2014 02:31:28 UTC
Commit: 67ae7707364ecc09da8675803b48575d61b82fcf
https://github.com/geany/geany/commit/67ae7707364ecc09da8675803b48575d61b82…
Log Message:
-----------
Strip more double leading spaces
Modified Paths:
--------------
doc/pluginsignals.c
Modified: doc/pluginsignals.c
218 lines changed, 113 insertions(+), 105 deletions(-)
===================================================================
@@ -22,29 +22,29 @@
/* Note: this file is for Doxygen only. */
/**
- * @file pluginsignals.c
- * Plugin Signals
+ * @file pluginsignals.c
+ * Plugin Signals
*
*
- * @section Usage
+ * @section Usage
*
- * To use plugin signals in Geany, you have two options:
+ * To use plugin signals in Geany, you have two options:
*
- * -# Create a PluginCallback array with the @ref plugin_callbacks symbol. List the signals
- * you want to listen to and create the appropiate signal callbacks for each signal.
- * The callback array is read @a after plugin_init() has been called.
- * -# Use plugin_signal_connect(), which can be called at any time and can also connect
- * to non-Geany signals (such as GTK widget signals).
+ * -# Create a PluginCallback array with the @ref plugin_callbacks symbol. List the signals
+ * you want to listen to and create the appropiate signal callbacks for each signal.
+ * The callback array is read @a after plugin_init() has been called.
+ * -# Use plugin_signal_connect(), which can be called at any time and can also connect
+ * to non-Geany signals (such as GTK widget signals).
*
- * This page lists the signal prototypes, but you connect to them using the
- * string name (which by convention uses @c - hyphens instead of @c _ underscores).
+ * This page lists the signal prototypes, but you connect to them using the
+ * string name (which by convention uses @c - hyphens instead of @c _ underscores).
*
- * E.g. @c "document-open" for @ref document_open.
+ * E.g. @c "document-open" for @ref document_open.
*
- * The following code demonstrates how to use signals in Geany plugins. The code can be inserted
- * in your plugin code at any desired position.
+ * The following code demonstrates how to use signals in Geany plugins. The code can be inserted
+ * in your plugin code at any desired position.
*
- * @code
+ * @code
static void on_document_open(GObject *obj, GeanyDocument *doc, gpointer user_data)
{
printf("Example: %s was opened\n", DOC_FILENAME(doc));
@@ -55,132 +55,139 @@ PluginCallback plugin_callbacks[] =
{ "document-open", (GCallback) &on_document_open, FALSE, NULL },
{ NULL, NULL, FALSE, NULL }
};
- * @endcode
- * @note The PluginCallback array has to be ended with a final @c NULL entry.
+ * @endcode
+ * @note The PluginCallback array has to be ended with a final @c NULL entry.
*/
/** Sent when a new document is created.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param doc the new document.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param doc the new document.
+ * @param user_data user data.
*/
signal void (*document_new)(GObject *obj, GeanyDocument *doc, gpointer user_data);
/** Sent when a new document is opened.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param doc the opened document.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param doc the opened document.
+ * @param user_data user data.
*/
signal void (*document_open)(GObject *obj, GeanyDocument *doc, gpointer user_data);
/** Sent when an existing document is reloaded.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param doc the re-opened document.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param doc the re-opened document.
+ * @param user_data user data.
*
- * @since 0.21
+ * @since 0.21
*/
signal void (*document_reload)(GObject *obj, GeanyDocument *doc, gpointer user_data);
/** Sent before a document is saved.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param doc the document to be saved.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param doc the document to be saved.
+ * @param user_data user data.
*/
signal void (*document_before_save)(GObject *obj, GeanyDocument *doc, gpointer user_data);
/** Sent when a new document is saved.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param doc the saved document.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param doc the saved document.
+ * @param user_data user data.
*/
signal void (*document_save)(GObject *obj, GeanyDocument *doc, gpointer user_data);
/** Sent after the filetype of a document has been changed.
- * The previous filetype object is passed but it can be NULL (e.g. at startup).
- * The new filetype can be read with: @code
+ *
+ * The previous filetype object is passed but it can be NULL (e.g. at startup).
+ * The new filetype can be read with: @code
* GeanyFiletype *ft = doc->file_type;
- * @endcode
+ * @endcode
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param doc the saved document.
- * @param filetype_old the previous filetype of the document.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param doc the saved document.
+ * @param filetype_old the previous filetype of the document.
+ * @param user_data user data.
*/
signal void (*document_filetype_set)(GObject *obj, GeanyDocument *doc, GeanyFiletype *filetype_old, gpointer user_data);
/** Sent when switching notebook pages.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param doc the current document.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param doc the current document.
+ * @param user_data user data.
*/
signal void (*document_activate)(GObject *obj, GeanyDocument *doc, gpointer user_data);
/** Sent before closing a document.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param doc the document about to be closed.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param doc the document about to be closed.
+ * @param user_data user data.
*/
signal void (*document_close)(GObject *obj, GeanyDocument *doc, gpointer user_data);
/** Sent after a project is opened but before session files are loaded.
- * @param obj a GeanyObject instance, should be ignored.
- * @param config an exising GKeyFile object which can be used to read and write data.
- * It must not be closed or freed.
- * @param user_data user data.
+ *
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param config an exising GKeyFile object which can be used to read and write data.
+ * It must not be closed or freed.
+ * @param user_data user data.
*/
signal void (*project_open)(GObject *obj, GKeyFile *config, gpointer user_data);
/** Sent when a project is saved(happens when the project is created, the properties
* dialog is closed or Geany is exited). This signal is emitted shortly before Geany
* will write the contents of the GKeyFile to the disc.
- * @param obj a GeanyObject instance, should be ignored.
- * @param config an exising GKeyFile object which can be used to read and write data.
- * It must not be closed or freed.
- * @param user_data user data.
+ *
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param config an exising GKeyFile object which can be used to read and write data.
+ * It must not be closed or freed.
+ * @param user_data user data.
*/
signal void (*project_save)(GObject *obj, GKeyFile *config, gpointer user_data);
/** Sent after a project is closed.
- * @param obj a GeanyObject instance, should be ignored.
- * @param user_data user data.
+ *
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param user_data user data.
*/
signal void (*project_close)(GObject *obj, gpointer user_data);
/** Sent after a project dialog is opened but before it is displayed. Plugins
* can append their own project settings tabs by using this signal.
- * @param obj a GeanyObject instance, should be ignored.
- * @param notebook a GtkNotebook instance that can be used by plugins to append their
- * settings tabs.
- * @param user_data user data.
+ *
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param notebook a GtkNotebook instance that can be used by plugins to append their
+ * settings tabs.
+ * @param user_data user data.
*/
signal void (*project_dialog_open)(GObject *obj, GtkWidget *notebook, gpointer user_data);
/** Sent when the settings dialog is confirmed by the user. Plugins can use
* this signal to read the settings widgets previously added by using the
* @c project-dialog-open signal.
- * @warning The dialog will still be running afterwards if the user chose 'Apply'.
- * @param obj a GeanyObject instance, should be ignored.
- * @param notebook a GtkNotebook instance that can be used by plugins to read their
- * settings widgets.
- * @param user_data user data.
+ *
+ * @warning The dialog will still be running afterwards if the user chose 'Apply'.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param notebook a GtkNotebook instance that can be used by plugins to read their
+ * settings widgets.
+ * @param user_data user data.
*/
signal void (*project_dialog_confirmed)(GObject *obj, GtkWidget *notebook, gpointer user_data);
/** Sent before project dialog is closed. By using this signal, plugins can remove
* tabs previously added in project-dialog-open signal handler.
- * @param obj a GeanyObject instance, should be ignored.
- * @param notebook a GtkNotebook instance that can be used by plugins to remove
- * settings tabs previously added in the project-dialog-open signal handler.
- * @param user_data user data.
+ *
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param notebook a GtkNotebook instance that can be used by plugins to remove
+ * settings tabs previously added in the project-dialog-open signal handler.
+ * @param user_data user data.
*/
signal void (*project_dialog_close)(GObject *obj, GtkWidget *notebook, gpointer user_data);
@@ -188,67 +195,68 @@ signal void (*project_dialog_close)(GObject *obj, GtkWidget *notebook, gpointer
* realized. This signal is the very last step in the startup process and is sent once
* the GTK main event loop has been entered.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param user_data user data.
*/
signal void (*geany_startup_complete)(GObject *obj, gpointer user_data);
/** Sent before build is started. A plugin could use this signal e.g. to save all unsaved documents
* before the build starts.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param user_data user data.
*/
signal void (*build_start)(GObject *obj, gpointer user_data);
/** Sent before the popup menu of the editing widget is shown. This can be used to modify or extend
* the popup menu.
*
- * @note You can add menu items from @c plugin_init() using @c geany->main_widgets->editor_menu,
- * remembering to destroy them in @c plugin_cleanup().
+ * @note You can add menu items from @c plugin_init() using @c geany->main_widgets->editor_menu,
+ * remembering to destroy them in @c plugin_cleanup().
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param word the current word (in UTF-8 encoding) below the cursor position
- where the popup menu will be opened.
- * @param click_pos the cursor position where the popup will be opened.
- * @param doc the current document.
- * @param user_data user data.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param word the current word (in UTF-8 encoding) below the cursor position
+ * where the popup menu will be opened.
+ * @param click_pos the cursor position where the popup will be opened.
+ * @param doc the current document.
+ * @param user_data user data.
*/
signal void (*update_editor_menu)(GObject *obj, const gchar *word, gint pos, GeanyDocument *doc,
gpointer user_data);
/** Sent whenever something in the editor widget changes.
- * E.g. Character added, fold level changes, clicks to the line number margin.
- * A detailed description of possible notifications and the SCNotification can be found at
- * http://www.scintilla.org/ScintillaDoc.html#Notifications.
*
- * If you connect to this signal, you must check @c nt->nmhdr.code for the notification type
- * to prevent handling unwanted notifications. This is important because for instance SCN_UPDATEUI
- * is sent very often whereas you probably don't want to handle this notification.
+ * E.g. Character added, fold level changes, clicks to the line number margin.
+ * A detailed description of possible notifications and the SCNotification can be found at
+ * http://www.scintilla.org/ScintillaDoc.html#Notifications.
+ *
+ * If you connect to this signal, you must check @c nt->nmhdr.code for the notification type
+ * to prevent handling unwanted notifications. This is important because for instance SCN_UPDATEUI
+ * is sent very often whereas you probably don't want to handle this notification.
*
- * By default, the signal is sent before Geany's default handler is processing the event.
- * Your callback function should return FALSE to allow Geany processing the event as well. If you
- * want to prevent this for some reason, return TRUE.
- * Please use this with care as it can break basic functionality of Geany.
+ * By default, the signal is sent before Geany's default handler is processing the event.
+ * Your callback function should return FALSE to allow Geany processing the event as well. If you
+ * want to prevent this for some reason, return TRUE.
+ * Please use this with care as it can break basic functionality of Geany.
*
- * The signal can be sent after Geany's default handler has been run when you set
- * PluginCallback::after field to TRUE.
+ * The signal can be sent after Geany's default handler has been run when you set
+ * PluginCallback::after field to TRUE.
*
- * An example callback implemention of this signal can be found in the Demo plugin.
+ * An example callback implemention of this signal can be found in the Demo plugin.
*
- * @warning This signal has much power and should be used carefully. You should especially
- * care about the return value; make sure to return TRUE only if it is necessary
- * and in the correct situations.
+ * @warning This signal has much power and should be used carefully. You should especially
+ * care about the return value; make sure to return TRUE only if it is necessary
+ * and in the correct situations.
*
- * @param obj a GeanyObject instance, should be ignored.
- * @param editor The current GeanyEditor.
- * @param nt A pointer to the SCNotification struct which holds additional information for
- * the event.
- * @param user_data user data.
- * @return @c TRUE to stop other handlers from being invoked for the event.
- * @c FALSE to propagate the event further.
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param editor The current GeanyEditor.
+ * @param nt A pointer to the SCNotification struct which holds additional information for
+ * the event.
+ * @param user_data user data.
+ * @return @c TRUE to stop other handlers from being invoked for the event.
+ * @c FALSE to propagate the event further.
*
- * @since 0.16
+ * @since 0.16
*/
signal gboolean (*editor_notify)(GObject *obj, GeanyEditor *editor, SCNotification *nt,
gpointer user_data);
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
Branch: refs/heads/master
Author: Colomban Wendling <ban(a)herbesfolles.org>
Committer: Colomban Wendling <ban(a)herbesfolles.org>
Date: Sun, 27 Apr 2014 02:11:31 UTC
Commit: edaa6f713f1b8e037a56652da15032aac56e2227
https://github.com/geany/geany/commit/edaa6f713f1b8e037a56652da15032aac56e2…
Log Message:
-----------
Strip double leading spaces
These are weird and break Doxygen Markdown support.
Modified Paths:
--------------
doc/plugins.dox
Modified: doc/plugins.dox
344 lines changed, 172 insertions(+), 172 deletions(-)
===================================================================
@@ -67,169 +67,169 @@
*/
/**
- * @page guidelines Plugin Writing Guidelines
+ * @page guidelines Plugin Writing Guidelines
*
- * @section intro Introduction
+ * @section intro Introduction
*
- * The following hints and guidelines are only recommendations. Nobody is forced to follow
- * them at all.
+ * The following hints and guidelines are only recommendations. Nobody is forced to follow
+ * them at all.
*
- * @section general General notes
+ * @section general General notes
*
- * @subsection ideas Getting a plugin idea
+ * @subsection ideas Getting a plugin idea
*
- * If you want to write a plugin but don't know yet what it should do, have a look at
- * http://www.geany.org/Support/PluginWishlist to get an idea about what users wish.
+ * If you want to write a plugin but don't know yet what it should do, have a look at
+ * http://www.geany.org/Support/PluginWishlist to get an idea about what users wish.
*
- * @subsection code Managing the source code
+ * @subsection code Managing the source code
*
- * For authors of plugins for Geany, we created a dedicated @a geany-plugins project
- * on Sourceforge and GitHub to ease development of plugins and help new authors.
- * All information about this project you can find at http://plugins.geany.org/
+ * For authors of plugins for Geany, we created a dedicated @a geany-plugins project
+ * on Sourceforge and GitHub to ease development of plugins and help new authors.
+ * All information about this project you can find at http://plugins.geany.org/
*
- * To add a new plugin to this project, get in touch with the people on the
- * geany-devel-mailing list and create a fork of the geany-plugins project
- * at https://github.com/geany/geany-plugins.
- * Beside of adding a new plugin, geany-devel-mailing list is also the place where
- * to discuss development related questions.
- * However, once you have done your fork of geany-plugins you can develop
- * your plugin until you think its the right time to publish it. At this point,
- * create a pull request for adding your patch set into the master branch of the main
- * geany-plugins repository.
+ * To add a new plugin to this project, get in touch with the people on the
+ * geany-devel-mailing list and create a fork of the geany-plugins project
+ * at https://github.com/geany/geany-plugins.
+ * Beside of adding a new plugin, geany-devel-mailing list is also the place where
+ * to discuss development related questions.
+ * However, once you have done your fork of geany-plugins you can develop
+ * your plugin until you think its the right time to publish it. At this point,
+ * create a pull request for adding your patch set into the master branch of the main
+ * geany-plugins repository.
*
- * Of course, you don't need to use GitHub - any Git is fine. But GitHub
- * is making it way easier for review, merging and get in touch with you for
- * comments.
+ * Of course, you don't need to use GitHub - any Git is fine. But GitHub
+ * is making it way easier for review, merging and get in touch with you for
+ * comments.
*
- * If you don't want your plugin to be part of the geany-plugins project it is also fine.
- * Just skip the part about forking geany-plugins and sending a pull request.
- * In this case it is of course also a good idea to post some kind of announcement
- * to geany-devel and maybe to the main geany mailing list -- it's up to you.
- * You can also ask for your plugin to be listed on the http://plugins.geany.org/
- * website as a third party plugin, helping Geany user to know about your plugin.
+ * If you don't want your plugin to be part of the geany-plugins project it is also fine.
+ * Just skip the part about forking geany-plugins and sending a pull request.
+ * In this case it is of course also a good idea to post some kind of announcement
+ * to geany-devel and maybe to the main geany mailing list -- it's up to you.
+ * You can also ask for your plugin to be listed on the http://plugins.geany.org/
+ * website as a third party plugin, helping Geany user to know about your plugin.
*
- * At time of writing, there are some plugins already available in the
- * repositories. Feel free to use any of these plugins as a start for your own,
- * maybe by copying the directory structure and the autotools files
- * (Makefile.am, configure.in, ...). Most of the available plugins are also ready for
- * i18n support, just for reference.
+ * At time of writing, there are some plugins already available in the
+ * repositories. Feel free to use any of these plugins as a start for your own,
+ * maybe by copying the directory structure and the autotools files
+ * (Makefile.am, configure.in, ...). Most of the available plugins are also ready for
+ * i18n support, just for reference.
*
- * We encourage authors using this service to only commit changes to their
- * own plugin and not to others' plugins. Instead just send patches to
- * geany-devel at uvena.de or the plugin author directly.
+ * We encourage authors using this service to only commit changes to their
+ * own plugin and not to others' plugins. Instead just send patches to
+ * geany-devel at uvena.de or the plugin author directly.
*
- * @section paths Installation paths
+ * @section paths Installation paths
*
- * - The plugin binary (@c pluginname.so) should be installed in Geany's libdir. This is
- * necessary so that Geany can find the plugin.
- * An easy way to retrieve Geany's libdir is to use the pkg-config tool, e.g. @code
- * `$PKG_CONFIG --variable=libdir geany`/ geany
- * @endcode
- * - If your plugin creates other binary files like helper programs or helper libraries,
- * they should go into @c $prefix/bin (for programs, ideally prefixed with @a geany),
- * additional libraries should be installed in Geany's libdir, maybe in a subdirectory.
- * - Plugins should install their documentation files (README, NEWS, ChangeLog, licences and
- * other documentation files) into the common documentation directory
- * @c $prefix/share/doc/geany-plugins/$pluginname/
- * - Translation files should be installed normally into @c $prefix/share/locale. There is no
- * need to use Geany's translation directory. To set up translation support properly and
- * for additional information, see main_locale_init().
- * - Do @a never install anything into a user's home directory like installing
- * the plugin binary in @c ~/.config/geany/plugins/.
+ * - The plugin binary (@c pluginname.so) should be installed in Geany's libdir. This is
+ * necessary so that Geany can find the plugin.
+ * An easy way to retrieve Geany's libdir is to use the pkg-config tool, e.g. @code
+ * `$PKG_CONFIG --variable=libdir geany`/ geany
+ * @endcode
+ * - If your plugin creates other binary files like helper programs or helper libraries,
+ * they should go into @c $prefix/bin (for programs, ideally prefixed with @a geany),
+ * additional libraries should be installed in Geany's libdir, maybe in a subdirectory.
+ * - Plugins should install their documentation files (README, NEWS, ChangeLog, licences and
+ * other documentation files) into the common documentation directory
+ * @c $prefix/share/doc/geany-plugins/$pluginname/
+ * - Translation files should be installed normally into @c $prefix/share/locale. There is no
+ * need to use Geany's translation directory. To set up translation support properly and
+ * for additional information, see main_locale_init().
+ * - Do @a never install anything into a user's home directory like installing
+ * the plugin binary in @c ~/.config/geany/plugins/.
*
*
- * @page howto Plugin HowTo
+ * @page howto Plugin HowTo
*
- * @section intro Introduction
+ * @section intro Introduction
*
- * Since Geany 0.12 there is a plugin interface to extend Geany's functionality and
- * add new features. This document gives a brief overview about how to add new
- * plugins by writing a simple "Hello World" plugin in C or C++.
+ * Since Geany 0.12 there is a plugin interface to extend Geany's functionality and
+ * add new features. This document gives a brief overview about how to add new
+ * plugins by writing a simple "Hello World" plugin in C or C++.
*
*
- * @section buildenv Build environment
+ * @section buildenv Build environment
*
- * To be able to write plugins for Geany, you need the source code and some development
- * packages for GTK and its dependencies. The following will only describe the way to compile and
- * build plugins on Unix-like systems [1].
- * If you already have the Geany source code and compiled it from them, you can skip the
- * following.
+ * To be able to write plugins for Geany, you need the source code and some development
+ * packages for GTK and its dependencies. The following will only describe the way to compile and
+ * build plugins on Unix-like systems [1].
+ * If you already have the Geany source code and compiled it from them, you can skip the
+ * following.
*
- * First you need to have Geany installed. Then install the development files for GTK
- * and its dependencies. The easiest way to do this is to use your distribution's package
- * management system, e.g. on Debian and Ubuntu systems you can use
- * @code apt-get install libgtk2.0-dev intltool @endcode
- * This will install all necessary files to be able to compile plugins for Geany. On other
- * distributions, the package names and commands to use may differ.
+ * First you need to have Geany installed. Then install the development files for GTK
+ * and its dependencies. The easiest way to do this is to use your distribution's package
+ * management system, e.g. on Debian and Ubuntu systems you can use
+ * @code apt-get install libgtk2.0-dev intltool @endcode
+ * This will install all necessary files to be able to compile plugins for Geany. On other
+ * distributions, the package names and commands to use may differ.
*
- * Basically, you are done at this point and could continue with writing the plugin code.
+ * Basically, you are done at this point and could continue with writing the plugin code.
*
- * [1] For Windows, it is basically the same but you might have some more work on setting up
- * the general build environment(compiler, GTK development files, ...). This is described on
- * Geany's website at http://www.geany.org/Support/BuildingOnWin32.
+ * [1] For Windows, it is basically the same but you might have some more work on setting up
+ * the general build environment(compiler, GTK development files, ...). This is described on
+ * Geany's website at http://www.geany.org/Support/BuildingOnWin32.
*
- * @section helloworld "Hello World"
+ * @section helloworld "Hello World"
*
- * When writing a plugin, you will find a couple of functions or macros which are mandatory
- * and some which are free to use for implementing some useful feature once your plugin
- * becomes more powerful like including a configuration or help dialog.
+ * When writing a plugin, you will find a couple of functions or macros which are mandatory
+ * and some which are free to use for implementing some useful feature once your plugin
+ * becomes more powerful like including a configuration or help dialog.
*
- * You should start your plugin with including some of the needed C header files and defining
- * some basic global variables which will help you to access all needed functions of the plugin
- * API in a more comfortable way.
- *
- * Let's start with the very basic headers and add more later if necessary.
- * @code
+ * You should start your plugin with including some of the needed C header files and defining
+ * some basic global variables which will help you to access all needed functions of the plugin
+ * API in a more comfortable way.
+ *
+ * Let's start with the very basic headers and add more later if necessary.
+ * @code
#include <geanyplugin.h>
- * @endcode
+ * @endcode
*
- * @a geanyplugin.h includes all of the Geany API and also the necessary GTK header files,
- * so there is no need to include @a gtk/gtk.h yourself.
+ * @a geanyplugin.h includes all of the Geany API and also the necessary GTK header files,
+ * so there is no need to include @a gtk/gtk.h yourself.
*
- * @note
- * @a plugindata.h contains the biggest part of the plugin API and provides some basic macros.
- * @a geanyfunctions.h provides some macros for convenient access to plugin API functions.
+ * @note
+ * @a plugindata.h contains the biggest part of the plugin API and provides some basic macros.
+ * @a geanyfunctions.h provides some macros for convenient access to plugin API functions.
*
- * Then you should define three basic variables which will give access to data fields and
- * functions provided by the plugin API.
- * @code
+ * Then you should define three basic variables which will give access to data fields and
+ * functions provided by the plugin API.
+ * @code
GeanyPlugin *geany_plugin;
GeanyData *geany_data;
GeanyFunctions *geany_functions;
- * @endcode
+ * @endcode
*
- * Now you can go on and write your first lines for your new plugin. As mentioned before,
- * you will need to implement and fill out a couple of functions/macros to make the plugin work.
- * So let's start with PLUGIN_VERSION_CHECK().
+ * Now you can go on and write your first lines for your new plugin. As mentioned before,
+ * you will need to implement and fill out a couple of functions/macros to make the plugin work.
+ * So let's start with PLUGIN_VERSION_CHECK().
*
- * PLUGIN_VERSION_CHECK() is a convenient way to tell Geany which version of Geany's plugin API
- * is needed at minimum to run your plugin. The value is defined in
- * @a plugindata.h by @a GEANY_API_VERSION. In most cases this should be your minimum.
- * Nevertheless when setting this value, you should choose the lowest possible version here to
- * make the plugin compatible with a bigger number of versions of Geany.
+ * PLUGIN_VERSION_CHECK() is a convenient way to tell Geany which version of Geany's plugin API
+ * is needed at minimum to run your plugin. The value is defined in
+ * @a plugindata.h by @a GEANY_API_VERSION. In most cases this should be your minimum.
+ * Nevertheless when setting this value, you should choose the lowest possible version here to
+ * make the plugin compatible with a bigger number of versions of Geany.
*
- * For the next step, you will need to tell Geany some basic information about your plugin
- * which will be shown in the plugin manager dialog.
+ * For the next step, you will need to tell Geany some basic information about your plugin
+ * which will be shown in the plugin manager dialog.
*
- * To do this you should use the PLUGIN_SET_INFO() macro, which expects 4 parameters:
- * - Plugin name
- * - Short description
- * - Version
- * - Author
+ * To do this you should use the PLUGIN_SET_INFO() macro, which expects 4 parameters:
+ * - Plugin name
+ * - Short description
+ * - Version
+ * - Author
*
- * Based on this, the line could look like:
- * @code
+ * Based on this, the line could look like:
+ * @code
PLUGIN_SET_INFO("HelloWorld", "Just another tool to say hello world",
"1.0", "John Doe <john.doe(a)example.org>");
- * @endcode
+ * @endcode
*
- * Once this is done, you will need to implement the function which will be executed when the
- * plugin is loaded. Part of that function could be adding and removing of an item to
- * Geany's Tools menu, setting up keybindings or registering some callbacks. Also you will
- * need to implement the function that is called when your plugin is unloaded.
- * These functions are called plugin_init() and plugin_cleanup(). Let's see what this
- * looks like:
- * @code
+ * Once this is done, you will need to implement the function which will be executed when the
+ * plugin is loaded. Part of that function could be adding and removing of an item to
+ * Geany's Tools menu, setting up keybindings or registering some callbacks. Also you will
+ * need to implement the function that is called when your plugin is unloaded.
+ * These functions are called plugin_init() and plugin_cleanup(). Let's see what this
+ * looks like:
+ * @code
PLUGIN_VERSION_CHECK(211)
PLUGIN_SET_INFO("HelloWorld", "Just another tool to say hello world",
@@ -242,18 +242,18 @@ void plugin_init(GeanyData *data)
void plugin_cleanup(void)
{
}
- * @endcode
+ * @endcode
*
- * If you think this plugin seems not to implement any functionality right now and only wastes
- * some memory, you are right. But it should compile and load/unload in Geany nicely.
- * Now you have the very basic layout of a new plugin. Great, isn't it?
+ * If you think this plugin seems not to implement any functionality right now and only wastes
+ * some memory, you are right. But it should compile and load/unload in Geany nicely.
+ * Now you have the very basic layout of a new plugin. Great, isn't it?
*
- * @note
+ * @note
*
- * If you would rather write the plugin in C++, you can do that by marking the
- * plugin functions that it implements as @c extern @c "C", for example:
+ * If you would rather write the plugin in C++, you can do that by marking the
+ * plugin functions that it implements as @c extern @c "C", for example:
*
- * @code
+ * @code
*
extern "C" void plugin_init(GeanyData *data)
{
@@ -262,34 +262,34 @@ extern "C" void plugin_init(GeanyData *data)
extern "C" void plugin_cleanup(void)
{
}
- * @endcode
+ * @endcode
*
- * @section building Building
+ * @section building Building
*
- * First make plugin.o:
+ * First make plugin.o:
*
- * @code gcc -c plugin.c -fPIC `pkg-config --cflags geany` @endcode
+ * @code gcc -c plugin.c -fPIC `pkg-config --cflags geany` @endcode
*
- * Then make the plugin library plugin.so (or plugin.dll on Windows):
+ * Then make the plugin library plugin.so (or plugin.dll on Windows):
*
- * @code gcc plugin.o -o plugin.so -shared `pkg-config --libs geany` @endcode
+ * @code gcc plugin.o -o plugin.so -shared `pkg-config --libs geany` @endcode
*
- * If all went OK, put the library into one of the paths Geany looks for plugins,
- * e.g. $prefix/lib/geany. See @ref paths "Installation paths" for details.
+ * If all went OK, put the library into one of the paths Geany looks for plugins,
+ * e.g. $prefix/lib/geany. See @ref paths "Installation paths" for details.
*
- * @note
+ * @note
*
- * If you are writing the plugin in C++, then you will need to use your C++
- * compiler here, for example @c g++.
+ * If you are writing the plugin in C++, then you will need to use your C++
+ * compiler here, for example @c g++.
*
- * @section realfunc Adding functionality
+ * @section realfunc Adding functionality
*
- * Let's go on and implement some real functionality.
+ * Let's go on and implement some real functionality.
*
- * As mentioned before, plugin_init() will be called when the plugin is loaded in Geany.
- * So it should implement everything that needs to be done during startup. In this case,
- * we'd like to add a menu item to Geany's Tools menu which runs a dialog printing "Hello World".
- * @code
+ * As mentioned before, plugin_init() will be called when the plugin is loaded in Geany.
+ * So it should implement everything that needs to be done during startup. In this case,
+ * we'd like to add a menu item to Geany's Tools menu which runs a dialog printing "Hello World".
+ * @code
void plugin_init(GeanyData *data)
{
GtkWidget *main_menu_item;
@@ -307,36 +307,36 @@ void plugin_init(GeanyData *data)
g_signal_connect(main_menu_item, "activate",
G_CALLBACK(item_activate_cb), NULL);
}
- * @endcode
+ * @endcode
*
- * This will add an item to the Tools menu and connect this item to a function which implements
- * what should be done when the menu item is activated by the user.
- * This is done by g_signal_connect(). The Tools menu can be accessed with
- * geany->main_widgets->tools_menu. The structure @a main_widgets contains pointers to the
- * main GUI elements in Geany.
+ * This will add an item to the Tools menu and connect this item to a function which implements
+ * what should be done when the menu item is activated by the user.
+ * This is done by g_signal_connect(). The Tools menu can be accessed with
+ * geany->main_widgets->tools_menu. The structure @a main_widgets contains pointers to the
+ * main GUI elements in Geany.
*
- * Geany has a simple API for showing message dialogs. So our function contains
- * only a few lines:
- * @code
+ * Geany has a simple API for showing message dialogs. So our function contains
+ * only a few lines:
+ * @code
void item_activate_cb(GtkMenuItem *menuitem, gpointer user_data)
{
dialogs_show_msgbox(GTK_MESSAGE_INFO, "Hello World");
}
- * @endcode
+ * @endcode
*
- * For the moment you don't need to worry about the parameters of that function.
+ * For the moment you don't need to worry about the parameters of that function.
*
- * Now we need to clean up properly when the plugin is unloaded.
+ * Now we need to clean up properly when the plugin is unloaded.
*
- * To remove the menu item from the Tools menu, you can use gtk_widget_destroy().
- * gtk_widget_destroy() expects a pointer to a GtkWidget object.
+ * To remove the menu item from the Tools menu, you can use gtk_widget_destroy().
+ * gtk_widget_destroy() expects a pointer to a GtkWidget object.
*
- * First you should add gtk_widget_destroy() to your plugin_cleanup() function.
- * The argument for gtk_widget_destroy() is the widget object you created earlier in
- * plugin_init(). To be able to access this pointer in plugin_cleanup(), you need to move
- * its definition from plugin_init() into the global context so its visibility will increase
- * and it can be accessed in all functions.
- * @code
+ * First you should add gtk_widget_destroy() to your plugin_cleanup() function.
+ * The argument for gtk_widget_destroy() is the widget object you created earlier in
+ * plugin_init(). To be able to access this pointer in plugin_cleanup(), you need to move
+ * its definition from plugin_init() into the global context so its visibility will increase
+ * and it can be accessed in all functions.
+ * @code
static GtkWidget *main_menu_item = NULL;
// ...
@@ -351,15 +351,15 @@ void plugin_cleanup(void)
{
gtk_widget_destroy(main_menu_item);
}
- * @endcode
+ * @endcode
*
- * This will ensure your menu item is removed from the Tools menu as well as from
- * memory once your plugin is unloaded, so you don't leave any memory leaks.
- * Once this is done, your first plugin is ready. Congratulations!
+ * This will ensure your menu item is removed from the Tools menu as well as from
+ * memory once your plugin is unloaded, so you don't leave any memory leaks.
+ * Once this is done, your first plugin is ready. Congratulations!
*
- * @section listing Complete listing (without comments)
+ * @section listing Complete listing (without comments)
*
- * @code
+ * @code
#include <geanyplugin.h>
GeanyPlugin *geany_plugin;
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
Branch: refs/heads/master
Author: Colomban Wendling <ban(a)herbesfolles.org>
Committer: Colomban Wendling <ban(a)herbesfolles.org>
Date: Sun, 27 Apr 2014 02:05:07 UTC
Commit: 82f556d2a5e1962605cc9df357e51443395f176c
https://github.com/geany/geany/commit/82f556d2a5e1962605cc9df357e51443395f1…
Log Message:
-----------
Disable Markdown support in our Doxyfile
At least the "Plugin Writing Guidelines" and "Plugin HowTo" sections
are displaying undesirable side effects of Markdown support, so disable
it at least for now.
Modified Paths:
--------------
doc/Doxyfile.in
Modified: doc/Doxyfile.in
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -265,7 +265,7 @@ EXTENSION_MAPPING =
# can mix doxygen, HTML, and XML commands with Markdown formatting.
# Disable only in case of backward compatibilities issues.
-MARKDOWN_SUPPORT = YES
+MARKDOWN_SUPPORT = NO
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).