Article View: fj.editor.xemacs
Article #246Re: スクロールの挙動
From: IMAI Hidetoshi
Date: Wed, 13 Jun 2001 09:21
Date: Wed, 13 Jun 2001 09:21
91 lines
5534 bytes
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-mailReferences:
<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)