[TxMt] Recreating bbinclude in TextMate?
Ken Anderson
kena at cs.colorado.edu
Thu Aug 3 16:14:46 UTC 2006
Hi Brad,
Wow! Thanks for responding to my request so quickly!
I updated my version of the HTML bundle using subversion and I do
indeed see the "Includes" menu and the two items that it contains.
When I manually type the include markup and invoke the update
command, things work as expected. (Thanks again! I can't tell you how
happy I am to see this functionality in TextMate!)
I did run into one problem with using the "Add persistent include"
command, however. When I run it, I get the following error message:
/Library/Application Support/TextMate/Bundles/HTML.tmbundle/Support/
tminclude.rb:227:in `include_command': undefined method
`request_file' for Dialog:Module (NoMethodError)
from /tmp/temp_textmate.cR7Nlx:3
I suspect I need to update some other portion of TextMate to avoid
this error. Currently, in my </Library/Application Support/TextMate>
directory, I only have one subdirectory "Bundles".
What else do I need to check out from Subversion to get this to work?
Thanks again!
Ken
On Aug 3, 2006, at 12:35 AM, Brad Choate wrote:
> Hi Ken,
>
> I've checked in the first pass at supporting this feature. It's in
> HTML bundle in the macromates.com subversion repository.
>
> Usage: In an HTML document, either use cmd+ctrl+i (include) to
> insert the include markup, or just type it out... like this:
>
> <!-- #tminclude "/path/to/file" -->
> <!-- end tminclude -->
>
> (bbinclude works too, but I thought this was more appropriate.)
>
> To update, use cmd+ctrl+u (same as in BBEdit). This will pull in
> the included file, but leaves the include markup. Re-running the
> update command will refresh the includes, as you'd expect.
>
> It's recursive, like BBEdit... so included files can include files
> or contain placeholders. It also supports running Perl/Python/Ruby
> scripts (include the script... it must be executable though and
> must end in a .pl/.py/.rb extension to be recognized; I'll probably
> make this more generic by sniffing the first line for a shebang).
> Sorry... no support for AppleScript yet. The parameters passed to
> the script match the interface BBEdit uses (so command line
> arguments are: <source_file_name> <arg> <value> <arg2>
> <value2> ......". All TM_* variables are also passed through, since
> this is a TM command subprocess.
>
> Most of the BBEdit placeholders are supported; a few are not...
> notably the ones defined through the "web project" dialog. But it
> does automatically support all the "TM_*" variables (but you omit
> the "TM_" prefix). So you can say: #organization_name# to output
> the value of the TM_ORGANIZATION_NAME environment variable.
> Placeholder names are case-insensitive.
>
> It also supports parameters for includes, as BBEdit does. So you
> may say:
>
> <!-- #tminclude "/path/to/header.inc" #title#="Title For Include" -->
> <!-- end tminclude -->
>
> So, your header.inc file could have...
>
> <title>#title#</title>
>
> And it would expand as you'd expect.
>
> The path for include files can be relative. If it is relative, the
> update command will look for it, relative to 1) the current file,
> 2) the project directory (if invoked within a project). You can
> also use "~/path/to/file" and it will expand that to the path
> relative to your home directory. Oh, that reminds me... the file
> path is specified using posix paths (/path/to/file) instead of the
> legacy Mac form ("Drive:Folder:Folder:File"). I'd like to support
> the legacy form for backward-compatibility, but I recommend using
> posix paths in general.
>
> I'll take a look at supporting the "update all files in project"
> feature (or even selected files in the project drawer). Both should
> certainly be possible.
>
> -Brad
>
>
> PS: Oh and currently, there's nothing to prevent you from shooting
> yourself in the foot with including a file that includes itself...
> I'll take care of that shortly.
>
>
> On Aug 1, 2006, at 2:53 PM, Ken Anderson wrote:
>
>> Hi,
>>
>> After a quick search of the TextMate Wiki and archives of this
>> list, I am writing to ask about TextMate's ability to support a
>> useful feature related to BBEdit's support for creating websites.
>>
>> In particular, BBEdit has a feature called "bbinclude" that allows
>> one to insert statements like
>>
>> <!-- #bbinclude "footer.html" -->
>> <!-- end bbinclude -->
>>
>> into an HTML file. You can then "update" the host file and BBEdit
>> pulls in the text from the referenced file and includes it in the
>> host file.
>>
>> For instance, my footer.html file looks like this:
>>
>> <div id="footer">
>> <p>© Kenneth M. Anderson, 1998-#YEARNUM#.</p>
>> <p>Last Updated: #SHORTDATE#; #TIME#</p>
>> </div>
>>
>> and when I run the update command, it generates text like this:
>>
>> <!-- #bbinclude "footer.html" -->
>> <div id="footer">
>> <p>© Kenneth M. Anderson, 1998-2006.</p>
>> <p>Last Updated: 08/01/06; 3:43 PM</p>
>> </div>
>> <!-- end bbinclude -->
>>
>> I love TextMate and use it for a variety of tasks, including the
>> creation of HTML pages, BUT, I miss BBEdit's bbinclude functionality.
>>
>> Is there anyway to recreate this functionality in TextMate? I'm
>> currently using simple snippets with tab triggers to mimic a
>> portion of this functionality but sometimes I'd like to update
>> multiple sections of an HTML file at once and tab-triggered
>> snippets are not sufficient to address that need. In addition, I'd
>> love to have the ability to update all the HTML files contained
>> within a TextMate project with one command. Possible?
>>
>> Suggestions / feedback would be greatly appreciated!
>>
>> Thanks,
>>
>> Ken
>
>
> ______________________________________________________________________
> For new threads USE THIS: textmate at lists.macromates.com
> (threading gets destroyed and the universe will collapse if you don't)
> http://lists.macromates.com/mailman/listinfo/textmate
>
--
Kenneth M. Anderson | Phone: 303-492-6003
Associate Professor | Fax : 303-492-2844
Dept. of Computer Science | <mailto:kena at cs.colorado.edu>
University of Colorado, Boulder | <http://www.cs.colorado.edu/~kena/>
More information about the textmate
mailing list