🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.editor.xemacs
Article #246

Re: スクロールの挙動

#246
From: IMAI Hidetoshi
Date: Wed, 13 Jun 2001 09:21
91 lines
5534 bytes
今井です。

At 13 Jun 2001 13:04:01 +0900,
Seiichi Namba wrote:
> 
> The following message is a courtesy copy of an article
> that has been posted to fj.editor.xemacs as well.
> 
> 難波です。
> 
> もう失礼する、と書いたのですが、前の記事は言葉が足りないところがあるの
> で最後に多少補足しておきます。
> 

ありがとうございます。
参考になりました。

> 
> 
> PS.
> なお、ウィンドウ外へのカーソル移動の時1行だけスクロールさせるという目
> 的に関して smooth-scroll-up/down の基本的な枠組を(改造して)利用す
> るのはあまり適していないのではないか、と思います。というのは
> smooth-scroll-up/down は「行」を対象とした処理だからです。
> 
> 「ウィンドウ外へのカーソル移動の時1行だけスクロールさせる」には、「そ
> の移動でウィンドウ外へカーソル(point)が出るかどうか」を調べ、「出るな
> らスクロールする」、というようなアルゴリズムを使えば良いですね。
> 今頃になって申しわけないですが、そういうシンプルな作りであれば、
> 
> (defsubst before-the-window-p (point)
>   "Test if POINT is off the window, being smaller than window top."
>   (< point (save-excursion (move-to-window-line 0) (point))))
> 
> (defsubst after-the-window-p (point)
>   "Test if POINT is off the window, being larger than window bottom."
>   (> point (save-excursion (move-to-window-line -1) (end-of-line) (point))))
> 
> (defun sane-next-line (arg)
>   (interactive "p")
>   (let ((newpt (save-excursion (line-move arg) (point))))
>     (while (after-the-window-p newpt) (scroll-up 1))
>     (goto-char newpt)
>     (setq this-command 'next-line)
>     ()))
> 
> (defun sane-previous-line (arg)
>   (interactive "p")
>   (let ((newpt (save-excursion (line-move (- arg)) (point))))
>     (while (before-the-window-p newpt) (scroll-down 1))
>     (goto-char newpt)
>     (setq this-command 'previous-line)
>     ()))
> 
> (defun sane-newline (arg)
>   (interactive "p")
>   (let ((newpt (save-excursion (newline arg) (point))))
>     (while (after-the-window-p newpt) (scroll-up 1))
>     (goto-char newpt)
>     (setq this-command 'newline)
>     ()))
> 
> (byte-compile 'sane-previous-line)
> (byte-compile 'sane-next-line)
> (byte-compile 'sane-newline)
> 
> (global-set-key [up] 'sane-previous-line)
> (global-set-key [down] 'sane-next-line)
> (global-set-key [return] 'sane-newline)
> 
> こんな感じでご希望には沿うような気がします(結局書いちゃった)。
> 
> c-quick 全体よりは短かいですから使えればいいかもしれませんね。
> 
> 境界条件などは大してチェックしていないので、実地テスト(<, > などのテス
> トで良いかどうか)はお任せします。(interactive "_p") は直してください。

わざわざ新しい関数を書いていただいてありがとうございます。
ためしてみましたが、以前私のc-quickに対してあげた問題点が
両方解決できていました。まだ、ほとんど、使用していないですが
この二つの問題点が解決したこの新しい関数が
私の希望に一番添うものになりました。
もし、私の様なスクロールを望む人がいるならばこの関数を進めよう
と思います。

●"newline"がないため、bufferの最終行で改行すると、画面の中央にカーソルが飛んでしまう。

●bufferの最終行で C-n (c-quick-move-down)を実行すると、カーソ
ルのWindowでの位置が一段ずつ上がっていき最終的には一番上にきて
しまう。
Technical Details
Message-ID: <xl9ofrsg2fr.wl@cal.infonets.hiroshima-u.ac.jp>
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!feed.textport.net!newsfeed.media.kyoto-u.ac.jp!newsfeed.rim.or.jp!Q.T.Honey!news.join.ad.jp!news-sv.sinet!east-news.csi.ad.jp!hiroshima-u!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> <86zobjgds2.fsf@thelonious.smoke.or.jp> <xl98ziyg87z.wl@cal.infonets.hiroshima-u.ac.jp> <861yoqdk1t.fsf@thelonious.smoke.or.jp> <xl9wv6hit9t.wl@cal.infonets.hiroshima-u.ac.jp> <9g5qgq$co6$1@sn.asahi-net.email.ne.jp> <864rtl58lq.fsf@thelonious.smoke.or.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-13 02:42:03 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!feed.textport.net!newsfeed.media.kyoto-u.ac.jp!newsfeed.rim.or.jp!Q.T.Honey!news.join.ad.jp!news-sv.sinet!east-news.csi.ad.jp!hiroshima-u!not-for-mail
From: IMAI Hidetoshi <hidepin@infonets.hiroshima-u.ac.jp>
Newsgroups: fj.editor.xemacs
Subject: Re: スクロールの挙動
Date: Wed, 13 Jun 2001 18:21:44 +0900
Organization: Hiroshima University
Lines: 93
Message-ID: <xl9ofrsg2fr.wl@cal.infonets.hiroshima-u.ac.jp>
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>
 <86zobjgds2.fsf@thelonious.smoke.or.jp>
 <xl98ziyg87z.wl@cal.infonets.hiroshima-u.ac.jp>
 <861yoqdk1t.fsf@thelonious.smoke.or.jp>
 <xl9wv6hit9t.wl@cal.infonets.hiroshima-u.ac.jp>
 <9g5qgq$co6$1@sn.asahi-net.email.ne.jp>
 <864rtl58lq.fsf@thelonious.smoke.or.jp>
NNTP-Posting-Host: cal.infonets.hiroshima-u.ac.jp
Mime-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu")
Content-Type: text/plain; charset=ISO-2022-JP
X-Trace: news.hiroshima-u.ac.jp 992424106 3229 133.41.33.61 (13 Jun 2001 09:21:46 GMT)
X-Complaints-To: news-admin@hiroshima-u.ac.jp
NNTP-Posting-Date: 13 Jun 2001 09:21:46 GMT
To: Seiichi Namba <sn@asahi-net.email.ne.jp>
In-Reply-To: <864rtl58lq.fsf@thelonious.smoke.or.jp>
User-Agent: Wanderlust/2.4.1 (Stand By Me) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) MULE XEmacs/21.1 (patch 14) (Cuyahoga Valley) (i386--freebsd)