[comp.emacs] Problem with mail-abbrevs and Gnews

piet@cs.ruu.nl (Piet van Oostrum) (02/22/91)

I started using mail-abbrevs that was posted recently and soon got a
problem when I used both Gnews and mail in the same session. The symptoms
were that my mail-mode got some keybindings from e-reply-mode.

I tracked it down to mail-abbrev making a non-sparse copy of the keymap
that is used by mail-mode and e-reply-mode trying to make a copy of that
keymap for private use. However, Gnews uses a private keymap-copy routine
that is incorrect: if the keymap is non-sparse it doesn't copy it, but
shares the keymap. I think this is because it was written for a version of
emacs that didn't have vector keymaps.

Anyway, the solution is to get rid of the private keymap copying routine in
Gnews:

*** prims.el.~1~	Fri Sep 15 15:25:56 1989
--- prims.el	Fri Feb 22 14:45:59 1991
***************
*** 144,159 ****
  
  (put 'gnews-replace 'lisp-indent-hook 2)
  
! (defun gnews-copy-keymap (keymap)
!   ;; unneeded for v18.51 and up...
!   "Copy a sparse KEYMAP recursively, so that no subkey in the new map
! can have a side effect on the original."
!   (if (atom keymap)
!       keymap
!     (cons (if (consp (car keymap))
! 	      (gnews-copy-keymap (car keymap))
! 	    (car keymap))
! 	  (gnews-copy-keymap (cdr keymap)))))
  
  (defun gnews-subst-command-keys (s)
    "Replace command names in string S with extra compact key descriptions;
--- 144,150 ----
  
  (put 'gnews-replace 'lisp-indent-hook 2)
  
! (fset 'gnews-copy-keymap 'copy-keymap)
  
  (defun gnews-subst-command-keys (s)
    "Replace command names in string S with extra compact key descriptions;
-- 
Piet* van Oostrum, Dept of Computer Science, Utrecht University,
Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands.
Telephone: +31 30 531806   Uucp:   uunet!mcsun!ruuinf!piet
Telefax:   +31 30 513791   Internet:  piet@cs.ruu.nl   (*`Pete')