Subject: bug#25552: 26.0.50; load cl unintendedly

From: Mike Kupfer <[email-masked]>
Date: Thu, 02 Feb 2017 18:05:55 -0800

[email-masked] wrote:

> Mike Kupfer <[email-masked]> writes:
> 
> > Hi Katsumi and Glenn, I applied Glenn's patch to 25.1.90, and I'm afraid
> > that it introduced a failure.
[...]
> 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'.

Thanks, Noam!

I did some light testing of Noam's change to defun-mh plus Glenn's
patch.  The problem that I reported is gone, and I haven't seen any
other issues.  I did the testing with both Emacs 25.1.90 and master
(7cb7a58).

Does anyone on the MH-E dev team have any concerns about this
combination of changes?

mike