summaryrefslogtreecommitdiff
path: root/lisp/mail/mspools.el
diff options
context:
space:
mode:
authorStephen Eglen <stephen@gnu.org>1998-04-14 19:23:37 +0000
committerStephen Eglen <stephen@gnu.org>1998-04-14 19:23:37 +0000
commit8b776ea85c6ede2d85189b455ea38eecf270ba23 (patch)
tree8d4c45151b109a4a3b64bd3ea0827edb64b3d075 /lisp/mail/mspools.el
parent968b1234010faa22ff00eac8f9421b3bcb5389ec (diff)
downloademacs-8b776ea85c6ede2d85189b455ea38eecf270ba23.tar.gz
(mspools-folder-directory): Takes default value of ~/MAIL/ if
vm-folder-directory not bound. (mspools-vm-system-mail): Customize the variable so that if the environment variable $MAIL is not set, the user can easily set it. (mspools-vm-system-mail-crash): Variable deleted; we now use vm-crash-box. (mspools-set-vm-spool-files): Error if mspools-folder-directory hasn't been set. (mspools-set-vm-spool-files): Use mspools-folder-directory rather than vm-folder-directory. (mspools-get-spool-files): Error if mspools-folder-directory is nil. (mspools-get-spool-files): Add $ to regexp to ensure mspools-suffix matches the end of the filename. (mspools-mode-map): Bind n and p to next-line and previous-line.
Diffstat (limited to 'lisp/mail/mspools.el')
-rw-r--r--lisp/mail/mspools.el94
1 files changed, 40 insertions, 54 deletions
diff --git a/lisp/mail/mspools.el b/lisp/mail/mspools.el
index 1185eeb2345..538f8aa0fe7 100644
--- a/lisp/mail/mspools.el
+++ b/lisp/mail/mspools.el
@@ -6,6 +6,7 @@
;; Maintainer: Stephen Eglen <stephen@cns.ed.ac.uk>
;; Created: 22 Jan 1997
;; Keywords: mail
+;; location: http://www.cns.ed.ac.uk/people/stephen/emacs/
;; This file is part of GNU Emacs.
@@ -56,7 +57,6 @@
;; This file should work with both VM and RMAIL. See the variable
;; `mspools-using-vm' for details.
-
;;; Basic installation.
;; (autoload 'mspools-show "mspools" "Show outstanding mail spools." t)
;; (setq mspools-folder-directory "~/MAIL/")
@@ -65,9 +65,9 @@
;; unless you have already given it a value.
;; Extras.
-;;
+;;
;; (global-set-key '[S-f1] 'mspools-show) ;Bind mspools-show to Shift F1.
-;; (setq mspools-update t) ;Automatically update buffer.
+;; (setq mspools-update t) ;Automatically update buffer.
;; Interface with the mail filter.
;; We assume that the mail filter drops new mail into the spool
@@ -128,31 +128,29 @@
:type 'string
:group 'mspools)
-
(defcustom mspools-using-vm (fboundp 'vm)
"*Non-nil if VM is used as mail reader, otherwise RMAIL is used."
:type 'boolean
:group 'mspools)
-
(defcustom mspools-folder-directory
(if (boundp 'vm-folder-directory)
vm-folder-directory
- nil)
+ "~/MAIL/")
"*Directory where mail folders are kept. Ensure it has a trailing /.
-Defaults to `vm-folder-directory' if bound else nil."
+Defaults to `vm-folder-directory' if bound else to ~/MAIL/."
:type 'directory
:group 'mspools)
-;;; Internal Variables
-
-(defvar mspools-vm-system-mail (getenv "MAIL")
- "Main mailbox used. Only used by VM.")
+(defcustom mspools-vm-system-mail (getenv "MAIL")
+ "*Spool file for main mailbox. Only used by VM.
+This needs to be set to your primary mail spool - mspools will not run
+without it. By default this will be set to the environment variable
+$MAIL. Otherwise set it to something like /usr/spool/mail/login-name."
+ :type 'file
+ :group 'mspools)
-(defvar mspools-vm-system-mail-crash
- (concat mspools-vm-system-mail ".crash")
- "Crash box for main mailbox. See also `mspools-vm-system-mail'.
-Only used by VM." )
+;;; Internal Variables
(defvar mspools-files nil
"List of entries (SPOOL . SIZE) giving spool name and file size.")
@@ -173,7 +171,7 @@ Only used by VM." )
;; set up vm if not already loaded.
(progn
(require 'vm-vars)
- (if (not vm-init-file-loaded)
+ (if (and (not vm-init-file-loaded) (file-readable-p vm-init-file))
(load-file vm-init-file))
(if (not mspools-folder-directory)
(setq mspools-folder-directory vm-folder-directory))
@@ -182,15 +180,17 @@ Only used by VM." )
(defun mspools-set-vm-spool-files ()
"Set value of `vm-spool-files'. Only needed for VM."
(if (null mspools-vm-system-mail)
- (error "need to reset mspools-vm-system-mail to the spool for primary inbox"))
- (setq
- vm-spool-files
+ (error "Need to set mspools-vm-system-mail to the spool for primary inbox"))
+ (if (null mspools-folder-directory)
+ (error "Set `mspools-folder-directory' to where the spool files are"))
+ (setq
+ vm-spool-files
(append
(list
;; Main mailbox
(list vm-primary-inbox
- mspools-vm-system-mail; your mailbox
- mspools-vm-system-mail-crash ; crash for mailbox
+ mspools-vm-system-mail ; your mailbox
+ vm-crash-box ;crash for mailbox
))
;; Mailing list inboxes
@@ -198,28 +198,26 @@ Only used by VM." )
(mapcar '(lambda (s)
"make the appropriate entry for vm-spool-files"
(list
- (concat vm-folder-directory s)
- (concat vm-folder-directory s "." mspools-suffix)
- (concat vm-folder-directory s ".crash")))
+ (concat mspools-folder-directory s)
+ (concat mspools-folder-directory s "." mspools-suffix)
+ (concat mspools-folder-directory s ".crash")))
;; So I create a vm-spool-files entry for each of those mail drops
(mapcar 'file-name-sans-extension
- (directory-files vm-folder-directory nil
+ (directory-files mspools-folder-directory nil
(format "^[^.]+\\.%s" mspools-suffix)))
))
))
-
-
;;; MSPOOLS-SHOW -- the main function
-(defun mspools-show ( &optional noshow)
+(defun mspools-show ( &optional noshow)
"Show the list of non-empty spool files in the *spools* buffer.
Buffer is not displayed if SHOW is non-nil."
(interactive)
(if (get-buffer mspools-buffer)
;; buffer exists
(progn
- (set-buffer mspools-buffer)
- (setq buffer-read-only nil)
+ (set-buffer mspools-buffer)
+ (setq buffer-read-only nil)
(delete-region (point-min) (point-max)))
;; else buffer doesn't exist so create it
(get-buffer-create mspools-buffer))
@@ -235,9 +233,6 @@ Buffer is not displayed if SHOW is non-nil."
(mspools-mode)
)
-
-
-
(defun mspools-visit-spool ()
"Visit the folder on the current line of the *spools* buffer."
(interactive)
@@ -259,7 +254,7 @@ Buffer is not displayed if SHOW is non-nil."
))
(message "folder %s spool %s" folder-name spool-name)
- (if (eq (count-lines (point-min)
+ (if (eq (count-lines (point-min)
(save-excursion
(end-of-line)
(point)))
@@ -269,24 +264,20 @@ Buffer is not displayed if SHOW is non-nil."
(next-line 1))
;; Choose whether to use VM or RMAIL for reading folder.
- (if mspools-using-vm
+ (if mspools-using-vm
(vm-visit-folder (concat mspools-folder-directory folder-name))
- ;; else using RMAIL
+ ;; else using RMAIL
(rmail (concat mspools-folder-directory folder-name))
- (setq rmail-inbox-list
+ (setq rmail-inbox-list
(list (concat mspools-folder-directory spool-name)))
(rmail-get-new-mail))
(if mspools-update
;; generate new list of spools.
- (save-excursion
+ (save-excursion
(mspools-show-again 'noshow))))))
-
-
-
-
(defun mspools-get-folder-from-spool (name)
"Return folder name corresponding to the spool file NAME."
;; Simply strip of the extension.
@@ -304,8 +295,6 @@ Buffer is not displayed if SHOW is non-nil."
;(mspools-get-folder-from-spool "happy.spool")
;(mspools-get-folder-from-spool "happy.sp")
-
-
(defun mspools-get-spool-name ()
"Return the name of the spool on the current line."
(let ((line-num (1- (count-lines (point-min)
@@ -326,10 +315,11 @@ Buffer is not displayed if SHOW is non-nil."
(define-key mspools-mode-map " " 'mspools-visit-spool)
(define-key mspools-mode-map "?" 'mspools-help)
(define-key mspools-mode-map "q" 'mspools-quit)
+ (define-key mspools-mode-map "n" 'next-line)
+ (define-key mspools-mode-map "p" 'previous-line)
(define-key mspools-mode-map "g" 'revert-buffer))
-
-;;; Spools mode functions
+;;; Spools mode functions
(defun mspools-revert-buffer (ignore noconfirm)
"Re-run mspools-show to revert the *spools* buffer."
@@ -350,7 +340,6 @@ nil."
"Quit the *spools* buffer."
(interactive)
(kill-buffer mspools-buffer))
-
(defun mspools-mode ()
"Major mode for output from mspools-show.
@@ -366,14 +355,13 @@ nil."
(setq mode-name "MSpools")
)
-
(defun mspools-get-spool-files ()
"Find the list of spool files and display them in *spools* buffer."
(let (folders head spool len beg end any)
- (setq folders (directory-files mspools-folder-directory nil
- (format "^[^.]+\\.%s" mspools-suffix)))
-
-
+ (if (null mspools-folder-directory)
+ (error "Set `mspools-folder-directory' to where the spool files are"))
+ (setq folders (directory-files mspools-folder-directory nil
+ (format "^[^.]+\\.%s$" mspools-suffix)))
(setq folders (mapcar 'mspools-size-folder folders))
(setq folders (delq nil folders))
(setq mspools-files folders)
@@ -396,8 +384,6 @@ nil."
(goto-char (point-min))
))
-
-
(defun mspools-size-folder (spool)
"Return (SPOOL . SIZE ) iff SIZE of spool file is non-zero."
;; 7th file attribute is the size of the file in bytes.