[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#25552: 26.0.50; load cl unintendedly
From: |
npostavs |
Subject: |
bug#25552: 26.0.50; load cl unintendedly |
Date: |
Wed, 01 Feb 2017 08:51:05 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Mike Kupfer <mkupfer@alum.berkeley.edu> writes:
> Hi 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'.