[TxMt] Re: get last 3 words

Steve King steve at narbat.com
Wed Jun 20 14:35:37 UTC 2007


On Wed, 20 Jun 2007, Hans-Joerg Bibiko wrote:

> Please note, if you change MYCOMMAND the macro won't notice your changes 
> because the entire code is saved within this macro. You have to rerecord 
> your macro.

The way I handle this is to store all my commands in an external file. 
Each command in TM then just includes that file and makes a single 
subroutine call.  This way I can change the behavior of my commands 
without having to dink around with changing the macros which use it.

For instance, I have a command set up to show all the Mac-specific key 
symbols as an HTML window.  The command entry in TM's bundle editor looks 
like:

     #! /usr/bin/perl
     require "$ENV{TM_BUNDLE_PATH}/tm_lib.pl";
     print key_symbols();

The code for the key_symbols() function is in my bundle directory in 
<~/Library/Application Support/TextMate/Bundles/sking.tmbundle/tm_lib.pl>. 
(The 'require' statement is essentially Perl's version of '#include'.)

When I want to change the command's behavior (say, to add a key I'd 
forgotten) I just edit that external file. No need to change the command 
at all in the bundle editor.  If I'd included the command in any macros, 
they'd all automatically pick up the changes without having to be 
individually modified.

Another benefit of storing the commands as an external library is that you 
edit them in the main TM window, not the bundle editor.  This means you 
get all the nifty language features (syntax highlighting, etc.) that are 
the reason you use TextMate in the first place.

I find this technique of using an external library file so handy that I 
code all my TM commands (except trivial one-liners) this way.

-- 
Steve King, <steve at narbat.com>



More information about the textmate mailing list