[Mew-dist 16068] invisible vs display-timer (was: a patch for b99)

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2001年 1月 26日 (金) 21:01:37 JST


From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [Mew-dist 16001] a patch for b99
Message-ID: <20010120.154744.74700356.kazu at example.com>
Date: Sat, 20 Jan 2001 15:47:23 +0900

kazu> (2) Summary の thread info を invisible にするコードを改良
kazu> しました。これにともない、カーソルが行末に移動してしまうバ
kazu> グも取れているはずです。invisible 関係は、これを基に議論し
kazu> ましょう。

やっぱり、(というか当然)

From: KOIE Hidetaka (鯉江英隆) <hide at example.com> さん曰く
Subject: [Mew-dist 15996] Re: b98
Message-ID: <01Jan19.184602jst.29570 at example.com>
Date: Fri, 19 Jan 2001 18:19:18 +0900

鯉江>   | と思ったのですが、私のコードのせいではなくて display-time() のせ
鯉江>   | いだということがわかりました。display-time をしていなかったら、
鯉江>   | 
鯉江>   | (setq display-time-interval 1)
鯉江>   | (display-time)
鯉江>   | 
鯉江>   | して大きい folder を invisible しているときを(何もしないで)注視
鯉江>   | してみてくださいませんか。
鯉江> 
鯉江> 再現できました。
鯉江> lazy-lockではそんなことはないので、なにか策があるのでしょうね。

これがおきちゃいますね。lazy-lock は window 単位でしか色付けしか
しないので大丈夫なのかな?と思います。
調べてみたところ、(Emacs-20.7 付属の time.el なら) 

(defun display-time-event-handler ()
  (display-time-update)
  ;; Do redisplay right now, if no input pending.
  (sit-for 0)

の (sit-for 0) で redisplay しちゃっているようです。ここを
comment out したら大丈夫になりました。だけど、この対処法はちょっ
となんですね。。。

Mew で無理やり OK にするなら、

(defun mew-summary-make-invisible-region (beg end &optional interrupt)
  (if (and (or (eq major-mode 'mew-summary-mode)
	       (eq major-mode 'mew-virtual-mode))
	   mew-summary-buffer-visible)
	  (let ((inhibit-point-motion-hooks t)
		(sit-for-backup (symbol-function 'sit-for))
		ret)
	    (unwind-protect
		(progn
		  (defun sit-for (&rest args) ())
		  (catch 'loop
		    (mew-elet
		     (save-excursion
		       (goto-char beg)
		       (while (and (<= (point) end) ;; Emacs 21's bug?
				   (search-forward "\r" end t))
			 (if (and interrupt (input-pending-p))
			     (throw 'loop (setq ret t)))
			 (put-text-property (match-beginning 0)
					    (progn (end-of-line) (point))
					    'invisible t))))))
	      (fset 'sit-for sit-for-backup)
	      (set-buffer-modified-p nil)
	      ret))))

みたいなのができるけど、これも (自分の ~/.emacs に書くなら全然気
にしないけど) なんだかなぁ。。。

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



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