[mew-dist 22179] Re: Mew 3.1 release candidate 1

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2002年 11月 1日 (金) 19:53:59 JST


From: SAITO Takuya <tabmore at example.com> さん曰く
Subject: [mew-dist 22177] Re: Mew 3.1 release candidate 1
Message-ID: <20021101.181400.41628662.tabmore at example.com>
Date: Fri, 01 Nov 2002 18:14:00 +0900 (JST)

> "g" でミニバッファからフォルダを入力する際に、
> "case:-" まで入力してから C-s とすると (mew-nntp-folder-alist case)
> から検索してくれるのですが、RET で確定すると "case:" が消えてしまいます。
> 
> また、ミニバッファに "-" のみ入力してから C-s すると
> (mew-nntp-folder-alist nil)
> から検索するようですが、その一方でミニバッファに
> "-fj.mail.reader.mew" と入力して RET を押したときに
> mew-case-input:-fj.mail.reader.mew に移動するというのは分かりにくい
> と思います。 (mew-nntp-folder-alist mew-case-input) から検索して欲しいです。

こんな感じだとおもいます。

Index: mew-minibuf.el
===================================================================
RCS file: /cvsroot/shirai/mew/mew/mew-minibuf.el,v
retrieving revision 1.103
diff -u -r1.103 mew-minibuf.el
--- mew-minibuf.el	28 Oct 2002 06:30:44 -0000	1.103
+++ mew-minibuf.el	1 Nov 2002 10:36:57 -0000
@@ -133,7 +133,10 @@
     (setq case:fld mew-input-folder-search-original)
     (if mew-input-folder-search-point
 	(setq case:fld (substring case:fld mew-input-folder-search-point)))
-    (setq case (car (mew-folder-case case:fld)))
+    (if (setq case (car (mew-folder-case case:fld)))
+	(setq mew-input-folder-search-point
+	      (+ (or mew-input-folder-search-point 0) (length (concat case ":"))))
+      (setq case (or mew-inherit-case (mew-sinfo-get-case))))
     (setq fld (mew-folder-folder case:fld))
     (mew-input-folder-display)
     (if (or (null fld) (string= fld ""))



しかし、これ考えているときに矛盾を発見してしまいました。バグの様
な気がします。

今、『hoge:%inbox』という folder を mew-case-input が『foo』の状
態で見ていて "g" したとします。そうすると、

(defun mew-input-folder (default &optional local-only)
  (mew-input-clear)
  (mew-input-folder-clean-up)
  (setq mew-input-folder-search-multi nil)
  (let ((prefix (mew-folder-prefix default))
	(mew-inherit-case (mew-sinfo-get-case)) <= (1)
	(mew-input-complete-function
	 (if local-only 'mew-complete-local-folder 'mew-complete-folder))
  <<snip>>
    (directory-file-name folder)))

(1) で summary から得られる case 『hoge』を mew-inherit-case に入
れて、mew-complete-folder() => mew-complete-folder2() の

     (t
      (setq case (or mew-inherit-case (mew-sinfo-get-case)))
      (cond
       <<snip>>
       ((mew-folder-nntpp word)
	(mew-complete word (mew-nntp-folder-alist case) "newsgroup" nil))
       ((mew-folder-imapp word)
	(mew-complete word (mew-imap-folder-alist case) "mailbox" nil))

ここで『hoge』で補完用の alist を得ています。そして、『hoge』の
case で見つかる "%tmp" を入力すると、

(defun mew-summary-goto-folder (&optional goend)
  (interactive "P")
  (let* ((proto (mew-proto-to-go (mew-summary-folder-name 'ext)))
	 (inbox (mew-proto-inbox-folder proto mew-case-input))
	 (fld (mew-input-folder inbox))
	 (folder (mew-canonicalize-case-folder fld))

fld には『hoge: で補完した %tmp』が入っていますが、
mew-canonicalize-case-folder() は mew-case-input をつけるため
最終的な folder は "foo:%tmp" になります。hoge には "%tmp" があ
るけど foo には "%tmp" が無いと × になります。

## mew-inherit-case と mew-case-input とどちらを優先すべきかはわ
## からんです。ぼくはどっちでも良いかも ^^;;;

-- 
白井秀行 (mailto:shirai at example.com)



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