[Mew-dist 05337] Re: how to fix the (strange?) behavior of contrib/mew-gnus

SAKAI Kiyotaka ksakai at example.com
1998年 7月 3日 (金) 16:14:40 JST


>> In article <19980702233041I.matusita at example.com>, Makoto MATSUSHITA (まつしたまこと) <matusita at example.com> writes:

> 最近気がついたのですが,少なくともこの version (多分もう少し前からだっ
> たかもしれませんが正確に覚えていません)あたりから,contrib/mew-gnus.el 
> を使うと

> ・reply を書こうと r (mew-gnus-reply) を実行して,それから cite しよう
>   とする時,draft ができてからその draft に一切何も書かない状態でなら
>   正しく cite できるが,わずかでも(例え空行でも) draft をいじってしま
>   うと,cite する内容が正しくなくなる.

こっちは再現しないのですが、

> ・cite つきで reply しようとすると,cursor の場所が問題なのでしょうが,
>   (message "You cannot cite a message here.") とかいわれる.

こちらは mew-draft-header が To: の後に飛ぶようになった影響ですね。

  (if yank (mew-draft-cite)))

の前に

  (goto-char (point-max))

を入れておけば解決します。

ついでに

・folder に save するときに、folder が存在しない場合は新規に folder を
  作成するかどうか聞いてくるようにする。
・reply するときに、reply するアドレスに付いているコメントを削除する。

の変更もおこないましたので、パッチを付けておきます。
-- 
酒井 清隆 (E-mail: ksakai at example.com)


--- mew-gnus.el	Fri Jul  3 11:10:18 1998
+++ /home/ksakai/lib/mule/mew-gnus.el	Fri Jul  3 16:07:04 1998
@@ -27,8 +27,8 @@
 (eval-when-compile 
   (require 'gnus)
   (if (not (or (string-match "^GNUS [34]" gnus-version)
-               (string-match "^Gnus v5.0" gnus-version)
-               (string-match "^5.[0-3]" gnus-version-number)))
+	       (string-match "^Gnus v5.0" gnus-version)
+	       (string-match "^5.[0-3]" gnus-version-number)))
       (require 'gnus-sum)))
 
 (require 'mew)
@@ -38,9 +38,11 @@
 ;(defvar mew-prog-imstore "/usr/local/lib/mh/rcvstore")
 ;(defvar mew-prog-imstore-arg "%s")
 
-(defvar mew-gnus-save-fixed-folder nil)
+(defvar mew-gnus-save-fixed-folder nil
+  "*If specified, always use it as a candidate to save article.")
 
-(defvar mew-gnus-save-preserve-dot t)
+(defvar mew-gnus-save-preserve-dot t
+  "*If nil, use hierarchical directory to save article.")
 
 (defun mew-gnus-newsgroup-name ()
   (if mew-gnus-save-preserve-dot
@@ -70,17 +72,18 @@
 	    (message (format 
 		      "First letter of '%s' must be '+'."
 		      folder))
-	  (unwind-protect
-	      (mew-piolet
-	       mew-cs-infile mew-cs-outfile
-	       (call-process-region (point-min) (point-max)
-				    mew-prog-imstore nil errbuf nil
-				    (format mew-prog-imstore-arg folder)))
-	    (set-buffer errbuf)
-	    (if (zerop (buffer-size))
-		(message "Article saved in folder: %s" folder)
-	      (message "%s" (buffer-string)))
-	    (kill-buffer errbuf)))))))
+	  (if (mew-folder-check folder)
+	      (unwind-protect
+		  (mew-piolet
+		   mew-cs-infile mew-cs-outfile
+		   (call-process-region (point-min) (point-max)
+					mew-prog-imstore nil errbuf nil
+					(format mew-prog-imstore-arg folder)))
+		(set-buffer errbuf)
+		(if (zerop (buffer-size))
+		    (message "Article saved in folder: %s" folder)
+		  (message "%s" (buffer-string)))
+		(kill-buffer errbuf))))))))
 
 (defun mew-gnus-post-news ()
   "Post a news using mew."
@@ -119,7 +122,7 @@
     (goto-char (point-max))
     (let ((split-window-keep-point t))
       (split-window-vertically))
-    (setq from (gnus-fetch-field "From")
+    (setq from (mew-header-extract-addr (gnus-fetch-field "From"))
 	  subject (let ((subject (gnus-fetch-field "Subject")))
 		    (if (and subject
 			     (not (string-match "^[Rr][Ee]:.+$" subject)))
@@ -145,7 +148,10 @@
 	  (insert (concat "Distribution: " distribution "\n"))))
     (make-variable-buffer-local 'mew-message-citation-buffer) 
     (setq mew-message-citation-buffer gnus-article-buffer))
-  (if yank (mew-draft-cite)))
+  (if yank
+      (progn
+	(goto-char (point-max))
+	(mew-draft-cite))))
 
 (defun mew-gnus-reply-with-citation ()
   "Reply or followup to GNUS article using mew.



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