[Mew-dist 06777] Re: mew-refile-view.el (Re: mew-refile.el)

Shun-ichi GOTO gotoh at example.com
1998年 10月 22日 (木) 17:29:06 JST


後藤@太陽計測です

>>>>> From: "Takashi P.KATOH" <p-katoh at example.com>
> From: Hideyuki SHIRAI (白井秀行) <shirai at example.com>
> Subject: [Mew-dist 06769] Re: mew-refile.el
> > mew-refile.el の話が出ているので、便乗してお願いしてしまうのです
> > が、refile 先を summary に表示する機能があると、*安心* できてあ
> > りがたいです。
> 
> こんなのはどうでしょう?
> 表示されるのは Summary buffer じゃないですけど。
> 
> Summary buffer で M-x mew-refile-view とすると、
...snip...

白井さんの紹介された水戸さんの方法も、加藤さんの方法もいいですね。

加藤さんのコードのほうは、x (mew-summary-exec)の際に、
「これからこういうふぅにrefileするよ。 いいかい?」
と確認とれるようにして使うとか、あるいはbyte-compileの
ログのように結果を残しつづけるとか、それをファイルに保存して
くれるとか。アイディアは膨らむ。

自分としては、「deleteとrefileのログが残ってくれたらなぁ」と
思いつづけて、はや○年。なんだか一挙に二度うれしいです。(^^)


さっそく水戸さんのコードを使ってみたところ、Summary内の各行の長さを
80文字(window-width)以上にして (setq truncate-lines t) にして
使っている自分の環境ではちょっと困りましたので、以下のようにして
使い始めました。お尻も揃うようになりました。


--- 1	Thu Oct 22 06:50:18 1998
+++ 2	Thu Oct 22 07:27:53 1998
@@ -31,19 +31,25 @@
     (mew-summary-remove-refile-folders)
     (let ((msg (mew-summary-message-number))
           (buffer-read-only nil)
-          folders len rs re c)
-      (setq folders (concat " " (mew-refile-folders msg)))
-      (setq len (string-width folders))
-      (if (< len 1) ()
-        (end-of-line)
-        (setq re (point))
-;        (setq rs (if (> re len) (- re len) 1))
-        (setq c 0)
-        (while (< c len)
+          folders maxwid wid)
+      (setq folders (concat " " (mew-refile-folders msg))
+	    maxwid (- (window-width) 1 (string-width folders)))
+      (when (< 0 maxwid)
+	(end-of-line)
+	;; begin with whole of line
+        (setq wid (string-width (buffer-substring (save-excursion
+						    (beginning-of-line)
+						    (point))
+						  (point))))
+	;; check and shorten
+        (while (< maxwid wid)
           (backward-char)
-          (setq c (+ c (char-width (following-char)))))
-        (setq rs (point))
-        (set-text-properties rs re '(invisible t))
-        (goto-char re)
-        (insert folders)
+          (setq wid (- wid (char-width (following-char)))))
+	;; now hide from current point to eol
+        (set-text-properties (point)
+			     (save-excursion (end-of-line) (point))
+			     '(invisible t))
+	;; write destrination folder
+	(end-of-line)
+        (insert (make-string (- maxwid wid) ? ) folders) ; with adjust
         (set-buffer-modified-p nil)))))


--- Regards,
 Shun-ichi Goto  <gotoh at example.com>
   R&D Group, TAIYO Corp., Tokyo, JAPAN




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