[TxMt] Macro Recording Bug / Inconsistency

Kevin Cox kevintcox at gmail.com
Wed Dec 7 18:25:27 UTC 2005


I've been using the macro below on my laptop with TextMate for quite a
while, and just realized I didn't have it on my G5. I went to record
it and ended up having a terrible time. It seems that with newer
versions of textmate (I couldn't tell you which version I was on when
I recorded it on my laptop) when you record the macro below, it adds
an "insert text" command with whatever tag has been inserted.

The macro:
In an HTML document, type < (it inserts <>, but ignore
that), now do:
  1) Automation / Start Macro Recording
  2) Backwards delete (to delete <, which also removes >)
  3) Automation / Insert Closing Tag
  4) Automation / Stop Macro Recording

Now save this macro, give it key equivalent /, and here's the sneaky
part: set the scope to: text.html invalid.illegal.incomplete

The scope controls when the macro should "fire", and if you press
ctrl-shift P inside <>, you'll see the scope of that position, which
is what's quoted above. So only inside <> will / fire this macro,
which first removes the <> and then inserts the closing tag.

In newer versions, instead of just coming out with

deleteBackward:
insertClosingTag:

it also adds

insertText: </html>     (or whichever tag you happened to be closing)

I was able to open up the recorded macro in the Property List Editor
and remove the third command, but that is not a very elegant solution.
This was working properly in the past!

-Kevin



More information about the textmate mailing list