;;; ;;; $Id: signature.el,v 1.6 1994/08/03 04:42:40 morioka Exp $ ;;; Modified by Yasuo OKABE 1994/08/01 ;;; (provide 'signature) (require 'tl-header) (defvar signature-insert-at-eof nil "*Insert signature at the end of file if non-nil.") (defvar signature-file-name "~/.signature" "*Name of file containing the user's signature.") (defvar signature-file-alist nil) ;;; ;;; Example: ;;; ;;; (setq signature-file-alist ;;; '((("Newsgroups" . "zxr") . "~/.signature-sun") ;;; (("To" . "uramimi") . "~/.signature-sun") ;;; (("Newsgroups" . "jokes") . "~/.signature-jokes") ;;; (("To" . "tea") . "~/.signature-jokes") ;;; (("To" . ("sim" "oku")) . "~/.signature-formal") ;;; )) (defun signature/get-signature-file-name () (catch 'tag (let ((r signature-file-alist) cell b f) (while r (setq cell (car r)) (setq b (car cell)) (if (setq f (message/get-field-body (car b))) (cond ((listp (cdr b)) (let ((r (cdr b))) (while r (if (string-match (car r) f) (throw 'tag (cdr cell)) ) (setq r (cdr r)) )) ) ((stringp (cdr b)) (if (string-match (cdr b) f) (throw 'tag (cdr cell)) )) )) (setq r (cdr r)) )) signature-file-name)) (defun signature/insert-signature-at-point (&optional arg) "Insert the file named by signature-file-name at the current point." (interactive "P") (let ((signature (expand-file-name (if arg (read-file-name "Insert your signature: " (concat signature-file-name "-") signature-file-name nil) (signature/get-signature-file-name))))) (insert-file-contents signature) (set-buffer-modified-p (buffer-modified-p)))) ; force mode line update (defun signature/insert-signature-at-eof (&optional arg) "Insert the file named by signature-file-name at the end of file." (interactive "P") (let ((signature (expand-file-name (if arg (read-file-name "Insert your signature: " (concat signature-file-name "-") signature-file-name nil) (signature/get-signature-file-name))))) (save-excursion (if (file-readable-p signature) (progn (goto-char (point-max)) (if (not (bolp)) (insert "\n")) (delete-blank-lines) (insert-file-contents signature) (set-buffer-modified-p (buffer-modified-p)) ; force mode line update ))))) (defun insert-signature (&optional arg) "Insert the file named by signature-file-name. It is inserted at the end of file if signature-insert-at-eof in non-nil, and otherwise at the current point. A prefix argument enables user to specify a file named -DISTRIBUTION interactively." (interactive "P") (if signature-insert-at-eof (call-interactively 'signature/insert-signature-at-eof) (call-interactively 'signature/insert-signature-at-point)))