gildea@BBN.COM (Stephen Gildea) (02/13/89)
The 18.52 suppress-keymap clobbers all printing characters on the assumption that they will modify the buffer. This assumption is not always correct. For example, when working on a certain class of poorly-laid-out keyboards, I rebind ` to run a function that simulates ESC. Naturally I don't want Dired, Info, Rmail, etc. to clobber that. The following version of suppress-keymap is intelligent about what keys to clobber. < Stephen (defun suppress-keymap (map &optional arg) "Make MAP override all character-inserting commands to be undefined. MAP must be a keymap array, not a sparse keymap. Normally also makes digits set numeric arg, but optional second arg NODIGITS non-nil prevents this." (let ((i 0)) (while (<= i 127) (if (eql (key-binding (char-to-string i)) 'self-insert-command) (aset map i 'undefined)) (setq i (1+ i)))) (or arg (let (loop) (aset map ?- 'negative-argument) ;; Make plain numbers do numeric args. (setq loop ?0) (while (<= loop ?9) (aset map loop 'digit-argument) (setq loop (1+ loop))))))