[Mew-dist 04974] goto Virtual folder

OKUNISHI Fujikazu fuji0924 at example.com
1998年 6月 2日 (火) 12:44:05 JST


仮想フォルダから他のフォルダ("+=-%")へは行けるのですが、"+=-%" から
仮想フォルダへ行くことも、仮想フォルダから仮想フォルダへ移動することも
できません。

Virtual mode を多用する人間にとって苦痛以外のナニモノでもないし、将来
的に Virtual mode (みたいなの)が多用されることになるらしいので、ちょっ
といじってみました。

;; 本当は bufferp() を使いたかったんだけど、(bufferp "++virtual") では
;; だめなんですよね。この Lisp Object は正しくはどう表現するんでしょう
;; か?

--ふ
-------------- next part --------------
--- mew-func.el.orig	Sun May 31 07:34:10 1998
+++ mew-func.el	Tue Jun  2 12:31:18 1998
@@ -261,7 +261,13 @@
   (string-match "^%" folder)
   )
 
+(defun mew-folder-virtualp (folder)
+  (string-match "^+\\+" folder) ;; or "^\\+\\+"
+  )
+
 (defun mew-folder-to-dir (folder)
+;  (if (and (string-match "^[+=]" folder)
+;           (not (string-match "^+\\+" folder)))
   (if (string-match "^[+=]" folder)
       (substring folder 1 nil)
     folder)
--- mew-summary.el.orig	Mon Jun  1 23:03:42 1998
+++ mew-summary.el	Tue Jun  2 12:31:18 1998
@@ -445,6 +445,14 @@
 	 (dir (mew-expand-folder folder)))
     (cond ((mew-folder-newsp folder)
 	   (mew-summary-goto-folder-subr folder arg))
+	  ((mew-folder-virtualp folder)
+	   (if (get-buffer folder)
+	       (progn
+		 (mew-summary-goto-folder-subr folder arg)
+		 (mew-virtual-mode))
+	     (message "No such virtual folder: %s" folder)
+	     (setq mew-folder-alist
+	       (delq (assoc folder mew-folder-alist) mew-folder-alist))))
 	  ((mew-folder-imapp folder)
 	   (if (or (file-directory-p dir)
 		   (and (y-or-n-p
--- mew-virtual.el.orig	Sun May 31 07:34:50 1998
+++ mew-virtual.el	Tue Jun  2 12:31:18 1998
@@ -199,6 +199,9 @@
   (mew-virtual-highlight-setup)
   (mew-highlight-cursor-line)
   (run-hooks 'mew-virtual-mode-hook)
+  (if (setq ret (mew-assoc-case-equal folder mew-folder-alist 0))
+      ()
+    (setq mew-folder-alist (cons (list folder nil) mew-folder-alist)))
   )
 
 (defun mew-virtual-folder-message ()
--- mew.el.orig	Mon Jun  1 22:54:06 1998
+++ mew.el	Tue Jun  2 12:31:18 1998
@@ -552,13 +552,15 @@
   (run-hooks 'mew-suspend-hook)
   )
 
+
 (defun mew-kill-buffer (&optional buf)
   "Erase the current mode(buffer)."
   (interactive)
-  (if buf
-      (if (get-buffer buf) (kill-buffer buf))
-    (kill-buffer (current-buffer)))
-  )
+  (let ((buf (if buf buf (current-buffer))))
+      (if (eq major-mode 'mew-virtual-mode)
+	 (setq mew-folder-alist
+	   (delq (assoc (buffer-name buf) mew-folder-alist) mew-folder-alist)))
+      (if (get-buffer buf) (kill-buffer buf))))
 
 (defun mew-summary-quit ()
   "Quit Mew. All buffers of Mew are erased."


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