Reformatted.
[chise/xemacs-chise.git] / man / xemacs / display.texi
1
2 @node Display, Search, Registers, Top
3 @chapter Controlling the Display
4
5   Since only part of a large buffer fits in the window, XEmacs tries to show
6 the part that is likely to be interesting.  The display control commands
7 allow you to specify which part of the text you want to see.
8
9 @table @kbd
10 @item C-l
11 Clear frame and redisplay, scrolling the selected window to center
12 point vertically within it (@code{recenter}).
13 @item C-v
14 @itemx pgdn
15 @itemx next
16 Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
17 On most X keyboards, you can get this functionality using the key
18 labelled @samp{Page Down}, which generates either @kbd{next} or @kbd{pgdn}.
19 @item M-v
20 @itemx pgup
21 @itemx prior
22 Scroll backward (@code{scroll-down}).  On most X keyboards, you can get
23 this functionality using the key labelled @samp{Page Up}, which
24 generates either @kbd{prior} or @kbd{pgup}.
25 @item @var{arg} C-l
26 Scroll so point is on line @var{arg} (@code{recenter}).
27 @item C-x <
28 @itemx C-pgdn
29 @itemx C-next
30 Scroll text in current window to the left (@code{scroll-left}).
31 @item C-x >
32 @itemx C-pgup
33 @itemx C-prior
34 Scroll to the right (@code{scroll-right}).
35 @item C-x $
36 Make deeply indented lines invisible (@code{set-selective-display}).
37 @end table
38
39 @menu
40 * Scrolling::              Moving text up and down in a window.
41 * Horizontal Scrolling::   Moving text left and right in a window.
42 * Selective Display::      Hiding lines with lots of indentation.
43 * Display Vars::           Information on variables for customizing display.
44 @end menu
45
46 @node Scrolling, Horizontal Scrolling, Display, Display
47 @section Scrolling
48
49   If a buffer contains text that is too large to fit entirely within the
50 window that is displaying the buffer, XEmacs shows a contiguous section of
51 the text.  The section shown always contains point.
52
53 @cindex scrolling
54   @dfn{Scrolling} means moving text up or down in the window so that
55 different parts of the text are visible.  Scrolling forward means that text
56 moves up, and new text appears at the bottom.  Scrolling backward moves
57 text down and new text appears at the top.
58
59   Scrolling happens automatically if you move point past the bottom or top
60 of the window.  You can also explicitly request scrolling with the commands
61 in this section.
62
63 @ifinfo
64 @table @kbd
65 @item C-l
66 Clear frame and redisplay, scrolling the selected window to center
67 point vertically within it (@code{recenter}).
68 @item C-v
69 @itemx pgdn
70 @itemx next
71 Scroll forward (a windowful or a specified number of lines) (@code{scroll-up}).
72 @item M-v
73 @itemx pgup
74 @itemx prior
75 Scroll backward (@code{scroll-down}).
76 @item @var{arg} C-l
77 Scroll so point is on line @var{arg} (@code{recenter}).
78 @end table
79 @end ifinfo
80
81 @kindex C-l
82 @findex recenter
83   The most basic scrolling command is @kbd{C-l} (@code{recenter}) with no
84 argument.  It clears the entire frame and redisplays all windows.  In
85 addition, it scrolls the selected window so that point is halfway down
86 from the top of the window.
87
88 @kindex C-v
89 @kindex M-v
90 @kindex pgup
91 @kindex pgdn
92 @kindex next
93 @kindex prior
94 @findex scroll-up
95 @findex scroll-down
96   The scrolling commands @kbd{C-v} and @kbd{M-v} let you move all the text
97 in the window up or down a few lines.  @kbd{C-v} (@code{scroll-up}) with an
98 argument shows you that many more lines at the bottom of the window, moving
99 the text and point up together as @kbd{C-l} might.  @kbd{C-v} with a
100 negative argument shows you more lines at the top of the window.
101 @kbd{Meta-v} (@code{scroll-down}) is like @kbd{C-v}, but moves in the
102 opposite direction.@refill
103
104 @vindex next-screen-context-lines
105   To read the buffer a windowful at a time, use @kbd{C-v} with no
106 argument.  @kbd{C-v} takes the last two lines at the bottom of the
107 window and puts them at the top, followed by nearly a whole windowful of
108 lines not previously visible.  Point moves to the new top of the window
109 if it was in the text scrolled off the top.  @kbd{M-v} with no argument
110 moves backward with similar overlap.  The number of lines of overlap
111 across a @kbd{C-v} or @kbd{M-v} is controlled by the variable
112 @code{next-screen-context-lines}; by default, it is two.
113
114   Another way to scroll is using @kbd{C-l} with a numeric argument.
115 @kbd{C-l} does not clear the frame when given an argument; it only
116 scrolls the selected window.  With a positive argument @var{n}, @kbd{C-l}
117 repositions text to put point @var{n} lines down from the top.  An
118 argument of zero puts point on the very top line.  Point does not move
119 with respect to the text; rather, the text and point move rigidly on the
120 frame.  @kbd{C-l} with a negative argument puts point that many lines
121 from the bottom of the window.  For example, @kbd{C-u - 1 C-l} puts
122 point on the bottom line, and @kbd{C-u - 5 C-l} puts it five lines from
123 the bottom.  Just @kbd{C-u} as argument, as in @kbd{C-u C-l}, scrolls
124 point to the center of the frame.
125
126 @vindex scroll-step
127   Scrolling happens automatically if point has moved out of the visible
128 portion of the text when it is time to display.  Usually scrolling is
129 done  to put point vertically centered within the window.  However, if
130 the variable @code{scroll-step} has a non-zero value, an attempt is made to
131 scroll the buffer by that many lines; if that is enough to bring point back
132 into visibility, that is what happens.
133
134   Scrolling happens automatically if point has moved out of the visible
135 portion of the text when it is time to display.  Usually scrolling is
136 done  to put point vertically centered within the window.  However, if
137 the variable @code{scroll-step} has a non-zero value, an attempt is made to
138 scroll the buffer by that many lines; if that is enough to bring point back
139 into visibility, that is what happens.
140
141 @vindex scroll-conservatively
142   If you set @code{scroll-step} to a small value because you want to use 
143 arrow keys to scroll the screen without recentering, the redisplay
144 preemption will likely make XEmacs keep recentering the screen when
145 scrolling fast, regardless of @code{scroll-step}.  To prevent this, set
146 @code{scroll-conservatively} to a small value, which will have the
147 result of overriding the redisplay preemption.
148
149 @node Horizontal Scrolling,, Scrolling, Display
150 @section Horizontal Scrolling
151
152 @ifinfo
153 @table @kbd
154 @item C-x <
155 Scroll text in current window to the left (@code{scroll-left}).
156 @item C-x >
157 Scroll to the right (@code{scroll-right}).
158 @end table
159 @end ifinfo
160
161 @kindex C-x <
162 @kindex C-x >
163 @findex scroll-left
164 @findex scroll-right
165 @cindex horizontal scrolling
166   The text in a window can also be scrolled horizontally.  This means that
167 each line of text is shifted sideways in the window, and one or more
168 characters at the beginning of each line are not displayed at all.  When a
169 window has been scrolled horizontally in this way, text lines are truncated
170 rather than continued (@pxref{Continuation Lines}), with a @samp{$} appearing
171 in the first column when there is text truncated to the left, and in the
172 last column when there is text truncated to the right.
173
174   The command @kbd{C-x <} (@code{scroll-left}) scrolls the selected
175 window to the left by @var{n} columns with argument @var{n}.  With no
176 argument, it scrolls by almost the full width of the window (two columns
177 less, to be precise).  @kbd{C-x >} (@code{scroll-right}) scrolls
178 similarly to the right.  The window cannot be scrolled any farther to
179 the right once it is displaying normally (with each line starting at the
180 window's left margin); attempting to do so has no effect.
181
182 @node Selective Display, Display Vars, Display, Display
183 @section Selective Display
184 @findex set-selective-display
185 @kindex C-x $
186
187   XEmacs can hide lines indented more than a certain number
188 of columns (you specify how many columns).  This allows you  to get an
189 overview of a part of a program.
190
191   To hide lines, type @kbd{C-x $} (@code{set-selective-display}) with a
192 numeric argument @var{n}.  (@xref{Arguments}, for information on giving
193 the argument.)  Lines with at least @var{n} columns of indentation
194 disappear from the screen.  The only indication of their presence are
195 three dots (@samp{@dots{}}), which appear at the end of each visible
196 line that is followed by one or more invisible ones.@refill
197
198   The invisible lines are still present in the buffer, and most editing
199 commands see them as usual, so it is very easy to put point in the middle
200 of invisible text.  When this happens, the cursor appears at the end of the
201 previous line, after the three dots.  If point is at the end of the visible
202 line, before the newline that ends it, the cursor appears before the three
203 dots.
204
205   The commands @kbd{C-n} and @kbd{C-p} move across the invisible lines
206 as if they were not there.
207
208   To make everything visible again, type @kbd{C-x $} with no argument.
209
210 @node Display Vars,, Selective Display, Display
211 @section Variables Controlling Display
212
213   This section contains information for customization only.  Beginning
214 users should skip it.
215
216 @vindex no-redraw-on-reenter
217   When you reenter XEmacs after suspending, XEmacs normally clears the
218 screen and redraws the entire display.  On some terminals with more than
219 one page of memory, it is possible to arrange the termcap entry so that
220 the @samp{ti} and @samp{te} strings (output to the terminal when XEmacs
221 is entered and exited, respectively) switch between pages of memory so
222 as to use one page for XEmacs and another page for other output.  In that
223 case, you might want to set the variable @code{no-redraw-on-reenter} to
224 non-@code{nil} so that XEmacs will assume, when resumed, that the screen
225 page it is using still contains what XEmacs last wrote there.
226
227 @vindex echo-keystrokes
228   The variable @code{echo-keystrokes} controls the echoing of multi-character
229 keys; its value is the number of seconds of pause required to cause echoing
230 to start, or zero, meaning don't echo at all.  @xref{Echo Area}.
231
232 @vindex ctl-arrow
233   If the variable @code{ctl-arrow} is @code{nil}, control characters in the
234 buffer are displayed with octal escape sequences, all except newline and
235 tab.  If its value is @code{t}, then control characters will be printed 
236 with an up-arrow, for example @kbd{^A}.  
237
238 If its value is not @code{t} and not @code{nil}, then characters whose
239 code is greater than 160 (that is, the space character (32) with its
240 high bit set) will be assumed to be printable, and will be displayed
241 without alteration.  This is the default when running under X Windows,
242 since XEmacs assumes an ISO/8859-1 character set (also known as
243 ``Latin1'').  The @code{ctl-arrow} variable may also be set to an
244 integer, in which case all characters whose codes are greater than or
245 equal to that value will be assumed to be printable.
246
247 Altering the value of @code{ctl-arrow} makes it local to the current
248 buffer; until that time, the default value is in effect.  @xref{Locals}.
249
250 @vindex tab-width
251   Normally, a tab character in the buffer is displayed as whitespace which
252 extends to the next display tab stop position, and display tab stops come
253 at intervals equal to eight spaces.  The number of spaces per tab is
254 controlled by the variable @code{tab-width}, which is made local by
255 changing it, just like @code{ctl-arrow}.  Note that how the tab character
256 in the buffer is displayed has nothing to do with the definition of
257 @key{TAB} as a command.
258
259 @vindex selective-display-ellipses
260   If you set the variable @code{selective-display-ellipses} to @code{nil},
261 the three dots at the end of a line that precedes invisible
262 lines do not appear.  There is no visible indication of the invisible lines.
263 This variable becomes local automatically when set.