Mercurial > emacs
annotate lisp/scroll-bar.el @ 40818:1f2eaa535150
(dired-move-to-filename-regexp):
Do not distinguish between ASCII letters and non-ASCII characters.
Don't allow comma except in the form "month day, year".
Don't allow space between month name and comma.
Clean up the code that checks for trailing period, comma, and space.
Remove now-obsolete comments, and add more commentary about
Japanese dates.
Always gobble up trailing spaces, instead of doing it only sometimes.
author | Paul Eggert <eggert@twinsun.com> |
---|---|
date | Wed, 07 Nov 2001 21:52:44 +0000 |
parents | 253f761ad37b |
children | 4c0ca26cfc69 |
rev | line source |
---|---|
38412
253f761ad37b
Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents:
36803
diff
changeset
|
1 ;;; scroll-bar.el --- window system-independent scroll bar support |
1772 | 2 |
36803
4b1f1bdaf676
(toplevel): Test if `x-toolkit-scroll-bars' is
Gerd Moellmann <gerd@gnu.org>
parents:
34871
diff
changeset
|
3 ;; Copyright (C) 1993, 1994, 1995, 1999, 2000, 2001 |
4b1f1bdaf676
(toplevel): Test if `x-toolkit-scroll-bars' is
Gerd Moellmann <gerd@gnu.org>
parents:
34871
diff
changeset
|
4 ;; Free Software Foundation, Inc. |
1772 | 5 |
6 ;; Maintainer: FSF | |
7 ;; Keywords: hardware | |
8 | |
14169 | 9 ;; This file is part of GNU Emacs. |
1772 | 10 |
14169 | 11 ;; GNU Emacs is free software; you can redistribute it and/or modify |
12 ;; it under the terms of the GNU General Public License as published by | |
13 ;; the Free Software Foundation; either version 2, or (at your option) | |
14 ;; any later version. | |
1772 | 15 |
14169 | 16 ;; GNU Emacs is distributed in the hope that it will be useful, |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
1772 | 20 |
14169 | 21 ;; You should have received a copy of the GNU General Public License |
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
24 ;; Boston, MA 02111-1307, USA. | |
2233
fb0ed5a1d0f3
Add standard library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2232
diff
changeset
|
25 |
2315
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2233
diff
changeset
|
26 ;;; Commentary: |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2233
diff
changeset
|
27 |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2233
diff
changeset
|
28 ;; Window-system-independent bindings of mouse clicks on the scroll bar. |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2233
diff
changeset
|
29 ;; Presently emulates the scroll-bar behavior of xterm. |
14169 | 30 |
2315
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2233
diff
changeset
|
31 ;;; Code: |
9e7ec92a4fdf
Added or corrected Commentary headers
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2233
diff
changeset
|
32 |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1772
diff
changeset
|
33 (require 'mouse) |
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1772
diff
changeset
|
34 |
1772 | 35 |
36 ;;;; Utilities. | |
37 | |
7222
3dae5675cd3e
(scroll-bar-event-ratio): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4469
diff
changeset
|
38 (defun scroll-bar-event-ratio (event) |
3dae5675cd3e
(scroll-bar-event-ratio): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4469
diff
changeset
|
39 "Given a scroll bar event EVENT, return the scroll bar position as a ratio. |
3dae5675cd3e
(scroll-bar-event-ratio): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4469
diff
changeset
|
40 The value is a cons cell (PORTION . WHOLE) containing two integers |
3dae5675cd3e
(scroll-bar-event-ratio): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4469
diff
changeset
|
41 whose ratio gives the event's vertical position in the scroll bar, with 0 |
3dae5675cd3e
(scroll-bar-event-ratio): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4469
diff
changeset
|
42 referring to the top and 1 to the bottom." |
3dae5675cd3e
(scroll-bar-event-ratio): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4469
diff
changeset
|
43 (nth 2 event)) |
3dae5675cd3e
(scroll-bar-event-ratio): New function.
Richard M. Stallman <rms@gnu.org>
parents:
4469
diff
changeset
|
44 |
1981
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
45 (defun scroll-bar-scale (num-denom whole) |
1772 | 46 "Given a pair (NUM . DENOM) and WHOLE, return (/ (* NUM WHOLE) DENOM). |
1981
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
47 This is handy for scaling a position on a scroll bar into real units, |
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
48 like buffer positions. If SCROLL-BAR-POS is the (PORTION . WHOLE) pair |
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
49 from a scroll bar event, then (scroll-bar-scale SCROLL-BAR-POS |
1772 | 50 \(buffer-size)) is the position in the current buffer corresponding to |
1981
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
51 that scroll bar position." |
1772 | 52 ;; We multiply before we divide to maintain precision. |
53 ;; We use floating point because the product of a large buffer size | |
1981
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
54 ;; with a large scroll bar portion can easily overflow a lisp int. |
1772 | 55 (truncate (/ (* (float (car num-denom)) whole) (cdr num-denom)))) |
56 | |
57 | |
1954
059d99d03aae
* term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
58 ;;;; Helpful functions for enabling and disabling scroll bars. |
059d99d03aae
* term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
59 |
18480
f0c705a82dca
(scroll-bar-mode): Extra defvar to avoid warning.
Richard M. Stallman <rms@gnu.org>
parents:
18479
diff
changeset
|
60 (defvar scroll-bar-mode) |
f0c705a82dca
(scroll-bar-mode): Extra defvar to avoid warning.
Richard M. Stallman <rms@gnu.org>
parents:
18479
diff
changeset
|
61 |
18891
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
62 (defvar scroll-bar-mode-explicit nil |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
63 "Non-nil means `set-scroll-bar-mode' should really do something. |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
64 This is nil while loading `scroll-bar.el', and t afterward.") |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
65 |
20129
a68db1ead5cf
(set-scroll-bar-mode): Take just one arg.
Karl Heuer <kwzh@gnu.org>
parents:
20061
diff
changeset
|
66 (defun set-scroll-bar-mode-1 (ignore value) |
a68db1ead5cf
(set-scroll-bar-mode): Take just one arg.
Karl Heuer <kwzh@gnu.org>
parents:
20061
diff
changeset
|
67 (set-scroll-bar-mode value)) |
a68db1ead5cf
(set-scroll-bar-mode): Take just one arg.
Karl Heuer <kwzh@gnu.org>
parents:
20061
diff
changeset
|
68 |
a68db1ead5cf
(set-scroll-bar-mode): Take just one arg.
Karl Heuer <kwzh@gnu.org>
parents:
20061
diff
changeset
|
69 (defun set-scroll-bar-mode (value) |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
70 "Set `scroll-bar-mode' to VALUE and put the new value into effect." |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
71 (setq scroll-bar-mode value) |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
72 |
18891
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
73 (when scroll-bar-mode-explicit |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
74 ;; Apply it to default-frame-alist. |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
75 (let ((parameter (assq 'vertical-scroll-bars default-frame-alist))) |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
76 (if (consp parameter) |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
77 (setcdr parameter scroll-bar-mode) |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
78 (setq default-frame-alist |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
79 (cons (cons 'vertical-scroll-bars scroll-bar-mode) |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
80 default-frame-alist)))) |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
81 |
18891
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
82 ;; Apply it to existing frames. |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
83 (let ((frames (frame-list))) |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
84 (while frames |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
85 (modify-frame-parameters |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
86 (car frames) |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
87 (list (cons 'vertical-scroll-bars scroll-bar-mode))) |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
88 (setq frames (cdr frames)))))) |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
89 |
21734
807f4e7fa560
(scroll-bar-mode, toggle-scroll-bar): By default,
Geoff Voelker <voelker@cs.washington.edu>
parents:
21427
diff
changeset
|
90 (defcustom scroll-bar-mode |
807f4e7fa560
(scroll-bar-mode, toggle-scroll-bar): By default,
Geoff Voelker <voelker@cs.washington.edu>
parents:
21427
diff
changeset
|
91 (if (eq system-type 'windows-nt) 'right 'left) |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
92 "*Specify whether to have vertical scroll bars, and on which side. |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
93 Possible values are nil (no scroll bars), `left' (scroll bars on left) |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
94 and `right' (scroll bars on right). |
22908
53b018832269
(scroll-bar-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21734
diff
changeset
|
95 To set this variable in a Lisp program, use `set-scroll-bar-mode' |
53b018832269
(scroll-bar-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21734
diff
changeset
|
96 to make it take real effect. |
53b018832269
(scroll-bar-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21734
diff
changeset
|
97 Setting the variable with a customization buffer also takes effect." |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
98 :type '(choice (const :tag "none (nil)") |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
99 (const left) |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
100 (const right)) |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
101 :group 'frames |
20129
a68db1ead5cf
(set-scroll-bar-mode): Take just one arg.
Karl Heuer <kwzh@gnu.org>
parents:
20061
diff
changeset
|
102 :set 'set-scroll-bar-mode-1) |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
103 |
18891
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
104 ;; We just set scroll-bar-mode, but that was the default. |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
105 ;; If it is set again, that is for real. |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
106 (setq scroll-bar-mode-explicit t) |
86c0d896480e
(scroll-bar-mode-explicit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
18480
diff
changeset
|
107 |
1954
059d99d03aae
* term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
108 (defun scroll-bar-mode (flag) |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
109 "Toggle display of vertical scroll bars on all frames. |
1954
059d99d03aae
* term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
110 This command applies to all frames that exist and frames to be |
059d99d03aae
* term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
111 created in the future. |
059d99d03aae
* term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
112 With a numeric argument, if the argument is negative, |
059d99d03aae
* term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
113 turn off scroll bars; otherwise, turn on scroll bars." |
059d99d03aae
* term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
114 (interactive "P") |
4469
abb585cf9188
(scroll-bar-mode): If FLAG is non-nil, set it to its prefix-numeric-value.
Roland McGrath <roland@gnu.org>
parents:
3613
diff
changeset
|
115 (if flag (setq flag (prefix-numeric-value flag))) |
3613
f37a9c897699
* scroll-bar.el (scroll-bar-mode): Variable deleted.
Jim Blandy <jimb@redhat.com>
parents:
3588
diff
changeset
|
116 |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
117 ;; Tweedle the variable according to the argument. |
20129
a68db1ead5cf
(set-scroll-bar-mode): Take just one arg.
Karl Heuer <kwzh@gnu.org>
parents:
20061
diff
changeset
|
118 (set-scroll-bar-mode (if (null flag) (not scroll-bar-mode) |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
119 (and (or (not (numberp flag)) (>= flag 0)) |
21734
807f4e7fa560
(scroll-bar-mode, toggle-scroll-bar): By default,
Geoff Voelker <voelker@cs.washington.edu>
parents:
21427
diff
changeset
|
120 (if (eq system-type 'windows-nt) 'right 'left))))) |
3613
f37a9c897699
* scroll-bar.el (scroll-bar-mode): Variable deleted.
Jim Blandy <jimb@redhat.com>
parents:
3588
diff
changeset
|
121 |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
122 (defun toggle-scroll-bar (arg) |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
123 "Toggle whether or not the selected frame has vertical scroll bars. |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
124 With arg, turn vertical scroll bars on if and only if arg is positive. |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
125 The variable `scroll-bar-mode' controls which side the scroll bars are on |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
126 when they are turned on; if it is nil, they go on the left." |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
127 (interactive "P") |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
128 (if (null arg) |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
129 (setq arg |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
130 (if (cdr (assq 'vertical-scroll-bars |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
131 (frame-parameters (selected-frame)))) |
20061
fb0d3082b28c
(toggle-scroll-bar): Call prefix-numeric-value.
Karl Heuer <kwzh@gnu.org>
parents:
19683
diff
changeset
|
132 -1 1)) |
fb0d3082b28c
(toggle-scroll-bar): Call prefix-numeric-value.
Karl Heuer <kwzh@gnu.org>
parents:
19683
diff
changeset
|
133 (setq arg (prefix-numeric-value arg))) |
21734
807f4e7fa560
(scroll-bar-mode, toggle-scroll-bar): By default,
Geoff Voelker <voelker@cs.washington.edu>
parents:
21427
diff
changeset
|
134 (modify-frame-parameters |
807f4e7fa560
(scroll-bar-mode, toggle-scroll-bar): By default,
Geoff Voelker <voelker@cs.washington.edu>
parents:
21427
diff
changeset
|
135 (selected-frame) |
807f4e7fa560
(scroll-bar-mode, toggle-scroll-bar): By default,
Geoff Voelker <voelker@cs.washington.edu>
parents:
21427
diff
changeset
|
136 (list (cons 'vertical-scroll-bars |
807f4e7fa560
(scroll-bar-mode, toggle-scroll-bar): By default,
Geoff Voelker <voelker@cs.washington.edu>
parents:
21427
diff
changeset
|
137 (if (> arg 0) |
807f4e7fa560
(scroll-bar-mode, toggle-scroll-bar): By default,
Geoff Voelker <voelker@cs.washington.edu>
parents:
21427
diff
changeset
|
138 (or scroll-bar-mode |
807f4e7fa560
(scroll-bar-mode, toggle-scroll-bar): By default,
Geoff Voelker <voelker@cs.washington.edu>
parents:
21427
diff
changeset
|
139 (if (eq system-type 'windows-nt) 'right 'left))))))) |
3613
f37a9c897699
* scroll-bar.el (scroll-bar-mode): Variable deleted.
Jim Blandy <jimb@redhat.com>
parents:
3588
diff
changeset
|
140 |
18479
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
141 (defun toggle-horizontal-scroll-bar (arg) |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
142 "Toggle whether or not the selected frame has horizontal scroll bars. |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
143 With arg, turn horizontal scroll bars on if and only if arg is positive. |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
144 Horizontal scroll bars aren't implemented yet." |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
145 (interactive "P") |
dedaafd841c0
(toggle-scroll-bar): Moved from frame.el.
Richard M. Stallman <rms@gnu.org>
parents:
15264
diff
changeset
|
146 (error "Horizontal scroll bars aren't implemented yet")) |
1954
059d99d03aae
* term/x-win.el (scroll-bar-mode, scroll-bar-mode): Move these
Jim Blandy <jimb@redhat.com>
parents:
1821
diff
changeset
|
147 |
1981
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
148 ;;;; Buffer navigation using the scroll bar. |
1772 | 149 |
2698
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
150 ;;; This was used for up-events on button 2, but no longer. |
1981
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
151 (defun scroll-bar-set-window-start (event) |
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
152 "Set the window start according to where the scroll bar is dragged. |
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
153 EVENT should be a scroll bar click or drag event." |
1772 | 154 (interactive "e") |
1821
04fb1d3d6992
JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents:
1772
diff
changeset
|
155 (let* ((end-position (event-end event)) |
1772 | 156 (window (nth 0 end-position)) |
157 (portion-whole (nth 2 end-position))) | |
158 (save-excursion | |
159 (set-buffer (window-buffer window)) | |
160 (save-excursion | |
3588
9685f1d5545b
* scroll-bar.el (scroll-bar-set-window-start): Remember that the
Jim Blandy <jimb@redhat.com>
parents:
3508
diff
changeset
|
161 (goto-char (+ (point-min) |
9685f1d5545b
* scroll-bar.el (scroll-bar-set-window-start): Remember that the
Jim Blandy <jimb@redhat.com>
parents:
3508
diff
changeset
|
162 (scroll-bar-scale portion-whole |
9685f1d5545b
* scroll-bar.el (scroll-bar-set-window-start): Remember that the
Jim Blandy <jimb@redhat.com>
parents:
3508
diff
changeset
|
163 (- (point-max) (point-min))))) |
1772 | 164 (beginning-of-line) |
165 (set-window-start window (point)))))) | |
166 | |
15215
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
167 (defun scroll-bar-drag-position (portion-whole) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
168 "Calculate new window start for drag event." |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
169 (save-excursion |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
170 (goto-char (+ (point-min) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
171 (scroll-bar-scale portion-whole |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
172 (- (point-max) (point-min))))) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
173 (beginning-of-line) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
174 (point))) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
175 |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
176 (defun scroll-bar-maybe-set-window-start (event) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
177 "Set the window start according to where the scroll bar is dragged. |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
178 Only change window start if the new start is substantially different. |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
179 EVENT should be a scroll bar click or drag event." |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
180 (interactive "e") |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
181 (let* ((end-position (event-end event)) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
182 (window (nth 0 end-position)) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
183 (portion-whole (nth 2 end-position)) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
184 (next-portion-whole (cons (1+ (car portion-whole)) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
185 (cdr portion-whole))) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
186 portion-start |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
187 next-portion-start |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
188 (current-start (window-start window))) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
189 (save-excursion |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
190 (set-buffer (window-buffer window)) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
191 (setq portion-start (scroll-bar-drag-position portion-whole)) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
192 (setq next-portion-start (max |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
193 (scroll-bar-drag-position next-portion-whole) |
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
194 (1+ portion-start))) |
19683
af32e336d12c
(scroll-bar-maybe-set-window-start): Change window
Geoff Voelker <voelker@cs.washington.edu>
parents:
18891
diff
changeset
|
195 (if (or (>= current-start next-portion-start) |
15215
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
196 (< current-start portion-start)) |
15264
0eb55cad57c6
(scroll-bar-maybe-set-window-start): Always set
Karl Heuer <kwzh@gnu.org>
parents:
15215
diff
changeset
|
197 (set-window-start window portion-start) |
0eb55cad57c6
(scroll-bar-maybe-set-window-start): Always set
Karl Heuer <kwzh@gnu.org>
parents:
15215
diff
changeset
|
198 ;; Always set window start, to ensure scroll bar position is updated. |
0eb55cad57c6
(scroll-bar-maybe-set-window-start): Always set
Karl Heuer <kwzh@gnu.org>
parents:
15215
diff
changeset
|
199 (set-window-start window current-start))))) |
15215
681866822119
(scroll-bar-drag-position): New function.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
200 |
2698
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
201 ;; Scroll the window to the proper position for EVENT. |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
202 (defun scroll-bar-drag-1 (event) |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
203 (let* ((start-position (event-start event)) |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
204 (window (nth 0 start-position)) |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
205 (portion-whole (nth 2 start-position))) |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
206 (save-excursion |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
207 (set-buffer (window-buffer window)) |
3508 | 208 ;; Calculate position relative to the accessible part of the buffer. |
209 (goto-char (+ (point-min) | |
210 (scroll-bar-scale portion-whole | |
211 (- (point-max) (point-min))))) | |
2698
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
212 (beginning-of-line) |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
213 (set-window-start window (point))))) |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
214 |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
215 (defun scroll-bar-drag (event) |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
216 "Scroll the window by dragging the scroll bar slider. |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
217 If you click outside the slider, the window scrolls to bring the slider there." |
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
218 (interactive "e") |
11145
fb77829412af
(scroll-bar-drag): Bind echo-keystrokes to 0.
Richard M. Stallman <rms@gnu.org>
parents:
10555
diff
changeset
|
219 (let* (done |
21427
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
220 (echo-keystrokes 0) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
221 (end-position (event-end event)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
222 (window (nth 0 end-position)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
223 (before-scroll)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
224 (with-current-buffer (window-buffer window) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
225 (setq before-scroll point-before-scroll)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
226 (save-selected-window |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
227 (select-window window) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
228 (setq before-scroll |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
229 (or before-scroll (point)))) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
230 (scroll-bar-drag-1 event) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
231 (track-mouse |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
232 (while (not done) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
233 (setq event (read-event)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
234 (if (eq (car-safe event) 'mouse-movement) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
235 (setq event (read-event))) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
236 (cond ((eq (car-safe event) 'scroll-bar-movement) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
237 (scroll-bar-drag-1 event)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
238 (t |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
239 ;; Exit when we get the drag event; ignore that event. |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
240 (setq done t))))) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
241 (sit-for 0) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
242 (with-current-buffer (window-buffer window) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
243 (setq point-before-scroll before-scroll)))) |
2698
6940c6b5d988
(scroll-bar-drag, scroll-bar-drag-1): New functions.
Richard M. Stallman <rms@gnu.org>
parents:
2315
diff
changeset
|
244 |
1981
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
245 (defun scroll-bar-scroll-down (event) |
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
246 "Scroll the window's top line down to the location of the scroll bar click. |
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
247 EVENT should be a scroll bar click." |
1772 | 248 (interactive "e") |
21427
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
249 (let* ((end-position (event-end event)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
250 (window (nth 0 end-position)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
251 (before-scroll)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
252 (with-current-buffer (window-buffer window) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
253 (setq before-scroll point-before-scroll)) |
23248
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
254 (unwind-protect |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
255 (save-selected-window |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
256 (let ((portion-whole (nth 2 end-position))) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
257 (select-window window) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
258 (setq before-scroll |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
259 (or before-scroll (point))) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
260 (scroll-down |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
261 (scroll-bar-scale portion-whole (1- (window-height))))) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
262 (sit-for 0)) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
263 (with-current-buffer (window-buffer window) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
264 (setq point-before-scroll before-scroll))))) |
1772 | 265 |
1981
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
266 (defun scroll-bar-scroll-up (event) |
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
267 "Scroll the line next to the scroll bar click to the top of the window. |
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
268 EVENT should be a scroll bar click." |
1772 | 269 (interactive "e") |
21427
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
270 (let* ((end-position (event-end event)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
271 (window (nth 0 end-position)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
272 (before-scroll)) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
273 (with-current-buffer (window-buffer window) |
b5a5ac474741
(scroll-bar-drag): Set point-before-scroll
Richard M. Stallman <rms@gnu.org>
parents:
20129
diff
changeset
|
274 (setq before-scroll point-before-scroll)) |
23248
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
275 (unwind-protect |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
276 (save-selected-window |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
277 (let ((portion-whole (nth 2 end-position))) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
278 (select-window window) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
279 (setq before-scroll |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
280 (or before-scroll (point))) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
281 (scroll-up |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
282 (scroll-bar-scale portion-whole (1- (window-height))))) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
283 (sit-for 0)) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
284 (with-current-buffer (window-buffer window) |
6119bb0ddd69
(scroll-bar-scroll-down, scroll-bar-scroll-up):
Karl Heuer <kwzh@gnu.org>
parents:
22908
diff
changeset
|
285 (setq point-before-scroll before-scroll))))) |
1772 | 286 |
287 | |
24981 | 288 ;;; Tookit scroll bars. |
289 | |
290 (defun scroll-bar-toolkit-scroll (event) | |
291 (interactive "e") | |
292 (let* ((end-position (event-end event)) | |
293 (window (nth 0 end-position)) | |
294 (part (nth 4 end-position)) | |
295 before-scroll) | |
27421
34b81c946198
(scroll-bar-timer): Variable removed.
Gerd Moellmann <gerd@gnu.org>
parents:
26510
diff
changeset
|
296 (cond ((eq part 'end-scroll)) |
24981 | 297 (t |
298 (with-current-buffer (window-buffer window) | |
299 (setq before-scroll point-before-scroll)) | |
300 (save-selected-window | |
301 (select-window window) | |
302 (setq before-scroll (or before-scroll (point))) | |
303 (cond ((eq part 'above-handle) | |
304 (scroll-up '-)) | |
305 ((eq part 'below-handle) | |
306 (scroll-up nil)) | |
26510
6866d2a9a421
(scroll-bar-toolkit-scroll): add handling of the `ratio'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24981
diff
changeset
|
307 ((eq part 'ratio) |
6866d2a9a421
(scroll-bar-toolkit-scroll): add handling of the `ratio'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24981
diff
changeset
|
308 (let* ((portion-whole (nth 2 end-position)) |
6866d2a9a421
(scroll-bar-toolkit-scroll): add handling of the `ratio'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24981
diff
changeset
|
309 (lines (scroll-bar-scale portion-whole |
6866d2a9a421
(scroll-bar-toolkit-scroll): add handling of the `ratio'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24981
diff
changeset
|
310 (1- (window-height))))) |
6866d2a9a421
(scroll-bar-toolkit-scroll): add handling of the `ratio'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24981
diff
changeset
|
311 (scroll-up (cond ((not (zerop lines)) lines) |
6866d2a9a421
(scroll-bar-toolkit-scroll): add handling of the `ratio'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24981
diff
changeset
|
312 ((< (car portion-whole) 0) -1) |
6866d2a9a421
(scroll-bar-toolkit-scroll): add handling of the `ratio'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
24981
diff
changeset
|
313 (t 1))))) |
24981 | 314 ((eq part 'up) |
315 (scroll-up -1)) | |
316 ((eq part 'down) | |
317 (scroll-up 1)) | |
318 ((eq part 'top) | |
319 (set-window-start window (point-min))) | |
320 ((eq part 'bottom) | |
321 (goto-char (point-max)) | |
322 (recenter)) | |
323 ((eq part 'handle) | |
324 (scroll-bar-drag-1 event)))) | |
325 (sit-for 0) | |
326 (with-current-buffer (window-buffer window) | |
327 (setq point-before-scroll before-scroll)))))) | |
328 | |
329 | |
330 | |
1772 | 331 ;;;; Bindings. |
332 | |
333 ;;; For now, we'll set things up to work like xterm. | |
36803
4b1f1bdaf676
(toplevel): Test if `x-toolkit-scroll-bars' is
Gerd Moellmann <gerd@gnu.org>
parents:
34871
diff
changeset
|
334 (cond ((and (boundp 'x-toolkit-scroll-bars) x-toolkit-scroll-bars) |
24981 | 335 (global-set-key [vertical-scroll-bar mouse-1] |
336 'scroll-bar-toolkit-scroll)) | |
337 (t | |
338 (global-set-key [vertical-scroll-bar mouse-1] | |
339 'scroll-bar-scroll-up) | |
340 (global-set-key [vertical-scroll-bar drag-mouse-1] | |
341 'scroll-bar-scroll-up) | |
342 (global-set-key [vertical-scroll-bar down-mouse-2] | |
343 'scroll-bar-drag) | |
344 (global-set-key [vertical-scroll-bar mouse-3] | |
345 'scroll-bar-scroll-down) | |
346 (global-set-key [vertical-scroll-bar drag-mouse-3] | |
347 'scroll-bar-scroll-down))) | |
1772 | 348 |
349 | |
1973
3a08dacd8bfb
These are in preparation for a more thorough renaming to occur soon.
Jim Blandy <jimb@redhat.com>
parents:
1954
diff
changeset
|
350 (provide 'scroll-bar) |
1772 | 351 |
1981
bde0ca7e33b3
Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents:
1973
diff
changeset
|
352 ;;; scroll-bar.el ends here |