[TxMt Plugins] Version Control Plugins

Chris Thomas chris at cjack.com
Sat Oct 29 23:58:04 UTC 2005

On Oct 29, 2005, at 1:48 PM, Allan Odgaard wrote:

> It requires a little more work from the plug-in, but how about  
> something like:
>    // callbacks/notifications the plug-in can subscribe to
>    open file
>    show/hide file (for tabs)
>    save file (sending both will/did save)
>    close file (maybe open/close should just be sent when switching  
> tab to minimize the API)

Ah, I like it. I suspect you may ultimately want open/close and show/ 
hide to be separate. I can see caching data between open and close  
that I wouldn't necessarily want to throw out on hide, for example.  
But maybe not.

> Now, for the visualization of SCM I'd propose doing it “push”  
> style, and e.g. have a (simple) API to add/remove a cell (NSCell)  
> to/from the status bar. That way the plug-in can add a cell that  
> displays svn status, but could also add something completely  
> different, like a function drop down :), a toggle that enables/ 
> disables the save hook etc.

I like that very much. Sounds perfect, except for one thing: there  
will inevitably be user requests to display the status of each item  
in the drawer next to the filename, whether or not the file is open.  
I guess one could handle that by adding a "files loaded into drawer"  
callback, and perhaps allowing each filename to be adorned with a set  
of NSImages.

> As for shell commands, I'd do one last method (added to the plug-in  
> controller) which allows executing a bundle item (given by UUID) in  
> the context of (a) file. So a SCM system could populate the context  
> menu with actions that actually just wraps for the bundle items (it  
> would be logical to add a PlugIns folder to the bundles, and allow  
> the user to enable/disable plug-ins per bundle in the BE, but e.g.  
> for svn, it would be enabled but just stay passive for files not  
> under svn control).

Ship it. Wicked cool.


More information about the textmate-plugins mailing list