TextMate is a great editor, but I do find that it's support for any given language lacks the depth you might find in IDEs, even multi-language IDEs.
So I find myself wanting to use TM, because as a pure editor it is very nice - but for example find that the Ruby specific features in Netbeans* are such huge timesavers that it is impossible to justify sticking with TM. I found the same to be true with Objective-C and Xcode as well.
(*I have been no fan of NB in the past, and there are many things about it that suck, but they have done an amazing job with Ruby, nothing else I've seen comes close.)
That said, whatever you do, do NOT tie your development/build process to an IDE. You need to allow every developer to use the tools they prefer, and you want the freedom to be able to switch these tools quickly.
I agree that Xcode beats TextMate in several areas when it comes to C and Objective-C (mainly the CodeSense completion). What I find compelling, however, is the extensibility of TextMate. I'm fairly certain that it is possible to build something along the lines of CodeSense as a TextMate bundle, if it does not already exist. I've been really falling behind when it comes to coding in my spare time (something I'm ashamed of), so I haven't kept up with the latest TM bundles.
If you get the latest Objective-C bundle from TextMate's SVN it does a reasonable job of codesense completion - but XCode is still a little better at it. The other thing that drives me nuts in TM with Obj-C is that building is an order of magnitude slower than doing it from XCode directly.
I find it funny (from the perspective of a vim user) that all of these people who have been using heavyweight IDEs and scoffing at us with our "basic" editors are slowly coming our way. I'm not sure exactly whom I mean by "all of these people," but there are certainly a lot of Mac users and Java programmers who are singing the praises of lightweight editors like TextMate when vim and emacs have been around for decades.
On the topic of vim, I highly recommend it for those who haven't tried it out. Sit me in front of vim and a unix terminal and I can quickly do any refactoring task that needs done. I have used vim macros to turn an HTML table into a C array in a few seconds. Seriously, once you get a powerful editor, it is so flexible and applicable that you will never want to be without it. Navigating text in an editor without vim's movement commands (W, w, B, b, {, }, *, #, and so many more) is simply painful.
When I first tried out Textmate, my immediate reaction was "is it me, or is Textmate modeled after emacs?". There is a lot to be said about the emacs (or vim) model of lightweight editor + macros. For those of us with *nix backgrounds, I suppose it comes with the turf
Of course, I know enough people who are super quick in Eclipse.
There used to be a really great Mac text editor called Alpha that was fully scriptable in Tcl. The only annoying thing about it was that after you had paid for it (shareware) the author wouldn't provide a build with the nagging switched off. Maybe that's one reason it seems to have vanished.
Any good introductions to vim? I did the odd editing with vim with a cheat sheet side by side, but I never heard about the "cool features" before reading Hacker News.
I used http://jmcpherson.org/editing.html as well as a cheat sheet. There's also http://vim.org/tips/ which seems to come up a lot whenever I'm searching for specific functionality. Other than that, simply immerse yourself in vim and deal with the pain for no more than a week before you'll find that you're already becoming more efficient.
Some less-commonly-used-but-awesome features:
C-X C-F in insert mode: complete file names
C-X C-L in insert mode: complete entire lines of code
C-N, C-P in insert mode: complete word forward, previous
v (V) in edit mode: entire visual mode (visual line)
gq in visual mode: rewrap selection
>> in edit/visual mode: indent current line/selection
gg=G in edit mode: reformat indentation of entire file
@@ in edit mode: repeat last keyboard macro
There's a lot I've left out (obviously), but that's a little teaser. One paradigm I use a lot is when I need to change a variable name... this is very easy. While on the variable itself, press * to search forward for it. Then type cw to erase the word and type in the replacement, followed by ESCAPE (of course). From then on, you can use n to find the next occurrence and then type . to change the name, because . repeats the last command.
Oh, and one last thing. Remap ESCAPE to CAPS LOCK, or get used to using C-[. Both are more convenient than reaching for the top corner; CAPS LOCK is superior in my experience, but it will kill you when you're on a non-mapped system.
Hell yeah it's got cool features. Programmable macros for instance. You never have to repeat yourself every again. You could mark certain points in your code and come back to it later. Not too mention it's installed in almost every Linux Distro out there. For good documentation http://vim.wikia.com/wiki/Main_Page
If only there was a real PC equivalent to TextMate. I find myself using eclipse due to the Remote Systems Plugin. Unfortunately, Eclipse is insanely buggy and has cost me countless hours of development time. One issue that keeps cropping up from time to time is that when I think I"m saving my file, it actually doesn't, and then I spend the next few minutes trying to figure out what's going on.
From time to time I look for alternatives, and sometimes find myself back in Notepad++. I guess that's the punishment I get for liking my ThinkPad hardware.
Weird that so many people complain about the bugginess of Eclipse. I don't recall experiencing any bugs at all (using it regularly at work). Maybe you have a fishy plugin installed?
Intype (http://intype.info/home/index.php) is worth keeping an eye on. They develop with the same philosophies as Textmate and plan to support the same bundle system. Development seems a bit sporadic though, so I haven't gotten my hopes up yet.
I have a T61p. I use Emacs on it. TM may be easier to use, but my .emacs file is cross platform and is just a malleable if not more. Perhaps it could make a decent substitute?
TextMate is easier to learn. Once you know emacs or vim, there really aren't any tools that are more productive to use. But the trick is that you have to really know the tools. It's not enough to fire it up and try it for a while. You need to use it full time (for everything: mail, documentation, notes, poetry -- editors aren't just for code) for a good while. Get the keystrokes into your fingers. Emacs users should think seriously about remapping Ctrl to the left of "A" where it was when the bindings were designed. Keep your hands off the mouse as much as possible. Learn the various tools and modes if you like, but above all get used to the idea of living in your editor.
What you'll find is that the modern GUI mechanisms for interacting with code are just terribly awkward. You'll start using keystrokes for other stuff too (like Alt-Tabbing to your command line), and everything will fall into place. Eventually, you'll start writing rants like this one trying to convince all the young'uns about how wrong they are about what they want in their tools.
I guess it's a question of how much you want to invest in your tools. Learning vi and emacs is like a lifetime of compound interest.
I agree that if you just want to code something yesterday, you probably won't reach for these most powerful tools. I'd say that if you're committed to programming over the long-term, though, you'd be hamstringing yourself by not starting on them now.
Long story short, I started Emacs a few months ago and I'm never going back.
Being that I use Emacs (and Vim) daily, I know this. :)
"Eventually, you'll start writing rants like this one trying to convince all the young'uns about how wrong they are about what they want in their tools."
jEdit is excellent for the reasons you list, and others. But the developers seem to have abandoned it. I finally moved on over a year ago. But I'd love to see active development on it.
For java development I actually like IntelliJ IDEA (http://www.jetbrains.com/idea/) more than Eclipse as in many ways it is much more productive and puts the fun back in programming.
So I find myself wanting to use TM, because as a pure editor it is very nice - but for example find that the Ruby specific features in Netbeans* are such huge timesavers that it is impossible to justify sticking with TM. I found the same to be true with Objective-C and Xcode as well.
(*I have been no fan of NB in the past, and there are many things about it that suck, but they have done an amazing job with Ruby, nothing else I've seen comes close.)
That said, whatever you do, do NOT tie your development/build process to an IDE. You need to allow every developer to use the tools they prefer, and you want the freedom to be able to switch these tools quickly.