On 25/09/2005, at 11.39, Andreas Wahlin wrote:
[...] but when I do the same on a h1 tag, the result becomes
<h1> |</h1>
This isn't the macro. The macro is just a regexp replace on the current word to <$1></$1>, though catching those tags w/o closing tag and using a condition in the replace string -- Michael Sheets has flirted with the thought of looking up the tag name and insert a customized snippet instead.
As for the extra indent and newline, this is done by having the HTML language grammar match a select set of open/close tag pairs (those which were part of the increase indent pattern) -- the rule is meta.tag.html, and it should be quite easy to add more tag names (or even make it a catch-all instead).
The rule assigns a special scope to the position between the two tags (meta.scope.between-tag-pair.html) and then the “Smart return/indent for tag pairs” snippet is set to insert the extra indent + newline, assigned return as key equivalent, and have the scope set to “meta.scope.between-tag-pair.html”.
So that's how this smart newline + indent is achieved for <tag></tag> pairs.