On 16/2/2006, at 3:38, Quinn Comendant wrote:
I notice that you can define multiple files for a template, but I can't figure out how to create multiple files when running the template. Why else would TM use multiple files in a template? But then again, there seems to be only one $TM_NEW_FILE variable per template.
This part got lost when the bundle editor was extended to allow editing of templates. But with a little will, it is possible.
The creation of the template file(s) is done entirely by the little shell script, which each template has.
Take a look at the Objective-C -> Singleton template, which creates both the source and the header.
But for TextMate to know that the template creates more than one file (this is only so that all the files gets added to the project, after creation), the “info.plist” property list file which store the template info needs to have a “files” key where the value is a shell command that returns the path to each new file generated.
Again I refer to the info.plist of the Objective-C singleton template [1].
It is necessary to manually edit the info.plist on-disk to add the key/value pair, and TextMate needs to be relaunched afterwards.
I forgot to mention it in the Future Directions blog post, but templates is another part I also plan to revise in 2.0. Instead a template will just be instantiation of a snippet in a new document, and there will (likely) be some means to have multiple documents crated.
A quick side question, how can I populate env variables at runtime? If my template has ${WHAT_DID_I_HAVE_FOR_LUNCH_TODAY} and I want to run a template every day... is it possible to popup a dialog with fields to fill-in or something?
You can't have placeholders in templates, as you can with snippets, i.e. where the caret is taken to each placeholder in turn. But you can insert the value of an environment variable in the template, as the template file is generated by a shell command, you could in practice write your templates as php or erb files, and let that command just pipe the template through php or erb and into $TM_NEW_FILE.
[1] http://anon:anon@macromates.com/svn/Bundles/trunk/Bundles/ Objective-C.tmbundle/Templates/Singleton/info.plist