annotate lisp/view.el @ 1016:817b0ce337d7

* window.c (Fset_window_configuration): Removed #if 0'd code which assumes that minibuf_window is on the same frame as the window configuration. Removed special case for windows whose prevs point to themselves. * window.c (Fset_window_configuration): Rename the argument from ARG to CONFIGURATION, so it matches the docstring. The make-docfile program cares. * window.c [MULTI_FRAME] (syms_of_window): Don't staticpro minibuf_window; the frame list will take care of it. * window.c (window_loop): This used to keep track of the first window processed and wait until we came back around to it. Sadly, this doesn't work if that window gets deleted. So instead, use Fprevious_window to find the last window to process, and loop until we've done that one. * window.c [not MULTI_FRAME] (init_window_once): Don't forget to set the `mini_p' flag on the new minibuffer window to t. * window.c (Fwindow_at): Don't check the type of the frame argument. * window.c [not MULTI_FRAME] (window_loop): Set frame to zero, instead of trying to decode it. * window.c (init_window_once): Initialize minibuf_window before FRAME_ROOT_WINDOW, so the latter actually points to something.
author Jim Blandy <jimb@redhat.com>
date Wed, 19 Aug 1992 06:40:02 +0000
parents f23882d7315a
children d98c49df2acd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
1 ;;; view.el --- peruse file or buffer without editing.
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
2
840
113281b361ec *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
3 ;; Copyright (C) 1985, 1989 Free Software Foundation, Inc.
113281b361ec *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
5 ;; Author: K. Shane Hartman
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
6 ;; Maintainer: FSF
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
a25bf36b0410 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
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
24 ;;; Code:
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 (defvar view-mode-map nil)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 (if view-mode-map
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 nil
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 (setq view-mode-map (make-keymap))
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
30 (fillarray (nth 1 view-mode-map) 'View-undefined)
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 (define-key view-mode-map "\C-c" 'view-exit)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 (define-key view-mode-map "\C-z" 'suspend-emacs)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 (define-key view-mode-map "q" 'view-exit)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 (define-key view-mode-map "-" 'negative-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 (define-key view-mode-map "0" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 (define-key view-mode-map "1" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 (define-key view-mode-map "2" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 (define-key view-mode-map "3" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 (define-key view-mode-map "4" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 (define-key view-mode-map "5" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 (define-key view-mode-map "6" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 (define-key view-mode-map "7" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 (define-key view-mode-map "8" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 (define-key view-mode-map "9" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 (define-key view-mode-map "\C-u" 'universal-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 (define-key view-mode-map "\e" nil)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 (define-key view-mode-map "\C-x" 'Control-X-prefix)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 (define-key view-mode-map "\e-" 'negative-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 (define-key view-mode-map "\e0" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 (define-key view-mode-map "\e1" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 (define-key view-mode-map "\e2" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 (define-key view-mode-map "\e3" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 (define-key view-mode-map "\e4" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 (define-key view-mode-map "\e5" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 (define-key view-mode-map "\e6" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 (define-key view-mode-map "\e7" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 (define-key view-mode-map "\e8" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 (define-key view-mode-map "\e9" 'digit-argument)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 (define-key view-mode-map "<" 'beginning-of-buffer)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 (define-key view-mode-map ">" 'end-of-buffer)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 (define-key view-mode-map "\ev" 'View-scroll-lines-backward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 (define-key view-mode-map "\C-v" 'View-scroll-lines-forward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 (define-key view-mode-map " " 'View-scroll-lines-forward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 (define-key view-mode-map "\177" 'View-scroll-lines-backward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 (define-key view-mode-map "\n" 'View-scroll-one-more-line)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 (define-key view-mode-map "\r" 'View-scroll-one-more-line)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 (define-key view-mode-map "\C-l" 'recenter)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 (define-key view-mode-map "z" 'View-scroll-lines-forward-set-scroll-size)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 (define-key view-mode-map "g" 'View-goto-line)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 (define-key view-mode-map "=" 'what-line)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 (define-key view-mode-map "." 'set-mark-command)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 (define-key view-mode-map "\C-@" 'set-mark-command)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 (define-key view-mode-map "'" 'View-back-to-mark)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 (define-key view-mode-map "@" 'View-back-to-mark)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 (define-key view-mode-map "x" 'exchange-point-and-mark)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 (define-key view-mode-map "h" 'Helper-describe-bindings)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 (define-key view-mode-map "?" 'Helper-describe-bindings)
930
1dac458b5117 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 909
diff changeset
78 (define-key view-mode-map (char-to-string help-char) 'Helper-help)
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 (define-key view-mode-map "\C-n" 'next-line)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 (define-key view-mode-map "\C-p" 'previous-line)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 (define-key view-mode-map "\C-s" 'isearch-forward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 (define-key view-mode-map "\C-r" 'isearch-backward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 (define-key view-mode-map "s" 'isearch-forward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 (define-key view-mode-map "r" 'isearch-backward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 (define-key view-mode-map "/" 'View-search-regexp-forward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 (define-key view-mode-map "\\" 'View-search-regexp-backward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; This conflicts with the standard binding of isearch-regexp-forward
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 (define-key view-mode-map "\e\C-s" 'View-search-regexp-forward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 (define-key view-mode-map "\e\C-r" 'View-search-regexp-backward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 (define-key view-mode-map "n" 'View-search-last-regexp-forward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 (define-key view-mode-map "p" 'View-search-last-regexp-backward)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 )
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 44
diff changeset
95 ;;;###autoload
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 (defun view-file (file-name)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 "View FILE in View mode, returning to previous buffer when done.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 The usual Emacs commands are not available; instead,
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 a special set of commands (mostly letters and punctuation)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 are defined for moving around in the buffer.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 Space scrolls forward, Delete scrolls backward.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 For list of all View commands, type ? or h while viewing.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 Calls the value of view-hook if that is non-nil."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 (interactive "fView file: ")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 (let ((old-buf (current-buffer))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 (had-a-buf (get-file-buffer file-name))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 (buf-to-view (find-file-noselect file-name)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 (switch-to-buffer buf-to-view t)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 (view-mode old-buf
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 (and (not had-a-buf) (not (buffer-modified-p buf-to-view))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 'kill-buffer))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 44
diff changeset
114 ;;;###autoload
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
115 (defun view-file-other-window (file-name)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
116 "View FILE in View mode in other window.
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
117 Return to previous buffer when done.
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
118 The usual Emacs commands are not available; instead,
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
119 a special set of commands (mostly letters and punctuation)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
120 are defined for moving around in the buffer.
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
121 Space scrolls forward, Delete scrolls backward.
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
122 For list of all View commands, type ? or h while viewing.
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
123
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
124 Calls the value of view-hook if that is non-nil."
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
125 (interactive "fView file: ")
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
126 (let ((old-arrangement (current-window-configuration))
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
127 (had-a-buf (get-file-buffer file-name))
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
128 (buf-to-view (find-file-noselect file-name)))
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
129 (switch-to-buffer-other-window buf-to-view)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
130 (view-mode old-arrangement
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
131 (and (not had-a-buf) (not (buffer-modified-p buf-to-view))
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
132 'kill-buffer))))
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
133
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
134 ;;;###autoload
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 (defun view-buffer (buffer-name)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 "View BUFFER in View mode, returning to previous buffer when done.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 The usual Emacs commands are not available; instead,
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 a special set of commands (mostly letters and punctuation)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 are defined for moving around in the buffer.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 Space scrolls forward, Delete scrolls backward.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 For list of all View commands, type ? or h while viewing.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 Calls the value of view-hook if that is non-nil."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 (interactive "bView buffer: ")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 (let ((old-buf (current-buffer)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 (switch-to-buffer buffer-name t)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 (view-mode old-buf nil)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 44
diff changeset
149 ;;;###autoload
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
150 (defun view-buffer-other-window (buffer-name not-return)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
151 "View BUFFER in View mode in another window,
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
152 returning to original buffer when done ONLY if
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
153 prefix argument not-return is nil (as by default).
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
154 The usual Emacs commands are not available; instead,
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
155 a special set of commands (mostly letters and punctuation)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
156 are defined for moving around in the buffer.
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
157 Space scrolls forward, Delete scrolls backward.
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
158 For list of all View commands, type ? or h while viewing.
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
159
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
160 Calls the value of view-hook if that is non-nil."
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
161 (interactive \"bView buffer:\\nP\")
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
162 (let ((return-to (and not-return (current-window-configuration))))
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
163 (switch-to-buffer-other-window buffer-name)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
164 (view-mode return-to)))
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
165
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
166 ;;;###autoload
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 (defun view-mode (&optional prev-buffer action)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 "Major mode for viewing text but not editing it.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 Letters do not insert themselves. Instead these commands are provided.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 Most commands take prefix arguments. Commands dealing with lines
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 default to \"scroll size\" lines (initially size of window).
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 Search commands default to a repeat count of one.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 M-< or < move to beginning of buffer.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 M-> or > move to end of buffer.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 C-v or Space scroll forward lines.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 M-v or DEL scroll backward lines.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 CR or LF scroll forward one line (backward with prefix argument).
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 z like Space except set number of lines for further
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 scrolling commands to scroll by.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 C-u and Digits provide prefix arguments. `-' denotes negative argument.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 = prints the current line number.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 g goes to line given by prefix argument.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 / or M-C-s searches forward for regular expression
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 \\ or M-C-r searches backward for regular expression.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 n searches forward for last regular expression.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 p searches backward for last regular expression.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 C-@ or . set the mark.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 x exchanges point and mark.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 C-s or s do forward incremental search.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 C-r or r do reverse incremental search.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 @ or ' return to mark and pops mark ring.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 Mark ring is pushed at start of every
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 successful search and when jump to line to occurs.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 The mark is set on jump to buffer start or end.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 ? or h provide help message (list of commands).
930
1dac458b5117 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 909
diff changeset
196 \\[Helper-help] provides help (list of commands or description of a command).
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 C-n moves down lines vertically.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 C-p moves upward lines vertically.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 C-l recenters the screen.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 q or C-c exit view-mode and return to previous buffer.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 Entry to this mode calls the value of view-hook if non-nil.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 \\{view-mode-map}"
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 ; Not interactive because dangerous things happen
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 ; if you call it without passing a buffer as argument
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 ; and they are not easy to fix.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 ; (interactive)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 (make-local-variable 'view-old-mode-line-buffer-identification)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 (setq view-old-mode-line-buffer-identification
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 mode-line-buffer-identification)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 (make-local-variable 'view-old-buffer-read-only)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 (setq view-old-buffer-read-only buffer-read-only)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 (make-local-variable 'view-old-mode-name)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 (setq view-old-mode-name mode-name)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 (make-local-variable 'view-old-major-mode)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 (setq view-old-major-mode major-mode)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 (make-local-variable 'view-old-local-map)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 (setq view-old-local-map (current-local-map))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 (make-local-variable 'view-old-Helper-return-blurb)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 (setq view-old-Helper-return-blurb
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 (and (boundp 'Helper-return-blurb) Helper-return-blurb))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 (setq buffer-read-only t)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 (setq mode-line-buffer-identification
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 (list
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 (if (buffer-file-name)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 "Viewing %f"
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 "Viewing %b")))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 (setq mode-name "View")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 (setq major-mode 'view-mode)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 (setq Helper-return-blurb
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 (format "continue viewing %s"
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 (if (buffer-file-name)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 (file-name-nondirectory (buffer-file-name))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 (buffer-name))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 (make-local-variable 'view-exit-action)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 (setq view-exit-action action)
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
239 (make-local-variable 'view-return-here)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
240 (setq view-return-here prev-buffer)
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 (make-local-variable 'view-exit-position)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 (setq view-exit-position (point-marker))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 (make-local-variable 'view-scroll-size)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 (setq view-scroll-size nil)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 (make-local-variable 'view-last-regexp)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 (setq view-last-regexp nil)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 (beginning-of-line)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 (setq goal-column nil)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 (use-local-map view-mode-map)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 (run-hooks 'view-hook)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 (view-helpful-message))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
256
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 (defun view-exit ()
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 "Exit from view-mode.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 If you viewed an existing buffer, that buffer returns to its previous mode.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 If you viewed a file that was not present in Emacs, its buffer is killed."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 (interactive)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 (setq mode-line-buffer-identification
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 view-old-mode-line-buffer-identification)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 (setq major-mode view-old-major-mode)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 (setq mode-name view-old-mode-name)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 (use-local-map (current-local-map))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 (setq buffer-read-only view-old-buffer-read-only)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 (goto-char view-exit-position)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 (set-marker view-exit-position nil)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 ;; Now do something to the buffer that we were viewing
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 ;; (such as kill it).
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 (let ((viewed-buffer (current-buffer))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 (action view-exit-action))
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
276 (cond
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
277 ((bufferp view-return-here)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
278 (switch-to-buffer view-return-here))
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
279 ((window-configuration-p view-return-here)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
280 (set-window-configuration view-return-here)))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 (if action (funcall action viewed-buffer))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 (defun view-helpful-message ()
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 (message
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 (substitute-command-keys
931
f23882d7315a entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 930
diff changeset
286 "Type \\[Helper-help] for help, \\[Helper-describe-bindings] for commands, \\[view-exit] to quit.")))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 (defun View-undefined ()
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 (interactive)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 (ding)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 (view-helpful-message))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (defun view-window-size () (1- (window-height)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (defun view-scroll-size ()
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (min (view-window-size) (or view-scroll-size (view-window-size))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (defvar view-hook nil
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 "If non-nil, its value is called when viewing buffer or file.")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 ;(defun view-last-command (&optional who what)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 ; (setq view-last-command-entry this-command)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 ; (setq view-last-command who)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 ; (setq view-last-command-argument what))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 ;(defun View-repeat-last-command ()
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 ; "Repeat last command issued in View mode."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 ; (interactive)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 ; (if (and view-last-command
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 ; (eq view-last-command-entry last-command))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 ; (funcall view-last-command view-last-command-argument))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 ; (setq this-command view-last-command-entry))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 (defun View-goto-line (&optional line)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 "Move to LINE in View mode.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 Display is centered at LINE. Sets mark at starting position and pushes
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 mark ring."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 (interactive "p")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 (push-mark)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 (goto-line (or line 1))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 (recenter (/ (view-window-size) 2)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 (defun View-scroll-lines-forward (&optional lines)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 "Scroll forward in View mode, or exit if end of text is visible.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 No arg means whole window full, or number of lines set by \\[View-scroll-lines-forward-set-scroll-size].
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 Arg is number of lines to scroll."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 (interactive "P")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 (if (pos-visible-in-window-p (point-max))
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 840
diff changeset
329 (view-exit))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 (setq lines
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 (if lines (prefix-numeric-value lines)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 (view-scroll-size)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 ; (view-last-command 'View-scroll-lines-forward lines)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 (if (>= lines (view-window-size))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 (scroll-up nil)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 (if (>= (- lines) (view-window-size))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 (scroll-down nil)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 (scroll-up lines)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 (cond ((pos-visible-in-window-p (point-max))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 (goto-char (point-max))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 (recenter -1)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 (message (substitute-command-keys
909
4c6cdb66c74c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 840
diff changeset
343 "End. Type \\[view-exit] to quit viewing."))))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 (move-to-window-line -1)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 (beginning-of-line))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 (defun View-scroll-lines-forward-set-scroll-size (&optional lines)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 "Scroll forward LINES lines in View mode, setting the \"scroll size\".
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 This is the number of lines which \\[View-scroll-lines-forward] and \\[View-scroll-lines-backward] scroll by default.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 The absolute value of LINES is used, so this command can be used to scroll
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 backwards (but \"scroll size\" is always positive). If LINES is greater than
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 window height or omitted, then window height is assumed. If LINES is less
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 than window height then scrolling context is provided from previous screen."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 (interactive "P")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 (if (not lines)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 (setq view-scroll-size (view-window-size))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 (setq lines (prefix-numeric-value lines))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 (setq view-scroll-size
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 (min (if (> lines 0) lines (- lines)) (view-window-size))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 (View-scroll-lines-forward lines))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 (defun View-scroll-one-more-line (&optional arg)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 "Scroll one more line up in View mode.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 With ARG scroll one line down."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 (interactive "P")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 (View-scroll-lines-forward (if (not arg) 1 -1)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 (defun View-scroll-lines-backward (&optional lines)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 "Scroll backward in View mode.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 No arg means whole window full, or number of lines set by \\[View-scroll-lines-forward-set-scroll-size].
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 Arg is number of lines to scroll."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 (interactive "P")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 (View-scroll-lines-forward (if lines
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 (- (prefix-numeric-value lines))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 (- (view-scroll-size)))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 (defun View-search-regexp-forward (times regexp)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 "Search forward for NTH occurrence of REGEXP in View mode.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 Displays line found at center of window. REGEXP is remembered for
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 searching with \\[View-search-last-regexp-forward] and \\[View-search-last-regexp-backward]. Sets mark at starting position and pushes mark ring."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 (interactive "p\nsSearch forward (regexp): ")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 (if (> (length regexp) 0)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 (progn
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 ;(view-last-command 'View-search-last-regexp-forward times)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 (view-search times regexp))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 (defun View-search-regexp-backward (times regexp)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 "Search backward from window start for NTH instance of REGEXP in View mode.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 Displays line found at center of window. REGEXP is remembered for
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 searching with \\[View-search-last-regexp-forward] and \\[View-search-last-regexp-backward]. Sets mark at starting position and pushes mark ring."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 (interactive "p\nsSearch backward (regexp): ")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 (View-search-regexp-forward (- times) regexp))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 (defun View-search-last-regexp-forward (times)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 "Search forward from window end for NTH instance of last regexp in View mode.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 Displays line found at center of window. Sets mark at starting position
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 and pushes mark ring."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (interactive "p")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (View-search-regexp-forward times view-last-regexp))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 (defun View-search-last-regexp-backward (times)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 "Search backward from window start for NTH instance of last regexp in View mode.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 Displays line found at center of window. Sets mark at starting position and
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 pushes mark ring."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (interactive "p")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (View-search-regexp-backward times view-last-regexp))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 (defun View-back-to-mark (&optional ignore)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 "Return to last mark set in View mode, else beginning of file.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 Displays line at center of window. Pops mark ring so successive
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 invocations return to earlier marks."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 (interactive)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 (goto-char (or (mark) (point-min)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 (pop-mark)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 (recenter (/ (view-window-size) 2)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 (defun view-search (times regexp)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (setq view-last-regexp regexp)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 (let (where)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 (save-excursion
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 (move-to-window-line (if (< times 0) 0 -1))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 (if (re-search-forward regexp nil t times)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 (setq where (point))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 (if where
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 (progn
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 (push-mark)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 (goto-char where)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 (beginning-of-line)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 (recenter (/ (view-window-size) 2)))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 (message "Can't find occurrence %d of %s" times regexp)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 (sit-for 4))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
433
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 354
diff changeset
434 (provide 'view)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 354
diff changeset
435
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
436 ;;; view.el ends here