[Mew-dist 1230] Use Petname with Cite Label

Ryuichi MATSUMOTO ryuichi at example.com
1997年 7月 11日 (金) 20:59:08 JST


まつもと@NEC情報システムズです。

私の周りで、IMのPetnameFileの機能をMew上で引用するときに使えない
のはもったいないという意見が多かったので、引用ラベルのFromを置き
換えるべくパッチを作ってみました。

#他にもこんなこと考えた人はいませんか?

ところで拙作パッチの機能チェック中に、C-cC-t(Cite without Label)
が機能しない(Wrong type argument: markerp, nil)ことに気付いたん
ですが、他の方のところでは出ていませんか?

とりあえず拙作のパッチを添付しますので、よろしかったら使ってみて、
バグとかあったらお教え下さい(_o_)。

以下に使い方など…。

	(1) Petnameファイルを作る(Exp. ~/.im/Petname)。

		Kazu at example.com			"山本和彦"
		ryuichi at example.com	"わたし"

	(2) ~/.im/ConfigにPetnameFileのエントリを作る。

		PetnameFile=~/.im/Petname

	(3) ~/.emacsに、

		(setq mew-cite-with-petname t)

	    を加える。デフォルトではnilになっています。

これで、Petnameファイルで指定された名前がlabelに使われるようにな
ります。例えば、上記の例の場合、山本さんからのメールへのReplyに
は、

	"Tue, 01 Jul 1997 13:49:55 +0900" に
	    山本和彦 さんから届いた
	    『[Mew-dist 1136] Mew 1.85 & IM 40 beta release』 によると…

こんな感じになり、私が発信したメールに対しては、

	"Thu, 10 Jul 1997 18:19:07 +0900" に
	    わたし さんから届いた
	    『[Mew-dist 1223] Re: mew-summary-reply-with-citation』 によると…

こんな感じになります。

#如何ですか?

-- 
まつもとりゅういち@NEC情報システムズ
mailto:ryuichi at example.com
-------------- next part --------------
--- mew-1.85.orig/mew.el	Thu Jul 10 16:21:12 1997
+++ mew-1.85/mew.el	Fri Jul 11 12:00:48 1997
@@ -231,6 +231,9 @@
 (defvar mew-cite-format "From: %s\nSubject: %s\nDate: %s\n\n"
   "*Format for the citation label.")
 
+(defvar mew-cite-with-petname nil
+  "Use petname in citation label.")
+
 ;;;
 ;;; Summary and Draft glue
 ;;;
@@ -460,6 +463,7 @@
 (defvar mew-inbox-folder nil)
 (defvar mew-draft-folder nil)
 (defvar mew-trash-folder nil)
+(defvar mew-petname-file nil)
 (defvar mew-draft-mime-folder nil
   "A directory where attachments are contained.")
 (defvar mew-config-alist
@@ -467,8 +471,10 @@
     ("NewsPath" . mew-news-path)
     ("InboxFolder" . mew-inbox-folder)
     ("DraftFolder" . mew-draft-folder)
-    ("TrashFolder" . mew-trash-folder))
+    ("TrashFolder" . mew-trash-folder)
+    ("PetnameFile" . mew-petname-file))
   )
+
 
 (setplist 'mew-current-state 
 	  (list
--- mew-1.85.orig/mew-draft.el	Tue Jul  1 09:53:55 1997
+++ mew-1.85/mew-draft.el	Fri Jul 11 11:59:59 1997
@@ -633,9 +633,42 @@
     (insert-string cite)
     ))
 
+(defun mew-cite-strings-with-petname (lst mew-cite-fields)
+  (let ((i 0)
+	(l mew-cite-fields)
+	(temp-buffer (get-buffer-create "*Mew cite with Petname*"))
+	(work))
+    (catch 'loop
+      (while (car l)
+	(if (string-equal "From:" (car l))
+	    (throw 'loop i)
+	  )
+	(setq i (1+ i))
+	(setq l (cdr l))
+	)
+      )
+    (setq work (mew-header-extract-addr (nth i lst)))
+    (save-excursion
+      (set-buffer temp-buffer)
+      (erase-buffer)
+      (insert-file-contents mew-petname-file)
+      (goto-char (point-min))
+      (if (not (eq (search-forward work (point-max) t) nil))
+	  (setq work (read (get-buffer "*Mew cite with Petname*")))
+	(setq work (nth i lst))
+	)
+      (setcar (nthcdr i lst) work)
+      (kill-buffer temp-buffer) 
+      )
+    )
+  lst)
+
 (defun mew-cite-strings ()
   (let ((fields (mapcar (function mew-header-get-value) mew-cite-fields)))
     (setq fields (mapcar (function (lambda (x) (if (null x) "" x))) fields))
+    (if (eq mew-cite-with-petname t)
+	(setq fields (mew-cite-strings-with-petname fields mew-cite-fields))
+      )
     (apply (function format) mew-cite-format fields)
     ))
 
-------------- next part --------------
--- im-40.orig/impath.in	Tue Jul  1 10:09:18 1997
+++ im-40/impath.in	Fri Jul 11 12:08:51 1997
@@ -104,6 +104,7 @@
     print "InboxFolder=" . inbox_folder() . "\n";
     print "DraftFolder=" . draft_folder() . "\n";
     print "TrashFolder=" . trash_folder() . "\n";
+    print "PetnameFile=" . petname_file() . "\n";
 }
 
 ##
--- im-40.orig/IM.in/Config.pm.in	Tue Jul  1 00:16:02 1997
+++ im-40/IM.in/Config.pm.in	Fri Jul 11 12:15:44 1997
@@ -35,6 +35,7 @@
 	home_dir conf_dir
 	mail_dir mail_path news_dir news_path
 	inbox_folder draft_folder trash_folder
+	petname_file
 	preserve_dot
         aliases_file context_file
         address addresses_regex
@@ -134,6 +135,7 @@
     'inboxfolder;f;+inbox;InboxFolder'  => 'Inbox folder',
     'draftfolder;f;+draft;DraftFolder'  => 'Draft folder',
     'trashfolder;f;+trash;TrashFolder'  => 'Trash folder',
+    'petnamefile;s;Petname;PetnameFile'  => 'Petname file',
     'preservedot;b;off;PreserveDot'     => 'Not substitute "." with "/"',
     'contextfile;s;Context;ContextFile' => 'Context file',
     'address;s;;Address'                => 'Email addresses',
@@ -612,6 +614,10 @@
 
 sub trash_folder {
     return $TrashFolder;
+}
+
+sub petname_file {
+    return $PetnameFile;
 }
 
 sub preserve_dot {


Mew-dist メーリングリストの案内