[Mew-dist 07524] fixed form insertion
OBATA Noboru
obata at example.com
1999年 2月 18日 (木) 19:22:49 JST
小幡です。
メールを書く際 (新規あるいは返信時) に、定型文書を挿入する elisp
を書きましたので contrib します。
以前に「定型メールの作り方」という質問がありました ([Mew-dist
05071])。そのときは、mew-cite-format の先頭に入れる、署名の頭に
入れればよい、c-sig を使えば宛先によって署名ファイルを切り替えら
れる、といった回答が寄せられました。
やりたいことは基本的にこれと同じで、To: やその他の条件から推測し
て適切な定型文書を挿入するというものです。elisp を勉強中で、何か
書いてみたいと思いながら mew のコードを眺めていたところ
mew-refile-guess-by-alist1 という関数を見て、これを使えばできそ
うだと感じたのが書いた動機です。
使い方は、添付の mew-ff.el を load-path の通ったディレクトリに置
いて、.emacs に例えば次のように書きます。
(require 'mew-ff)
(setq mew-ff-guess-alist
'(("To:"
("mew-dist at example.com" . "~/.ff-mew-dist")
)))
(add-hook 'mew-before-cite-hook 'mew-ff)
ここで "~/.ff-mew-dist" は定型文を入れたファイル名です。
また日付文字列を挿入することもできます。僕の場合、上の設定に加え
(defun my-date-string ()
(interactive)
(let* ((dt (decode-time))
(yy (nth 5 dt))
(mm (nth 4 dt))
(dd (nth 3 dt))
(day (nth (nth 6 dt)
'("日" "月" "火" "水" "木" "金" "土"))))
(format "%d年 %d月 %d日(%s)" yy mm dd day)))
(setq mew-ff-insert-date t)
(setq mew-ff-date-func 'my-date-string)
と書いています。こうすることで
---- ここから
1999年 2月 18日(木)
○○株式会社
○○部 ○○課
○○ ○○ 様
日本コントロールシステム(株)
小幡 昇
いつもお世話になっております。
---- ここまで
のような日付入りの定型文を挿入できます。(結局はこれがやりたい)
使用感をお寄せ頂けると幸いです。(elisp は初めてなので、elisp の
書き方へのコメントも歓迎です)
P.S.
本当は mew-ff-insert-date の情報も guess させたいのですが、スマー
トな方法が思い当たりません。
--
小幡 昇 (obata at example.com)
-------------- next part --------------
;;; mew-ff.el --- Fixed form insertion for Mew
;; Author: OBATA Noboru <obata at example.com>
;; Created: Feb 18, 1999
(defvar mew-ff-guess-alist nil
"*定型文書ファイル名を推測するための連想リスト。
書式は \"mew-refile-guess-alist\" と同じ。")
(defvar mew-ff-insert-date nil
"*定型文書の前に日付文字列を挿入するかどうか。")
(defvar mew-ff-date-func 'current-time-string
"*日付文字列を生成する関数。")
(defun mew-ff ()
"メッセージの先頭に定型文書を挿入する。"
(interactive)
(let ((file (car (mew-refile-guess-by-alist1 mew-ff-guess-alist))))
(if file
(let ((efile (expand-file-name file)))
(if (not (file-exists-p efile))
(message "No fixed from file %s" efile)
(progn
(goto-char (mew-header-end))
(forward-line)
(if mew-ff-insert-date
(mew-insert (format "%%%ds\n" fill-column)
(funcall mew-ff-date-func))))
(let ((current (point))
(size (car (cdr (insert-file-contents efile)))))
(goto-char (+ current size))))
))))
(provide 'mew-ff)
;;; mew-ff.el ends here
Mew-dist メーリングリストの案内