Hello everybody,
I've been happily using Geany for a little while now, coding mostly in
Python. I have a couple questions:
1. For a dark color scheme, eg Vibrant Ink, how do i get the active
line to not be highlighted. White text + white highlighting =
invisible text on the line I'm trying to edit. Arrgh!
2. Any debugger advice for python? I am finding winpdb is pretty slow
and actually crashes on my machine a fair amount.
I'm on a windows 7 64 bit installation.
Thanks!
--
A musician must make music, an artist must paint, a poet must write,
if he is to be ultimately at peace with himself.
- Abraham Maslow
Hi,
The default syntax highlighting orange color for strings IMO looks bad.
I wish you would change that default for many languages.
Couldn't you just throw people who like windows editors a bone and have
a GUI for syntax highlighting instead of editing a file?
Thanks.
--
http://www.fastmail.fm - The way an email service should be
[posted to both devel and user lists, sorry to those on both]
Hi All,
Geany currently hard codes two actions to the <ctrl>-<left mouse down>
input, "goto tag" if the click is over an identifier or "goto matching
brace" otherwise.
This blocks the standard action of "add to selection" on <ctrl>-<left
click> and <ctrl>-<left drag>. (See Gnome HIG
http://developer.gnome.org/hig-book/2.32/hig-book.html#input-mouse
10.1.2)
I did a quick check on my system and didn't find any application that
did not comply with that guideline, so Geany is the odd one out.
Geany has not supported multiple selections so it hasn't been an issue
(other than being non-standard and occasionally confusing users), but
as there is a proposal to add support for multiple selections to Geany
this non-standard behavior is now a problem.
As both actions now have a default keybinding (in Git version) I
propose that the binding to <ctrl>-<left mouse down> simply be
removed.
Cheers
Lex
Geany Newsletter #5
-------------------
1 About Geany
2 New translations and updates
3 Wiki available
4 C++ plugins supported
5 Plugins
5.1 New Plugins
5.1.1 GeanyPyflakes
5.1.2 GeniusPaste
5.2 GeanyPG
6 Geany local
7 Geany Packages for Fedora
8 About this newsletter
1 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/>`_.
2 New translations and updates
==============================
Since our last newsletter a number of translations has been updated
or newly added to Geany. New translations are:
* Arabian
* Indonesian
* Lithuanian
* Mongolian (back in 2011)
But also translations like German, Kazakh, Hungarian, Italian,
Traditional Chinese and Swedish translations have been updated
during the last roughly four month.
3 Wiki available
================
We set up a wiki for additional documentation and resources related
to Geany at http://wiki.geany.org. Anyone can contribute to the wiki
simply by registering and then logging in.
In the wiki you can find configuration snippets and tips, snippets for
various programming languages and many additional tags files to enhance
Geany's autocompletion features.
Everybody is welcome to add additional useful content to the wiki.
4 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
5 Plugins
=========
Notes from the plugin section.
5.1 New Plugins
***************
5.1.1 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 its project
pages at http://code.google.com/p/geany-pyflakes/
Another way to check your Python code is described inside the wiki at
http://wiki.geany.org/howtos/check_python_code
5.1.2 GeniusPaste
#################
GeniusPaste is a plugin which is adding the possibility to paste
your code from Geany into different pastebins. It supports this
services:
* codepad.org
* pastebin.com
* pastebin.geany.org
* dpaste.de
* sprunge.us
During the paste process GeniusPaste detects automatically the
syntax of your code and paste it with syntax highlighting enabled.
Once this is done it is also able to redirect you to the pasted code
opening a new browser tab.
5.2 GeanyPG
***********
GeanyPG is a plugin that allows the user to encrypt, decrypt text
and verify signatures with GnuPG from inside Geany. It's created by
Hans Alves and is part of the geany-plugins project.
After the plugin has been installed successfully, it can be loaded
from inside Geany's plugin manager which will add a new menu item
into the Tools menu offering functions of the plugin.
To decrypt or encrypt, just select the interesting parts and choose
the function you wish -- If none text has been selected, the whole
document will be processed. In case you like to verify a signature
obviously you will have to select the whole block.
When encrypting a message you can choose to sign at the same time.
If a passphrase is needed, the GPGME library will decide how the
user is prompted. Usually this will use gpg-agent. If gpg-agent is
disabled, pinentry with one of its frontends will be used.
6 Geany local
=============
6.1 Geany at Chemnitzer Linuxtage 2012 (March 17th, 18th)
*********************************************************
As last year, Geany had a booth a Chemnitzer Linuxtage 2012 in
German city Chemnitz. Our booth was again located next to the guys
of Xfce as well as next (that was different to last year) to 2
lecture rooms. Even though the event wasn't as much crowded as last
year, a lot of people were passing by asking some question or just
saying hello. So Enrico and Frank had a lot of questions to answer
and a lot of feedback to respond to.
7 Geany Packages for Fedora
===========================
There are new packages unofficially available for Fedora. One is
containing the Geany Themes Matthew maintains at GitHub [1], the
other one provides the tags files listed in the Geany Wiki [2]. The
packages are not yet in Fedoras official repositories but available
at Dominic's Fedora People space [3]. Note the geany-themes package
is intended to work with current Git versions of Geany only. A
x86_64 package from the current Git master as well as an SRPM for
rebuilding is also available at [3].
The geany-tags package is split into subpackages containing the tags
for each programming language. Currently these are: geany-tags-c,
geany-tags-php and geany-tags-python. They can be installed
independently from each other, of course.
Contact Dominic if you have suggestions for improvements.
1. https://github.com/codebrainz/geany-themes
2. http://wiki.geany.org/tags/start
3. http://dmaphy.fedorapeople.org/
8 About this newsletter
=======================
This newsletter has been created in cooperation by people from Geany's
international community. Contributors to this newsletter and the
infrastructure behind it, ordered by alphabet:
Dominic Hopf
Enrico Tröger
Frank Lanitz
Lex Trotman
Matthew Brush
Hi all,
Recently I started using Geany and I like it very much, light,
configurable and fast.
The only thing I miss is that I cannot use \d, \w and \s (shorthand
character classes matching digits, word characters etc.) in regexp
search/replace, is this just me?
A feature or a bug?
Should I file a ticket?
I'm on latest (k)ubuntu Linux 64 bit if that matters.
--
Alessandro Pasotti
w3: www.itopen.it
Hi,
I'm switching from SciTE to Geany, as I feel features provided by Geany are
exact what I missed in SciTE
Thanks to dev team and special thanks to creator on Lua plugin, which made
my transition seamless :)
My problem is column selection mode. I'm used to hold Ctrl then point,
click and drag. This feature seems like buggy in Geany, most of time it
doesn't work.
I then found out that I can use Shift+Ctrl which works as expected, but I
first need to position cursor then do this selection, while if I use SciTE
I just point and drag without positioning first.
Is there better solution to this problem, that may be not so obvious to new
user?
TIA
I wonder if it's possible to insert in multiple places within a
snippet the same string? For example, I have a snippet which inserts
some HTML code that refers to an image and I use the description of
the image in two places within the same snippet. As I understand the
manual, you insert "%cursor%" anywhere that you want the cursor to
jump to so that the user can insert text. If I enter a title for an
image in my example snippet I would prefer to have that also inserted
elsewhere in the same snippet.
--
Russell Dickenson
Dear front end developers out there,
I just want to share with you that I have created a set of global tags &
filedefs files to enhance syntax coloring & code assistance for
front-end web languages including HTML/CSS/JS.
I have put those files on github so I can easily keep track of changes
and fix issues: https://github.com/trongthanh/geany-for-front-end-dev
There's some write-up at the project's page as well.
I'm just a new user of Geany but I really like it. I really want to
contribute to enhance Geany's support for JavaScript & front-end stuff
but I have too little knowledge of C/C++ to dig into the source code. If
anything I can help, please let me know. I'll continue to build up the
tags files when I have free time.
--
Thanks.
Thanh
Hi, I would like to contribute with the default code format that common
browser are using.
If you see any web code in Chrome, Firefox or Opera you will see a
common patron:
Tags = violet
Urls = blue
Text = grey
Comment = green
and so on...
Those colours are different from the current colours we use in Geany.
Maybe Geany is using the SO default colour for that. How can I
collaborate? Could you send me a configuration file where I can add a
new code format (a new option).
Thanks.
GnS
Hi,
no reason to continue discussion about geany, just fixing few
misunderstandings about mksv3...
> Date: Thu, 3 May 2012 10:09:04 +1000
> From: Lex Trotman <elextr(a)gmail.com>
> Subject: Re: [Geany] Discussion with Zhenech, list of suggestions for
>
>
> > 6. When searching in directory, mksv3 shows tree with matches,
> highlighted
> > with yellow. It is much more readable, than dumped grep output in Geany
>
> Who cares about the files that didn't match, waste of space. And its
> not just a raw printout, if you click on a line from the output you go
> to that line in the editor, opening the file if needed. It is find
> *in* files, not "find files", much more useful.
>
Why do you think we show not matched files?
http://hlamer.github.com/mksv3/screenshots/search-replace.png
> > 11. Geany uses main menu to switch current file indentation mode. IMHO
> it is
> > better to use status bar button, which is both indicator and switcher. I
> > spend about 1 min to find item in the main menu and now don't remember,
> > where it is located.
>
> Practice, I can't find anything in your IDE either :)
>
Did you check MkS (http://monkeystudio.org, apt-get install monkeystudio)
or mksv3 (https://github.com/hlamer/mksv3)
Terrible name though :) (seriously you might find that a problem in
> the long term)
>
This is "working name" for internal releases. Project will get it's name
before making first public release.
Regards,
Andrei