[Mew-dist 03605] Re: Mew 1.93b6: mew-config breaks out mew-config-list setting ?

Maybe TABOO y-koga at example.com
1998年 1月 30日 (金) 21:00:02 JST


Makoto MATSUSHITA (まつしたまこと) <matusita at example.com>:
> という仕様を実現した実装ではない,という理解は間違ってないでしょうか?

かなり省略されていたので、酒井さんの提案された仕様を再掲します。

> 1. Config を挿入する関数を作成する。
> 
>   このコマンドは、mew-config の値が
> 
>      'guess ならば、すでに存在している From から推測して Config: ヘッダ
>                     を挿入する動作を行う。
>      string ならば、その文字列を無条件に Config: ヘッダに挿入する。
>      それ以外ならば、Config ヘッダの挿入は行わない。
> 
>   mew-config のデフォルト値は 'guess にしておく。
> 
> 2. メールの作成時には、新規・返信を問わず、1 の関数を利用して Config:
>   ヘッダの挿入を行う。
> 
> 3. 手動で 1 のコマンドを実行して、いつでも Config: ヘッダを挿入できる
>   ようにしておく。すでに Config: ヘッダが存在しているときも、上書きす
>   る。このコマンドを interactive に実行したときは、同時に Config: ヘッ
>   ダの行末に飛ぶようにしておく。
> 
> 4. C-c C-m のときに guess で行って Config: ヘッダを挿入するかどうかは、
>   別の変数を導入して、その変数の値で動作を決定する。
> 
>   送信を中止したときに Config: ヘッダを削除するかどうかも、この変数に
>   従う。
> 
>   デフォルトは nil (自動挿入を行わない)?
> 
> このようにすると、draft 編集段階で手動で Config: ヘッダの挿入を行うか
> どうかは mew-config で切り換え、送信直前に自動的に Config: ヘッダの挿
> 入を行うかどうかは新規変数で切り換えられるため、仕様が直行することにな
> るかと思います。

だいぶ違っていますね。。。

また、

こが:
> Akihiro Motoki <motoki at example.com>:
> > Config: を自動挿入すると、Config: 行末にカーソルが行きますが、
> > 理由があるのでしょうか? 挿入された Config: の内容をチェックするという
> > 意味はありますが、カーソルを動かさないとメールを編集できず、不便です。
> 
> これは、Mew-dist 3288 にもとづく実装です。これで合意がとれているはずで
> す。

は私の勘違いで、interactive の場合に呼んだ場合にこうするんでした。

いろいろ問題ありそうなので、ちょっと変えてみました。こんなのではどうで
しょう? mew-1.93 b12 用です。

- mew-draft-insert-config では minibuffer で Config: の内容を聞いてくる
  mew-config-list を設定していれば補完もできる。

- mew-ask-* という変数群があったので、mew-ask-config がセットされてい
  れば送信時に Config: をつけるかどうか聞くようにした

- mew-config-auto-insert は必要な個所だけチェックするようにした

現状ではかなりくどいので、どこそこの場面では要らない、という意見があっ
たら出してください。

あと、カーソルの飛び先も意見があればお願いします。これについては私はど
こでもいいです。

こういう仕様ならば、送信時に呼ぶだけでいいかもしれないとちょっと思って
います。

--- mew-draft.el.ORG	Thu Jan 29 13:05:06 1998
+++ mew-draft.el	Fri Jan 30 20:40:14 1998
@@ -475,12 +475,8 @@
     )
   (mew-header-insert-here "Mime-Version:" mew-mv:-num)
   (insert mew-header-separator "\n")
-  (mew-draft-insert-config)
   (mew-draft-refresh)
-  (if nl 
-      (save-excursion
-	(re-search-forward mew-eoh2)
-	(insert "\n")))
+  (if nl (insert "\n"))
   (if to ;; there is no To:
       ()
     (goto-char (point-min))
@@ -530,6 +526,10 @@
 		 (not (y-or-n-p "Do you want to post to NetNews?")))
 	    (mew-header-delete-lines '("Newsgroups:")))
 	))
+  (if mew-ask-config
+      (if (y-or-n-p "Do you want to use Config:?")
+	  (mew-draft-insert-config)
+	(mew-header-delete-lines '("Config:"))))
   (run-hooks 'mew-send-hook)
   (save-excursion
     (if (mew-header-get-value mew-ct:)
@@ -851,30 +851,27 @@
 
 (defun mew-draft-insert-config ()
   (interactive)
-  (if mew-config-auto-insert
-      (let ((config-cur (mew-header-get-value "Config:"))
-	    config-new)
-	(cond
-	 ((equal mew-config 'guess)
-	  (setq config-new (car (mew-config-guess-by-alist)))
-	  (or config-new (setq config-new (car mew-config-list))))
-	 (t 
-	  (setq config-new mew-config))
-	 )
-	(if (and config-new
-		 (or (not config-cur)
-		     (and (not (equal config-new config-cur))
-			  (y-or-n-p
-			   (format "Do you want to change Config: value to %s?" config-new)))))
-	    (progn
-	      (widen)
-	      (mew-header-delete-lines '("Config:"))
-	      (goto-char (point-min))
-	      (re-search-forward mew-eoh2)
-	      (beginning-of-line)
-	      (mew-header-insert-here "Config:" config-new)
-	      (forward-line -1)
-	      (end-of-line))))))
+  (let ((config-cur (mew-header-get-value "Config:"))
+	(config-new))
+    (cond
+     ((equal mew-config 'guess)
+      (setq config-new (car (mew-config-guess-by-alist)))
+      (or config-new (setq config-new (car mew-config-list))))
+     (t
+      (setq config-new mew-config))
+     )
+    (setq config-new (mew-input-config config-new))
+    (if config-new
+	(progn
+	  (widen)
+	  (mew-header-delete-lines '("Config:"))
+	  (goto-char (point-min))
+	  (re-search-forward mew-eoh2)
+	  (beginning-of-line)
+	  (mew-header-insert-here "Config:" config-new)
+	  (mew-draft-refresh)
+	  (forward-line -1)
+	  (end-of-line)))))
 
 (defun mew-draft-insert-signature ()
   (interactive)
--- mew-encode.el.ORG	Thu Jan 29 00:44:48 1998
+++ mew-encode.el	Fri Jan 30 19:43:41 1998
@@ -50,7 +50,6 @@
   "Make a MIME message. Charset guess, mapping directory structure 
 to multipart, and so on."
   (interactive)
-  (mew-draft-insert-config)
   (if (mew-header-get-value mew-ct:)
       (progn
 	(ding)
--- mew-summary.el.ORG	Thu Jan 29 22:44:52 1998
+++ mew-summary.el	Fri Jan 30 18:48:38 1998
@@ -1195,6 +1195,7 @@
 	  (mew-draft-rename file)
 	  (mew-draft-header subject nil to cc)
 	  (mew-draft-mode) ;; hack hack mew-draft-buffer-header
+	  (if mew-config-auto-insert (mew-draft-insert-config))
 	  )
       (sit-for 0)  ;; force to redisplay before save-buffer
       (save-buffer))) ;; to make sure not to use this draft again
@@ -1276,6 +1277,7 @@
 	    (mew-draft-header subject nil to cc newsgroups in-reply-to references)
 	    (undo-boundary)
 	    (mew-draft-mode) ;; for hilight
+	    (if mew-config-auto-insert (mew-draft-insert-config))
 	    (sit-for 0)
 	    )
 	(save-buffer))) ;; to make sure not to use this draft again
@@ -1343,6 +1345,7 @@
 	    ;;
 	    (mew-draft-header subject 'nl)
 	    (mew-draft-mode)
+	    (if mew-config-auto-insert (mew-draft-insert-config))
 	    (mew-draft-multi-copy file (list (cons fld msg)))
 	    (setq mew-encode-syntax
 		  (mew-encode-syntax-initial-multi dirname 1))
@@ -1385,6 +1388,7 @@
 	      (mew-draft-rename file)
 	      (mew-draft-header nil 'nl)
 	      (mew-draft-mode)
+	      (if mew-config-auto-insert (mew-draft-insert-config))
 	      (mew-draft-multi-copy file fld-msg)
 	      (setq mew-encode-syntax
 		    (mew-encode-syntax-initial-multi dirname (length fld-msg)))
--- mew-minibuf.el.ORG	Thu Jan 29 00:44:50 1998
+++ mew-minibuf.el	Fri Jan 30 18:38:00 1998
@@ -187,6 +187,20 @@
     (if (string= type "") default type)
     ))
 
+(defun mew-input-config (default)
+  (let ((config))
+    (setq config (completing-read
+		  (format "Config value (%s): " default)
+		  (mapcar
+		   (function
+		    (lambda (x) (cons x x)))
+		   mew-config-list)
+		  nil nil nil))
+    (if (string= config "")
+	default
+      config)
+    ))
+
 (provide 'mew-minibuf)
 
 ;;; Copyright Notice:
--- mew-vars.el.ORG	Thu Jan 29 22:44:53 1998
+++ mew-vars.el	Fri Jan 30 19:44:31 1998
@@ -635,6 +635,9 @@
 (defvar mew-ask-newsgroups nil
   "*If non-nil, prompt user if he/she want to include Newsgroups: field")
 
+(defvar mew-ask-config nil
+  "*If non-nil, prompt user if he/she want to include/change Config: field")
+
 ;;
 ;; Field Magic
 ;;

----
NEC ネットワーキング技術研究所 & 慶應義塾SFC研究所
こがよういちろう <y-koga at example.com>



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