I just checked the Ruby Haml bundle in TM2 preferences and it automatically pulled in the Rails bundle when I did that. Is there a dependency mechanism for bundles in TM2? If so, how is that declared? Is it possible to find the correct bundle support path for a bundle you are dependent on? Is path manipulation the best way to do that or is there something better?
Thanks! Matthew
On 29/05/2012, at 20.56, Matthew Johnson wrote:
I just checked the Ruby Haml bundle in TM2 preferences and it automatically pulled in the Rails bundle when I did that. Is there a dependency mechanism for bundles in TM2? If so, how is that declared?
There are “implicit” dependencies, which are when a grammar include stuff from other grammars.
There are also “explicit” dependencies which you declare in the property list of the item that depends on something else (can be the bundle’s info.plist).
Is it possible to find the correct bundle support path for a bundle you are dependent on? Is path manipulation the best way to do that or is there something better?
This is from Objective-C.tmbundle/info.plist:
require = ( { name = "C"; uuid = "4675A940-6227-11D9-BFB1-000D93589AF6"; }, );
This allow commands in the Objective-C bundle to reference the C bundle’s support folder via the TM_C_BUNDLE_SUPPORT environment variable.
There is also an alternative approach, although this should generally not be used, but e.g. the SCM bundle has this settings item:
{ shellVariables = ( { name = 'TM_SCM_COMMIT_WINDOW'; value = '$TM_BUNDLE_SUPPORT/bin/CommitWindow.app/Contents/MacOS/CommitWindow'; }, ); }
This globally exposes the TM_SCM_COMMIT_WINDOW variable (for all bundle commands to see) with a path inside the SCM bundle. We did it this way because it hides where in the support folder the binary is. Another use for this though is the Themes bundle which appends to the global TM_THEME_PATH variable (used for web output themes) via the following settings item:
{ shellVariables = ( { name = 'TM_THEME_PATH'; value = '${TM_THEME_PATH:+$TM_THEME_PATH:}$TM_BUNDLE_SUPPORT/web-themes'; }, ); }