[TxMt] Automation Questions
Charilaos Skiadas
cskiadas at uchicago.edu
Wed Jul 19 17:38:10 UTC 2006
On Jul 19, 2006, at 12:21 PM, James Edward Gray II wrote:
> Yep. Push control-< before you type a word. ;)
>
> Both modes are handy in different situations. Worth getting the
> hang of.
I further suggest studying the command that does this trick. Here is
the code for it, with comments removed:
#!/usr/bin/env ruby
single_no_arg = /^(?:br|hr)$/i
single = /^(?:img|meta|link|input|base|area|col|frame|param)$/i
print case tag = STDIN.read
when single_no_arg then "<#{tag} />"
when single then "<#{tag} $1/>"
when '' then "<${1:p}>$2</${1/\\s.*//}>"
else "<#{tag}>$1</#{tag.strip[/^\S+/]}>"
end
It is set to output "Insert as snippet". This means that the various
strings to be printed that we see above should be interpreted as
snippets. The one relevant for us here is:
"<${1:p}>$2</${1/\\s.*//}>"
when that snippet is in action, anything you type in the <${1:p}>
part gets copied at the closing snippet as well, except that
everything from the first space and no is substituted by nothing
(that's what the ${1/\\s.*//} does, see http://macromates.com/
textmate/manual/snippets#transformations ).
So you would do ctrl+<, followed by typing 'span' , then space, and
then the class stuff. On the closing tag only the 'span' part will
appear. When you are ready to type the things in the tag, press tab.
And of course, you could write your own span snippet that does some
more specialized behavior. The bundle already has a bunch of example
snippets.
> James Edward Gray II
Haris
More information about the textmate
mailing list