I'm talking about all tools in general, going from the text editor to the code compiler to the web browser to the in-game character editor. But let's focus for a while on development tools. As a game developer, I want to find the tools that will make the life of everybody on the project more simple, so there can be a lot of iterations steps during the development, resulting in a better game. I must seek these mighty programs and bring them to the world, or die trying.

My first quest is "Find the the Holy Text Editor". Note that I'm speaking of editor, not IDE. In my opinion, improving the tool chain of the game programmer starts by improving the text editor. There are a lot of them out there, and you may think: "what the f... is your problem? Why don't you just pick one and get back to work". Well I can't decide what's the best text editor. None of them suit my needs, there's always something that bothers me. Consider these features:

  • Multi Platform: quite common, but the support on alternative systems can be poor (everything based on X11). Portability is very important: once you know a tool very well, you don't want to learn a new one on a new system. You don't want to reconfigure the new one to match your old shortcuts and stuff. This represent a huge waste of time. Think of all the good that comes from having Firefox available on every major OS. I can only think of IDEs that achieve satisfaying portability.
  • Support for common languages and syntaxes: obviously. It would be really great though one could easily configure the parser to recognize a new language (with templates or automatons maybe).
  • Command line: may not be mandatory in itself, but I find it so helpful and time saving that it's a must. Think also about all the space you can save in the GUI because you don' t need all those icons anymore! You can also avoid to switch to another terminal to get things done. My champions: Vim and Emacs.
  • Syntax Highlighting: Well, Syntax Highlighting is a given, I really don't know any editor that doesn't support it. Well once I saw an editor with only two colors... Not that useful.
  • Auto completion. The key to success here, is to know very well all the symbols available, to know the context, and to make proposition to the user at the right time and in an unintrusive way (Scite proposes to complete "else". DUH!). My champion: Visual Studio for C# (again, an IDE).
  • Smart Indentation: I really like the way Emacs behaves with the tab key: pressing tab indents your line according to the previous one, and that's it! You can press again, it won't move. The line is where it should be. If not, you know you made a mistake above that line. On the other hand, I'm not fond on the policy about brakets in the GNU standard. Eclipse allows you to write a template for indentation (ok, it's an IDE, but still). Also, the editor should be able to indent a whole region with a simple command.
  • Refactoring facilities: I've always thought that an editor that knows how to color a symbol (the type) and knows how to complete it (the context) should also know how to refactor it. Not that common (agreed, it can require a project management).
  • Snippets: I have never used them, but I've seen great stuff in TextMate and in Vim. There's no question, I won't be able to do without them once I try them.
  • Macros: no way I'm gonna repeat this pattern a hundred times and edit some values in each by doing copy-paste, move the cursor, change the value, repeat... NO! I want Macros!
  • Easy to use (that's open to discussion of course): Yes it's normal that it takes time to be really efficient with an editor, but should it be that difficult to just type text? Great losers here: Emacs and even more Vim. Also configuration should be easy and propose menus with GUI in addition to the config files.
  • Lightweight GUI: you want to see your content, to see your code! What the hell are all these buttons for?? Champion in this category: Vim
  • Self Aware and Extendable: ok that doesn't mean anything, but I think it's a real strength when the core application is in the same (dynamic) language than the plugins. Extending the software then becomes easy and very powerful. Champions: Emacs and Bespin.
  • Fast to start! Responsive! My champions: everything that is not an IDE, topped by Vim.

If you know a text editor with all these features, put it in the comments! From now on I'll make small articles about particular text editors.

So in your opinion, what makes a good text editor? Of course I couldn't thinlk of everything so comment about any killer feature you can think of. Also, what text editor do you use, and are you completely happy with it?