On Sat, 15 Oct 2005 07:54:14 -0400, Stefan Monnier wrote: > There is no way to get this kind of control. `substitute-command-keys' has > some rules such as "prefer a binding using plain ascii keys" (so it'll > prefer C-x < over C-next, based on the principle that not all terminals have > a `next' key and even fewer have a way to generate a C-next event) and > "prefer a shorter binding".
While I can understand the impulse behind this heuristic, it ultimately seems paternalistic ("we need to prepare you for the great variety of terminals that you may encounter"). A better approach might be a set of configurable rules that would lead to a considered choice. 1) Emacs can usually query the environment to determine the nature of the keyboard in use. With this information it can exclude bindings that would be impossible to produce. In the same vein, if the menubar is not displayed there is again no point in suggesting menu bindings. 2) There should be a set of rules. I imagine an ordered set of predicates. After applying the hard filtering described above, if more than one binding survives, develop a per-binding preference strings as follows: apply each predicate in order; encode each failed predicate as '0', and each successful predicate as '1'. Compare the strings lexically. The lexically lowest string will correspond to the most desirable binding. (With a limit on the number of rules an analogous scheme could be implement using bit strings encoded as integers.) My hope is that after describing my preferences as a set of rules, emacs would oblige me by suggesting bindings compatible with my idiosyncrasies. In particular I would like this to work for new packages that I have not used before, let alone customized in any fashion. /john a users is likely to find /john _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel