summaryrefslogtreecommitdiff
path: root/lisp/mh-e
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/mh-e')
-rw-r--r--lisp/mh-e/mh-acros.el7
-rw-r--r--lisp/mh-e/mh-comp.el25
-rw-r--r--lisp/mh-e/mh-compat.el6
-rw-r--r--lisp/mh-e/mh-e.el7
-rw-r--r--lisp/mh-e/mh-letter.el13
-rw-r--r--lisp/mh-e/mh-thread.el25
-rw-r--r--lisp/mh-e/mh-utils.el1
7 files changed, 41 insertions, 43 deletions
diff --git a/lisp/mh-e/mh-acros.el b/lisp/mh-e/mh-acros.el
index ac31127ce64..fb8a16bd81d 100644
--- a/lisp/mh-e/mh-acros.el
+++ b/lisp/mh-e/mh-acros.el
@@ -90,9 +90,10 @@ loads \"cl\" appropriately."
"Create function NAME.
If FUNCTION exists, then NAME becomes an alias for FUNCTION.
Otherwise, create function NAME with ARG-LIST and BODY."
- `(if (fboundp ',function)
- (defalias ',name ',function)
- (defun ,name ,arg-list ,@body)))
+ `(defalias ',name
+ (if (fboundp ',function)
+ ',function
+ (lambda ,arg-list ,@body))))
(put 'defun-mh 'lisp-indent-function 'defun)
(put 'defun-mh 'doc-string-elt 4)
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index a9f809cfa13..941529330e1 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -305,17 +305,19 @@ message and scan line."
(file-name buffer-file-name)
(config mh-previous-window-config)
(coding-system-for-write
- (if (and (local-variable-p 'buffer-file-coding-system
- (current-buffer)) ;XEmacs needs two args
- ;; We're not sure why, but buffer-file-coding-system
- ;; tends to get set to undecided-unix.
- (not (memq buffer-file-coding-system
- '(undecided undecided-unix undecided-dos))))
- buffer-file-coding-system
- (or (and (boundp 'sendmail-coding-system) sendmail-coding-system)
- (and (default-boundp 'buffer-file-coding-system)
- (default-value 'buffer-file-coding-system))
- 'iso-latin-1))))
+ (if (fboundp 'select-message-coding-system)
+ (select-message-coding-system) ; Emacs has this since at least 21.1
+ (if (and (local-variable-p 'buffer-file-coding-system
+ (current-buffer)) ;XEmacs needs two args
+ ;; We're not sure why, but buffer-file-coding-system
+ ;; tends to get set to undecided-unix.
+ (not (memq buffer-file-coding-system
+ '(undecided undecided-unix undecided-dos))))
+ buffer-file-coding-system
+ (or (and (boundp 'sendmail-coding-system) sendmail-coding-system)
+ (and (default-boundp 'buffer-file-coding-system)
+ (default-value 'buffer-file-coding-system))
+ 'iso-latin-1)))))
;; Older versions of spost do not support -msgid and -mime.
(unless mh-send-uses-spost-flag
;; Adding a Message-ID field looks good, makes it easier to search for
@@ -1054,6 +1056,7 @@ letter."
(defun mh-insert-x-mailer ()
"Append an X-Mailer field to the header.
The versions of MH-E, Emacs, and MH are shown."
+ (or mh-variant-in-use (mh-variant-set mh-variant))
;; Lazily initialize mh-x-mailer-string.
(when (and mh-insert-x-mailer-flag (null mh-x-mailer-string))
(setq mh-x-mailer-string
diff --git a/lisp/mh-e/mh-compat.el b/lisp/mh-e/mh-compat.el
index 23078127368..ffeb6937f72 100644
--- a/lisp/mh-e/mh-compat.el
+++ b/lisp/mh-e/mh-compat.el
@@ -65,7 +65,8 @@ Simulate NOERROR argument in XEmacs which lacks it."
Case is ignored if CASE-FOLD is non-nil.
This function is used by Emacs versions that lack `assoc-string',
introduced in Emacs 22."
- (if case-fold
+ ;; Test for fboundp is solely to silence compiler for Emacs >= 22.1.
+ (if (and case-fold (fboundp 'assoc-ignore-case))
(assoc-ignore-case key list)
(assoc key list)))
@@ -307,7 +308,8 @@ This function is used by XEmacs that lacks `replace-regexp-in-string'.
The function `replace-in-string' is used instead.
The arguments FIXEDCASE, SUBEXP, and START, used by
`replace-in-string' are ignored."
- (replace-in-string string regexp rep literal))
+ (if (featurep 'xemacs) ; silence Emacs compiler
+ (replace-in-string string regexp rep literal)))
(defun-mh mh-test-completion
test-completion (string collection &optional predicate)
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 05ff672da52..4515144d148 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -410,6 +410,8 @@ gnus-version)
(require 'gnus)
gnus-version)
+(defvar mh-variant)
+
;;;###autoload
(defun mh-version ()
"Display version information about MH-E and the MH mail handling system."
@@ -430,6 +432,7 @@ gnus-version)
;; Emacs version.
(insert (emacs-version) "\n\n")
;; MH version.
+ (or mh-variant-in-use (mh-variant-set mh-variant))
(if mh-variant-in-use
(insert mh-variant-in-use "\n"
" mh-progs:\t" mh-progs "\n"
@@ -876,6 +879,7 @@ variant."
(defun mh-variant-p (&rest variants)
"Return t if variant is any of VARIANTS.
Currently known variants are `MH', `nmh', and `gnu-mh'."
+ (or mh-variant-in-use (mh-variant-set mh-variant))
(let ((variant-in-use
(cadr (assoc 'variant (assoc mh-variant-in-use (mh-variants))))))
(not (null (member variant-in-use variants)))))
@@ -941,6 +945,8 @@ finally GNU mailutils MH."
(when (not (mh-variant-set-variant variant))
(message "Warning: %s variant not found. Autodetecting..." variant)
(mh-variant-set 'autodetect)))
+ ((null valid-list)
+ (message "Unknown variant %s; can't find MH anywhere" variant))
(t
(message "Unknown variant %s; use %s"
variant
@@ -972,6 +978,7 @@ necessary and can actually cause problems."
:set (lambda (symbol value)
(set-default symbol value) ;Done in mh-variant-set-variant!
(mh-variant-set value))
+ :initialize 'custom-initialize-default
:group 'mh-e
:package-version '(MH-E . "8.0"))
diff --git a/lisp/mh-e/mh-letter.el b/lisp/mh-e/mh-letter.el
index 3f88836ddab..71a4623d1f9 100644
--- a/lisp/mh-e/mh-letter.el
+++ b/lisp/mh-e/mh-letter.el
@@ -60,17 +60,6 @@
(to . mh-alias-letter-expand-alias))
"Alist of header fields and completion functions to use.")
-(defvar mh-yank-hooks nil
- "Obsolete hook for modifying a citation just inserted in the mail buffer.
-
-Each hook function can find the citation between point and mark.
-And each hook function should leave point and mark around the
-citation text as modified.
-
-This is a normal hook, misnamed for historical reasons.
-It is obsolete and is only used if `mail-citation-hook' is nil.")
-(mh-make-obsolete-variable 'mh-yank-hooks 'mail-citation-hook "19.34")
-
;;; Letter Menu
@@ -972,8 +961,6 @@ Otherwise, simply insert MH-INS-STRING before each line."
(sc-cite-original))
(mail-citation-hook
(run-hooks 'mail-citation-hook))
- (mh-yank-hooks ;old hook name
- (run-hooks 'mh-yank-hooks))
(t
(or (bolp) (forward-line 1))
(while (< (point) (point-max))
diff --git a/lisp/mh-e/mh-thread.el b/lisp/mh-e/mh-thread.el
index 41a79b6f0b4..ff8e6602e50 100644
--- a/lisp/mh-e/mh-thread.el
+++ b/lisp/mh-e/mh-thread.el
@@ -647,20 +647,17 @@ Only information about messages in MSG-LIST are added to the tree."
(defun mh-thread-set-tables (folder)
"Use the tables of FOLDER in current buffer."
- (mh-flet
- ((mh-get-table (symbol)
- (with-current-buffer folder
- (symbol-value symbol))))
- (setq mh-thread-id-hash (mh-get-table 'mh-thread-id-hash))
- (setq mh-thread-subject-hash (mh-get-table 'mh-thread-subject-hash))
- (setq mh-thread-id-table (mh-get-table 'mh-thread-id-table))
- (setq mh-thread-id-index-map (mh-get-table 'mh-thread-id-index-map))
- (setq mh-thread-index-id-map (mh-get-table 'mh-thread-index-id-map))
- (setq mh-thread-scan-line-map (mh-get-table 'mh-thread-scan-line-map))
- (setq mh-thread-subject-container-hash
- (mh-get-table 'mh-thread-subject-container-hash))
- (setq mh-thread-duplicates (mh-get-table 'mh-thread-duplicates))
- (setq mh-thread-history (mh-get-table 'mh-thread-history))))
+ (dolist (v '(mh-thread-id-hash
+ mh-thread-subject-hash
+ mh-thread-id-table
+ mh-thread-id-index-map
+ mh-thread-index-id-map
+ mh-thread-scan-line-map
+ mh-thread-subject-container-hash
+ mh-thread-duplicates
+ mh-thread-history))
+ ;; Emacs >= 22.1: (buffer-local-value v folder).
+ (set v (with-current-buffer folder (symbol-value v)))))
(defun mh-thread-process-in-reply-to (reply-to-header)
"Extract message id's from REPLY-TO-HEADER.
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index 66d87262bc9..7bda0a68472 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -177,6 +177,7 @@ been set. This hook can be used the change the value of these
variables if you need to run with different values between MH and
MH-E."
(unless mh-find-path-run
+ (or mh-variant-in-use (mh-variant-set mh-variant))
;; Sanity checks.
(if (and (getenv "MH")
(not (file-readable-p (getenv "MH"))))