annotate lisp/view.el @ 72863:526dc1f36b09

(produce_image_glyph): Automatically crop wide images at right window edge so we can draw the cursor on the same row to avoid confusing redisplay by placing the cursor outside the visible window area.
author Kim F. Storm <storm@cua.dk>
date Thu, 14 Sep 2006 09:37:44 +0000
parents 3bd95f4f2941
children e3694f1cb928 c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 33423
diff changeset
1 ;;; view.el --- peruse file or buffer without editing
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1985, 1989, 1994, 1995, 1997, 2000, 2001, 2002,
68651
3bd95f4f2941 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 67287
diff changeset
4 ;; 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
840
113281b361ec *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
5
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
6 ;; Author: K. Shane Hartman
18271
ead435447ea4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 18268
diff changeset
7 ;; Maintainer: Inge Frick <inge@nada.kth.se>
39117
abd085bfec0c Add Keywords header.
Gerd Moellmann <gerd@gnu.org>
parents: 38758
diff changeset
8 ;; Keywords: files
44
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 ;; This file is part of GNU Emacs.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; 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
14 ;; the Free Software Foundation; either version 2, or (at your option)
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; any later version.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13640
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 57521
diff changeset
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 57521
diff changeset
25 ;; Boston, MA 02110-1301, USA.
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
2319
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 931
diff changeset
27 ;;; Commentary:
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 931
diff changeset
28
12856
a5e07f2bdf83 Rewrite as a minor mode.
Karl Heuer <kwzh@gnu.org>
parents: 12390
diff changeset
29 ;; This package provides the `view' minor mode documented in the Emacs
2319
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 931
diff changeset
30 ;; user's manual.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
31 ;; View mode entry and exit is done through the functions view-mode-enter
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
32 ;; and view-mode-exit. Use these functions to enter or exit view-mode from
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
33 ;; emacs lisp programs.
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
34 ;; We use both view- and View- as prefix for symbols. View- is used as
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
35 ;; prefix for commands that have a key binding. view- is used for commands
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
36 ;; without key binding. The purpose of this is to make it easier for a
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
37 ;; user to use command name completion.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
38
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
39 ;;; Suggested key bindings:
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
40 ;;
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
41 ;; (define-key ctl-x-4-map "v" 'view-file-other-window) ; ^x4v
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
42 ;; (define-key ctl-x-5-map "v" 'view-file-other-frame) ; ^x5v
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
43 ;;
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
44 ;; You could also bind view-file, view-buffer, view-buffer-other-window and
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
45 ;; view-buffer-other-frame to keys.
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
46
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
47 ;;; Code:
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
49 (defgroup view nil
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
50 "Peruse file or buffer without editing."
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
51 :link '(function-link view-mode)
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
52 :link '(custom-manual "(emacs)Misc File Ops")
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
53 :group 'wp
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
54 :group 'editing)
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
55
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
56 (defcustom view-highlight-face 'highlight
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
57 "*The face used for highlighting the match found by View mode search."
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
58 :type 'face
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
59 :group 'view)
13167
c378e215f4d0 (view-highlight-face): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13158
diff changeset
60
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
61 ;; `view-mode-auto-exit' is replaced by the following option variable which
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
62 ;; only says if scrolling past buffer end should leave view mode or not, it
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
63 ;; doesn't say if leaving view mode should restore windows or not. The latter
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
64 ;; is now controlled by the presence of a value in `view-return-to-alist'.
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
65 (defcustom view-scroll-auto-exit nil
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
66 "*Non-nil means scrolling past the end of buffer exits View mode.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
67 nil means attempting to scroll past the end of the buffer,
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
68 only rings the bell and gives a message on how to leave."
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
69 :type 'boolean
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
70 :group 'view)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
71
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
72 (defcustom view-try-extend-at-buffer-end nil
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
73 "*Non-nil means try load more of file when reaching end of buffer.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
74 This variable is mainly intended to be temporarily set to non-nil by
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
75 the F command in view-mode, but you can set it to t if you want the action
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
76 for all scroll commands in view mode."
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
77 :type 'boolean
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
78 :group 'view)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
79
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
80 (defcustom view-remove-frame-by-deleting nil
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
81 "*Determine how View mode removes a frame no longer needed.
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
82 If nil, make an icon of the frame. If non-nil, delete the frame."
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
83 :type 'boolean
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
84 :group 'view)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
85
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
86 (defcustom view-exits-all-viewing-windows nil
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
87 "*Non-nil means restore all windows used to view buffer.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
88 Commands that restore windows when finished viewing a buffer, apply to all
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
89 windows that display the buffer and have restore information in
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
90 `view-return-to-alist'.
21187
f072dd90378d (view-return-to-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20072
diff changeset
91 If `view-exits-all-viewing-windows' is nil, only the selected window is
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
92 considered for restoring."
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
93 :type 'boolean
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
94 :group 'view)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
95
67203
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
96 (defcustom view-inhibit-help-message nil
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
97 "*Non-nil inhibits the help message showed upon entering View mode."
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
98 :type 'boolean
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
99 :group 'view
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
100 :version "22.1")
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
101
18335
6f48844ce1a9 (view-mode): Add autoload cookie to this variable.
Kenichi Handa <handa@m17n.org>
parents: 18271
diff changeset
102 ;;;###autoload
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
103 (defvar view-mode nil
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
104 "Non-nil if View mode is enabled.
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
105 Don't change this variable directly, you must change it by one of the
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
106 functions that enable or disable view mode.")
18335
6f48844ce1a9 (view-mode): Add autoload cookie to this variable.
Kenichi Handa <handa@m17n.org>
parents: 18271
diff changeset
107 ;;;###autoload
12856
a5e07f2bdf83 Rewrite as a minor mode.
Karl Heuer <kwzh@gnu.org>
parents: 12390
diff changeset
108 (make-variable-buffer-local 'view-mode)
a5e07f2bdf83 Rewrite as a minor mode.
Karl Heuer <kwzh@gnu.org>
parents: 12390
diff changeset
109
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
110 (defcustom view-mode-hook nil
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
111 "Normal hook run when starting to view a buffer or file."
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
112 :type 'hook
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
113 :group 'view)
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
114
13078
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
115 (defvar view-old-buffer-read-only nil)
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
116 (make-variable-buffer-local 'view-old-buffer-read-only)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
117
13078
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
118 (defvar view-old-Helper-return-blurb)
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
119 (make-variable-buffer-local 'view-old-Helper-return-blurb)
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
120
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
121 ;; Just to avoid warnings.
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
122 (defvar Helper-return-blurb)
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
123
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
124 (defvar view-page-size nil
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
125 "Default number of lines to scroll by View page commands.
57521
3ac03a07be63 (view-mode-enable): Set view-page-size and view-half-page-size to nil.
Richard M. Stallman <rms@gnu.org>
parents: 55014
diff changeset
126 If nil that means use the window size.")
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
127 (make-variable-buffer-local 'view-page-size)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
128
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
129 (defvar view-half-page-size nil
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
130 "Default number of lines to scroll by View half page commands.
57521
3ac03a07be63 (view-mode-enable): Set view-page-size and view-half-page-size to nil.
Richard M. Stallman <rms@gnu.org>
parents: 55014
diff changeset
131 If nil that means use half the window size.")
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
132 (make-variable-buffer-local 'view-half-page-size)
13078
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
133
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
134 (defvar view-last-regexp nil)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
135 (make-variable-buffer-local 'view-last-regexp) ; Global is better???
13078
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
136
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
137 (defvar view-return-to-alist nil
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
138 "What to do with used windows and where to go when finished viewing buffer.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
139 This is local in each buffer being viewed.
21187
f072dd90378d (view-return-to-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20072
diff changeset
140 It is added to by `view-mode-enter' when starting to view a buffer and
f072dd90378d (view-return-to-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20072
diff changeset
141 subtracted from by `view-mode-exit' when finished viewing the buffer.
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
142
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
143 See RETURN-TO-ALIST argument of function `view-mode-exit' for the format of
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
144 `view-return-to-alist'.")
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
145 (make-variable-buffer-local 'view-return-to-alist)
55014
202b0dc516a5 (view-return-to-alist): Mark it permanent local.
Richard M. Stallman <rms@gnu.org>
parents: 53845
diff changeset
146 (put 'view-return-to-alist 'permanent-local t)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
147
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
148 (defvar view-exit-action nil
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
149 "nil or a function with one argument (a buffer) called when finished viewing.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
150 This is local in each buffer being viewed.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
151 The \\[view-file] and \\[view-file-other-window] commands may set this to
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
152 `kill-buffer'.")
13078
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
153 (make-variable-buffer-local 'view-exit-action)
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
154
19229
e272bd93c93c (view-just-bury): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18448
diff changeset
155 (defvar view-no-disable-on-exit nil
e272bd93c93c (view-just-bury): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18448
diff changeset
156 "If non-nil, View mode \"exit\" commands don't actually disable View mode.
e272bd93c93c (view-just-bury): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18448
diff changeset
157 Instead, these commands just switch buffers or windows.
e272bd93c93c (view-just-bury): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18448
diff changeset
158 This is set in certain buffers by specialized features such as help commands
e272bd93c93c (view-just-bury): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18448
diff changeset
159 that use View mode automatically.")
e272bd93c93c (view-just-bury): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18448
diff changeset
160
13122
05bae277596e (View-search-regexp-forward, View-search-regexp-backward):
Richard M. Stallman <rms@gnu.org>
parents: 13078
diff changeset
161 (defvar view-overlay nil
13167
c378e215f4d0 (view-highlight-face): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13158
diff changeset
162 "Overlay used to display where a search operation found its match.
c378e215f4d0 (view-highlight-face): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13158
diff changeset
163 This is local in each buffer, once it is used.")
13122
05bae277596e (View-search-regexp-forward, View-search-regexp-backward):
Richard M. Stallman <rms@gnu.org>
parents: 13078
diff changeset
164 (make-variable-buffer-local 'view-overlay)
05bae277596e (View-search-regexp-forward, View-search-regexp-backward):
Richard M. Stallman <rms@gnu.org>
parents: 13078
diff changeset
165
38758
a86b8b3e96fd (toplevel): Use mode-line-minor-mode-keymap for the
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
166 (unless (assq 'view-mode minor-mode-alist)
a86b8b3e96fd (toplevel): Use mode-line-minor-mode-keymap for the
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
167 (setq minor-mode-alist
a86b8b3e96fd (toplevel): Use mode-line-minor-mode-keymap for the
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
168 (cons (list 'view-mode
a86b8b3e96fd (toplevel): Use mode-line-minor-mode-keymap for the
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
169 (propertize " View"
a86b8b3e96fd (toplevel): Use mode-line-minor-mode-keymap for the
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
170 'local-map mode-line-minor-mode-keymap
a86b8b3e96fd (toplevel): Use mode-line-minor-mode-keymap for the
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
171 'help-echo "mouse-3: minor mode menu"))
a86b8b3e96fd (toplevel): Use mode-line-minor-mode-keymap for the
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
172 minor-mode-alist)))
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
173
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
174 ;; Define keymap inside defvar to make it easier to load changes.
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
175 ;; Some redundant "less"-like key bindings below have been commented out.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
176 (defvar view-mode-map
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
177 (let ((map (make-sparse-keymap)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
178 (define-key map "C" 'View-kill-and-leave)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
179 (define-key map "c" 'View-leave)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
180 (define-key map "Q" 'View-quit-all)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
181 (define-key map "E" 'View-exit-and-edit)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
182 ; (define-key map "v" 'View-exit)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
183 (define-key map "e" 'View-exit)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
184 (define-key map "q" 'View-quit)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
185 ; (define-key map "N" 'View-search-last-regexp-backward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
186 (define-key map "p" 'View-search-last-regexp-backward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
187 (define-key map "n" 'View-search-last-regexp-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
188 ; (define-key map "?" 'View-search-regexp-backward) ; Less does this.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
189 (define-key map "\\" 'View-search-regexp-backward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
190 (define-key map "/" 'View-search-regexp-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
191 (define-key map "r" 'isearch-backward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
192 (define-key map "s" 'isearch-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
193 (define-key map "m" 'point-to-register)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
194 (define-key map "'" 'register-to-point)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
195 (define-key map "x" 'exchange-point-and-mark)
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
196 (define-key map "@" 'View-back-to-mark)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
197 (define-key map "." 'set-mark-command)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
198 (define-key map "%" 'View-goto-percent)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
199 ; (define-key map "G" 'View-goto-line-last)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
200 (define-key map "g" 'View-goto-line)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
201 (define-key map "=" 'what-line)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
202 (define-key map "F" 'View-revert-buffer-scroll-page-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
203 ; (define-key map "k" 'View-scroll-line-backward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
204 (define-key map "y" 'View-scroll-line-backward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
205 ; (define-key map "j" 'View-scroll-line-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
206 (define-key map "\n" 'View-scroll-line-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
207 (define-key map "\r" 'View-scroll-line-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
208 (define-key map "u" 'View-scroll-half-page-backward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
209 (define-key map "d" 'View-scroll-half-page-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
210 (define-key map "z" 'View-scroll-page-forward-set-page-size)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
211 (define-key map "w" 'View-scroll-page-backward-set-page-size)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
212 ; (define-key map "b" 'View-scroll-page-backward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
213 (define-key map "\C-?" 'View-scroll-page-backward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
214 ; (define-key map "f" 'View-scroll-page-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
215 (define-key map " " 'View-scroll-page-forward)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
216 (define-key map "o" 'View-scroll-to-buffer-end)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
217 (define-key map ">" 'end-of-buffer)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
218 (define-key map "<" 'beginning-of-buffer)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
219 (define-key map "-" 'negative-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
220 (define-key map "9" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
221 (define-key map "8" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
222 (define-key map "7" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
223 (define-key map "6" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
224 (define-key map "5" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
225 (define-key map "4" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
226 (define-key map "3" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
227 (define-key map "2" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
228 (define-key map "1" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
229 (define-key map "0" 'digit-argument)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
230 (define-key map "H" 'describe-mode)
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
231 (define-key map "?" 'describe-mode) ; Maybe do as less instead? See above.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
232 (define-key map "h" 'describe-mode)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
233 map))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234
13078
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
235 (or (assq 'view-mode minor-mode-map-alist)
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
236 (setq minor-mode-map-alist
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
237 (cons (cons 'view-mode view-mode-map) minor-mode-map-alist)))
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
238
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
239 ;;; Commands that enter or exit view mode.
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 44
diff changeset
241 ;;;###autoload
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
242 (defun view-file (file)
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 "View FILE in View mode, returning to previous buffer when done.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
244 Emacs commands editing the buffer contents are not available; instead,
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 a special set of commands (mostly letters and punctuation)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 are defined for moving around in the buffer.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 Space scrolls forward, Delete scrolls backward.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
248 For list of all View commands, type H or h while viewing.
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
249
6330
3badf836d51d (view-mode): Run view-mode-hook as well as view-hook.
Richard M. Stallman <rms@gnu.org>
parents: 5123
diff changeset
250 This command runs the normal hook `view-mode-hook'."
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
251 (interactive "fView file: ")
51371
463499edca88 (view-file, view-file-other-window, view-file-other-frame):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50786
diff changeset
252 (unless (file-exists-p file) (error "%s does not exist" file))
51848
2ec7d96e306e (view-file): If existing buffer's major mode is special,
Richard M. Stallman <rms@gnu.org>
parents: 51371
diff changeset
253 (let ((had-a-buf (get-file-buffer file))
2ec7d96e306e (view-file): If existing buffer's major mode is special,
Richard M. Stallman <rms@gnu.org>
parents: 51371
diff changeset
254 (buffer (find-file-noselect file)))
2ec7d96e306e (view-file): If existing buffer's major mode is special,
Richard M. Stallman <rms@gnu.org>
parents: 51371
diff changeset
255 (if (eq (with-current-buffer buffer
2ec7d96e306e (view-file): If existing buffer's major mode is special,
Richard M. Stallman <rms@gnu.org>
parents: 51371
diff changeset
256 (get major-mode 'mode-class))
2ec7d96e306e (view-file): If existing buffer's major mode is special,
Richard M. Stallman <rms@gnu.org>
parents: 51371
diff changeset
257 'special)
2ec7d96e306e (view-file): If existing buffer's major mode is special,
Richard M. Stallman <rms@gnu.org>
parents: 51371
diff changeset
258 (progn
2ec7d96e306e (view-file): If existing buffer's major mode is special,
Richard M. Stallman <rms@gnu.org>
parents: 51371
diff changeset
259 (switch-to-buffer buffer)
2ec7d96e306e (view-file): If existing buffer's major mode is special,
Richard M. Stallman <rms@gnu.org>
parents: 51371
diff changeset
260 (message "Not using View mode because the major mode is special"))
2ec7d96e306e (view-file): If existing buffer's major mode is special,
Richard M. Stallman <rms@gnu.org>
parents: 51371
diff changeset
261 (view-buffer buffer (and (not had-a-buf) 'kill-buffer)))))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
262
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
263 ;;;###autoload
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
264 (defun view-file-other-window (file)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
265 "View FILE in View mode in another window.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
266 Return that window to its previous buffer when done.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
267 Emacs commands editing the buffer contents are not available; instead,
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
268 a special set of commands (mostly letters and punctuation)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
269 are defined for moving around in the buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
270 Space scrolls forward, Delete scrolls backward.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
271 For list of all View commands, type H or h while viewing.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
272
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
273 This command runs the normal hook `view-mode-hook'."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
274 (interactive "fIn other window view file: ")
51371
463499edca88 (view-file, view-file-other-window, view-file-other-frame):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50786
diff changeset
275 (unless (file-exists-p file) (error "%s does not exist" file))
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
276 (let ((had-a-buf (get-file-buffer file)))
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
277 (view-buffer-other-window (find-file-noselect file) nil
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
278 (and (not had-a-buf) 'kill-buffer))))
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
279
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
280 ;;;###autoload
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
281 (defun view-file-other-frame (file)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
282 "View FILE in View mode in another frame.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
283 Maybe delete other frame and/or return to previous buffer when done.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
284 Emacs commands editing the buffer contents are not available; instead,
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
285 a special set of commands (mostly letters and punctuation)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
286 are defined for moving around in the buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
287 Space scrolls forward, Delete scrolls backward.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
288 For list of all View commands, type H or h while viewing.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
289
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
290 This command runs the normal hook `view-mode-hook'."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
291 (interactive "fIn other frame view file: ")
51371
463499edca88 (view-file, view-file-other-window, view-file-other-frame):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50786
diff changeset
292 (unless (file-exists-p file) (error "%s does not exist" file))
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
293 (let ((had-a-buf (get-file-buffer file)))
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
294 (view-buffer-other-frame (find-file-noselect file) nil
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
295 (and (not had-a-buf) 'kill-buffer))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
296
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
297
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
298 ;;;###autoload
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
299 (defun view-buffer (buffer &optional exit-action)
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 "View BUFFER in View mode, returning to previous buffer when done.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
301 Emacs commands editing the buffer contents are not available; instead,
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 a special set of commands (mostly letters and punctuation)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 are defined for moving around in the buffer.
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 Space scrolls forward, Delete scrolls backward.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
305 For list of all View commands, type H or h while viewing.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
306
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
307 This command runs the normal hook `view-mode-hook'.
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
309 Optional argument EXIT-ACTION is either nil or a function with buffer as
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
310 argument. This function is called when finished viewing buffer.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
311 Use this argument instead of explicitly setting `view-exit-action'."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
312
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 (interactive "bView buffer: ")
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
314 (let ((undo-window (list (window-buffer) (window-start) (window-point))))
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
315 (switch-to-buffer buffer)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
316 (view-mode-enter (cons (selected-window) (cons nil undo-window))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
317 exit-action)))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 44
diff changeset
319 ;;;###autoload
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
320 (defun view-buffer-other-window (buffer &optional not-return exit-action)
12856
a5e07f2bdf83 Rewrite as a minor mode.
Karl Heuer <kwzh@gnu.org>
parents: 12390
diff changeset
321 "View BUFFER in View mode in another window.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
322 Return to previous buffer when done, unless optional NOT-RETURN is non-nil.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
323 Emacs commands editing the buffer contents are not available; instead,
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
324 a special set of commands (mostly letters and punctuation)
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
325 are defined for moving around in the buffer.
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
326 Space scrolls forward, Delete scrolls backward.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
327 For list of all View commands, type H or h while viewing.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
328
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
329 This command runs the normal hook `view-mode-hook'.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
330
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
331 Optional argument EXIT-ACTION is either nil or a function with buffer as
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
332 argument. This function is called when finished viewing buffer.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
333 Use this argument instead of explicitly setting `view-exit-action'."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
334 (interactive "bIn other window view buffer:\nP")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
335 (let* ((win ; This window will be selected by
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
336 (get-lru-window)) ; switch-to-buffer-other-window below.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
337 (return-to
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
338 (and (not not-return)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
339 (cons (selected-window)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
340 (if (eq win (selected-window))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
341 t ; Has to make new window.
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
342 (list
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
343 (window-buffer win) ; Other windows old buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
344 (window-start win)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
345 (window-point win)))))))
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
346 (switch-to-buffer-other-window buffer)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
347 (view-mode-enter (and return-to (cons (selected-window) return-to))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
348 exit-action)))
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
349
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
350 ;;;###autoload
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
351 (defun view-buffer-other-frame (buffer &optional not-return exit-action)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
352 "View BUFFER in View mode in another frame.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
353 Return to previous buffer when done, unless optional NOT-RETURN is non-nil.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
354 Emacs commands editing the buffer contents are not available; instead,
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
355 a special set of commands (mostly letters and punctuation)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
356 are defined for moving around in the buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
357 Space scrolls forward, Delete scrolls backward.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
358 For list of all View commands, type H or h while viewing.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
359
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
360 This command runs the normal hook `view-mode-hook'.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
361
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
362 Optional argument EXIT-ACTION is either nil or a function with buffer as
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
363 argument. This function is called when finished viewing buffer.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
364 Use this argument instead of explicitly setting `view-exit-action'."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
365 (interactive "bView buffer in other frame: \nP")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
366 (let ((return-to
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
367 (and (not not-return) (cons (selected-window) t)))) ; Old window.
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
368 (switch-to-buffer-other-frame buffer)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
369 (view-mode-enter (and return-to (cons (selected-window) return-to))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
370 exit-action)))
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
371
354
23984354573b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 343
diff changeset
372 ;;;###autoload
13078
d7735534db86 (view-mode-enter): Renamed from view-mode. Callers changed.
Richard M. Stallman <rms@gnu.org>
parents: 12857
diff changeset
373 (defun view-mode (&optional arg)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
374 ;; In the following documentation string we have to use some explicit key
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
375 ;; bindings instead of using the \\[] construction. The reason for this
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
376 ;; is that most commands have more than one key binding.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
377 "Toggle View mode, a minor mode for viewing text but not editing it.
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
378 With ARG, turn View mode on iff ARG is positive.
15556
bb72fd0a69b7 (view-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 14491
diff changeset
379
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
380 Emacs commands that do not change the buffer contents are available as usual.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
381 Kill commands insert text in kill buffers but do not delete. Other commands
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
382 \(among them most letters and punctuation) beep and tell that the buffer is
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
383 read-only.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
384 \\<view-mode-map>
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
385 The following additional commands are provided. Most commands take prefix
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
386 arguments. Page commands default to \"page size\" lines which is almost a whole
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
387 window full, or number of lines set by \\[View-scroll-page-forward-set-page-size] or \\[View-scroll-page-backward-set-page-size]. Half page commands default to
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
388 and set \"half page size\" lines which initially is half a window full. Search
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
389 commands default to a repeat count of one.
13640
ee453099e188 (view-mode, view-mode-enter): Doc changes.
Richard M. Stallman <rms@gnu.org>
parents: 13639
diff changeset
390
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
391 H, h, ? This message.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
392 Digits provide prefix arguments.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
393 \\[negative-argument] negative prefix argument.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
394 \\[beginning-of-buffer] move to the beginning of buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
395 > move to the end of buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
396 \\[View-scroll-to-buffer-end] scroll so that buffer end is at last line of window.
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
397 SPC scroll forward \"page size\" lines.
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
398 With prefix scroll forward prefix lines.
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
399 DEL scroll backward \"page size\" lines.
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
400 With prefix scroll backward prefix lines.
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
401 \\[View-scroll-page-forward-set-page-size] like \\[View-scroll-page-forward] but with prefix sets \"page size\" to prefix.
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
402 \\[View-scroll-page-backward-set-page-size] like \\[View-scroll-page-backward] but with prefix sets \"page size\" to prefix.
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
403 \\[View-scroll-half-page-forward] scroll forward \"half page size\" lines. With prefix, sets
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
404 \"half page size\" to prefix lines and scrolls forward that much.
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
405 \\[View-scroll-half-page-backward] scroll backward \"half page size\" lines. With prefix, sets
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
406 \"half page size\" to prefix lines and scrolls backward that much.
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
407 RET, LFD scroll forward one line. With prefix scroll forward prefix line(s).
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
408 y scroll backward one line. With prefix scroll backward prefix line(s).
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
409 \\[View-revert-buffer-scroll-page-forward] revert-buffer if necessary and scroll forward.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
410 Use this to view a changing file.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
411 \\[what-line] prints the current line number.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
412 \\[View-goto-percent] goes prefix argument (default 100) percent into buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
413 \\[View-goto-line] goes to line given by prefix argument (default first line).
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
414 . set the mark.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
415 x exchanges point and mark.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
416 \\[View-back-to-mark] return to mark and pops mark ring.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
417 Mark ring is pushed at start of every successful search and when
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
418 jump to line occurs. The mark is set on jump to buffer start or end.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
419 \\[point-to-register] save current position in character register.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
420 ' go to position saved in character register.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
421 s do forward incremental search.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
422 r do reverse incremental search.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
423 \\[View-search-regexp-forward] searches forward for regular expression, starting after current page.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
424 ! and @ have a special meaning at the beginning of the regexp.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
425 ! means search for a line with no match for regexp. @ means start
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
426 search at beginning (end for backward search) of buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
427 \\ searches backward for regular expression, starting before current page.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
428 \\[View-search-last-regexp-forward] searches forward for last regular expression.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
429 p searches backward for last regular expression.
49439
34b5a595fbf4 (view-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 45776
diff changeset
430 \\[View-quit] quit View mode, restoring this window and buffer to previous state.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
431 \\[View-quit] is the normal way to leave view mode.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
432 \\[View-exit] exit View mode but stay in current buffer. Use this if you started
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
433 viewing a buffer (file) and find out you want to edit it.
49439
34b5a595fbf4 (view-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 45776
diff changeset
434 This command restores the previous read-only status of the buffer.
34b5a595fbf4 (view-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 45776
diff changeset
435 \\[View-exit-and-edit] exit View mode, and make the current buffer editable
34b5a595fbf4 (view-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 45776
diff changeset
436 even if it was not editable before entry to View mode.
34b5a595fbf4 (view-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 45776
diff changeset
437 \\[View-quit-all] quit View mode, restoring all windows to previous state.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
438 \\[View-leave] quit View mode and maybe switch buffers, but don't kill this buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
439 \\[View-kill-and-leave] quit View mode, kill current buffer and go back to other buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
440
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
441 The effect of \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered. If it was
67287
0c604484909d (view-mode): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 67203
diff changeset
442 entered by view-file, view-file-other-window, view-file-other-frame, or
0c604484909d (view-mode): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 67203
diff changeset
443 \\[dired-view-file] \(\\[view-file], \\[view-file-other-window],
0c604484909d (view-mode): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 67203
diff changeset
444 \\[view-file-other-frame], or the Dired mode v command),
0c604484909d (view-mode): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 67203
diff changeset
445 then \\[View-quit] will try to kill the current buffer.
0c604484909d (view-mode): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 67203
diff changeset
446 If view-mode was entered from another buffer, by \\[view-buffer],
0c604484909d (view-mode): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 67203
diff changeset
447 \\[view-buffer-other-window], \\[view-buffer-other frame], \\[view-file],
0c604484909d (view-mode): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 67203
diff changeset
448 \\[view-file-other-window], or \\[view-file-other-frame],
0c604484909d (view-mode): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 67203
diff changeset
449 then \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
450
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
451 Entry to view-mode runs the normal hook `view-mode-hook'."
13640
ee453099e188 (view-mode, view-mode-enter): Doc changes.
Richard M. Stallman <rms@gnu.org>
parents: 13639
diff changeset
452 (interactive "P")
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
453 (unless (and arg ; Do nothing if already OK.
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
454 (if (> (prefix-numeric-value arg) 0) view-mode (not view-mode)))
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
455 (if view-mode (view-mode-disable)
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
456 (view-mode-enable))))
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
457
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
458 (defun view-mode-enable ()
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
459 "Turn on View mode."
18268
a42f063f003b Don't globally add to change-major-mode-hook.
Richard M. Stallman <rms@gnu.org>
parents: 18250
diff changeset
460 ;; Always leave view mode before changing major mode.
a42f063f003b Don't globally add to change-major-mode-hook.
Richard M. Stallman <rms@gnu.org>
parents: 18250
diff changeset
461 ;; This is to guarantee that the buffer-read-only variable is restored.
a42f063f003b Don't globally add to change-major-mode-hook.
Richard M. Stallman <rms@gnu.org>
parents: 18250
diff changeset
462 (add-hook 'change-major-mode-hook 'view-mode-disable nil t)
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
463 (setq view-mode t
57521
3ac03a07be63 (view-mode-enable): Set view-page-size and view-half-page-size to nil.
Richard M. Stallman <rms@gnu.org>
parents: 55014
diff changeset
464 view-page-size nil
3ac03a07be63 (view-mode-enable): Set view-page-size and view-half-page-size to nil.
Richard M. Stallman <rms@gnu.org>
parents: 55014
diff changeset
465 view-half-page-size nil
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
466 view-old-buffer-read-only buffer-read-only
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
467 buffer-read-only t
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
468 view-old-Helper-return-blurb (and (boundp 'Helper-return-blurb)
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
469 Helper-return-blurb)
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
470 Helper-return-blurb
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
471 (format "continue viewing %s"
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
472 (if (buffer-file-name)
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
473 (file-name-nondirectory (buffer-file-name))
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
474 (buffer-name))))
25218
9c0733c601c9 (view-mode-enable, view-mode-disable):
Karl Heuer <kwzh@gnu.org>
parents: 23987
diff changeset
475 (force-mode-line-update)
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
476 (run-hooks 'view-mode-hook))
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
477
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
478 (defun view-mode-disable ()
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
479 "Turn off View mode."
18268
a42f063f003b Don't globally add to change-major-mode-hook.
Richard M. Stallman <rms@gnu.org>
parents: 18250
diff changeset
480 (remove-hook 'change-major-mode-hook 'view-mode-disable t)
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
481 (and view-overlay (delete-overlay view-overlay))
25218
9c0733c601c9 (view-mode-enable, view-mode-disable):
Karl Heuer <kwzh@gnu.org>
parents: 23987
diff changeset
482 (force-mode-line-update)
28198
1ea4cf592264 (view-mode-disable): Kill local binding of view-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 27544
diff changeset
483 ;; Calling toggle-read-only while View mode is enabled
1ea4cf592264 (view-mode-disable): Kill local binding of view-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 27544
diff changeset
484 ;; sets view-read-only to t as a buffer-local variable
1ea4cf592264 (view-mode-disable): Kill local binding of view-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 27544
diff changeset
485 ;; after exiting View mode. That arranges that the next toggle-read-only
1ea4cf592264 (view-mode-disable): Kill local binding of view-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 27544
diff changeset
486 ;; will reenable View mode.
1ea4cf592264 (view-mode-disable): Kill local binding of view-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 27544
diff changeset
487 ;; Cancelling View mode in any other way should cancel that, too,
1ea4cf592264 (view-mode-disable): Kill local binding of view-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 27544
diff changeset
488 ;; so that View mode stays off if toggle-read-only is called.
1ea4cf592264 (view-mode-disable): Kill local binding of view-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 27544
diff changeset
489 (if (local-variable-p 'view-read-only)
1ea4cf592264 (view-mode-disable): Kill local binding of view-read-only.
Richard M. Stallman <rms@gnu.org>
parents: 27544
diff changeset
490 (kill-local-variable 'view-read-only))
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
491 (setq view-mode nil
25219
1b99ab7ab219 (view-mode-disable): If buffer-read-only is nil,
Karl Heuer <kwzh@gnu.org>
parents: 25218
diff changeset
492 Helper-return-blurb view-old-Helper-return-blurb)
1b99ab7ab219 (view-mode-disable): If buffer-read-only is nil,
Karl Heuer <kwzh@gnu.org>
parents: 25218
diff changeset
493 (if buffer-read-only
1b99ab7ab219 (view-mode-disable): If buffer-read-only is nil,
Karl Heuer <kwzh@gnu.org>
parents: 25218
diff changeset
494 (setq buffer-read-only view-old-buffer-read-only)))
13640
ee453099e188 (view-mode, view-mode-enter): Doc changes.
Richard M. Stallman <rms@gnu.org>
parents: 13639
diff changeset
495
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
496 ;;;###autoload
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
497 (defun view-mode-enter (&optional return-to exit-action) "\
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
498 Enter View mode and set up exit from view mode depending on optional arguments.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
499 If RETURN-TO is non-nil it is added as an element to the buffer local alist
21772
95df64150c8a (view-mode-exit): Don't alter view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents: 21678
diff changeset
500 `view-return-to-alist'.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
501 Save EXIT-ACTION in buffer local variable `view-exit-action'.
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
502 It should be either nil or a function that takes a buffer as argument.
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
503 This function will be called by `view-mode-exit'.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
504
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
505 RETURN-TO is either nil, meaning do nothing when exiting view mode, or
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
506 it has the format (WINDOW OLD-WINDOW . OLD-BUF-INFO).
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
507 WINDOW is a window used for viewing.
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
508 OLD-WINDOW is nil or the window to select after viewing.
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
509 OLD-BUF-INFO tells what to do with WINDOW when exiting. It is one of:
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
510 1) nil Do nothing.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
511 2) t Delete WINDOW or, if it is the only window, its frame.
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
512 3) (OLD-BUFF START POINT) Display buffer OLD-BUFF with displayed text
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
513 starting at START and point at POINT in WINDOW.
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
514 4) quit-window Do `quit-window' in WINDOW.
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
516 For list of all View commands, type H or h while viewing.
4119
7b1b2a8d05f2 Doc fixes; some args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 3450
diff changeset
517
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
518 This function runs the normal hook `view-mode-hook'."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
519 (if return-to
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
520 (let ((entry (assq (car return-to) view-return-to-alist)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
521 (if entry (setcdr entry (cdr return-to))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
522 (setq view-return-to-alist (cons return-to view-return-to-alist)))))
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
523 (if exit-action (setq view-exit-action exit-action))
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
524 (unless view-mode ; Do nothing if already in view mode.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
525 (view-mode-enable)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
526 (force-mode-line-update)
67203
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
527 (unless view-inhibit-help-message
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
528 (message "%s"
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
529 (substitute-command-keys "\
78e1225a40a2 (view-inhibit-help-message): New defcustom.
Romain Francoise <romain@orebokech.com>
parents: 66488
diff changeset
530 View mode: type \\[help-command] for help, \\[describe-mode] for commands, \\[View-quit] to quit.")))))
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
531
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
532 (defun view-mode-exit (&optional return-to-alist exit-action all-win)
21772
95df64150c8a (view-mode-exit): Don't alter view-return-to-alist.
Richard M. Stallman <rms@gnu.org>
parents: 21678
diff changeset
533 "Exit View mode in various ways, depending on optional arguments.
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
534 RETURN-TO-ALIST, EXIT-ACTION and ALL-WIN determine what to do after exit.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
535 EXIT-ACTION is nil or a function that is called with current buffer as
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
536 argument.
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
537 RETURN-TO-ALIST is an alist that for some of the windows displaying the
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
538 current buffer, associate information on what to do with those windows.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
539 If ALL-WIN or the variable `view-exits-all-viewing-windows' is non-nil,
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
540 then all windows on RETURN-TO-ALIST are restored to their old state.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
541 Otherwise only the selected window is affected (if it is on RETURN-TO-ALIST).
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
542
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
543 Elements of RETURN-TO-ALIST have the format (WINDOW OLD-WINDOW . OLD-BUF-INFO).
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
544 WINDOW is a window displaying the current buffer.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
545 OLD-WINDOW is nil or a window to select after viewing.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
546 OLD-BUF-INFO is information on what to do with WINDOW and is one of:
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
547 1) nil Do nothing.
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
548 2) t Delete WINDOW and, if it is the only window, its frame.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
549 3) (OLD-BUF START POINT) Display buffer OLD-BUF with displayed text
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
550 starting at START and point at POINT in WINDOW.
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
551 4) quit-window Do `quit-window' in WINDOW.
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
552
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
553 If one of the WINDOW in RETURN-TO-ALIST is the selected window and the
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
554 corresponding OLD-WINDOW is a live window, then select OLD-WINDOW."
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
555 (setq all-win
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
556 (and return-to-alist (or all-win view-exits-all-viewing-windows)))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
557 (if view-mode ; Only do something if in view mode.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
558 (let* ((buffer (current-buffer))
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
559 window notlost
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
560 (sel-old (assq (selected-window) return-to-alist))
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
561 (alist (cond
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
562 (all-win ; Try to restore all windows.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
563 (append return-to-alist nil)) ; Copy.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
564 (sel-old ; Only selected window.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
565 (list sel-old))))
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
566 (old-window (if sel-old (car (cdr sel-old)))))
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
567 (if all-win ; Follow chains of old-windows.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
568 (let ((c (length alist)) a)
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
569 (while (and (> c 0) ; Safety if mutually refering windows.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
570 (or (not (window-live-p old-window))
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
571 (eq buffer (window-buffer old-window)))
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
572 (setq a (assq old-window alist)))
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
573 (setq c (1- c))
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
574 (setq old-window (car (cdr a))))
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
575 (if (or (zerop c) (not (window-live-p old-window)))
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
576 (setq old-window (selected-window)))))
19229
e272bd93c93c (view-just-bury): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18448
diff changeset
577 (or view-no-disable-on-exit
e272bd93c93c (view-just-bury): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 18448
diff changeset
578 (view-mode-disable))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
579 (while alist ; Restore windows with info.
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
580 (setq notlost nil)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
581 (if (and (window-live-p (setq window (car (car alist))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
582 (eq buffer (window-buffer window)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
583 (let ((frame (window-frame window))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
584 (old-buf-info (cdr (cdr (car alist)))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
585 (if all-win (select-window window))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
586 (cond
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
587 ((and (consp old-buf-info) ; Case 3.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
588 (buffer-live-p (car old-buf-info)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
589 (set-window-buffer window (car old-buf-info)) ; old-buf
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
590 (set-window-start window (car (cdr old-buf-info)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
591 (set-window-point window (car (cdr (cdr old-buf-info)))))
21187
f072dd90378d (view-return-to-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 20072
diff changeset
592 ((eq old-buf-info 'quit-window)
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
593 (quit-window)) ; Case 4.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
594 ((not (eq old-buf-info t)) nil) ; Not case 2, do nothing.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
595 ((not (one-window-p t)) (delete-window))
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
596 ((not (eq frame (next-frame)))
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
597 ;; Not the only frame, so can safely be removed.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
598 (if view-remove-frame-by-deleting
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
599 (delete-frame frame)
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
600 (setq notlost t) ; Keep the window. See below.
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
601 (iconify-frame frame))))))
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
602 ;; If a frame is removed by iconifying it, then the window is not
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
603 ;; really lost. In this case we keep the entry in
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
604 ;; view-return-to-alist so that if the user deiconifies the frame
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
605 ;; and then press q, then the frame is iconified again.
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
606 (unless notlost
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
607 (setq view-return-to-alist
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
608 (delete (car alist) view-return-to-alist)))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
609 (setq alist (cdr alist)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
610 (if (window-live-p old-window) ; still existing window
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
611 (select-window old-window))
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
612 (when exit-action
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
613 (setq view-exit-action nil)
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
614 (funcall exit-action buffer))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
615 (force-mode-line-update))))
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
616
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
617 (defun View-exit ()
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
618 "Exit View mode but stay in current buffer."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
619 (interactive)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
620 (view-mode-exit))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
621
18335
6f48844ce1a9 (view-mode): Add autoload cookie to this variable.
Kenichi Handa <handa@m17n.org>
parents: 18271
diff changeset
622 ;;;###autoload
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
623 (defun View-exit-and-edit ()
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
624 "Exit View mode and make the current buffer editable."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
625 (interactive)
22337
ce89ab9c000e (View-exit-and-edit): Bind view-no-disable-on-exit to nil.
Karl Heuer <kwzh@gnu.org>
parents: 21772
diff changeset
626 (let ((view-old-buffer-read-only nil)
ce89ab9c000e (View-exit-and-edit): Bind view-no-disable-on-exit to nil.
Karl Heuer <kwzh@gnu.org>
parents: 21772
diff changeset
627 (view-no-disable-on-exit nil))
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
628 (view-mode-exit)))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
629
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
630 (defun View-leave ()
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
631 "Quit View mode and maybe switch buffers, but don't kill this buffer."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
632 (interactive)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
633 (view-mode-exit view-return-to-alist))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
635 (defun View-quit ()
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
636 "Quit View mode, trying to restore window and buffer to previous state.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
637 Maybe kill this buffer. Try to restore selected window to previous state
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
638 and go to previous buffer or window."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
639 (interactive)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
640 (view-mode-exit view-return-to-alist view-exit-action))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
642 (defun View-quit-all ()
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
643 "Quit View mode, trying to restore windows and buffers to previous state.
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
644 Maybe kill current buffer. Try to restore all windows viewing buffer to
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
645 previous state and go to previous buffer or window."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
646 (interactive)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
647 (view-mode-exit view-return-to-alist view-exit-action t))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
649 (defun View-kill-and-leave ()
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
650 "Quit View mode, kill current buffer and return to previous buffer."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
651 (interactive)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
652 (view-mode-exit view-return-to-alist (or view-exit-action 'kill-buffer) t))
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
653
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
655 ;;; Some help routines.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
656
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
657 (defun view-window-size ()
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
658 ;; Window height excluding mode line.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
659 (1- (window-height)))
6330
3badf836d51d (view-mode): Run view-mode-hook as well as view-hook.
Richard M. Stallman <rms@gnu.org>
parents: 5123
diff changeset
660
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 ;(defun view-last-command (&optional who what)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 ; (setq view-last-command-entry this-command)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 ; (setq view-last-command who)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 ; (setq view-last-command-argument what))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 ;(defun View-repeat-last-command ()
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 ; "Repeat last command issued in View mode."
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 ; (interactive)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 ; (if (and view-last-command
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 ; (eq view-last-command-entry last-command))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 ; (funcall view-last-command view-last-command-argument))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 ; (setq this-command view-last-command-entry))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
674 (defun view-recenter ()
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
675 ;; Center point in window.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
676 (recenter (/ (view-window-size) 2)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
677
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
678 (defun view-page-size-default (lines)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
679 ;; Get page size.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
680 (let ((default (- (view-window-size) next-screen-context-lines)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
681 (if (or (null lines) (zerop (setq lines (prefix-numeric-value lines))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
682 default
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
683 (min (abs lines) default))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
684
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
685 (defun view-set-half-page-size-default (lines)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
686 ;; Get and maybe set half page size.
57521
3ac03a07be63 (view-mode-enable): Set view-page-size and view-half-page-size to nil.
Richard M. Stallman <rms@gnu.org>
parents: 55014
diff changeset
687 (if (not lines) (or view-half-page-size
3ac03a07be63 (view-mode-enable): Set view-page-size and view-half-page-size to nil.
Richard M. Stallman <rms@gnu.org>
parents: 55014
diff changeset
688 (/ (view-window-size) 2))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
689 (setq view-half-page-size
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
690 (if (zerop (setq lines (prefix-numeric-value lines)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
691 (/ (view-window-size) 2)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
692 (view-page-size-default lines)))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
693
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
694
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
695 ;;; Commands for moving around in the buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
696
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
697 (defun View-goto-percent (&optional percent)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
698 "Move to end (or prefix PERCENT) of buffer in View mode.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
699 Display is centered at point.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
700 Also set the mark at the position where point was."
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
701 (interactive "P")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
702 (push-mark)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
703 (goto-char
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
704 (if percent
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
705 (+ (point-min)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
706 (floor (* (- (point-max) (point-min)) 0.01
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
707 (max 0 (min 100 (prefix-numeric-value percent))))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
708 (point-max)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
709 (view-recenter))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
710
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
711 ;(defun View-goto-line-last (&optional line)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
712 ;"Move to last (or prefix LINE) line in View mode.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
713 ;Display is centered at LINE.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
714 ;Sets mark at starting position and pushes mark ring."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
715 ; (interactive "P")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
716 ; (push-mark)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
717 ; (if line (goto-line (prefix-numeric-value line))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
718 ; (goto-char (point-max))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
719 ; (beginning-of-line))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
720 ; (view-recenter))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49439
diff changeset
721
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
722 (defun View-goto-line (&optional line)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
723 "Move to first (or prefix LINE) line in View mode.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
724 Display is centered at LINE.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
725 Also set the mark at the position where point was."
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 (interactive "p")
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 (push-mark)
12856
a5e07f2bdf83 Rewrite as a minor mode.
Karl Heuer <kwzh@gnu.org>
parents: 12390
diff changeset
728 (goto-line line)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
729 (view-recenter))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
730
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
731 (defun View-back-to-mark (&optional ignore)
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
732 "Return to last mark set in View mode, else beginning of file.
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
733 Display that line at the center of the window.
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
734 This command pops the mark ring, so that successive
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
735 invocations return to earlier marks."
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
736 (interactive)
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
737 (goto-char (or (mark t) (point-min)))
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
738 (pop-mark)
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
739 (view-recenter))
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
740
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
741 (defun view-scroll-lines (lines backward default maxdefault)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
742 ;; This function does the job for all the scrolling commands.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
743 ;; Scroll forward LINES lines. If BACKWARD is true scroll backwards.
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
744 ;; If LINES is negative scroll in the other direction. If LINES is 0 or nil,
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
745 ;; scroll DEFAULT lines. If MAXDEFAULT is true then scroll no more than a
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
746 ;; window full.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
747 (if (or (null lines) (zerop (setq lines (prefix-numeric-value lines))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
748 (setq lines default))
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
749 (when (< lines 0)
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
750 (setq backward (not backward)) (setq lines (- lines)))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
751 (setq default (view-page-size-default nil)) ; Max scrolled at a time.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
752 (if maxdefault (setq lines (min lines default)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
753 (cond
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
754 (backward (scroll-down lines))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
755 ((view-really-at-end)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
756 (if view-scroll-auto-exit (View-quit)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
757 (ding)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
758 (view-end-message)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
759 (t (while (> lines default)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
760 (scroll-up default)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
761 (setq lines (- lines default))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
762 (if (view-really-at-end) (setq lines 0)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
763 (scroll-up lines)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
764 (if (view-really-at-end) (view-end-message))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
765 (move-to-window-line -1)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
766 (beginning-of-line))))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
768 (defun view-really-at-end ()
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
769 ;; Return true if buffer end visible. Maybe revert buffer and test.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
770 (and (pos-visible-in-window-p (point-max))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
771 (let ((buf (current-buffer))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
772 (bufname (buffer-name))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
773 (file (buffer-file-name)))
21678
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
774 (or (not view-try-extend-at-buffer-end)
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
775 (null file)
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
776 (verify-visited-file-modtime buf)
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
777 (not (file-exists-p file))
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
778 (when (buffer-modified-p buf)
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
779 (setq file (file-name-nondirectory file))
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
780 (not (yes-or-no-p
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
781 (format
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
782 "File %s changed on disk. Discard your edits%s? "
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
783 file
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
784 (if (string= bufname file) ""
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
785 (concat " in " bufname))))))
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
786 (progn
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
787 (revert-buffer t t t)
acaff8b34667 (view-really-at-end): Return true when at end and not
Andreas Schwab <schwab@suse.de>
parents: 21187
diff changeset
788 (pos-visible-in-window-p (point-max)))))))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
790 (defun view-end-message ()
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
791 ;; Tell that we are at end of buffer.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
792 (goto-char (point-max))
19841
d7a4b38557f3 (view-end-message): Don't mention q if it really do anything.
Richard M. Stallman <rms@gnu.org>
parents: 19229
diff changeset
793 (if view-return-to-alist
d7a4b38557f3 (view-end-message): Don't mention q if it really do anything.
Richard M. Stallman <rms@gnu.org>
parents: 19229
diff changeset
794 (message "End of buffer. Type %s to quit viewing."
d7a4b38557f3 (view-end-message): Don't mention q if it really do anything.
Richard M. Stallman <rms@gnu.org>
parents: 19229
diff changeset
795 (substitute-command-keys
d7a4b38557f3 (view-end-message): Don't mention q if it really do anything.
Richard M. Stallman <rms@gnu.org>
parents: 19229
diff changeset
796 (if view-scroll-auto-exit "\\[View-scroll-page-forward]"
d7a4b38557f3 (view-end-message): Don't mention q if it really do anything.
Richard M. Stallman <rms@gnu.org>
parents: 19229
diff changeset
797 "\\[View-quit]")))
d7a4b38557f3 (view-end-message): Don't mention q if it really do anything.
Richard M. Stallman <rms@gnu.org>
parents: 19229
diff changeset
798 (message "End of buffer")))
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
799
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
800 (defun View-scroll-to-buffer-end ()
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
801 "Scroll backward or forward so that buffer end is at last line of window."
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
802 (interactive)
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
803 (let ((p (if (pos-visible-in-window-p (point-max)) (point))))
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
804 (goto-char (point-max))
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
805 (recenter -1)
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
806 (and p (goto-char p))))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
808 (defun View-scroll-page-forward (&optional lines)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
809 "Scroll \"page size\" or prefix LINES lines forward in View mode.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
810 Exit if end of text is visible and `view-scroll-auto-exit' is non-nil.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
811 \"page size\" is whole window full, or number of lines set by
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
812 \\[View-scroll-page-forward-set-page-size] or
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
813 \\[View-scroll-page-backward-set-page-size].
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
814 If LINES is more than a window-full, only the last window-full is shown."
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 (interactive "P")
57521
3ac03a07be63 (view-mode-enable): Set view-page-size and view-half-page-size to nil.
Richard M. Stallman <rms@gnu.org>
parents: 55014
diff changeset
816 (view-scroll-lines lines nil (view-page-size-default view-page-size) nil))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
817
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
818 (defun View-scroll-page-backward (&optional lines)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
819 "Scroll \"page size\" or prefix LINES lines backward in View mode.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
820 See also `View-scroll-page-forward'."
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
821 (interactive "P")
57521
3ac03a07be63 (view-mode-enable): Set view-page-size and view-half-page-size to nil.
Richard M. Stallman <rms@gnu.org>
parents: 55014
diff changeset
822 (view-scroll-lines lines t (view-page-size-default view-page-size) nil))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49439
diff changeset
823
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
824 (defun View-scroll-page-forward-set-page-size (&optional lines)
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
825 "Scroll forward LINES lines in View mode, setting the \"page size\".
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
826 This is the number of lines which \\[View-scroll-page-forward] and
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
827 \\[View-scroll-page-backward] scroll by default.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
828 If LINES is omitted or = 0, sets \"page size\" to window height and
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
829 scrolls forward that much, otherwise scrolls forward LINES lines and sets
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
830 \"page size\" to the minimum of window height and the absolute value of LINES.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
831 See also `View-scroll-page-forward'."
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
832 (interactive "P")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
833 (view-scroll-lines lines nil
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
834 (setq view-page-size (view-page-size-default lines))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
835 nil))
13168
aa2fb1aa0c94 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13167
diff changeset
836
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
837 (defun View-scroll-page-backward-set-page-size (&optional lines)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
838 "Scroll backward prefix LINES lines in View mode, setting the \"page size\".
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
839 See also `View-scroll-page-forward-set-page-size'."
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
840 (interactive "P")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
841 (view-scroll-lines lines t
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
842 (setq view-page-size (view-page-size-default lines))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
843 nil))
13168
aa2fb1aa0c94 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13167
diff changeset
844
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
845 (defun View-scroll-line-forward (&optional lines)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
846 "Scroll forward one line (or prefix LINES lines) in View mode.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
847 See also `View-scroll-page-forward,' but note that scrolling is limited
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
848 to minimum of LINES and one window-full."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
849 (interactive "P")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
850 (view-scroll-lines lines nil 1 t))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
852 (defun View-scroll-line-backward (&optional lines)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
853 "Scroll backward one line (or prefix LINES lines) in View mode.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
854 See also `View-scroll-line-forward'."
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
855 (interactive "P")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
856 (view-scroll-lines lines t 1 t))
13168
aa2fb1aa0c94 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 13167
diff changeset
857
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
858 (defun View-scroll-half-page-forward (&optional lines)
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
859 "Scroll forward a \"half page\" (or prefix LINES) lines in View mode.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
860 If LINES is not omitted, the \"half page size\" is set to the minimum of
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
861 window height and the absolute value of LINES.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
862 LINES=0 resets \"half page size\" to half window height."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
863 (interactive "P")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
864 (view-scroll-lines lines nil (view-set-half-page-size-default lines) t))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
865
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
866 (defun View-scroll-half-page-backward (&optional lines)
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
867 "Scroll backward a \"half page\" (or prefix LINES) lines in View mode.
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
868 See also `View-scroll-half-page-forward'."
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
869 (interactive "P")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
870 (view-scroll-lines lines t (view-set-half-page-size-default lines) t))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
872 (defun View-revert-buffer-scroll-page-forward (&optional lines)
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
873 "Scroll forward, reverting buffer if needed, in View mode.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
874 If buffer has not been changed and the corresponding file is newer, first
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
875 revert the buffer, then scroll.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
876 This command is useful if you are viewing a changing file.
18250
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
877
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
878 The prefix argument LINES says how many lines to scroll.
4eabe22131dd Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 18249
diff changeset
879 If you don't specify a prefix argument, it uses the number of lines set by
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
880 \\[View-scroll-page-forward-set-page-size] or
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
881 \\[View-scroll-page-backward-set-page-size].
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
882 If LINES is more than a window-full, only the last window-full is shown."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
883 (interactive "P")
23987
a3199b854cf2 (View-revert-buffer-scroll-page-forward): Bind
Andreas Schwab <schwab@suse.de>
parents: 22337
diff changeset
884 (let ((view-scroll-auto-exit nil)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
885 (view-try-extend-at-buffer-end t))
66488
448f6238d8ed (View-revert-buffer-scroll-page-forward): Use
Andreas Schwab <schwab@suse.de>
parents: 64762
diff changeset
886 (view-scroll-lines lines nil (view-page-size-default view-page-size) nil)))
50786
01b16e9a75fb (Helper-return-blurb): Add defvar. (Also rearrange defuns.)
Richard M. Stallman <rms@gnu.org>
parents: 50634
diff changeset
887
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
888 (defun View-search-regexp-forward (n regexp)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
889 "Search forward for first (or prefix Nth) occurrence of REGEXP in View mode.
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
890
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
891 Displays line found at center of window. Sets mark at starting position and
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
892 pushes mark ring.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
893
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
894 Characters @ and ! are special at the beginning of REGEXP. They modify
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
895 the search rather than become part of the pattern searched for.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
896 @ means search all the buffer i.e. start search at the beginning of buffer.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
897 ! means search for a line that contains no match for the pattern.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
898 If REGEXP is empty or only consist of these control characters, then
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
899 an earlier remembered REGEXP is used, otherwise REGEXP is remembered
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
900 for use by later search commands.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
901
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
902 The variable `view-highlight-face' controls the face that is used
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
903 for highlighting the match that is found."
27544
4e3e1730232c Some changes in documentation. Removed some trailing
Gerd Moellmann <gerd@gnu.org>
parents: 25219
diff changeset
904 (interactive "p\nsSearch forward (regexp): ")
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
905 (view-search n regexp))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
906
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
907 (defun View-search-regexp-backward (n regexp)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
908 "Search backward for first (or prefix Nth) occurrence of REGEXP in View mode.
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
909
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
910 Displays line found at center of window. Sets mark at starting position and
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
911 pushes mark ring.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
912
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
913 Characters @ and ! are special at the beginning of REGEXP. They modify
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
914 the search rather than become part of the pattern searched for.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
915 @ means search all the buffer i.e. start search at the end of buffer.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
916 ! means search for a line that contains no match for the pattern.
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
917 If REGEXP is empty or only consist of these control characters, then
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
918 an earlier remembered REGEXP is used, otherwise REGEXP is remembered
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
919 for use by later search commands.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
920
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
921 The variable `view-highlight-face' controls the face that is used
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
922 for highlighting the match that is found."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
923 (interactive "p\nsSearch backward (regexp): ")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
924 (view-search (- n) regexp))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
925
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
926 (defun View-search-last-regexp-forward (n) "\
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
927 Search forward for first (or prefix Nth) instance of last regexp in View mode.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
928 Displays line found at center of window. Sets mark at starting position and
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
929 pushes mark ring.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
930
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
931 The variable `view-highlight-face' controls the face that is used
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
932 for highlighting the match that is found."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
933 (interactive "p")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
934 (view-search n nil))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
935
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
936 (defun View-search-last-regexp-backward (n) "\
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
937 Search backward for first (or prefix Nth) instance of last regexp in View mode.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
938 Displays line found at center of window. Sets mark at starting position and
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
939 pushes mark ring.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
940
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
941 The variable `view-highlight-face' controls the face that is used
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
942 for highlighting the match that is found."
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
943 (interactive "p")
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
944 (view-search (- n) nil))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
945
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 (defun view-search (times regexp)
18448
7cf9cdba062d Changed some documentation.
Richard M. Stallman <rms@gnu.org>
parents: 18335
diff changeset
947 ;; This function does the job for all the View-search- commands.
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
948 ;; Search for the TIMESt match for REGEXP. If TIMES is negative
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
949 ;; search backwards. If REGEXP is nil use `view-last-regexp'.
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
950 ;; Charcters "!" and "@" have a special meaning at the beginning of
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
951 ;; REGEXP and are removed from REGEXP before the search "!" means
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
952 ;; search for lines with no match for REGEXP. "@" means search in
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
953 ;; the whole buffer, don't start searching from the present point.
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
954 (let (where no end ln)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
955 (cond
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
956 ((and regexp (> (length regexp) 0)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
957 (or (not (memq (string-to-char regexp) '(?! ?@)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
958 (progn
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
959 (if (member (substring regexp 0 2) '("!@" "@!"))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
960 (setq end t no t ln 2)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
961 (setq no (not (setq end (eq ?@ (string-to-char regexp))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
962 ln 1))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
963 (> (length (setq regexp (substring regexp ln))) 0))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
964 (setq view-last-regexp (if no (list regexp) regexp)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
965 ((consp view-last-regexp)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
966 (setq regexp (car view-last-regexp))
20072
92d2c2e3b3f3 Some changes in comments and documentation.
Karl Heuer <kwzh@gnu.org>
parents: 19841
diff changeset
967 (unless (setq no (not no)) (setq view-last-regexp regexp)))
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
968 (view-last-regexp (setq regexp view-last-regexp)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
969 (if no (setq view-last-regexp (list regexp))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
970 (t (error "No previous View-mode search")))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 (save-excursion
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
972 (if end (goto-char (if (< times 0) (point-max) (point-min)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
973 (move-to-window-line (if (< times 0) 0 -1)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
974 (if (if no (view-search-no-match-lines times regexp)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
975 (re-search-forward regexp nil t times))
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 (setq where (point))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 (if where
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 (progn
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 (push-mark)
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 (goto-char where)
13122
05bae277596e (View-search-regexp-forward, View-search-regexp-backward):
Richard M. Stallman <rms@gnu.org>
parents: 13078
diff changeset
981 (if view-overlay
05bae277596e (View-search-regexp-forward, View-search-regexp-backward):
Richard M. Stallman <rms@gnu.org>
parents: 13078
diff changeset
982 (move-overlay view-overlay (match-beginning 0) (match-end 0))
05bae277596e (View-search-regexp-forward, View-search-regexp-backward):
Richard M. Stallman <rms@gnu.org>
parents: 13078
diff changeset
983 (setq view-overlay
05bae277596e (View-search-regexp-forward, View-search-regexp-backward):
Richard M. Stallman <rms@gnu.org>
parents: 13078
diff changeset
984 (make-overlay (match-beginning 0) (match-end 0))))
13167
c378e215f4d0 (view-highlight-face): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13158
diff changeset
985 (overlay-put view-overlay 'face view-highlight-face)
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (beginning-of-line)
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
987 (view-recenter))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
988 (message "Can't find occurrence %d of %s%s"
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
989 times (if no "no " "") regexp)
44
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (sit-for 4))))
a25bf36b0410 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991
18249
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
992 (defun view-search-no-match-lines (times regexp)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
993 ;; Search for the TIMESt occurrence of line with no match for REGEXP.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
994 (let ((back (and (< times 0) (setq times (- times)) -1))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
995 n)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
996 (while (> times 0)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
997 (save-excursion (beginning-of-line (if back (- times) (1+ times)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
998 (setq n (point)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
999 (setq times
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1000 (cond
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1001 ((< (count-lines (point) n) times) -1) ; Not enough lines.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1002 ((or (null (re-search-forward regexp nil t back))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1003 (if back (and (< (match-end 0) n)
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1004 (> (count-lines (match-end 0) n) 1))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1005 (and (< n (match-beginning 0))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1006 (> (count-lines n (match-beginning 0)) 1))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1007 0) ; No match within lines.
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1008 (back (count-lines (max n (match-beginning 0)) (match-end 0)))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1009 (t (count-lines (match-beginning 0) (min n (match-end 0))))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1010 (goto-char n))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1011 (and (zerop times) (looking-at "^.*$"))))
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1012
cb7e72b9a09d Make view mode more similar to `less'.
Richard M. Stallman <rms@gnu.org>
parents: 15737
diff changeset
1013
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 354
diff changeset
1014 (provide 'view)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 354
diff changeset
1015
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51848
diff changeset
1016 ;;; arch-tag: 6d0ace36-1d12-4de3-8de3-1fa3231636d7
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
1017 ;;; view.el ends here