🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.editor.xemacs
Article #326

Re: スクロールの挙動

#326
From: Seiichi Namba
Date: Fri, 08 Jun 2001 16:03
141 lines
7896 bytes
The following message is a courtesy copy of an article
that has been posted to fj.editor.xemacs as well.

難波です。今朝書いた別スレッドの記事は出ていっているようなので
ニュースに書いてみます。念のため Cc: 付き。

IMAI Hidetoshi <hidepin@infonets.hiroshima-u.ac.jp> さん writes:

> ごくたまにうまく行くだけで、ほとんどの場合はwindowの中央にカー
> ソルが移動します。

コードの効率としてはこの方 

> >   (let* ((height (save-excursion (move-to-window-line -1)))

が goddamn-emacs-get-window-height よりもよさそうですよね。

> いろいろためした結果
> ------------------------------------------------------------
> (top-edge 0)
> (btm-edge height)
> ------------------------------------------------------------
> では、かなりの確率で(下にスクロールする場合はほとんど)
> windowの中央にカーソルが飛んでしまいます。
> 
> ------------------------------------------------------------
> (top-edge 1)
> (btm-edge (- height 2))
> ------------------------------------------------------------

なんか行の数え方が emacs と xemacs では違うような感じになってますね。
ひょっとして、xemacs では ウィンドウの一番上の行に行くのは 
(move-to-window-line 1) なのかしら? それとも半行表示の扱いが違う、
とか、そっちの問題かしら?

> # いろいろためして見たのですが newline を行ったときも
> # カーソルが中央に飛んでしまいます。
> # 少し気持ち悪いですが、なにかを書き加えるときはこの方が
> # 便利かも知れません。

これについては、basic.el に my-newline というのが入ってます。
smooth-scroll-up/down の姉妹品のような、似たような考えです。カーソルが
あまり下の方にある場合は数行のスクロールが起きますが、普通にウィンドウ
の中程から書き足していく時は1行づつスクロールするはずです。短いからこ
こに貼っておきます。Freemacs なんて懐かしい。

;;; 
;;; my-newline, inspired from Freemacs.
;;; You don't need to fix skk.el.
;;; Thu Jun 18 17:25:58 1992
;;;

(defun my-newline (arg)
  "Moves cursor down keeping cursor within 2/3 area from the top of the current window.
Scroll the window in need."
  (interactive "p")
  (if (> arg 0)
      (progn
        (newline arg)
        (forward-line (- arg))
        (smooth-scroll-up arg))))

smooth-scroll-up 呼んでますが、改造版の smooth-scroll-up との相性は調
べていません。が、使えそうな気はします。かなり画面の下にあっても1行ス
クロールになるんじゃないかしら?

私はこれは C-m にバインドしています。(interactive "_p") は同様に直して
下さい。

> > もし、これでは我慢がならん、ということであれば、pixel 単位の計算をし、
> > ということはフォントの高さなども計算し、さらに半行表示を検出し、それを
> > 補正し、pixel 単位で scroll させるコマンドを書くしかありませんが、そこ
> > まで血道をあげる価値があるかどうか、という気がします。
> > 
> > ただし、scroll-step を 1 にしても(あるいは scroll-conservatively を t 
> > にしても)半画面スクロールが(たまに)起きるというのは *明らかにバグ* だと
> > 思うので、xemacs/emacs の開発チームと闘争して直させる、というのはもち
> > ろん解決方法としては正道だと思います。
> > 

> 正道はどのような手順を踏めばいいものでしょうか?
> この話ですと、解決方法を持っていかないと相手にされないような
> 気がします。

いや、正道、というのはそういう意味ではなくて。要するに、本件のように 
info に書いてある動作ができる確率がそんなに高くない、というのはバグで
しょうなあ、という程度の意味でしかありません。

バグレポートの「正道」というのも特にないでしょう。丁重、常識的、かつ的
確に起きていることを相手に伝えられるのであれば直してもらえるのではない
でしょうか。

上の「闘争」というのもあまり言葉がよくありませんが、コンピュータの振舞
いを文章で説明して相手に判らせるのはそう簡単ではない(たとえば、xemacs
+ smooth-scroll-up/down の組合せの問題が私に伝わるまで、というのはそう
簡単にはいってませんよね?)ので、その点、大変かもしれませんけどね…、と
いう程度の意味に読んでください。

> xemacs/emacs の開発チームに報告という形でれんらくをとることはできないものなのでしょうか?
> (できれば、日本語で。)

要するに、ご自分でパッチを書けない、とか、英語が下手だとかの懸念と、こ
のバグを直して欲しい、という熱意のどっちが勝つか、という問題ではないで
すかね。

> FreeBSD 4.3 の ports でとってきた xemacs-21.1.14.tar.gz
> を調べましたが edebug はないようでした。
> grep で検索すると 幾らか引っ掛かりましたが
> プログラムではないようでした。

そうですか。21.1.10 には何か入ってたような気がしたんですが、
私の見間違いかな…。

> > PS1.
> > (move-to-window-line -1) はバッファの終りがウィンドウの表示範囲内にある時は
> > ウィンドウの行数単位の高さとは違う値を出してきます。この補正をやるべきですが
> > 上の改造版 smooth-scroll-up ではそれがありません。この部分はおまかせします。
> > たとえば症状としては、バッファの終りで呼ぶと、scroll-up が起きてしまう、という
> > のがこの問題に該当するものと思われます。
> 
> 確かに そのような動作を確認しました。
> ただscroll-upより移動する行数が多いようです。
> (3行くらいです。)

うちの emacs-21 では1行づつだったと思いますが、top-edge と btm-edge 
を補正されているのでその関係でしょうかね。

> > PS2.
> > 本件に少し関連すると思いますが、C-x 3 M-x follow-mode RET というのは xemacs
> > でも使えますか。C-p,C-n,C-v,M-v などの際のバッファの見せ方を調節する
> > ものですが、もしかしたらご不便のうちのある部分は解消できるのかもしれません。
> > 
> > ともあれ、ご健闘を祈ります。
> 
> C-x 3 で window を縦に二つに分割できました。
> ただ、follow-mode はないようでした。
> この、モードをよぶためになにか .emacs に記述する必要は
> ありますか?

follow-mode は emacs-19.34 あたりから存在するようです。19.34, 20.7, 21.0.103
では特に .emacs の設定は必要ないですね。
Technical Details
Message-ID: <86zobjgds2.fsf@thelonious.smoke.or.jp>
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!komachi.sp.cs.cmu.edu!Q.T.Honey!nf.asahi-net.or.jp!not-for-mail
References: <xl9d78jgki9.wl@cal.infonets.hiroshima-u.ac.jp> <9fj2mh$8o1$1@sn.asahi-net.email.ne.jp> <xl94rtuomm1.wl@cal.infonets.hiroshima-u.ac.jp> <9fk0do$48j$1@sn.asahi-net.email.ne.jp> <xl9snhehw1z.wl@cal.infonets.hiroshima-u.ac.jp> <9fkvf1$fu9$1@sn.asahi-net.email.ne.jp> <xl9puchj0a5.wl@cal.infonets.hiroshima-u.ac.jp> <9fler4$sia$1@sn.asahi-net.email.ne.jp> <9flg0i$sia$2@sn.asahi-net.email.ne.jp> <xl9k82ptqrw.wl@cal.infonets.hiroshima-u.ac.jp> <xl9vgm7sib2.wl@cal.infonets.hiroshima-u.ac.jp> <xl9u21rs9d8.wl@cal.infonets.hiroshima-u.ac.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 1107f7,bc01201f0ce88c8c
X-Google-Attributes: gid1107f7,public
X-Google-ArrivalTime: 2001-06-08 09:05:22 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!komachi.sp.cs.cmu.edu!Q.T.Honey!nf.asahi-net.or.jp!not-for-mail
Originator: sn@thelonious.smoke.or.jp
Newsgroups: fj.editor.xemacs
Subject: Re: スクロールの挙動
References: <xl9d78jgki9.wl@cal.infonets.hiroshima-u.ac.jp> <9fj2mh$8o1$1@sn.asahi-net.email.ne.jp> <xl94rtuomm1.wl@cal.infonets.hiroshima-u.ac.jp> <9fk0do$48j$1@sn.asahi-net.email.ne.jp> <xl9snhehw1z.wl@cal.infonets.hiroshima-u.ac.jp> <9fkvf1$fu9$1@sn.asahi-net.email.ne.jp> <xl9puchj0a5.wl@cal.infonets.hiroshima-u.ac.jp> <9fler4$sia$1@sn.asahi-net.email.ne.jp> <9flg0i$sia$2@sn.asahi-net.email.ne.jp> <xl9k82ptqrw.wl@cal.infonets.hiroshima-u.ac.jp> <xl9vgm7sib2.wl@cal.infonets.hiroshima-u.ac.jp> <xl9u21rs9d8.wl@cal.infonets.hiroshima-u.ac.jp>
From: Seiichi Namba <sn@asahi-net.email.ne.jp>
Date: 09 Jun 2001 01:03:09 +0900
Organization: Smoke
In-Reply-To: <xl9u21rs9d8.wl@cal.infonets.hiroshima-u.ac.jp>
Message-ID: <86zobjgds2.fsf@thelonious.smoke.or.jp>
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.0.103
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-2022-jp
Posted-To: fj.editor.xemacs
Lines: 141
NNTP-Posting-Host: h202076.ppp.asahi-net.or.jp
X-Trace: 992016319 news3.asahi-net.or.jp 14361 61.114.202.76
X-Complaints-To: ap-net@asahi-net.or.jp