Add settings panel to enable/disable installed extensions
Created originally on Bitbucket by AngelEzquerra (Angel Ezquerra)
It would be nice to be able to enable/disable extensions through a panel in the global settings tool.
Since some extensions require additional configuration, I think that a good start would be to create an "extension" panel on the global settings window. This extension panel could simply show a list of those extensions that are enabled, and let the user enable/disable those extensions that require no configuration (such as "Mercurial Queues").
For those extensions that require configuration perhaps a "template" config file could be created and that template could be used to create a configuration window that could be accessed through the extension panel. The extension configuration "template" could be quite simple. Perhaps a simple text file named as the extension (e.g. notify.ini) containing the list of keys that can be configured, an explanation of their meaning plus their default value and the list of valid values for each of them. For example, for the notify extension:
[notify] sources=push #%description= #%type=choice #%valid_values=serve|push|pull|bundle
config= #%description=The filename of the configuration file #%type=file
The idea is to put each key with its default values as you would put them in the mercurial.ini file. Then you could add extra information such as a description that could be shown when selecting the item in the extension configuration panel, a list of default values, the type of item (such as a choice for multi-selection items, or file to show a file browser, etc). Obviously any other similar syntax or method would be equally good as this is just an example of what could be done.
Using this sort of approach it would be quite simple to add support for any existing or new mercurial extension right into tortoisehg.
BTW I looked for an issue regarding this on the issue tracker but surprisingly I did not find any. I apologize if I missed it and is already on the pipeline (or if it has been discussed and rejected).