[Mew-dist 05217] Re: 1.93b41

SAKAI Kiyotaka ksakai at example.com
1998年 6月 30日 (火) 11:48:28 JST


>> In article <19980626185543I.kazu at example.com>, Kazu Yamamoto (山本和彦) <kazu at example.com> writes:

>> overlay-arrow-string に改行を入れられる/入れられない,については Mew 
>> の範囲ではありませんから(overlay を実装したのは Mew ではない)「はいら
>> ない」こと自体はさほど気にしていません.ただ「入れられるのなら入れたい」
>> とは思っています.emacs の info とかをごそごそ探したのですが,いまいち
>> 探し切れませんでした(探し方が悪いんだとは思いますが).

> では、overlay-arrow ではなく、overlay 自身を使って実現してみてはどうで
> しょう? これなら色も付けられそうです。

試しに以下のようなコードを書いてやってみましたが、結果は同じでした。

(defvar mew-end-of-overlay nil)
(defun mew-message-set-end-of ()
  (save-excursion
    (let ((buffer-read-only nil))
      (goto-char (point-max))
      (if (not (bolp)) (insert "\n"))
      (setq overlay-arrow-string nil)
      (if (or mew-end-of-message-string mew-end-of-part-string)
	  (let ((p (point-max)))
            (if mew-end-of-overlay
		(move-overlay mew-end-of-overlay p p)
	      (setq mew-end-of-overlay (make-overlay p p)))
	    (overlay-put mew-end-of-overlay 'after-string
			 (if (mew-part-p)
			     (if (mew-summary-end-of-message-p)
				 mew-end-of-message-string
			       mew-end-of-part-string)
			   mew-end-of-message-string)))))))

Emacs Lisp マニュアルには

  この属性の値は、オーバレイの終点に加えて表示する文字列です。その文字
  列はどんな意味でもバッファの中には存在せず画面上にあるだけです。文字
  列には1カラムで表示される文字以外は含めない方がいいでしょう。タブや
  改行などの制御文字を含めるとおかしな結果になります。

と記述があって、before-string, after-string には改行等の制御コードを含
めないことを想定しているようです。

あとoverlay-arrow-string は、振舞いから判断すると、内部で overlay の
after-string の機能を使っているような気がします。

オプションによって

  1. 直接 insert する。(改行等も入れられる)
  2. overlay を使う。(end-of-string が buffer に残らない)

の 2つを選択できるようにするのがいいように思いますが、引用時の問題だけ
なのであれば、insert にして、メッセージの表示時にメールの最後に mark 
をセットするという対応も可能だと思います。
-- 
酒井 清隆 (E-mail: ksakai at example.com)



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