diff options
author | Richard M. Stallman <rms@gnu.org> | 1994-05-28 13:06:55 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1994-05-28 13:06:55 +0000 |
commit | fed7bae67e74e4f3d89acb2c93ce4f8f133f9e99 (patch) | |
tree | 3192f5bfd378c87455fc3fca2371b3784336b396 /lisp/mail/mailalias.el | |
parent | a280f9a90de291b8fd7be718552eabf269046b8f (diff) | |
download | emacs-fed7bae67e74e4f3d89acb2c93ce4f8f133f9e99.tar.gz |
(build-mail-aliases): Handle source directives.
Handle MAILRC envvar.
Diffstat (limited to 'lisp/mail/mailalias.el')
-rw-r--r-- | lisp/mail/mailalias.el | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el index a807d331992..09335afdb39 100644 --- a/lisp/mail/mailalias.el +++ b/lisp/mail/mailalias.el @@ -105,7 +105,7 @@ removed from alias expansions." ;; Called by mail-setup, or similar functions, only if ~/.mailrc exists. (defun build-mail-aliases (&optional file) "Read mail aliases from `~/.mailrc' and set `mail-aliases'." - (setq file (expand-file-name (or file "~/.mailrc"))) + (setq file (expand-file-name (or file (or (getenv "MAILRC") "~/.mailrc")))) (let ((buffer nil) (obuf (current-buffer))) (unwind-protect @@ -113,22 +113,35 @@ removed from alias expansions." (setq buffer (generate-new-buffer "mailrc")) (buffer-disable-undo buffer) (set-buffer buffer) - (cond ((get-file-buffer file) - (insert (save-excursion - (set-buffer (get-file-buffer file)) - (buffer-substring (point-min) (point-max))))) - ((not (file-exists-p file))) - (t (insert-file-contents file))) - ;; Don't lose if no final newline. - (goto-char (point-max)) - (or (eq (preceding-char) ?\n) (newline)) - (goto-char (point-min)) - ;; handle "\\\n" continuation lines - (while (not (eobp)) - (end-of-line) - (if (= (preceding-char) ?\\) - (progn (delete-char -1) (delete-char 1) (insert ?\ )) + (while file + (cond ((get-file-buffer file) + (insert (save-excursion + (set-buffer (get-file-buffer file)) + (buffer-substring (point-min) (point-max))))) + ((file-exists-p file) (insert-file-contents file)) + ((file-exists-p (setq file (concat "~/" file))) + (insert-file-contents file)) + (t (setq file nil))) + ;; Don't lose if no final newline. + (goto-char (point-max)) + (or (eq (preceding-char) ?\n) (newline)) + (goto-char (point-min)) + ;; handle "\\\n" continuation lines + (while (not (eobp)) + (end-of-line) + (if (= (preceding-char) ?\\) + (progn (delete-char -1) (delete-char 1) (insert ?\ )) (forward-char 1))) + (goto-char (point-min)) + ;; handle `source' directives -- Eddy/1994/May/25 + (cond ((re-search-forward "^source[ \t]+" nil t) + (re-search-forward "\\S-+") + (setq file + (buffer-substring (match-beginning 0) (match-end 0))) + (beginning-of-line) + (insert "# ") ; to ensure we don't re-process this file + (beginning-of-line)) + (t (setq file nil)))) (goto-char (point-min)) (while (or (re-search-forward "^a\\(lias\\|\\)[ \t]+" nil t) (re-search-forward "^g\\(roup\\|\\)[ \t]+" nil t)) |