annotate lisp/scroll-all.el @ 33697:e7765cb122c3

(Fw32_set_clipboard_data): Save a copy of what is put on the clipboard. (Fw32_get_clipboard_data): Compare data on clipboard with saved copy of what Emacs last put there. If they are the same, do not use the clipboard copy to avoid losing data due to coding conversions.
author Jason Rumney <jasonr@gnu.org>
date Tue, 21 Nov 2000 19:18:13 +0000
parents c8f856ed18d0
children b174db545cfd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22388
2d0bece94ee7 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 17598
diff changeset
1 ;;; scroll-all.el -- scroll all buffers together minor mode
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3 ;; Copyright (C) 1997 Free Software Foundation, Inc.
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: Gary D. Foster <Gary.Foster@corp.sun.com>
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Keywords: scroll crisp brief lock
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; Boston, MA 02111-1307, USA.
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;; Commentary
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;; This mode allows multiple buffers to be 'locked' so that scrolling
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;; up or down lines in any buffer causes all the buffers to mirror
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;; the scrolling. It hooks into the post-command-hook to check for
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; potential scrolling commands and if we're locked, mirrors them in all
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; windows. This allows us to grab line-at-a-time scrolling as well as
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;; screen-at-a-time scrolling, and doesn't remap any of the keyboard
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; commands to do it.
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
34 ;; You can enable and disable this mode with the 'scroll-all-mode' command.
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;; Suggestions/ideas from:
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; Rick Macdonald <rickm@vsl.com>
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;; Anders Lindgren <andersl@csd.uu.se>
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 (defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version))
33422
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
41
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
42 ;;;###autoload
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
43 (defcustom scroll-all-mode nil
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
44 "Control/track scroll locking.
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
45
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
46 Setting this variable directly does not take effect;
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
47 use either M-x customize or the function `scroll-all-mode'."
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
48 :set (lambda (symbol value) (scroll-all-mode (if value 1 0)))
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
49 :initialize 'custom-initialize-default
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
50 :require 'scroll-all
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
51 :type 'boolean
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
52 :group 'windows)
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
53
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 (if running-xemacs
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
55 (add-minor-mode 'scroll-all-mode " *SL*")
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
56 (or (assq 'scroll-all-mode-mode minor-mode-alist)
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 (setq minor-mode-alist
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
58 (cons '(scroll-all-mode-mode " *SL*") minor-mode-alist))))
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
60 (defun scroll-all-scroll-down-all (arg)
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
61 "Scroll down all visible windows."
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 (interactive "P")
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 (let ((num-windows (count-windows))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 (count 1))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 (if (> num-windows 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ( progn (other-window 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 (while (< count num-windows)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 (if (not (eq (point) (point-max)))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 (progn (call-interactively 'next-line)))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 (other-window 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 (setq count (1+ count)))))))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
73 (defun scroll-all-scroll-up-all (arg)
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
74 "Scroll up all visible windows."
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 (interactive "P")
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 (let ((num-windows (count-windows))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 (count 1))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 (if (> num-windows 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ( progn (other-window 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 (while (< count num-windows)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 (if (not (eq (point) (point-min)))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 (progn (call-interactively 'previous-line)))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 (other-window 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 (setq count (1+ count)))))))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
86 (defun scroll-all-page-down-all (arg)
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
87 "Page down in all visible windows."
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 (interactive "P")
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 (let ((num-windows (count-windows))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 (count 1))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 (if (> num-windows 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 (progn (other-window 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 (while (< count num-windows)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 (call-interactively 'fkey-scroll-up)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 (other-window 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 (setq count (1+ count)))))))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
98 (defun scroll-all-page-up-all (arg)
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
99 "Page up in all visible windows."
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 (interactive "P")
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 (let ((num-windows (count-windows))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 (count 1))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 (if (> num-windows 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 (progn (other-window 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 (while (< count num-windows)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 (call-interactively 'fkey-scroll-down)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 (other-window 1)
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 (setq count (1+ count)))))))
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
111 (defun scroll-all-check-to-scroll ()
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
112 "Check `last-command' to see if a scroll was done."
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 (if (eq this-command 'next-line)
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
114 (call-interactively 'scroll-all-scroll-down-all))
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 (if (eq this-command 'previous-line)
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
116 (call-interactively 'scroll-all-scroll-up-all))
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 (if (eq this-command 'fkey-scroll-up)
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
118 (call-interactively 'scroll-all-page-down-all))
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 (if (eq this-command 'fkey-scroll-down)
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
120 (call-interactively 'scroll-all-page-up-all)))
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121
33422
c8f856ed18d0 (scroll-all-mode): Customize variable. Add
Dave Love <fx@gnu.org>
parents: 22388
diff changeset
122 ;;;###autoload
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
123 (defun scroll-all-mode (arg)
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
124 "Toggle Scroll-All minor mode."
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 (interactive "P")
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
126 (setq scroll-all-mode (not scroll-all-mode))
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 (cond
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
128 ((eq scroll-all-mode 't)
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
129 (add-hook 'post-command-hook 'scroll-all-check-to-scroll))
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
130 ((eq scroll-all-mode 'nil)
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
131 (remove-hook 'post-command-hook 'scroll-all-check-to-scroll))))
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132
17598
b3016633740a Renamed from scroll-lock.el.
Richard M. Stallman <rms@gnu.org>
parents: 17597
diff changeset
133 (provide 'scroll-all)
17597
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134
a60da52b8ea2 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 ;; scroll-all.el ends here