Thursday, June 2, 2011

Windows programming editor of choice: Crimson Editor

Nothing can make or break a developers productivity like a bad text editor. Done right, a good editor can help a developer work twice as fast and be more productive. Done wrong, it can bring development to a crawl and drag the entire process into a muck of configuration, testing, and more tinkering.

We all know about the bad editors out there. If you write code for a living, you've probably keep your own personal list of editors you'd rather not use. In the next two articles, however, I want to sing the praises of editors on both Microsoft Windows and Linux that just get it right. They work, get out of your way, and help you in surprising ways just when you need it. Since many of you out there are Windows users, we'll start there.

Before I start, let me issue this one caveat: I understand most Windows developers use Visual Studio. That's a given. But Visual Studio costs a lot of money and doesn't really allow you do code in "any language you want". Of course, it's also not open source. So, for the sake of these reviews, I'm going to ignore it. The two picks I've made are both open source and completely language agnostic. Using my picks, you can start writing code today, not pay a penny for any of your development tools, and aren't locked in to a small set of languages. If all you want to hear about is how great Visual Studio is and how it works for everything, move on. You're going to be sorely disappointed. Oh, and I'm also going to ignore Eclipse because I personally can't stand it and it's a bloated pig written in Java.

One more caveat: I don't use Windows anymore. As of last year, I've switched to a completely Linux based environment. That means there might be something better than Crimson Editor available now that wasn't available then. Seriously though, I doubt any of them will combine the speed and power Crimson offers into anything more attractive.

Now, let's talk about my favorite editor on Windows Crimson Editor.

Crimson Editor is a little editor I discovered way back in 2004 and have stuck with it ever since. While the developer hardly ever revs it, it's perhaps one of the most feature rich editors out of the box I've ever used.

The Good

This editor is amazing. While it's always been a free (as in beer) program, it's now open source and has an active community of users behind it which may turn into something amazing at some point. The Crimson Editor users I've met tend to be very enthuesed about it and are always talking about ways to improve it.

The editor supports a bunch of widely used languages including C/C++, Perl, Python, PHP, Java, and even supports many less widely used ones like Tcl/Tk, Fortran, Classic ASP, Pascal, LateX, and Matlab. While most of us probably won't ever use those languages, it's nice to see the developer put a little forethought into who his users might be instead of simply scratching his own itch.

Let's start with Macros. Macros are one of the great features of Crimson which allow you to save typing time by defining shortcut keystrokes for the things you do often. For example, you could define a macro to automatically update your git repository when you save revisions to your code or perform a complex compile with multiple command line flags without having to type it all again and again.

The software also features (and I really like this feature) the ability to have multiple files open at the same time in a nice, convenient, tabbed interface. This comes in handy when you're working with complex applications where you're constantly having to reference other source files as you work. Keep everything open and accessible and switch about as needed.

Next, we come to one of my favorite features: the code splitter. Using the code splitter, you can divide your screen in half and display different parts of the same document in each half. That comes in super handy when you're doing complex coding where you find yourself scrolling up and down to reference variable names or function documentation, parameter lists, or names. Not a huge feature but one I think adds a nice touch to an already awesome editor.

Of course, no programming editor would be complete with an advanced find and replace feature or an FTP client. The built-in FTP client is worth noting because, like a few other editors, it allows you to directly edit remote files on your server. You don't have to download them, edit, then re-upload. The software takes care of that all in the background for you and you never are exposed to what's going on.

There are a lot of other features that are worth mentioning and you can find a complete list of them here. But for now, let's talk about...

The Bad

Honestly, there's not a lot of bad I can say about Crimson. But if I had to think of something, at the top of my list would be the rev history. For the most part, development on the editor seems to have stopped. Since 2004 the editor has only received one rev (2008) and none since then. I don't know if the developer lost interest in it or had other obligations but it looks like we might be seeing the end of the line for Crimson very soon. Thankfully, it seems another group of developers have taken the Crimson code and started a project called Emerald Editor which promises to be a cross platform version of the original Crimson but, unfortunately, nothing's been done on that project either since 2008.

I'd also like to have seen better support for version control built into this editor. Even though it's old, people were using things like Subversion and CVS in 2004 and I'm surprised that it doesn't support it. FTP only is kind of a crappy alternative to the much better system they could have implemented.

Code folding would have been a nice feature as most editors, even in 2004, seems to have started supporting it and language syntax help (like Eclipse has) would have been nice too. There are simply times when you're using some obscure language method and you'd rather not break your concentration and go to the docs to figure out how to use it. Having the IDE give you doc would have been sweet.

Overall, I believe Crimson is still a viable and strong editor even at its advanced age and lack of care. It's not going to offer you the strong tools and configuration that editors like Eclipse do, but it's a great, lightweight editor for those of us who don't want to install a full Eclipse environment just to write some PHP, Python, or C code. I used Crimson for many years and while I found myself sometimes wanting something more powerful, it really wasn't that often and the desire wasn't really enough to make me switch to something heavier.

All in all, I'd still recommend Crimson for someone who's not in a corporate coding environment or needs the advanced features a heavier editor offers.

Why do I hate Eclipse so much?

I don't! I actually have used Eclipse quite a bit and find it a very comfortable and configurable editor to use. I just don't think it really meets the needs of most non-corporate programmers. Eclipse shines when you're working on enterprise level software, working in teams, or doing any number of other things that corporate coders do. For a lone coder or a very small team, I think it's a bit overkill.

I also don't like how 'heavy' Eclipse. I don't like software written in Java because I think it is simply a waste of system resources. While Eclipse isn't as bad as some of the other Java based crap I've had to use, it still suffers from all of the system drain that all other Java software does. Had it been written in a more sensible language like C/C++, this would not have been an issue at all. In fact, I've long questioned why they wrote it in Java. The answer I've always gotten was 'we wanted it to be cross platform'. Is C++ not cross platform? Java was just a bad idea.

So I don't hate Eclipse but I really like Crimson Editor on Windows. If you're a lone coder, I'd strongly encourage you to check it out. You won't be disappointed and I personally wouldn't mind if you grabbed the source and rev'd it for us either. That might be a great way to contribute to the community.

Tomorrow, we'll review my favorite editor for Linux. Hint: it's NOT gEdit or Kate!

No comments: