|
|||||||||||||||||
Searching XEmacs
Quick Links
About XEmacs
|
Standard Interface for Enabling ExtensionsOwner: ??? Effort: ??? Dependencies: ??? Abstract: Apparently, if you know the name of a package (for
example, The easy part of this is defining the interface, and I think it
should be done as soon as possible. When the package is loaded, it
simply calls some standard function in the package system, and passes
it the names of enable and disable functions, or perhaps just one
function that takes an argument specifying whether to enable or
disable. In any case, this data is kept in a table which is used by
the I have been conceiving of these enabling and disabling functions as turning the feature on or off globally. It's probably also useful to have a standard interface returning a extension on or off in just the particular buffer. Perhaps then the appropriate interface would involve registering a single function that takes an argument that specifies various things, such as turn off globally, turn on globally, turn on or off in the current buffer, etc. Part of this interface should specify the correct way to define
global key bindings. The correct rule for this, of course, is that
the key bindings should not happen when the package is loaded, which
is often how things are currently done, but only when the extension is
actually enabled. The key bindings should go away when the extension
is disabled. I think that in order to support this properly, we
should expand the keymap interface slightly, so that in addition to
other properties associated with each key binding is a list of shadow
bindings. Then there should be a function called
Once this interface is defined, it should be easy to expand the custom package so it knows about this interface. Then it will be possible to put all sorts of extensions on the options menu so that they could be turned off and turned on very easily, and then when you save the options out to a file, the design settings for whether these extensions are enabled or not are saved out with it. A whole lot of custom junk that's been added to a lot of different packages could be removed. After doing this, we might want to think of a way to classify extensions according to how likely we think the user will want to use them. This way we can avoid the problem of having a list of 100 extensions and the user not being able to figure out which ones might be useful. Perhaps the most useful extensions would appear immediately on the extensions menu, and the less useful ones would appear in a submenu of that, and another submenu might contain even less useful extensions. Of course the package authors might not be too happy with this, but the users probably will be. I think this at least deserves a thought, although it's possible you might simply want to maintain a list on the web site of extensions and a judgment on first of all, how commonly a user might want this extension, and second of all, how well written and bug-free the package is. Both of these sorts of judgments could be obtained by doing user surveys if need be. Ben Wing |
||||||||||||||||
|
|
||||||||||||||||
Conform with <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Automatically validated by PSGML