[TxMt] Things that keep me from switching to TextMate
Stefan Haller
haller at ableton.com
Sun Aug 6 14:33:27 UTC 2006
TextMate is one of the best editors I have used on the Mac, and things
like its macros, snippets, and tab triggers almost make me switch right
away. Especially column-based typing is awesome.
However, there are a couple of limitations that are important enough for
me to keep me from switching. In rough order of importance:
- Function parser is line-based
The functions popup or the symbol browser (Command-Shift-T) work
line-based, i.e. they don't recognize functions such as
void foo(
int param1,
int param2)
{
}
We have a coding style that requires this layout for most functions,
so the function popup/symbol browser is next to useless for us.
I understand that this is because the regular expression based
function parser can only work line by line, but still this is one of
the most severe limitations for me.
- Loses insertion point when document is changed by another app
If another application changes a document that is currently open in
TextMate, TextMate notices this when you bring it to the front, and
reloads the changed document. This is good; however, it loses track of
where you were editing, and scrolls all the way to the top, setting
the insertion point to the beginning of the text. I suppose this is
intentional, because an existing selection may no longer be at the
right place after the other application inserted or deleted text
before the selection; however, in the majority of cases it makes more
sense to me to keep the current selection and scroll position, even if
it may be slightly off. For example, when I use TextMate for coding
but Xcode for debugging, I often fix minor typos in the Xcode editor
while debugging, and it is very annoying to have to go back to where
you were editing in TextMate after that.
- Find has no "whole words only" option
I must be missing something here. This seems like such as basic
feature of any serious text editor.
- Option-RightArrow stops too often
When stepping word by word through a sequence such as "abc / def",
Option-RightArrow stops after 'abc' (which is fine), and then it stops
*before* 'def', which is not; it should directly jump to after 'def'.
In other words, it should jump from one end of a word to the end of
the next word, skipping all non-words. Xcode and CodeWarrior do this
right (in my opinion); in BBEdit it's even worse than in TM though.
- Bundle commands should be available without an open window
Some bundle commands are already available now when no window is open
(e.g. "Relaunch TextMate"), but they don't do anything when chosen.
For some commands this would be very useful though (e.g. Xcode/Run, or
most Help commands).
- Undo is per-character
Typing sequences should be consolidated into a single undo step.
Doesn't anybody use undo for typing? This is basically unusable in
TextMate.
- Shift Left/Right should extend the selection to whole lines
I often put the insertion point somewhere in the middle of the first
line of a paragraph, hit Shift-DownArrow until I'm in the middle of
the last line of the paragraph, and then choose Shift Right; this will
insert a tab in the middle of the first line, which makes absolutely
no sense to me. Same for "Source/Comment Line". I think these
commands should first extend the selection to the beginning of the
first and end of the last selected line; I can't think of a single
situation where you wouldn't want this. BBEdit gets this right.
- Remap keys for Shift Left/Right
If there's a multi-line selection, I'd like Tab and Shift-Tab to be
bound to Shift Right/Shift-Left. I see no reason why I should have to
hold down Option too.
- Control-RightArrow should jump by CamelCaps sub-words
Right now, Ctrl-Left/Right jump to the beginning/end of the line;
there's already Command-Left/Right for that, so I think
Ctrl-Left/Right would be free to jump over the sub-words of a
CamelCapsVariableName. See Xcode.
- Show key binding for a particular key
With all those bundles and scope-based bindings, it can be very
difficult to figure out what command a particular key is currently
bound to in the current context. There's the Bundles/TextMate/Show
Keyboard Shortcuts command, but it generates a huge list that you have
to wade through. It would be very useful to have a function that lets
you type a key and displays what it is bound to.
--
Stefan Haller
Ableton
http://www.ableton.com/
More information about the textmate
mailing list