Editor love, baby

I recently asked for a “good editor”:http://virtuelvis.com/archives/2007/03/gimme-a-good-editor that was not VI, Emacs or a couple of other alternatives. “Kevin”:http://virtuelvis.com/archives/2007/03/gimme-a-good-editor#cid5736 pointed me towards “Komodo Edit”:http://www.activestate.com/products/komodo_edit/ from ActiveState. A _big_ thank you, Kevin. This is Editor Love.
The “feature list”:http://www.activestate.com/products/komodo_edit/features.plex gives some indication of what it can do, I’ll add my own list of things I like.
* Cross-platform
* Emacs style keybindings. Note that they’re not the same keybindings by default, but all of the keybindings are customizable, so you can quite probably make it work exactly that way.
* If your inclination is towards VI, there _is_ a VI mode for you.
* Good support for client-side web technologies: HTML, CSS, JavaScript +++
* Good autocompletion and code intelligence. There are default API catalogs for Dojo, MochiKit, Prototype and YUI, which makes it especially good for JavaScript developers. If these aren’t enough, you can add your own.
* Indentation and code folding Just Works(tm) — which is more than I can say about some of the other editors I’ve tried.
* Snippets. I write a lot of stuff involving angle brackets. The snippets function is wonderful. For instance a @[[%(w:else:)]]|@ (The ‘|’ represents the cursor position after snippet insertion) would take the word under the cursor, wrap it in an @@ — or, if there is a text selection, wrap the selection.
* Macros. This is just wonderful. You can, of course, just record and save them, but in addition you can write them from scratch in either JavaScript or Python. I should add that the “API”:http://aspn.activestate.com/ASPN/docs/Komodo/4.0/komodo-doc-macroapi.html#macroapi_top is quite nice.
* You put your macros and snippets in Toolboxes, which can be moved between Komodo Edit installations.
* Extensions. Yes. All Firefox-style extensions, but this is fairly undocumented, so I’ll just add it as a potential future plus.
* “User-defined language support”:http://aspn.activestate.com/ASPN/docs/Komodo/4.0/komodo-doc-udl.html#udl_top so if you need that COBOL mode, you can have it.
* Custom XML autocompletion using “XML Catalogs”:http://aspn.activestate.com/ASPN/docs/Komodo/4.0/komodo-doc-catalogs.html#xml_catalogs_top using either DTD’s or RelaxNG.
* The snippets, macros and XML catalogs makes this editor an _excellent_ choice for anyone doing lengthy editing of anything with angle brackets.
* Split view with separate tab groups. Also note that insertion points and code folding is bound to the view rather than the document, which is decidedly useful if you want to look at function definitions when you edit in the other pane.
* Free as in Beer.
Ok, before I start sounding religious, there’s downsides:
* Extensions documentation. Either the mechanism is undocumented, or the documentation is hard to find.
* Memory. Komodo seems to use a lot of memory, but the memory usage stays relatively constant once the application is running.
* A Mac-using co-worker claimed Komodo Edit looked a bit off from what he’s learnt to expect from OS X applications.
* Not Free as in Speech.
* If you want to go all the way and use the “Komodo IDE”:http://www.activestate.com/products/komodo_ide/, the price is fairly steep at “$295”:http://www.activestate.com/products/komodo_ide/pricing.plex. I could’ve wished for more differentiated pricing for personal use vs. professional use.
All-in-all, I think Komodo is an excellent alternative for people serious about editing both code and text. Yes, that’s even if you use Emacs or VI. If you’re using _any_ other editor than those two, just switch to Komodo. Today. It really is that good.

7 Comments

  1. I only write PHP code, so Zend Studio works for me.

  2. Miron Brezuleanu

     /  2007-03-08

    Hello,
    Komodo Edit looks interesting. Since you seem to have some experience with it, a couple of questions:
    1) How can I use a tag stack like behaviour (VI: Ctrl-] to jump to definition, Ctrl-T to jump back, VS: F12 jump to definition, Ctrl-minus jump back) – I only found Ctrl-K, Ctrl-G for “jump to definition” – not very useful if I can’t jump back
    2) While trying to implement my own tag stack macros I ran into a problem: I don’t know how to store state (the stack of cursor positions) between macros. I tried adding an ‘tag_stack’ to the komodo objects but it seems to be lost from one macro to the other. Adding the stack to komodo.editor is worse – the jumping macro doesn’t work anymore.
    3) Any tips on debugging macros? alert() calls seem to work, but they’re not exactly nice.
    Thanks
    Miron

  3. Glad I could help.
    We used Komodo here (the full product, not just the editor) for Perl and Tcl development, and it is teh slick. The regular expression debugger is a particularly nice feature.
    I actually hadn’t installed the standalone Edit yet, as it doesn’t seem to be able to co-exist with the full IDE; I recommended it on the strength of the integrated editor. But since you had such a marvelous experience with it, I’m going to put it on my home machines. (I’ve been using CrimsonEditor and Kate until now. Adequate and almost-adequate, respectively.)

  4. Asbjørn Ulsberg

     /  2007-03-09

    Yea, Komod Edit is nice. I’ve used it a couple of days now and will definately start using it more regularly when not working on Microsoft-code. I wish the SCC integration you find in Komodo IDE could be implemented as well, alternatively lowering the price on Komodo IDE for personal use. For a price tag at $100 or lower, I would definately consider it.
    The only big caveat I have discovered so far is that it takes a while to start up. But once it’s up, it’s as fast as Lightning McQueen.

  5. Programmer’s Notepad was my editor of choice for the last few years.
    On the Positive side: quick and efficient, nice syntax colors, code folding, smart language detection, and more.
    On the bad side: no ftp/sftp/scp support, code completion not yet released.
    I’m using PSPad now, but I’m hating every minute of it. Tabbing and selecting text is hell, function list is unwieldy, and so forth. At least, it has proper FTP support.
    So when you wrote about Komodo, I thought my suffering days were over but it only allows passive ftp, and doesn’t support scp keys. Alas! No hope for me there…

  6. Nice writeup. I am one of the developers that work on Komodo at ActiveState so I can answer a few point here:
    * Extensions documentation: Your are correct and this is something we’ll be improving and adding to for Komodo 4.1 and beyond (a few more months).
    * Memory usage: Yes, Komodo is based on top of Mozilla, which has a large footprint in itself, but I think the advantages far outweigh the negatives for this, as that is in part how we get to provide such interesting features and enhancements like the extensions and multiplatform capabilities of Komodo.
    * As I don’t use a Mac very often, I’m a linux fan myself, I cannot answer that one, most of the Komodo dev’s use a combination of Windows, Linux and Mac platforms for day-to-day operations.
    Re: Goulven’s comments
    * Komodo should already have support for active FTP transfers, by default it tries to use the passive method first, as that is more common nowadays, if that fails it falls back to active mode. If this isn’t working correctly then please log a bug for this so we can fix it.
    * Komodo supports SSH private key usage through the use of agents (Putty/Pageant, ssh-agent for OpenSSH), you just need to add your keys and such before you try to make a SFTP/SCP connection in Komodo.
    Anyway, I’m glad you like Komodo Edit. Any problems let us know as if we don’t know about a problem and that means it can never get fixed.
    Thanks,
    Todd

  7. Just tried Komodo Edit.
    It’s all great, except speed. This is my single and greatest complain to many advanced editors/IDEs. It’s way too slow.
    I tried it with small HTML documents, scrolling the document, you can see it render the code. There are also annoying delays when providing autocomplete suggestions, etc.
    I also tried it with bigger code, 1500 lines or so, of JavaScript. It’s too slow.
    Now, I don’t want to be “religious” or whatever, but I switched from Quanta to vim a few months ago. While vim doesn’t have (good/any) code intelligence for PHP, HTML, JavaScript, XML, vim still has many of the cool features from Komodo:
    – Code indentation really works very good in vim, so does code folding.
    – The code auto-complete features within vim are more than sufficient – of course, they can be made as good as in Komodo, but this is not what *I* want to do.
    – Syntax highlighting in vim is fast, it’s not slow, and it looks good – works very well with any of language.
    – Vim macros are superior – very easy to create and to use.
    – Split views, multiple windows, tabs and more than you ever need are all in vim.
    – Cross-platform, extendable with user-defined languages, custom keyboard shortcuts, custom syntax highlighting. Every aspect of vim can be configured.
    Vim 7 has all that (and more) while being much faster than Komodo and others. One important advantage to vim is it runs within the terminal – you don’t need Xorg. You get all the power without Xorg.
    On Windows I liked UltraEdit the most. Now I’d use vim on Windows as well.