[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