gwl@sun.ufnet.ufl.edu (Gerry Lawrence) (06/14/89)
In <3246@mhres.mh.nl> jv@mhres.mh.nl (Johan Vromans) writes: > I think it would be wise to coordinate on the look and feel of > subsystems. One of the major advantages of GNU Emacs' subsystems is > that they all behave similar. This is severely damaged by having these > subsystems behave differently. Yes! one of my biggest gripes is that I have to re-customize every new piece of software to make it work at all, let alone like I want it to. My situation is worse than most because on any given day I use several different terminals, all with different keyboards. I even get stuck using gnu-emacs on VMS (no comment). Most of the time I don't have C-s or C-q available (dial-up terminal or vt200). Meanwhile every author of YAEUP (Yet Another Emacs Utility Package) is faced with the unpleasant and impossible task of binding the hundreds and hundreds of new functions to keys that _seem_ intuitive or convenient. Don't get me wrong, I appreciate free software, and am generally impressed with the quality of emacs utility software. Neither do I blame authors for assigning key bindings; there are no standards to follow, and even if there were I wouldn't like them or couldn't use them (terminal not having C-s,C-q). I've also always wanted a way to LOCK a key, that is a way to bind a key that local rebindings can't override. As an example, I always want C-c,C-c to suspend-emacs, no matter what. But of course packages like to set the local binding of this, and suddenly, I'm stuck with rebinding the key in the mode-hook, as well as searching through the "documentation" for other key bindings that are going to screw me up. Another key that has to be rebound is the ` key on vt200's and new IBM-PC keyboards, which is for some reason placed where the ESCAPE key should be. Yes, I realize that the solution to my problem is to find one keyboard and stick to it. Alas, this seems a professional pipe dream right now. SO, what to do? I don't believe that a set of standards is the answer, because any standard is going to be subject to the whim of its authors, and not reflect the needs and choices of the user. The best feature of Emacs is that if you don't like it, you can change it, but I don't like to _have_ to change it all the time. One possible solution to this problems is to create another level between keys and functions, call it maybe "meta-keyboard". Programs (including emacs itself) shouldn't bind functions to key's directly, but use the new keyboard interface. In order for this to work, of course, programmers would have to adopt this "standard" for future packages, as well as re-write all the existing code. We could implement this now by re-writing global and local set-key to check for the existence of key-bindings, and if a key is bound to a "similar" function, bind it to that key. Unfortunately there is no way that the program could know that "move-forward" and "subsystem-fancy-move-forward" are basically the same thing and the user would want the new function to be bound to the old key. Sounds like a lisp ai type senior project ;-) Of course, if we _really_ wanted to bind keys "intuitively", we'd need some sort of ability to log the frequency of use for functions and keys over a period of time. (I don't know is gnu emacs has this capability, haven't looked) Armed with this info we could bind keys according to their known frequency of use. Any takers? Flame on and get your high-voltage-electric-lisp warmed up, you're going to need it! Gerry Lawrence UFNET University of Florida Network Operations gwl@sun.ufnet.ufl.edu gwl%sun.ufnet.ufl.edu@bikini.cis.ufl.edu UUCP: ...!gatech!uflorida!sun.ufnet.ufl.edu!gwl BITNET should try: gwl@ufl.edu (Thanks to CIS dept!) -- Gerry Lawrence gwl@sun.ufnet.ufl.edu UFNET
jv@mh.nl (Johan Vromans) (06/14/89)
In article <20460@uflorida.cis.ufl.EDU> gwl@sun.ufnet.ufl.edu (Gerry Lawrence) writes: > [...] I don't believe that a set of standards is the > answer, because any standard is going to be subject to the whim of > its authors, and not reflect the needs and choices of the user. I think you miss an important point here. It is up to us *USERS* to define the standards. Authors of software packages should find that their packages are more easy to accept if they conform to certain standards. > [...] Unfortunately there is no way that the program could know > that "move-forward" and "subsystem-fancy-move-forward" are basically > the same thing and the user would want the new function to be bound > to the old key. That's why I suggested buffer-local functions some time ago in this newgroup. > Of course, if we _really_ wanted to bind keys "intuitively", [...] A good standard can help intuition :-) . -- Johan Vromans jv@mh.nl via european backbone (mcvax) Multihouse Automatisering bv uucp: ..!{mcvax,hp4nl}!mh.nl!jv Doesburgweg 7 phone: +31 1820 62944 2803 PL Gouda - The Netherlands fax: +31 1820 62500