Post by Mike KupferHi Katsumi and Glenn, I applied Glenn's patch to 25.1.90, and I'm afraid
that it introduced a failure. When I tried to compose an email,
pressing the space key in the subject line got me
Debugger entered--Lisp error: (wrong-type-argument syntax-table-p nil)
set-syntax-table(nil)
mh-beginning-of-word()
mh-letter-complete-or-space(1)
funcall-interactively(mh-letter-complete-or-space 1)
call-interactively(mh-letter-complete-or-space nil nil)
command-execute(mh-letter-complete-or-space)
I vaguely recall there was some reason for not compiling mh-acros.el,
but I don't remember the specifics. I'll look into this some more when
I have more time (this Thursday).
I guess it's because defun-mh checks whether the alias target is fbound
at compile time:
(defmacro defun-mh (name function arg-list &rest body)
"Create function NAME.
If FUNCTION exists, then NAME becomes an alias for FUNCTION.
Otherwise, create function NAME with ARG-LIST and BODY."
(let ((defined-p (fboundp function)))
(if defined-p
`(defalias ',name ',function)
`(defun ,name ,arg-list ,@body))))
It would be better to check at runtime:
(defmacro defun-mh (name function arg-list &rest body)
`(if (fboundp ',function)
(defalias ',name ',function)
(defun ,name ,arg-list ,@body)))
And/or require `mail-abbrev' at compile time
--- i/lisp/mh-e/mh-compat.el
+++ w/lisp/mh-e/mh-compat.el
@@ -260,7 +260,7 @@ 'mh-line-end-position
'line-end-position
'point-at-eol))
-(mh-require 'mailabbrev nil t)
+(eval-and-compile (mh-require 'mailabbrev nil t))
(defun-mh mh-mail-abbrev-make-syntax-table
mail-abbrev-make-syntax-table ()
"Emacs 21 and XEmacs don't have `mail-abbrev-make-syntax-table'.