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

SAKAI Kiyotaka ksakai at example.com
1998年 2月 17日 (火) 17:55:26 JST


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

> そもそもは,

> 0) XXX YYY ZZZ という3つの単語が mew-config-list に書いてあるとして
> 1)「Config: XXX」となっている状態で(この行の末尾で) C-c TAB すると XXX 
>   が YYY になったり ZZZ になったりはするけど
> 2)「Config: X」となっている状態で(この行の末尾で) C-c TAB すると
>   「Config: XXX」となる
> 3)「Config: XXX,Y」と書いている状態で(この行の末尾で) C-c TAB しても
>   「Config: XXX,YYY」とはならない(XXX,Y ではじまる値を mew-config-list 
>   から探そうとするから)

> という話を書きたかったのでした.Config の値として "XXX,YYY" をさらに書
> けば良いといえばそうなのですが,書きたいのは "XXX" と "YYY" を並べた物
> であって "XXX,YYY" でないはずなので,"XXX,YYY" を mew-config-list に書
> かせるのは何となく違う気がしています.

これは C-c TAB の方を変更するべきことであって、mew-config-list の設定
で対応するべきことではないと思います。

以下のパッチで対応できると思いますが、どうでしょうか?

# ついでに、Config: のある行で TAB を押すと circular はせずに補完のみ
# の動作を行うようにしてみました。
-- 
酒井 清隆 (E-mail: ksakai at example.com)


Index: mew-complete.el
===================================================================
RCS file: /home/cvsroot/mew-1.93b14/mew-complete.el,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 mew-complete.el
--- mew-complete.el	1998/02/17 08:41:08	1.1.1.1
+++ mew-complete.el	1998/02/17 08:50:44
@@ -120,6 +120,19 @@
       )
     ))
 
+(defun mew-complete-config ()
+  (interactive)
+  (let ((word (mew-delete-value ",")))
+    (if (null word)
+	(tab-to-tab-stop)
+      (mew-complete
+       word
+       (mew-slide-pair mew-config-list)
+       "mew-config-list"
+       nil) ;; use car
+      )
+    ))
+
 ;;
 ;; Circular completion: C-cC-t
 ;;
@@ -158,9 +171,9 @@
      )
     ))
 
-(defun mew-complete-circular (msg clist cname)
+(defun mew-complete-circular (msg clist cname &optional here)
   (interactive)
-  (let ((str (mew-delete-value)))
+  (let ((str (mew-delete-value here)))
     (if (null str)
 	(if (car clist)
 	    (insert (car clist))
@@ -176,9 +189,9 @@
   (interactive)
   (mew-complete-circular "from" mew-from-list "mew-from-list"))
 
-(defun mew-complete-config ()
+(defun mew-complete-config-circular ()
   (interactive)
-  (mew-complete-circular "config" mew-config-list "mew-config-list"))
+  (mew-complete-circular "config" mew-config-list "mew-config-list" ","))
 
 ;;
 ;; Hart function for completions
@@ -276,7 +289,7 @@
       )
     ))
 
-(defun mew-delete-value ()
+(defun mew-delete-value (&optional here)
   (beginning-of-line)
   (if (not (looking-at "[^:]+:"))
       ()
@@ -288,6 +301,10 @@
 	nil
       (let ((start (point)) ret)
 	(end-of-line)
+	(if (and here (re-search-backward (regexp-quote here) start t))
+	    (progn
+	      (setq start (1+ (point)))
+	      (end-of-line)))
 	(setq ret (buffer-substring start (point)))
 	(delete-region start (point))
 	ret))))
Index: mew-vars.el
===================================================================
RCS file: /home/cvsroot/mew-1.93b14/mew-vars.el,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 mew-vars.el
--- mew-vars.el	1998/02/17 08:41:10	1.1.1.1
+++ mew-vars.el	1998/02/17 08:49:18
@@ -467,7 +467,8 @@
     ("Dcc:"      . mew-complete-address)
     ("Bcc:"      . mew-complete-address)
     ("Reply-To:" . mew-complete-address)
-    ("Fcc:"      . mew-complete-folder))
+    ("Fcc:"      . mew-complete-folder)
+    ("Config:"   . mew-complete-config)))
   "*Completion function alist concerned with the key."
   )
 
@@ -478,7 +479,7 @@
     ("Bcc:"      . mew-complete-domain)
     ("Reply-To:" . mew-complete-domain)
     ("From:"     . mew-complete-from)
-    ("Config:"   . mew-complete-config))
+    ("Config:"   . mew-complete-config-circular))
   "*Circular completion function alist concerned with the key."
   )
 




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