Branch: refs/heads/master
Author: Frank Lanitz <frank(a)frank.uvena.de>
Committer: Frank Lanitz <frank(a)frank.uvena.de>
Date: Mon, 02 Apr 2012 08:46:07
Commit: 7e9982c6d4c25aff53e0847f008f297ce6f2cfea
https://github.com/geany/newsletter/commit/7e9982c6d4c25aff53e0847f008f297c…
Log Message:
-----------
Copied the default beginning 'about Geany' in.
Modified Paths:
--------------
vol_5/newsletter_5.rst
Modified: vol_5/newsletter_5.rst
14 files changed, 14 insertions(+), 0 deletions(-)
===================================================================
@@ -4,6 +4,20 @@ Geany Newsletter #5
.. contents::
+About Geany
+===========
+
+Geany is a small and lightweight Integrated Development Environment.
+It was developed to provide a small and fast IDE, which has only a
+few dependencies from other packages. Another goal was to be as
+independent as possible from a special Desktop Environment like KDE
+or GNOME - Geany only requires the GTK2 runtime libraries.
+
+More information about Geany can be found at
+`geany.org <http://www.geany.org/>`_.
+
+
+
New translations and updates
============================
@@ Diff output truncated at 100000 characters. @@
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).
Branch: refs/heads/master
Author: Frank Lanitz <frank(a)frank.uvena.de>
Committer: Frank Lanitz <frank(a)frank.uvena.de>
Date: Mon, 02 Apr 2012 08:45:28
Commit: aa2ab2090f1c5674496376a494b933845d94e271
https://github.com/geany/newsletter/commit/aa2ab2090f1c5674496376a494b93384…
Log Message:
-----------
Added something about geany-pyflakes
Modified Paths:
--------------
vol_5/newsletter_5.rst
Modified: vol_5/newsletter_5.rst
18 files changed, 17 insertions(+), 1 deletions(-)
===================================================================
@@ -130,10 +130,26 @@ them right away in your C++ plugins if you Build Geany From Git [3].
3. http://www.geany.org/Download/Git
+Plugins
+=======
+
+GeanyPyflakes
+*************
+
+Pyflakes is a command line tool that statically analyzes python
+program and detects two kinds of errors: unused imports and undefined
+symbols. geany-pyflakes runs pyflakes in the background and parses its
+output. Afterwards puts markers on lines with errors and adds the
+output to the panel at the bottom of editor (the one with console,
+todo, etc.). Geany-pyflakes is available at [1].
+
+
+[1] http://code.google.com/p/geany-pyflakes/
+
+
Geany local
===========
-
Geany at Chemnitzer Linuxtage 2012 (March 17th, 18th)
*****************************************************
@@ Diff output truncated at 100000 characters. @@
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).
Branch: refs/heads/master
Author: Frank Lanitz <frank(a)frank.uvena.de>
Committer: Frank Lanitz <frank(a)frank.uvena.de>
Date: Sun, 01 Apr 2012 18:05:51
Commit: d38ffa08fa40aeece0a362593cb5d4fbbcb1e4e5
https://github.com/geany/newsletter/commit/d38ffa08fa40aeece0a362593cb5d4fb…
Log Message:
-----------
Italian translation has been updated too
Modified Paths:
--------------
vol_5/newsletter_5.rst
Modified: vol_5/newsletter_5.rst
6 files changed, 3 insertions(+), 3 deletions(-)
===================================================================
@@ -15,9 +15,9 @@ or newly added to Geany. New translations are:
* Lithuanian
* Mongolian (back in 2011)
-But also translations like German, Kazakh, Hungarian, Traditional Chinese and
-Swedish translations have been updated during the last roughly three
-month.
+But also translations like German, Kazakh, Hungarian, Italian,
+Traditional Chinese and Swedish translations have been updated
+during the last roughly three month.
Wiki available
@@ Diff output truncated at 100000 characters. @@
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).
Branch: refs/heads/master
Author: Frank Lanitz <frank(a)frank.uvena.de>
Committer: Frank Lanitz <frank(a)frank.uvena.de>
Date: Sun, 01 Apr 2012 12:19:33
Commit: ccd176b7063c4b01595b62a9c75d899a9ae1c51d
https://github.com/geany/newsletter/commit/ccd176b7063c4b01595b62a9c75d899a…
Log Message:
-----------
Merge pull request #3 from codebrainz/c++-plugins
Add some info and an example of writing a C++ plugin.
Modified Paths:
--------------
vol_5/newsletter_5.rst
Modified: vol_5/newsletter_5.rst
96 files changed, 96 insertions(+), 0 deletions(-)
===================================================================
@@ -34,6 +34,102 @@ Geany's autocompletion features.
Everybody is welcome to add additional useful content to the wiki.
+C++ plugins supported
+=====================
+
+Geany's public plugin API headers have been updated to support inclusion into
+C++ code. Most of the changes involve adding `extern "C" {...}` blocks around
+the public headers' code (by way of GLIB's `G_BEGIN_DECLS` and `G_END_DECLS`
+macros) to make them easier to include, so the C++ code doesn't need to do this.
+
+You can now write plugins in C++ and they will be loadable by Geany at run-time.
+Of course using Geany's API will still involve using C in your code, but the
+rest of your plugin can use whatever C++ features you want. You can even use
+gtkmm [1] in your plugin if you want.
+
+Any of the symbols Geany looks up at run-time must not have their names mangled
+by the compiler. To avoid this, put that code inside an `extern "C"` block.
+
+Here's an example of Geany's Hello World plugin from the Plugin HowTo [2] ported
+to C++::
+
+ #include <geanyplugin.h>
+
+ class HelloWorld
+ {
+ private:
+ gchar *hello_message;
+ GtkWidget *main_menu_item;
+
+ public:
+ HelloWorld(const gchar *message);
+ ~HelloWorld();
+ void SayHelloWorld();
+ };
+
+ static HelloWorld *hello;
+
+ extern "C"
+ {
+ GeanyPlugin *geany_plugin;
+ GeanyData *geany_data;
+ GeanyFunctions *geany_functions;
+
+ PLUGIN_VERSION_CHECK(211)
+ PLUGIN_SET_INFO("HelloWorld C++",
+ "Just another tool to say hello world, this time in C++",
+ "1.0", "John Doe <john.doe(a)example.org>");
+
+ void plugin_init(GeanyData *data)
+ {
+ hello = new HelloWorld("Hello C++ World");
+ }
+
+ void plugin_cleanup(void)
+ {
+ delete hello;
+ }
+
+ static void on_menu_item_clicked(GtkMenuItem *item, gpointer user_data)
+ {
+ hello->SayHelloWorld();
+ }
+ }
+
+ HelloWorld::HelloWorld(const gchar *message)
+ {
+ hello_message = g_strdup(message);
+ 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(on_menu_item_clicked), NULL);
+ }
+
+ HelloWorld::~HelloWorld()
+ {
+ g_free(hello_message);
+ gtk_widget_destroy(main_menu_item);
+ }
+
+ void HelloWorld::SayHelloWorld()
+ {
+ dialogs_show_msgbox(GTK_MESSAGE_INFO, "%s", hello_message);
+ }
+
+It's important to note that the dynamic library loading mechanism that loads
+plugins is C functionality and does not know about C++ constructors. This means
+that global and static objects in the plugin will *not* have their constructors
+called when the plugin is loaded. Use dynamically created objects as show in the
+above example.
+
+These changes will be available in the next Geany release but you can start using
+them right away in your C++ plugins if you Build Geany From Git [3].
+
+1. http://developer.gnome.org/gtkmm-tutorial/2.24/sec-basics-gobj-and-wrap.htm…
+2. http://www.geany.org/manual/reference/howto.html
+3. http://www.geany.org/Download/Git
+
+
Geany local
===========
@@ Diff output truncated at 100000 characters. @@
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).
Branch: refs/heads/master
Author: Lex Trotman <elextr(a)gmail.com>
Committer: Matthew Brush <matt(a)geany.org>
Date: Sun, 01 Apr 2012 02:58:24
Commit: 5f341e839079da39a13662b71e26387d20b57fd0
https://github.com/geany/newsletter/commit/5f341e839079da39a13662b71e26387d…
Log Message:
-----------
Add note about static initialization of C++ classes
Modified Paths:
--------------
vol_5/newsletter_5.rst
Modified: vol_5/newsletter_5.rst
6 files changed, 6 insertions(+), 0 deletions(-)
===================================================================
@@ -116,6 +116,12 @@ to C++::
dialogs_show_msgbox(GTK_MESSAGE_INFO, "%s", hello_message);
}
+It's important to note that the dynamic library loading mechanism that loads
+plugins is C functionality and does not know about C++ constructors. This means
+that global and static objects in the plugin will *not* have their constructors
+called when the plugin is loaded. Use dynamically created objects as show in the
+above example.
+
These changes will be available in the next Geany release but you can start using
them right away in your C++ plugins if you Build Geany From Git [3].
@@ Diff output truncated at 100000 characters. @@
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).
Branch: refs/heads/master
Author: Matthew Brush <matt(a)geany.org>
Committer: Matthew Brush <matt(a)geany.org>
Date: Sun, 01 Apr 2012 00:44:07
Commit: bcb6911c6b5a9b0d2b35caafd52f250daa474b43
https://github.com/geany/newsletter/commit/bcb6911c6b5a9b0d2b35caafd52f250d…
Log Message:
-----------
Add some info and an example of writing a C++ plugin.
The example isn't very good.
Modified Paths:
--------------
vol_5/newsletter_5.rst
Modified: vol_5/newsletter_5.rst
90 files changed, 90 insertions(+), 0 deletions(-)
===================================================================
@@ -34,6 +34,96 @@ Geany's autocompletion features.
Everybody is welcome to add additional useful content to the wiki.
+C++ plugins supported
+=====================
+
+Geany's public plugin API headers have been updated to support inclusion into
+C++ code. Most of the changes involve adding `extern "C" {...}` blocks around
+the public headers' code (by way of GLIB's `G_BEGIN_DECLS` and `G_END_DECLS`
+macros) to make them easier to include, so the C++ code doesn't need to do this.
+
+You can now write plugins in C++ and they will be loadable by Geany at run-time.
+Of course using Geany's API will still involve using C in your code, but the
+rest of your plugin can use whatever C++ features you want. You can even use
+gtkmm [1] in your plugin if you want.
+
+Any of the symbols Geany looks up at run-time must not have their names mangled
+by the compiler. To avoid this, put that code inside an `extern "C"` block.
+
+Here's an example of Geany's Hello World plugin from the Plugin HowTo [2] ported
+to C++::
+
+ #include <geanyplugin.h>
+
+ class HelloWorld
+ {
+ private:
+ gchar *hello_message;
+ GtkWidget *main_menu_item;
+
+ public:
+ HelloWorld(const gchar *message);
+ ~HelloWorld();
+ void SayHelloWorld();
+ };
+
+ static HelloWorld *hello;
+
+ extern "C"
+ {
+ GeanyPlugin *geany_plugin;
+ GeanyData *geany_data;
+ GeanyFunctions *geany_functions;
+
+ PLUGIN_VERSION_CHECK(211)
+ PLUGIN_SET_INFO("HelloWorld C++",
+ "Just another tool to say hello world, this time in C++",
+ "1.0", "John Doe <john.doe(a)example.org>");
+
+ void plugin_init(GeanyData *data)
+ {
+ hello = new HelloWorld("Hello C++ World");
+ }
+
+ void plugin_cleanup(void)
+ {
+ delete hello;
+ }
+
+ static void on_menu_item_clicked(GtkMenuItem *item, gpointer user_data)
+ {
+ hello->SayHelloWorld();
+ }
+ }
+
+ HelloWorld::HelloWorld(const gchar *message)
+ {
+ hello_message = g_strdup(message);
+ 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(on_menu_item_clicked), NULL);
+ }
+
+ HelloWorld::~HelloWorld()
+ {
+ g_free(hello_message);
+ gtk_widget_destroy(main_menu_item);
+ }
+
+ void HelloWorld::SayHelloWorld()
+ {
+ dialogs_show_msgbox(GTK_MESSAGE_INFO, "%s", hello_message);
+ }
+
+These changes will be available in the next Geany release but you can start using
+them right away in your C++ plugins if you Build Geany From Git [3].
+
+1. http://developer.gnome.org/gtkmm-tutorial/2.24/sec-basics-gobj-and-wrap.htm…
+2. http://www.geany.org/manual/reference/howto.html
+3. http://www.geany.org/Download/Git
+
+
Geany local
===========
@@ Diff output truncated at 100000 characters. @@
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: TBD).