From: David <dajo@Rednose.Rhubarb> - 2003-01-13 15:05:17
|
I wrote this some time ago but was unable to post to ilisp-help (a now-resolved problem with my ISP, nothing wrong with the ilisp list). > Pascal Bourguignon <pj...@in...> writes: > > > Why the quite useful function comint-interrupt-subjob is not mapped > > to the keyboard in the subjob window? > > It seems you are using FSF bindings (this is selectable, see the > manual) where the binding for compile-defun-lisp conflicts with the > traditional subjob interruption binding. Why the former is favored > over the latter in the inferior Lisp buffer is probably just an > oversight. > > > For now, to stop a lisp program, I can only kill the buffer (which > > gives me: error in process filter: Selecting deleted buffer [8 times] > > Huh? A command doesn't need to be bound to a key combination for > you to be able to invoke it. That would be insane. You can always > say M-x interrupt-subjob-ilisp RET or use the menu. > > And customizability of Emacs isn't there just for the heck of it, > so if you find keybindings suboptimal, make your own bindings. > > > I note that there is a lisp-bindings function called by ilisp-bindings > > over possibly these maps: ilisp-mode-map, lisp-mode-map and > > scheme-mode-map, which puts interrupt-subjob-ilisp in the \C-c\C-c > > slot of the keymap, but when I type: > > Yes, but if you read it further, you'll (maybe) see that > compile-defun-lisp is also bound to C-c C-c. > > -- > Hannu > Please don't send copies of list mail I think that there is room for a little care in interpretation and investigation. It seems to me that, since the context is discussion of a keymap, it is indeed true that it is only possible to kill the buffer. We all know that commands can be invoked with M-x, but the original question was: > Why the quite useful function comint-interrupt-subjob is not mapped > to the keyboard in the subjob window?. And the central point is that if you use C-c C-c what you get is compile-defun-lisp. The reason the problem arises is not unique to ilisp, although ilisp is a fairly bad case: the ilisp keymap is a *mess*; you can look at ilisp-mode-map with M-x describe-variable. Emacs keymaps can become garbled if they are not put together carefully; I suspect that people get tired of fiddling and stop when it seems to work instead of doing some organised testing. If you look at the keymap and extract the C-c entries this is what you get: (3 keymap (3 . compile-defun-lisp) (3 . comint-interrupt-subjob) (3 . comint-interrupt-subjob) (3 keymap (3 . comint-interrupt-subjob) Six entries for C-c. So, a keyboard entry of C-c C-c gets first a keymap, and then a command, which is indeed compile-defun-lisp. The rest of the C-c entries, from a functional point of view, are just garbage. The keymap could be quite a lot smaller and still work as it does. A quick fix is to use define-key to replace compile-defun-lisp with comint-interrupt-subjob. dajo |