rusty@GARNET.BERKELEY.EDU (04/06/89)
What I do to keep my rmail file to a reasonable size is start a new one each month. It's a bit complicated but it works. =====> ~/.emacs <===== (setq mail-mode-hook 'rcw-mail-mode-hook) (setq rmail-mode-hook 'rcw-rmail-mode-hook) (autoload 'rcw-mail-mode-hook "mail-mode-hook" nil t nil) (autoload 'rcw-rmail-mode-hook "rmail-mode-hook" nil nil nil) (autoload 'set-up-mail-archive-file-name "mail-stuff" nil nil nil) (autoload 'set-up-rmail-file-name "mail-stuff" nil nil nil) (set-up-rmail-file-name) =====> rmail-mode-hook.el <===== (defun rcw-rmail-mode-hook () "Do this stuff when running rmail-mode." (progn (setq mail-use-rfc822 t))) =====> mail-mode-hook.el <===== (defun rcw-mail-mode-hook () "Do this stuff when running mail-mode." (progn (setq mail-yank-ignored-headers "^via:\\|^mail-from:\\|^origin:\\|^status:\\|^remailed\\|^received:\\|^[a-z-]*message-id:\\|^summary-line:\\|^in-reply-to:\\|^return-path:") (set-up-mail-archive-file-name))) =====> mail-stuff.el <===== ;; If you'd like copies of outgoing mail kept in mail-directory then ;; call this function. Can be called by your mail-mode-hook or you can put ;; in your .emacs file. (defun set-up-mail-archive-file-name () "Set up the mail-archive-file-name variable." (let ((month (downcase (substring (current-time-string) 4 7))) (year (substring (current-time-string) 22 24))) (if (set-up-mail-directory) (progn (setq mail-archive-file-name (expand-file-name (format "%s/%s%s_out" mail-directory month year))))))) ;; If you'd like your RMAIL file kept in mail-directory instead of your ;; login directory then call this function. Must be called in your .emacs ;; file; doesn't work if called by your rmail-mode-hook. (defun set-up-rmail-file-name () "Set up the RMAIL file name." (let ((month (downcase (substring (current-time-string) 4 7))) (year (substring (current-time-string) 22 24))) (if (set-up-mail-directory) (progn (setq rmail-file-name (expand-file-name (format "%s/rmail_%s%s" mail-directory month year))))))) ;; Set up the mail directory: in the user's login directory is a directory ;; named "mail", in that directory are directories with names of the form ;; mmmyy where "mmm" is the month (as a string) and yy is the year. If the ;; mmmyy directory doesn't exist it is created, but first any non-directory ;; file with that name is moved out of the way. Used by set-up-rmail-file-name ;; and set-up-mail-archive-file-name. (defun set-up-mail-directory () "Set up the name of directory where mail is kept (make it if it doesn't exist)." (progn (setq mail-home (expand-file-name (format "~%s/mail" (user-real-login-name)))) (if (not (boundp 'mail-directory)) (if (file-directory-p mail-home) (let ((month (downcase (substring (current-time-string) 4 7))) (year (substring (current-time-string) 22 24))) (setq mail-directory (expand-file-name (format "%s/%s%s" mail-home month year))) (if (not (file-directory-p mail-directory)) (progn (if (file-exists-p mail-directory) (rename-file mail-directory (format "%s.bak" mail-directory))) ;; should use call-process instead of shell-command (shell-command (format "mkdir %s" mail-directory))) t))) t)))