;;; mh-funcs.el --- MH-E functions not everyone will use right away
;; Copyright (C) 1993, 1995,
-;; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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:
-;; Internal support for MH-E package.
;; Putting these functions in a separate file lets MH-E start up faster,
;; since less Lisp code needs to be loaded all at once.
+;; Please add the functions in alphabetical order. If only one or two
+;; small support routines are needed, place them with the function;
+;; otherwise, create a separate section for them.
+
;;; Change Log:
;;; Code:
-;;(message "> mh-funcs")
-(eval-when-compile (require 'mh-acros))
-(mh-require-cl)
-(require 'mh-buffers)
(require 'mh-e)
-;;(message "< mh-funcs")
-
-\f
-
-;;; Scan Line Formats
-
-(defvar mh-note-copied "C"
- "Messages that have been copied are marked by this character.")
-
-(defvar mh-note-printed "P"
- "Messages that have been printed are marked by this character.")
-
-\f
-
-;;; Functions
+(require 'mh-scan)
;;;###mh-autoload
(defun mh-burst-digest ()
(display-buffer mh-temp-buffer)))
;; Shush compiler.
-(eval-when-compile (defvar view-exit-action))
+(defvar view-exit-action)
;;;###mh-autoload
(defun mh-list-folders ()
"-recurse"
"-norecurse"))
(goto-char (point-min))
- (view-mode-enter)
+ (mh-view-mode-enter)
(setq view-exit-action 'kill-buffer)
(message "Listing folders...done")))))
This command will ask if you want to process refiles or deletes
first and then either run \\[mh-execute-commands] for you or undo
-the pending refiles and deletes, which are lost."
+the pending refiles and deletes."
(interactive (list (if current-prefix-arg
(mh-read-range "Scan" mh-current-folder t nil t
mh-interpret-number-as-range-flag)
(mh-reset-threads-and-narrowing)
(mh-regenerate-headers range))
-;;;###mh-autoload
-(defun mh-pipe-msg (command include-header)
- "Pipe message through shell command COMMAND.
-
-You are prompted for the Unix command through which you wish to
-run your message. If you give a prefix argument INCLUDE-HEADER to
-this command, the message header is included in the text passed
-to the command."
- (interactive
- (list (read-string "Shell command on message: ") current-prefix-arg))
- (let ((msg-file-to-pipe (mh-msg-filename (mh-get-msg-num t)))
- (message-directory default-directory))
- (save-excursion
- (set-buffer (get-buffer-create mh-temp-buffer))
- (erase-buffer)
- (insert-file-contents msg-file-to-pipe)
- (goto-char (point-min))
- (if (not include-header) (search-forward "\n\n"))
- (let ((default-directory message-directory))
- (shell-command-on-region (point) (point-max) command nil)))))
-
;;;###mh-autoload
(defun mh-page-digest ()
"Display next message in digest."
(forward-line 2))
(mh-recenter 0)))
+;;;###mh-autoload
+(defun mh-pipe-msg (command include-header)
+ "Pipe message through shell command COMMAND.
+
+You are prompted for the Unix command through which you wish to
+run your message. If you give a prefix argument INCLUDE-HEADER to
+this command, the message header is included in the text passed
+to the command."
+ (interactive
+ (list (read-string "Shell command on message: ") current-prefix-arg))
+ (let ((msg-file-to-pipe (mh-msg-filename (mh-get-msg-num t)))
+ (message-directory default-directory))
+ (save-excursion
+ (set-buffer (get-buffer-create mh-temp-buffer))
+ (erase-buffer)
+ (insert-file-contents msg-file-to-pipe)
+ (goto-char (point-min))
+ (if (not include-header) (search-forward "\n\n"))
+ (let ((default-directory message-directory))
+ (shell-command-on-region (point) (point-max) command nil)))))
+
;;;###mh-autoload
(defun mh-sort-folder (&optional extra-args)
"Sort folder.
(cond (threaded-flag (mh-toggle-threads))
(mh-index-data (mh-index-insert-folder-headers)))))
-;;;###mh-autoload
-(defun mh-undo-folder ()
- "Undo all refiles and deletes in the current folder."
- (interactive)
- (cond ((or mh-do-not-confirm-flag
- (yes-or-no-p "Undo all commands in folder? "))
- (setq mh-delete-list nil
- mh-refile-list nil
- mh-seq-list nil
- mh-next-direction 'forward)
- (with-mh-folder-updating (nil)
- (mh-remove-all-notation)))
- (t
- (message "Commands not undone"))))
-
;;;###mh-autoload
(defun mh-store-msg (directory)
"Unpack message created with \"uudecode\" or \"shar\".
(insert-file-contents msg-file-to-store)
(mh-store-buffer directory))))
-;;;###mh-autoload
(defun mh-store-buffer (directory)
"Unpack buffer created with \"uudecode\" or \"shar\".
(insert "\n(mh-store finished)\n"))
(error "Error occurred during execution of %s" command)))))
-\f
-
-;;; Help Functions
-
-;;;###mh-autoload
-(defun mh-ephem-message (string)
- "Display STRING in the minibuffer momentarily."
- (message "%s" string)
- (sit-for 5)
- (message ""))
-
;;;###mh-autoload
-(defun mh-help ()
- "Display cheat sheet for the MH-E commands."
- (interactive)
- (with-electric-help
- (function
- (lambda ()
- (insert
- (substitute-command-keys
- (mapconcat 'identity (cdr (assoc nil mh-help-messages)) ""))))
- mh-help-buffer)))
-
-;;;###mh-autoload
-(defun mh-prefix-help ()
- "Display cheat sheet for the commands of the current prefix in minibuffer."
+(defun mh-undo-folder ()
+ "Undo all refiles and deletes in the current folder."
(interactive)
- ;; We got here because the user pressed a "?", but he pressed a prefix key
- ;; before that. Since the the key vector starts at index 0, the index of the
- ;; last keystroke is length-1 and thus the second to last keystroke is at
- ;; length-2. We use that information to obtain a suitable prefix character
- ;; from the recent keys.
- (let* ((keys (recent-keys))
- (prefix-char (elt keys (- (length keys) 2))))
- (with-electric-help
- (function
- (lambda ()
- (insert
- (substitute-command-keys
- (mapconcat 'identity
- (cdr (assoc prefix-char mh-help-messages)) "")))))
- mh-help-buffer)))
+ (cond ((or mh-do-not-confirm-flag
+ (yes-or-no-p "Undo all commands in folder? "))
+ (setq mh-delete-list nil
+ mh-refile-list nil
+ mh-seq-list nil
+ mh-next-direction 'forward)
+ (with-mh-folder-updating (nil)
+ (mh-remove-all-notation)))
+ (t
+ (message "Commands not undone"))))
(provide 'mh-funcs)