Revision: 3581
http://geany.svn.sourceforge.net/geany/?rev=3581&view=rev
Author: eht16
Date: 2009-02-14 17:37:28 +0000 (Sat, 14 Feb 2009)
Log Message:
-----------
Add a plugin howto to the plugin API docs, written by Frank.
Modified Paths:
--------------
trunk/ChangeLog
trunk/doc/plugins.dox
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-02-14 11:53:42 UTC (rev 3580)
+++ trunk/ChangeLog 2009-02-14 17:37:28 UTC (rev 3581)
@@ -1,3 +1,9 @@
+2009-02-14 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * doc/plugins.dox:
+ Add a plugin howto to the plugin API docs, written by Frank.
+
+
2009-02-13 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* src/msgwindow.c:
Modified: trunk/doc/plugins.dox
===================================================================
--- trunk/doc/plugins.dox 2009-02-14 11:53:42 UTC (rev 3580)
+++ trunk/doc/plugins.dox 2009-02-14 17:37:28 UTC (rev 3581)
@@ -3,6 +3,7 @@
*
* Copyright 2008-2009 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* Copyright 2008-2009 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+ * Copyright 2009 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,7 +31,7 @@
*
* @mainpage Geany Plugin API Documentation
*
- * @author Enrico Tröger, Nick Treleaven
+ * @author Enrico Tröger, Nick Treleaven, Frank Lanitz
* @date $Date$
*
* @section Intro
@@ -331,70 +332,229 @@
* plugins by writing a simple "Hello World" plugin in C.
*
*
- * @section start Getting started
+ * @section buildenv Build environment
*
- * @subsection structure Plugin structure
- *
- * Every plugin must contain some essential symbols unless it won't work. A complete
- * list of all necessary and optional symbols can be found in
- * @link pluginsymbols.c Plugin Symbols @endlink.
- * Every plugin should include "geany.h" and "plugindata.h" which provide necessary
- * preprocessor macros and other basic information.
- * There are two important preprocessor macros which need to be used at the beginning:
- * PLUGIN_SET_INFO() and PLUGIN_VERSION_CHECK().
- *
- * PLUGIN_SET_INFO() tells Geany about basic plugin information like name, description,
- * version and author of the plugin.
- *
- * PLUGIN_VERSION_CHECK() checks for compatibility of the API version which
- * the plugin uses with the used Geany sources. Furthermore, it also checks
- * the binary compatiblity of the plugin with Geany.
- *
- * A few functions are necessary to let Geany work with the plugin, at least plugin_init() must
- * exist in the plugin. plugin_cleanup() should also be used to free allocated memory or destroy
- * created widgets.
- *
- * @subsection 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. I will only describe the way to compile and
+ * 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 get the source code of Geany from the website at
- * http://www.geany.org/Download/Releases [2]. Then install the development files for GTK
+ * 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 Geany and plugins. On other
+ * 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, we are done at this point and could continue with writing the plugin code.
- * You don't need necessarily to configure and build the Geany sources when the sources
- * have the same version as your running Geany installation. But if the version of the
- * sources differ from your Geany installation or especially when you used the source code
- * from the Subversion repository, we strongly recommend to configure and build these
- * sources and use it. To do so, run @code
- ./configure && make
- su -c "make install"
- * @endcode
- * in your Geany source directory. This will build and install Geany on your system.
+ * 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.
*
- * [2] You can also use the bleedging edge source code from our Subversion repository.
- * More information about this can be found at http://www.geany.org/Download/SVN.
+ * @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.
*
- * We want to write a really simple "Hello World" plugin which opens a message dialog
- * and just prints "Hello World".
+ * 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 "geany.h"
+#include "plugindata.h"
+#include "geanyfunctions.h"
+ * @endcode
*
- * ... to be continued ...
+ * @a geany.h will include the necessary GTK header files, so there is no need to include
+ * @a gtk/gtk.h yourself.
*
+ * @a plugindata.h contains the biggest part of the plugin API and provides some basic macros.
*
+ * @a geanyfunctions.h provide some macros for convenient access to the plugin API.
+ *
+ * Later, you will note that by adding more functionality more header file includes will be
+ * necessary. Best practice for including header files is to always include @a geany.h at first,
+ * then include other necessary header files and at last include plugindata.h and @a
+ * geanyfunctions.h.
+ *
+ * The 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
+ *
+ * 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.
+ *
+ * As the next step, you will need to tell Geany a couple of basic information of your plugin,
+ * so it is able to show them e.g. on the plugin manager dialog.
+ *
+ * For doing this, you should use PLUGIN_SET_INFO() which expects 4 values:
+ * - Plugin name that should appear on the plugin manager dialog
+ * - Short plugin description
+ * - Plugin version
+ * - Author.
+ *
+ * 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
+ *
+ * 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 how it could look like:
+ * @code
+PLUGIN_VERSION_CHECK(130)
+
+PLUGIN_SET_INFO("HelloWorld", "Just another tool to say hello world",
+ "1.0", "Joe Doe <joe.doe(a)example.org>");
+
+void plugin_init(GeanyData *data)
+{
+}
+
+void plugin_cleanup(void)
+{
+}
+ * @endcode
+ *
+ * If you think this plugin seems to doesn't implement any function right now and only waste
+ * some memory, you are right. At least, it should compile and load/unload on in Geany nicely.
+ * Now you have the very basic layout of a new plugin. Great, isn't it?
+ *
+ * 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 example case,
+ * we 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;
+
+ // Create a new menu item and show it
+ main_menu_item = gtk_menu_item_new_with_mnemonic("Hello World");
+ gtk_widget_show(main_menu_item);
+
+ // Attach the new menu item to the Tools menu
+ gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu),
+ main_menu_item);
+
+ // Connect the menu item with a callback function
+ // which is called when the item is clicked
+ g_signal_connect(main_menu_item, "activate",
+ G_CALLBACK(item_activate_cb), NULL);
+}
+ * @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 some
+ * main GUI elements in Geany. To be able to use it, you must include ui_utils.h. This can
+ * be done by adding the following line to the include section of your code.
+ * @code
+#include "ui_utils.h"
+ * @endcode
+ *
+ * Geany is offering a simple API for showing message dialogs. So the function contains
+ * only a few lines like:
+ * @code
+void item_activate_cb(GtkMenuItem *menuitem, gpointer user_data)
+{
+ dialogs_show_msgbox(GTK_MESSAGE_INFO, "Hello World");
+}
+ * @endcode
+ *
+ * For the moment you don't need to worry about the parameters of that function.
+ *
+ * Do you remember, you need to clean up when unloading the plugin? Because of this,
+ * some more action is required.
+ *
+ * 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
+static GtkWidget *main_menu_item = NULL;
+
+// ...
+void plugin_init(GeanyData *data)
+{
+ main_menu_item = gtk_menu_item_new_with_mnemonic("Hello World");
+ gtk_widget_show(main_menu_item);
+// ...
+}
+
+void plugin_cleanup(void)
+{
+ gtk_widget_destroy(main_menu_item);
+}
+ * @endcode
+ *
+ * This will ensure, your menu item will be removed from the Tools menu as well as from
+ * memory once your plugin is unloaded and you don't leave any memory leaks back.
+ * Once this is done, your first plugin is ready. Congratulations!
+ *
+ * The complete listing (without comments):
+ * @code
+#include "geany.h"
+#include "ui_utils.h"
+#include "plugindata.h"
+#include "geanyfunctions.h"
+
+GeanyPlugin *geany_plugin;
+GeanyData *geany_data;
+GeanyFunctions *geany_functions;
+
+PLUGIN_VERSION_CHECK(130)
+
+PLUGIN_SET_INFO("HelloWorld", "Just another tool to say hello world",
+ "1.0", "John Doe <john.doe(a)example.org>");
+
+
+static GtkWidget *main_menu_item = NULL;
+
+static void item_activate_cb(GtkMenuItem *menuitem, gpointer gdata)
+{
+ dialogs_show_msgbox(GTK_MESSAGE_INFO, "Hello World");
+}
+
+void plugin_init(GeanyData *data)
+{
+ main_menu_item = gtk_menu_item_new_with_mnemonic("Hello World");
+ gtk_widget_show(main_menu_item);
+ gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu),
+ main_menu_item);
+ g_signal_connect(main_menu_item, "activate",
+ G_CALLBACK(item_activate_cb), NULL);
+}
+
+void plugin_cleanup(void)
+{
+ gtk_widget_destroy(main_menu_item);
+}
+ * @endcode
+ *
**/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 3580
http://geany.svn.sourceforge.net/geany/?rev=3580&view=rev
Author: frlan
Date: 2009-02-14 11:53:42 +0000 (Sat, 14 Feb 2009)
Log Message:
-----------
German translation revisited
Modified Paths:
--------------
trunk/po/de.po
Modified: trunk/po/de.po
===================================================================
--- trunk/po/de.po 2009-02-14 01:32:39 UTC (rev 3579)
+++ trunk/po/de.po 2009-02-14 11:53:42 UTC (rev 3580)
@@ -1424,11 +1424,11 @@
#: ../src/interface.c:2055
msgid "Go to _Tag Definition"
-msgstr "Gehe zur _Tag Definition"
+msgstr "Gehe zur _Tagdefinition"
#: ../src/interface.c:2059
msgid "Go to T_ag Declaration"
-msgstr "Gehe zur T_ag Deklaration"
+msgstr "Gehe zur T_agdeklaration"
#: ../src/interface.c:2063
msgid "Conte_xt Action"
@@ -1598,7 +1598,7 @@
#: ../src/interface.c:2819
msgid "Use the current file's directory for Find in Files"
-msgstr "Verzeichnis der aktuellen für »In Dateien suchen« benutzen"
+msgstr "Verzeichnis der aktuellen Datei für »In Dateien suchen« benutzen"
#: ../src/interface.c:2823
msgid "<b>Search</b>"
@@ -2342,7 +2342,7 @@
#: ../src/interface.c:3943
msgid "Recent files list length:"
-msgstr "Anzahl der »Zuletzt geöffneten Dateien"
+msgstr "Anzahl der »Zuletzt geöffneten Dateien«"
#: ../src/interface.c:3957
msgid "Specifies the number of files which are stored in the Recent files list"
@@ -2903,11 +2903,11 @@
#: ../src/keybindings.c:378
msgid "Go to Tag Definition"
-msgstr "Gehe zur Tag Definition"
+msgstr "Gehe zur Tagdefinition"
#: ../src/keybindings.c:380
msgid "Go to Tag Declaration"
-msgstr "Gehe zur Tag Deklaration"
+msgstr "Gehe zur Tagdeklaration"
#: ../src/keybindings.c:382
msgid "Go to Start of Line"
@@ -3822,7 +3822,7 @@
#: ../src/search.c:1534
msgid "Search failed (see Help->Debug Messages for details)."
-msgstr "Suche fehlgeschlagen (Sie finde Details in »Hilfe -> Debug Meldungen«)."
+msgstr "Suche fehlgeschlagen (Sie finden Details in »Hilfe -> Debug Meldungen«)."
#: ../src/search.c:1555
#, c-format
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 3577
http://geany.svn.sourceforge.net/geany/?rev=3577&view=rev
Author: eht16
Date: 2009-02-13 18:14:10 +0000 (Fri, 13 Feb 2009)
Log Message:
-----------
eht16's changes for Geany 0.16.
Modified Paths:
--------------
trunk/NEWS
Modified: trunk/NEWS
===================================================================
--- trunk/NEWS 2009-02-13 18:13:58 UTC (rev 3576)
+++ trunk/NEWS 2009-02-13 18:14:10 UTC (rev 3577)
@@ -16,6 +16,11 @@
* Add 'Tools->Configuration Files' menu with items to open
filetype_extensions.conf and ignore.tags. These files are also
reloaded automatically when saved.
+ * Change configuration directory path to $XDG_CONFIG_HOME/geany
+ (most often this is ~/.config/geany).
+ * Allow to specify files on the command line and from remote instances
+ to be URIs (local and with GIO also remote URIs).
+ * Increase minimum required GTK version to 2.8.
Prefs:
* Add Project Indentation prefs, which override the Editor
@@ -23,10 +28,25 @@
the editor indent prefs.
* Add an interface pref for whether to hide additional widgets when
double-clicking on document notebook tabs (off by default).
+ * Add a preference to invert all colours for syntax highlighting.
+ * Add a hidden preference "allow_always_save" to make the Save buttons
+ and menu items always sensitive.
+ Interface:
+ * Rework the toolbar: now all elements can be added/removed/reordered
+ using a simple XML file.
+ * Add new toolbar buttons for Cut, Copy, Paste, Delete, Preferences,
+ Close All and Build (including a submenu for Make actions).
+ * Add a progressbar widget to the statusbar to show progress for time
+ consuming actions.
+
Editor:
* Make Ctrl-click go to matching brace if there's no current word.
* Make Shift+Mouse wheel scroll the editor view horizontally.
+ * Make the 'Mark' button for Find highlight the results with rounded boxes
+ instead of marking the whole line.
+ * Add auto-closing of braces, brackets and quotes (Guillaume de Rorthais).
+ * Support multiple %cursor% wildcards in Snippets (Thomas Martitz).
Filetypes:
* Add Vala filetype (thanks to Colomban Wendling).
@@ -34,15 +54,35 @@
* Parse restructuredText sections in the order of first-used underline
character, which can now be any punctuation character (as per the spec).
+ Windows:
+ * Improve tab close icon size.
+ * Changes to the Windows installer:
+ - The full installer now includes the GTK 2.14 runtime environment.
+ - Register ".geany" as Geany Project File extension.
+ - Install GTK translation files only if installation of translation
+ files were requested (saves about 22 MB otherwise).
+ - Support silent installations.
+
+ Filetypes:
+ * Add new filetypes Ada, CMake, Matlab, NSIS and YAML.
+ * Remove GTK global tags, replace them with C (C99) tags. The GTK tags
+ file is still available for download on the website.
+ * Minor improvements for filetypes CSS, Fortran, FreeBasic, HTML, Tcl
+ and Vala.
+
Plugins:
* Add Split Window 'Split Vertically' command (thanks to Moritz Barsnick).
* Make Version Diff plugin set the indent type for diffs based on the
current file's indent type.
+ * Minor improvements to the filebrowser plugin
Plugin API:
* Generate plugin API header geanyfunctions.h containing macros to
avoid having to type the function pointer names manually.
* Deprecate pluginmacros.h in favour of geanyfunctions.h.
+ * Add "editor-notify" to the plugin API.
+ * Add new plugin symbol plugin_help() which is called by Geany when the
+ plugin should show its documentation (if any, symbol is optional).
Documentation:
* Update Scintilla regular expression info for v1.77 (character
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 3575
http://geany.svn.sourceforge.net/geany/?rev=3575&view=rev
Author: eht16
Date: 2009-02-13 18:13:07 +0000 (Fri, 13 Feb 2009)
Log Message:
-----------
Don't use the clear icon inside any spin buttons in the prefs dialog.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/prefs.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-02-13 18:12:49 UTC (rev 3574)
+++ trunk/ChangeLog 2009-02-13 18:13:07 UTC (rev 3575)
@@ -3,6 +3,8 @@
* src/msgwindow.c:
Don't use a hard coded black foreground colour for the compiler and
messages windows, instead use the default GTK foreground colour.
+ * src/prefs.c:
+ Don't use the clear icon inside any spin buttons in the prefs dialog.
2009-02-10 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/prefs.c
===================================================================
--- trunk/src/prefs.c 2009-02-13 18:12:49 UTC (rev 3574)
+++ trunk/src/prefs.c 2009-02-13 18:13:07 UTC (rev 3575)
@@ -1459,16 +1459,7 @@
/* add the clear icon to GtkEntry widgets in the dialog */
ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "startup_path_entry"));
ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "project_file_path_entry"));
- ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "spin_line_break"));
ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "entry_toggle_mark"));
- ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "spin_indent_width"));
- ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "spin_tab_width"));
- ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "spin_symbol_complete_chars"));
- ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "spin_symbollistheight"));
- ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "spin_autocompletion_max_entries"));
- ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "spin_long_line"));
- ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "spin_mru"));
- ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "spin_disk_check"));
ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "entry_com_make"));
ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "entry_com_term"));
ui_entry_add_clear_icon(ui_lookup_widget(ui_widgets.prefs_dialog, "entry_browser"));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 3573
http://geany.svn.sourceforge.net/geany/?rev=3573&view=rev
Author: ntrel
Date: 2009-02-13 17:19:23 +0000 (Fri, 13 Feb 2009)
Log Message:
-----------
Update for ntrel's changes (0.16).
Modified Paths:
--------------
trunk/NEWS
Modified: trunk/NEWS
===================================================================
--- trunk/NEWS 2009-02-10 22:26:21 UTC (rev 3572)
+++ trunk/NEWS 2009-02-13 17:19:23 UTC (rev 3573)
@@ -1,3 +1,55 @@
+Geany 0.16 (TBA)
+
+ Bug fixes:
+ * Fix indenting for Tabs & Spaces mode when inserting snippets.
+ * Fix snippets and smart indent using too much indentation when the
+ line contains whitespace after non-whitespace characters (#2215044).
+ * Fix segfault when showing Find in Files dialog when no documents are
+ open (#2228544).
+ * Fix not switching to 2nd last used document when the last used
+ document has been closed (#1945162).
+
+ General:
+ * Group child tags by their parents in the symbol list for C-like
+ filetypes, Python, Conf (thanks to Conrad Steenberg).
+ * Use a tree for the Documents sidebar, grouped by path.
+ * Add 'Tools->Configuration Files' menu with items to open
+ filetype_extensions.conf and ignore.tags. These files are also
+ reloaded automatically when saved.
+
+ Prefs:
+ * Add Project Indentation prefs, which override the Editor
+ Preferences dialog options. For new projects, these default to
+ the editor indent prefs.
+ * Add an interface pref for whether to hide additional widgets when
+ double-clicking on document notebook tabs (off by default).
+
+ Editor:
+ * Make Ctrl-click go to matching brace if there's no current word.
+ * Make Shift+Mouse wheel scroll the editor view horizontally.
+
+ Filetypes:
+ * Add Vala filetype (thanks to Colomban Wendling).
+ * Update HTML character entities (thanks to Tyler D'Agosta).
+ * Parse restructuredText sections in the order of first-used underline
+ character, which can now be any punctuation character (as per the spec).
+
+ Plugins:
+ * Add Split Window 'Split Vertically' command (thanks to Moritz Barsnick).
+ * Make Version Diff plugin set the indent type for diffs based on the
+ current file's indent type.
+
+ Plugin API:
+ * Generate plugin API header geanyfunctions.h containing macros to
+ avoid having to type the function pointer names manually.
+ * Deprecate pluginmacros.h in favour of geanyfunctions.h.
+
+ Documentation:
+ * Update Scintilla regular expression info for v1.77 (character
+ classes, ASCII escaping, character sets containing square
+ brackets peculiarities). Adapted from SciTE doc.
+
+
Geany 0.15 (October 19, 2008)
General:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.