Annotation of 43BSD/contrib/emacs/lisp/mailalias.el, revision 1.1.1.1

1.1       root        1: ;; Expand mailing address aliases defined in ~/.mailrc.
                      2: ;; Copyright (C) 1985 Richard M. Stallman.
                      3: 
                      4: ;; This file is part of GNU Emacs.
                      5: 
                      6: ;; GNU Emacs is distributed in the hope that it will be useful,
                      7: ;; but WITHOUT ANY WARRANTY.  No author or distributor
                      8: ;; accepts responsibility to anyone for the consequences of using it
                      9: ;; or for whether it serves any particular purpose or works at all,
                     10: ;; unless he says so in writing.  Refer to the GNU Emacs General Public
                     11: ;; License for full details.
                     12: 
                     13: ;; Everyone is granted permission to copy, modify and redistribute
                     14: ;; GNU Emacs, but only under the conditions described in the
                     15: ;; GNU Emacs General Public License.   A copy of this license is
                     16: ;; supposed to have been given to you along with GNU Emacs so you
                     17: ;; can know your rights and responsibilities.  It should be in a
                     18: ;; file named COPYING.  Among other things, the copyright notice
                     19: ;; and this notice must be preserved on all copies.
                     20: 
                     21: 
                     22: ;; Called from sendmail-send-it, or similar functions,
                     23: ;; only if some mail aliases are defined.
                     24: (defun expand-mail-aliases (beg end)
                     25:   "Expand all mail aliases in suitable header fields found between BEG and END.
                     26: Suitable header fields are To, Cc and Bcc."
                     27:   (goto-char beg)
                     28:   (setq end (set-marker (make-marker) end))
                     29:   (let ((case-fold-search t))
                     30:     (while (progn (setq case-fold-search t)
                     31:                  (re-search-forward "^\\(to\\|cc\\|bcc\\):" end t))
                     32:       (setq case-fold-search nil)
                     33:       (skip-chars-forward " \t")
                     34:       (let ((beg1 (point))
                     35:            end1 pos epos seplen translation)
                     36:        (re-search-forward "^[^ \t]" end 'move)
                     37:        (beginning-of-line)
                     38:        (skip-chars-backward " \t\n")
                     39:        (setq end1 (point-marker))
                     40:        (goto-char beg1)
                     41:        (while (< (point) end1)
                     42:          (setq pos (point))
                     43:          (if (re-search-forward "[ \t]*[\n,][ \t]*" end1 t)
                     44:              (setq epos (match-beginning 0)
                     45:                    seplen (- (point) epos))
                     46:            (setq epos end1 seplen 0))
                     47:          (setq translation
                     48:                (cdr (assoc (buffer-substring pos epos) mail-aliases)))
                     49:          (if translation
                     50:              (progn
                     51:                (delete-region pos epos)
                     52:                (goto-char pos)
                     53:                (insert translation))
                     54:            (goto-char epos)
                     55:            (forward-char seplen)))
                     56:        (set-marker end1 nil)))
                     57:     (set-marker end nil)))
                     58: 
                     59: ;; Called by mail-setup, or similar functions, only if ~/.mailrc exists.
                     60: (defun build-mail-aliases ()
                     61:   "Read mail aliases from ~/.mailrc and set mail-aliases."
                     62:   (let (buffer exists name (file "~/.mailrc"))
                     63:     (setq exists (get-file-buffer file))
                     64:     (setq buffer (find-file-noselect file))
                     65:     (unwind-protect
                     66:        (save-excursion
                     67:          (set-buffer buffer)
                     68:          (goto-char (point-min))
                     69:          (while (re-search-forward "^alias[ \t]*\\|^a[ \t]*" nil t)
                     70:            (re-search-forward "[^ \t]+")
                     71:            (setq name (buffer-substring (match-beginning 0) (match-end 0)))
                     72:            (skip-chars-forward " \t")
                     73:            (define-mail-alias
                     74:             name
                     75:             (buffer-substring (point) (progn (end-of-line) (point))))))
                     76:       (or exists (kill-buffer buffer)))))
                     77: 
                     78: ;; Always autoloadable in case the user wants to define aliases
                     79: ;; interactively or in .emacs.
                     80: (defun define-mail-alias (name definition)
                     81:   "Define NAME as a mail-alias that translates to DEFINITION."
                     82:   (interactive "sDefine mail alias: \nsDefine %s as mail alias for: ")
                     83:   (let ((aelt (assoc name mail-aliases)))
                     84:     (if aelt
                     85:        (rplacd aelt definition)
                     86:       (setq mail-aliases (cons (cons name definition) mail-aliases)))))

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.