[mew-dist 18090] Re: リージョンでのマークについて

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2001年 7月 16日 (月) 17:05:59 JST


From: Tatsuya Kinoshita <tats at example.com> さん曰く
Subject: [mew-dist 18086] Re: リージョンでのマークについて
Message-ID: <20010715.232129.78718167.05 at example.com>
Date: Sun, 15 Jul 2001 23:21:29 +0900 (JST)

tats> In message [mew-dist 18080], on Sun, 15 Jul 2001,
tats> > 個人的には、行中のどこに cursor が存在するか?で挙動を変えるのは
tats> > やめた方がいいと思います。
tats> 
tats> 「regionに含まれる行」を、処理対象としたいのです。region-endが行頭
tats> の場合、その最終行はregionに含まれていません。

(体がなれてしまえば :-)それで全然かまわないのですが、木下さんの
パッチだと通常の summary で普通に使っているときは、

"C-spc" => "C-n"... => "C-u ma"

とすると cursor が行頭にあるので、最後の行は含まれませんが、
thread + mew-use-thread-cursor = t のときは、通常 cursor が行の
途中にあるので、同じことをやっても最後の行が含まれますよね。

# こういうのがいやだったので、point がある行は含む、という単純な
# ルールの方が良いなと考えたのでした。

# 以前は message number の前か後かで 挙動が変わったから 余計面倒
# くさかったのでした。で、当時、どういう挙動がいいかを悩んだこと
# がありまして、(たしか)mew-nmz は『point がある行』に勝手に統一
# していました。

ぼくの好みの順番でいうと、

1. point がある行は region に含める。(現状)
2. 直前のコマンドが "C-a" ならその行を region に含めない。その他
 のコマンドだったら region に含める。
 (last-command を使う)
3. end が行頭ならその行を region に含めない。(木下さんのパッチ)
4. end が行末ならその行を region に含める。

2. のコード
(setq end (progn (goto-char end)
		 (if (eq last-command 'beginning-of-line)
		     (beginning-of-line)
		   (forward-line))
		 (point)))

## けど、これはわかりにくいな。

4. のコード
(setq end (progn (goto-char end)
		 (if (eq (char-after) ?\n)
		     (forward-line)
		   (beginning-of-line))
		 (point)))

## invisible な領域 に cursor があると見た目で判断できませんね。


なのですが、C-a or C-e する癖をつければいいだけだし、特にこだわ
りません。


P.S.

"C-u tt" にも同様の問題があるので、見解が出たら挙動を統一した方
が良いと思います。特に、beg が行の途中で、最初が message number
に間違える(日付、時刻など)ものだと、そこまでちょん切ったものが出
力されてしまいます。

例)
            ↓ここで C-spc して、C-n 数回
1379  01/01/2000   3k Murata Takashi           [11960] y2k patch for im-134
1380  01/01/2000   2k Murata Takashi           [11961] Re: y2k patch for im-134
1381  01/02/2000   3k Masachika ISHIZUKA       [11962] Re: 1.95b16
1382  01/02/2000   2k Masachika ISHIZUKA       [11963] Re: 1.95b16

適当に "C-u tt" すると、2000 を message number と間違えて、

2000   3k Murata Takashi           [11960] y2k patch for im-134
1380  01/01/2000   2k ┗Murata Takashi           [11961] Re: y2k patch for im-134
1381  01/02/2000   3k Masachika ISHIZUKA       [11962] Re: 1.95b16
1382  01/02/2000   2k ┗Masachika ISHIZUKA       [11963] Re: 1.95b16

となる。もし、『point がある行は region に含む』なら、こんなパッ
チでしょう。

-- 
白井秀行 (mailto:shirai at example.com)

Index: mew-thread.el
===================================================================
RCS file: /cvsroot/shirai/mew/mew/mew-thread.el,v
retrieving revision 1.88
diff -c -c -r1.88 mew-thread.el
*** mew-thread.el	2001/07/16 00:25:33	1.88
--- mew-thread.el	2001/07/16 07:37:50
***************
*** 267,286 ****
  	    tm1 tm2 tm3 tm4 tm5 tm6
  	    db size top start me prnt prnt-cld my-id prnt-id func msg line)
         (message "Making thread (first pass) ... ")
!        (save-restriction
! 	 (narrow-to-region beg end)
! 	 (setq size (mew-count-lines beg end))
! 	 (cond
! 	  ((<= size 211)
! 	   (setq size 211))
! 	  ((<= size 1511)
! 	   (setq size 1511))
! 	  ((<= size 7211)
! 	   (setq size 7211))
! 	  (t
! 	   (setq size 18211)))
! 	 (setq db (make-vector size 0))
! 	 (save-excursion
  	   (goto-char (point-min))
  	   (if mark
  	       (setq func (lambda ()
--- 267,288 ----
  	    tm1 tm2 tm3 tm4 tm5 tm6
  	    db size top start me prnt prnt-cld my-id prnt-id func msg line)
         (message "Making thread (first pass) ... ")
!        (save-excursion
! 	 (setq end (progn (goto-char end) (forward-line) (point)))
! 	 (setq beg (progn (goto-char beg) (beginning-of-line) (point)))
! 	 (save-restriction
! 	   (narrow-to-region beg end)
! 	   (setq size (mew-count-lines beg end))
! 	   (cond
! 	    ((<= size 211)
! 	     (setq size 211))
! 	    ((<= size 1511)
! 	     (setq size 1511))
! 	    ((<= size 7211)
! 	     (setq size 7211))
! 	    (t
! 	     (setq size 18211)))
! 	   (setq db (make-vector size 0))
  	   (goto-char (point-min))
  	   (if mark
  	       (setq func (lambda ()



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