Introduction

Ever since I've moved to Linux (around February, 2005), I've been looking for a decent editor for my programming needs. As most people out there, I'm not a professional hacker. My programming is limited to tweaking several PHP sites that I've created over the years and writing drupal modules in case I don't find anything that suits my needs. My requirements are pretty simple - I need an editor to be fairly small (=> fast - I can't wait 20 seconds for it to load), simple (if I don't code often, I'm never going to learn more sophisticated tools) and provide features that make working with the code bearable (code folding, functions browser, syntax highlighting).

Over those two years, I've tried many editors and none of them made me happy. General purpose editors (gedit, kate) are too simple - they're not aware of the syntax (besides syntax highlighting). Quanta expected me to do quite a bit of tweaking before I could move on. Eclipse has a few PHP plugins (for example PHPEclipse), but I can make and drink a coffee before it loads. For the past few months, I used gPHPEdit, but it wasn't perfect either - it had a few small (but visible) bugs, it lacked some features and it's default behavior bothered me a bit. And finally there's allmighty vim - more powerful then anything on the planet and lightning fast... but no honest vim fan will say it's a right tool for everybody. Every time I decided "it's vim time again", I found myself not remembering some crucial, but less common commands the next time I used it. Not to mention configuration - I gave up trying to install/enable PHP syntax highlighting after an hour of reading and trying. Right now I only use it for pretty much only for editing configuration files on a remote server. Recently I found Geany and instantly fell in love with it.

Geany's website has a brief description on the front page. All it says is that Geany is a small and lightweight IDE with very few dependencies. One would think it can't be too powerful. Surprisingly, it does almost everything I need and does it very well. Its default settings suited me well - whoever designed the user interface did a really good job. I didn't have to tweak anything other that some minor things (such as hiding certain menus to make the workspace a bit cleaner).

Features

  • code folding - beyond some level of complexity, I find it hard to focus on what I'm doing at the moment. Code folding lets me hide big chunks of code a leave only what I'm working on right now.
  • saving the session - Geany can load files from the last session. Unfortunately, it doesn't remember where the cursor was within the file or which parts of code were folded.
  • sidebar - in pre-Geany times, I've never really used additional bars. This one is actually quite helpful. It lists all important code elements (functions, classes, variables, etc.) sorted in alphabetical order and lets me quickly jump to them. Also, I can right-click on a function name where it's used and quickly jump to a line when this function is declared (if it's declared in some file that's been opened, off course).
  • all standard features anybody would expect - syntax highlighting, code completion, tabs, auto indentation (either tabs or spaces), (un)commenting and decreasing/increasing indentation of multiple lines.
  • support for many languages - I counted 26 supported filetypes.
  • build system - it can compile, build, make all, make custom target, make object and execute.
  • multiple tiny bells and whistles, such as a color picker or the ability to insert predefined comments (for example description of a function).
  • and most of all - it doesn't do anything that annoys me. It's quite common for smallish applications to behave in a non-standard way.

Documentation and community

Geany's documentation is rather short and to the point. Local documentation didn't work on my computer - clicking on it had no effect. It turned out I had to change a default browser in preferences (default was mozilla). That's a common thing in many programs. Instead of using system's default application, developers set their favorite browser as a default. Weirdest choice I've seen was Dillo as a default browser (can't remember which application was set up this way, though). Consider yourself lucky if you're allowed to change it.

Geany's users and developers communitate via mailing lists. So far I've only posted one question, regarding configuration of custom filetypes. Drupal uses .module extension for its modules and I had to manually set the filetype to PHP every time I opened a new file. I didn't find anything in the preferences, so I headed to the mailing list. It turned out that I missed a chapter in documentation that described how to achieve what I wanted. I was given the URL really quickly and nobody made a fuss about me not looking hard enough in the first place.

Cons

Would I change anything? Other then things mentioned above, I'd like Geany to use some sort of standard keybindings. If there was a standard. Free Software has made a great progress when it comes to standarization in the recent years - hopefully they'll get to that, too. I really wish I wouldn't have to remember is an application uses Ctrl+N or Ctrl+T for opening a new tab.

In the introduction, I wrote that Geany does almost everything I need. The only feature I'd like to see is editing remote files (via SSH). I quickly searched mailing list's archives and found out that this feature is not implemented because it would increase the number of dependencies and thus make the app more resources-hungry. A good solution is mounting a remote ssh filesystem using sshfs.

Conclusions

Generally, I'm a picky user. It took me a couple of years to switch from Opera to Firefox because everyone's favorite browser had some little annoyances. Geany, on the other hand, seems to be made with my humble person in mind. It does exactly what I want and not much more. It's fast, powerful and simple at the same time.

The editor is licensed under GPL. The download section provides the source and links to 3rd party builds for several distributions. The newest version (10.2) is already in Feisty repositories.

What's your favorite text editor? How does it compare to Geany? See that little form on the bottom of the page? Use it!