For about eight years now, I’ve been hapily using Crimson Editor. At its simplest, Crimson Editor is nothing more than a fancy Notepad; however, it is so much more than that. While it doesn’t have all sorts of fancy tools that some editors have, it does support customizable syntax highlighting, customizable colors, line number, visible whitespace characters, basic smart indenting, a file/directory navigation pane, project support, and a MDI interface. Those features aren’t really the reason why I use it as almost all programming editors support such features. I use it because it gives me tools that help me program without doing things that hinder my productivity.
Three relatively-small features that most people would miss but make working with Crimson Editor a pleasure are as follows:
- Built-in macro ability with quick access keys – I have a number of pre-defined macros that do all sorts of tasks that I find take too much time without. For example, I have macros that duplicate the line that I’m currenlty on, replace all the white-space characters at the front of the line with a single tab (this makes reformatting files with spaces for tabs much quicker), comment out or remove he comment from the current line, and so on.The addition of a quick-record button makes doing a number of repeat tasks extremely easy. I once had to remove every third line from a document that was 500 lines long. It would take too long to do it line-by-line and wasn’t worth the time required to crank out a script to do it for me. Using the quick macro ability, I created a macro and had all those lines removed in less than a minute.
- Regular expressions in search and replace – A number of programming tools are starting to add support for this, but Crimson Editor was one of the first ones that I encountered with this ability. Even many of the newer editors that I have tried fail at reproducing the ease that Crimson Editor has when it comes to this extremely helpful ability. You can even perform the replace command on all the currently open files at the same time.
- Remembers what I was doing last time I had the editor open – This is a slick feature that some of the newer editors are starting to pick up on. When I’m done for the day, I close everything out. When I come in the next day and open up Crimson Editor, it opens up all the files that I had open last time. Heck, it even puts the cursor where it was in all the files that I had opened previously.
I think that editors these days try too hard. Rather than providing extremely robust syntax highlighting and a slick/customizable editor, they build in all these tools that are supposed to make my life easier. Unfortunately, most of these tools are touted as the “features” of the editor and cannot be disabled. Even more upsetting is that many of these tools actually decrease my productivity.
There are a number of trends in the current generation of editors that are coming these days that I really don’t like. Once again, it’s not that I think everything should be changed to accommodate me, I just think that the developers of these editors need to understand that not everyone wants feature X thus features that affect how editing works should be have the option of being disabled/enabled. I’ll pick on E-Text Editor as it is so close to being great, but it has some of these failings as listed below:
- Constantly adding characters that I didn’t type – This is a major point of frustration for me. So many of the modern editors that I have tried out want to “help” me write my programs. In their attempt to do so, they make mistakes and introduce syntax errors into my code. Those mistakes go by unnoticed by me as I can type out most of my code without looking and often am not looking since I’m looking at a terminal window, database output, or other information source while programming.For those who don’t know what I’m talking about, take E-Text Editor as a good example of this behavior. Whenever I create an open parenthesis, it automatically creates a closed parenthesis. This seems like a nice way to prevent from forgetting a close parenthesis, but what if you are putting together something that requires an open parenthesis but not a close (such as regular expressions or adding new conditional checks inside an existing conditional)? Suddenly you have new characters that you may forget were created peppered around in your code that will create syntax errors. Frankly, I produce fewer syntax errors because of forgetting to close a paren than I did because of unnecessary close parens added by my editor while using E.
- Smart tabs that get too smart for their own good – I enjoy smart tabs. I like automatically having my next line indented after adding an open curly brace. I don’t like it when my editor continuously tries to force what it believes to be proper tabbing after I finish typing out a line. If I want to break out of the standard tab flow for whatever reason, that is my business. E-Text Editor, like so many modern text editors, refuses to allow me to do this. I say refuse, but it’s not always a 100% thing, which drives me nuts more than anything. Every so often, if I start a new line outside the common tab flow in E-Text Editor, when I hit enter, the previous line gets auto-tabbed and my new line is tabbed to match. No! I do not want that line there. If I go back and correct the auto-correction, as soon as I arrow out of the line, E moves it right back to where it was before. If I explicitly go outside of the “smart” tabbing, my editor should no longer try to force its rules on me.
- Ability to remember some things but not others – As mentioned before, I love how Crimson Editor remembers to open up all the files as I had them last time it was run. E-Text Editor, as well as many other newer editors, also have this feature. However, I feel that they aren’t doing enough. E-Text Editor implements code-folding, which is a very nice tool BTW. However, if you have lots of files open with many areas of code folded and you close the editor, when E reopens, all the files won’t be as you had left them; rather, they all open up but all the code folding is now gone. Not restoring the code folding state seems to be a major oversight to me as I want to come back to not just the same files I had yesterday but to the exact same state that my editor was in when I closed it. I really don’t want to spend the first part of my day refolding all my files so that I can get back to work.
I suppose to some, these are not earth-shattering problems. I thought I could deal with them too and used E-Text Editor for the full 30 days of the trial. I fully expected to have my programming worldview changed and to fall in love with E. Instead, I was just as frustrated by the problems as I was on day one. I never got passed how I felt like some parts of E were just as annoying as Microsoft Word when it autocorrects things. At least in Word, you could disable autocorrect. I wouldn’t be surprised if someone tells me to just turn off smart tabs in E. It’s not that I don’t like the smart tabs, it’s that I don’t like how E’s implementation of smart tabs doesn’t let me modify the text as I want it. I want it to auto-tab as I type but not enforce its will when I’m manually formating.
I suppose the crux of the problem I have with E, and most other next-gen editors, is that the features that are supposed to make me feel powerful and productive all too often times make me feel controlled and frustrated. Who knows… E is still new. I very well may be a convert if it becomes a bit more flexable.
Did I help you?
You have noticed that you can disable auto-pairing in the e’s settings menu?
Thanks for the tip. I guess I didn’t associate that feature with that terminology.
I can’t code anymore without using TextMate.
I can’t code anymore without using Emacs 😉