Hmm. What ever happened to those happy days of emacs vs. vi? Emacs certainly has all of the features you mentioned, as does vi. But just to answer the question, I enjoy using BBEdit 5.1 because it has the compiler (C/C++) and parser (MacPerl) connectivity built right in.