;;; mh-letter.el --- MH-Letter mode
;; Copyright (C) 1993, 1995, 1997,
-;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+;; Free Software Foundation, Inc.
;; Author: Bill Wohler <wohler@newt.com>
;; Maintainer: Bill Wohler <wohler@newt.com>
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;; MH-Letter Mode
-(defvar mh-letter-buttons-init-flag nil)
-
;; Shush compiler.
-(eval-when-compile
- (defvar image-load-path)
- (mh-do-in-xemacs (defvar font-lock-defaults)))
+(defvar font-lock-defaults) ; XEmacs
;; Ensure new buffers won't get this mode if default-major-mode is nil.
(put 'mh-letter-mode 'mode-class 'special)
(make-local-variable 'mh-sent-from-folder)
(make-local-variable 'mh-sent-from-msg)
(mh-do-in-gnu-emacs
- (unless mh-letter-buttons-init-flag
- (let* ((load-path (mh-image-load-path-for-library "mh-e" "mh-logo.xpm"))
- (image-load-path (cons (car load-path)
- (when (boundp 'image-load-path)
- image-load-path))))
- (mh-tool-bar-letter-buttons-init)
- (setq mh-letter-buttons-init-flag t)))
- (set (make-local-variable 'tool-bar-map) mh-letter-tool-bar-map))
+ (unless mh-letter-tool-bar-map
+ (mh-tool-bar-letter-buttons-init))
+ (if (boundp 'tool-bar-map)
+ (set (make-local-variable 'tool-bar-map) mh-letter-tool-bar-map)))
(mh-do-in-xemacs
(mh-tool-bar-init :letter))
;; Set the local value of mh-mail-header-separator according to what is
This command leaves the mark before the letter and point after it."
(interactive
(let* ((folder
- (mh-prompt-for-folder "Message from"
- mh-sent-from-folder nil))
+ (mh-prompt-for-folder "Message from" mh-sent-from-folder nil))
(default
- (if (and (equal folder mh-sent-from-folder)
- (numberp mh-sent-from-msg))
- mh-sent-from-msg
+ (if (equal folder mh-sent-from-folder)
+ (or mh-sent-from-msg (nth 0 (mh-translate-range folder "cur")))
(nth 0 (mh-translate-range folder "cur"))))
(message
(read-string (concat "Message number"
(or (and default
(format " (default %d): " default))
- ": ")))))
+ ": "))
+ nil nil
+ (if (numberp default)
+ (int-to-string default)
+ default))))
(list folder message current-prefix-arg)))
+ (if (equal message "")
+ (error "No message number given"))
(save-restriction
(narrow-to-region (point) (point))
(let ((start (point-min)))
- (if (and (equal message "") (numberp mh-sent-from-msg))
- (setq message (int-to-string mh-sent-from-msg)))
(insert-file-contents
(expand-file-name message (mh-expand-file-name folder)))
(when (not verbatim)
mh-default-folder-for-message-function)))
"")
t)))
- (let ((last-input-char ?\C-f))
+ (let ((last-input-event ?\C-f))
(expand-abbrev)
(save-excursion
(mh-to-field)
Set the mark to point before moving."
(interactive)
(expand-abbrev)
- (let ((target (cdr (or (assoc (char-to-string (logior last-input-char ?`))
+ (let ((target (cdr (or (assoc (char-to-string (logior last-input-event ?`))
mh-to-field-choices)
;; also look for a char for version 4 compat
- (assoc (logior last-input-char ?`)
+ (assoc (logior last-input-event ?`)
mh-to-field-choices))))
(case-fold-search t))
(push-mark)
(let ((eol (point)))
(skip-chars-backward " \t")
(delete-region (point) eol))
- (if (and (not (eq (logior last-input-char ?`) ?s))
+ (if (and (not (eq (logior last-input-event ?`) ?s))
(save-excursion
(backward-char 1)
(not (looking-at "[:,]"))))
(defun mh-position-on-field (field &optional ignored)
"Move to the end of the FIELD in the header.
Move to end of entire header if FIELD not found.
-Returns non-nil iff FIELD was found.
+Returns non-nil if FIELD was found.
The optional second arg is for pre-version 4 compatibility and is
IGNORED."
(cond ((mh-goto-header-field field)
"Do folder name completion in Fcc header field."
(let* ((end (point))
(beg (mh-beginning-of-word))
- (folder (buffer-substring beg end))
+ (folder (buffer-substring-no-properties beg end))
(leading-plus (and (> (length folder) 0) (equal (aref folder 0) ?+)))
- (last-slash (mh-search-from-end ?/ folder))
- (prefix (and last-slash (substring folder 0 last-slash)))
- (choices (mapcar #'(lambda (x)
- (list (cond (prefix (format "%s/%s" prefix x))
- (leading-plus (format "+%s" x))
- (t x))))
+ (choices (mapcar (lambda (x) (list x))
(mh-folder-completion-function folder nil t))))
+ (unless leading-plus
+ (setq folder (concat "+" folder)))
(mh-complete-word folder choices beg end)))
;;;###mh-autoload
(defun mh-complete-word (word choices begin end)
- "Complete WORD at from CHOICES.
+ "Complete WORD from CHOICES.
Any match found replaces the text from BEGIN to END."
(let ((completion (try-completion word choices))
(completions-buffer "*Completions*"))