Index: ido.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/ido.el,v retrieving revision 1.55 diff -u -r1.55 ido.el --- ido.el 5 May 2005 22:15:58 -0000 1.55 +++ ido.el 18 May 2005 03:49:17 -0000 @@ -1320,9 +1320,14 @@ (add-hook 'kill-emacs-hook 'ido-kill-emacs-hook) - (unless ido-minor-mode-map-entry - (setq ido-minor-mode-map-entry (cons 'ido-mode (make-sparse-keymap))) - (add-to-list 'minor-mode-map-alist ido-minor-mode-map-entry)) + (when ido-minor-mode-map-entry + (setq minor-mode-map-alist + (assq-delete-all 'ido-mode minor-mode-map-alist))) + + ;; In case the user wants to switch from, e.g., 'both to 'buffer, always + ;; create a fresh keymap so that old bindings are not retained. + (setq ido-minor-mode-map-entry (cons 'ido-mode (make-sparse-keymap))) + (add-to-list 'minor-mode-map-alist ido-minor-mode-map-entry) (let ((map (cdr ido-minor-mode-map-entry))) (when (memq ido-mode '(file both))