This is one of those strange errors I wish I did not see. It seems
like 'ignore somehow hides \r in a keymap. To show this start with
"emacs -Q" and evaluate the following:
;; Set up
(defconst km (make-sparse-keymap))
(define-key km "\r" (lambda()(interactive)(message "hit RET")))
;; Convinience switching to/from km
(define-key km [(home)] (lambda()(interactive)(use-local-map nil)))
(global-set-key [(control meta home)]
(lambda()(interactive)(use-local-map km)))
;; Test using either of these and then hit RET
(define-key km [?i] (lambda()(interactive)(define-key km '[t] 'ignore)))
(define-key km [?n] (lambda()(interactive)(define-key km '[t] nil)))
Activate the km keymap with C-M-home. Switch between using 'ignore or
nil for unbound keys in km by hitting i and n. I see the following:
- Using nil and hitting RET gives the message "hit RET"
- Using 'ignore and hitting RET gives nothing.
I am doing this with CVS Emacs from 2005-10-27 on w32.