52be4b8ff249628538a1fc6ac590bbf323c22620
[chise/xemacs-chise.git.1] / man / xemacs / frame.texi
1 @node Frame, Keystrokes, Concept Index, Top
2 @comment  node-name,  next,  previous,  up
3 @chapter The XEmacs Frame
4 @cindex frame
5 @cindex window
6 @cindex buffer
7
8 @table @asis
9 @item Frame
10 In many environments, such as a tty terminal, an XEmacs frame
11 literally takes up the whole screen.  If you are
12 running XEmacs in a multi-window system like the X Window System, the
13 XEmacs frame takes up one X window.  @xref{XEmacs under X}, for more
14 information.@refill
15
16 @item Window
17 No matter what environment you are running in, XEmacs allows you to look
18 at several buffers at the same time by having several windows be part of
19 the frame.  Often, the whole frame is taken up by just one window, but
20 you can split the frame into two or more subwindows.  If you are
21 running XEmacs under the X window system, that means you can have several
22 @dfn{XEmacs windows} inside the X window that contains the XEmacs frame.
23 You can even have multiple frames in different X windows, each with
24 their own set of subwindows. 
25 @refill
26 @end table
27
28 Each XEmacs frame displays a variety of information: 
29 @itemize @bullet
30 @item
31 The biggest area usually displays the text you are editing.  It may
32 consist of one window or of two or more windows if you need to look at two
33 buffers a the same time. 
34 @item
35 Below each text window's last line is a @dfn{mode line} (@pxref{Mode
36 Line}), which describes what is going on in that window.  The mode line
37 is in inverse video if the terminal supports that.  If there are several
38 XEmacs windows in one frame, each window has its own mode line.
39 @item
40 At the bottom of each XEmacs frame is the @dfn{echo area} or @dfn{minibuffer
41 window}(@pxref{Echo Area}).  It is used by XEmacs to exchange information
42 with the user.  There is only one echo area per XEmacs frame.
43 @item
44 If you are running XEmacs under the X Window System, a
45 menu bar at the top of the frame makes shortcuts to several of the
46 commands available (@pxref{Pull-down Menus}).
47 @end itemize
48
49   You can subdivide the XEmacs frame into multiple text windows, and use
50 each window for a different file (@pxref{Windows}).  Multiple XEmacs
51 windows are tiled vertically on the XEmacs frame.  The upper XEmacs window
52 is separated from the lower window by its mode line.
53
54   When there are multiple, tiled XEmacs windows on a single XEmacs frame,
55 the XEmacs window receiving input from the keyboard has the @dfn{keyboard
56 focus} and is called the @dfn{selected window}.  The selected window
57 contains the cursor, which indicates the insertion point.  If you are
58 working in an environment that permits multiple XEmacs frames, and you
59 move the focus from one XEmacs frame into another, the
60 selected window is the one that was last selected in that frame.
61
62   The same text can be displayed simultaneously in several XEmacs
63 windows, which can be in different XEmacs frames.  If you alter the text
64 in an XEmacs buffer by editing it in one XEmacs window, the changes are
65 visible in all XEmacs windows containing that buffer.
66
67
68 @menu
69 * Point::               The place in the text where editing commands operate.  
70 * Echo Area::           Short messages appear at the bottom of the frame.  
71 * Mode Line::           Interpreting the mode line.  
72 * XEmacs under X::      Some information on using XEmacs under the X 
73                         Window System. 
74 @end menu
75
76 @node Point, Echo Area, Frame, Frame
77 @comment  node-name,  next,  previous,  up
78 @section Point
79 @cindex point
80 @cindex cursor
81
82   When XEmacs is running, the cursor shows the location at which editing
83 commands will take effect.  This location is called @dfn{point}.  You
84 can use keystrokes or the mouse cursor to move point through the text
85 and edit the text at different places.
86
87   While the cursor appears to point @var{at} a character, you should
88 think of point as @var{between} two characters: it points @var{before}
89 the character on which the cursor appears.  The exception is at the
90 end of the line, where the cursor appears after the last character of
91 the line.  Where the display is capable, the cursor at the end of the
92 line will appear differently from a cursor over whitespace at the end
93 of the line.  (In an X Windows frame, the end-of-line cursor is half
94 the width of a within-line cursor.)  Sometimes people speak of ``the
95 cursor'' when they mean ``point,'' or speak of commands that move
96 point as ``cursor motion'' commands.
97
98  Each XEmacs frame has only one cursor.  When output is in progress, the cursor
99 must appear where the typing is being done.  This does not mean that
100 point is moving.  It is only that XEmacs has no way to show you the
101 location of point except when the terminal is idle.
102
103   If you are editing several files in XEmacs, each file has its own point
104 location.  A file that is not being displayed remembers where point is.
105 Point becomes visible at the correct location when you look at the file again.
106
107   When there are multiple text windows, each window has its own point
108 location.  The cursor shows the location of point in the selected
109 window.  The visible cursor also shows you which window is selected.  If
110 the same buffer appears in more than one window, point can be moved in
111 each window independently.
112
113   The term `point' comes from the character @samp{.}, which was the
114 command in TECO (the language in which the original Emacs was written)
115 for accessing the value now called `point'.
116
117 @node Echo Area, Mode Line, Point, Frame
118 @section The Echo Area
119 @cindex echo area
120
121   The line at the bottom of the frame (below the mode line) is the
122 @dfn{echo area}.  XEmacs uses this area to communicate with the user:
123
124 @itemize @bullet
125 @item
126   @dfn{Echoing} means printing out the characters that the user types.  XEmacs
127 never echoes single-character commands.  Multi-character commands are
128 echoed only if you pause while typing them: As soon as you pause for more
129 than one second in the middle of a command, all the characters of the command
130 so far are echoed.  This is intended to @dfn{prompt} you for the rest of
131 the command.  Once echoing has started, the rest of the command is echoed
132 immediately as you type it.  This behavior is designed to give confident
133 users fast response, while giving hesitant users maximum feedback.  You
134 can change this behavior by setting a variable (@pxref{Display Vars}).
135 @item
136   If you issue a command that cannot be executed, XEmacs may print an
137 @dfn{error message} in the echo area.  Error messages are accompanied by
138 a beep or by flashing the frame.  Any input you have typed ahead is
139 thrown away when an error happens.
140 @item
141   Some commands print informative messages in the echo area.  These
142 messages look similar to error messages, but are not announced with a
143 beep and do not throw away input.  Sometimes a message tells you what the
144 command has done, when this is not obvious from looking at the text being
145 edited.  Sometimes the sole purpose of a command is to print a message
146 giving you specific information.  For example, the command @kbd{C-x =} is
147 used to print a message describing the character position of point in the
148 text and its current column in the window.  Commands that take a long time
149 often display messages ending in @samp{...} while they are working, and
150 add @samp{done} at the end when they are finished.
151 @item
152   The echo area is also used to display the @dfn{minibuffer}, a window
153 that is used for reading arguments to commands, such as the name of a
154 file to be edited.  When the minibuffer is in use, the echo area displays
155 with a prompt string that usually ends with a colon.  The cursor
156 appears after the prompt.  You can always get out of the minibuffer by
157 typing @kbd{C-g}.  @xref{Minibuffer}.
158 @end itemize
159
160 @node Mode Line, XEmacs under X, Echo Area, Frame
161 @comment  node-name,  next,  previous,  up
162 @section The Mode Line
163 @cindex mode line
164 @cindex top level
165
166   Each text window's last line is a @dfn{mode line} which describes what is
167 going on in that window.  When there is only one text window, the mode line
168 appears right above the echo area.  The mode line is in inverse video if
169 the terminal supports that, starts and ends with dashes, and contains text
170 like @samp{XEmacs:@: @var{something}}.
171
172   If a mode line has something else in place of @samp{XEmacs:@:
173 @var{something}}, the window above it is in a special subsystem
174 such as Dired.  The mode line then indicates the status of the
175 subsystem.
176
177   Normally, the mode line has the following appearance:
178
179 @example
180 --@var{ch}-XEmacs: @var{buf}      (@var{major} @var{minor})----@var{pos}------
181 @end example
182
183 @noindent
184 This gives information about the buffer being displayed in the window: the
185 buffer's name, what major and minor modes are in use, whether the buffer's
186 text has been changed, and how far down the buffer you are currently
187 looking.
188
189   @var{ch} contains two stars (@samp{**}) if the text in the buffer has been
190 edited (the buffer is ``modified''), or two dashes (@samp{--}) if the
191 buffer has not been edited.  Exception: for a read-only buffer, it is 
192 @samp{%%}.
193
194   @var{buf} is the name of the window's chosen @dfn{buffer}.  The chosen
195 buffer in the selected window (the window that the cursor is in) is also
196 XEmacs's selected buffer, the buffer in which editing takes place.  When
197 we speak of what some command does to ``the buffer'', we mean the
198 currently selected buffer.  @xref{Buffers}.
199
200   @var{pos} tells you whether there is additional text above the top of
201 the screen or below the bottom.  If your file is small and it is
202 completely visible on the screen, @var{pos} is @samp{All}.  Otherwise, 
203 @var{pos} is @samp{Top} if you are looking at the beginning of the file,
204 @samp{Bot} if you are looking at the end of the file, or
205 @samp{@var{nn}%}, where @var{nn} is the percentage of the file above the
206 top of the screen.@refill
207
208   @var{major} is the name of the @dfn{major mode} in effect in the buffer.  At
209 any time, each buffer is in one and only one major mode.
210 The available major modes include Fundamental mode (the least specialized),
211 Text mode, Lisp mode, and C mode.  @xref{Major Modes}, for details
212 on how the modes differ and how you select one.@refill
213
214   @var{minor} is a list of some of the @dfn{minor modes} that are turned on
215 in the window's chosen buffer.  For example, @samp{Fill} means that Auto
216 Fill mode is on.  @code{Abbrev} means that Word Abbrev mode is on.
217 @code{Ovwrt} means that Overwrite mode is on.  @xref{Minor Modes}, for more
218 information.  @samp{Narrow} means that the buffer being displayed has
219 editing restricted to only a portion of its text.  This is not really a
220 minor mode, but is like one.  @xref{Narrowing}.  @code{Def} means that a
221 keyboard macro is being defined.  @xref{Keyboard Macros}.
222
223   Some buffers display additional information after the minor modes.  For
224 example, Rmail buffers display the current message number and the total
225 number of messages.  Compilation buffers and Shell mode display the status
226 of the subprocess.
227
228   If XEmacs is currently inside a recursive editing level, square
229 brackets (@samp{[@dots{}]}) appear around the parentheses that surround
230 the modes.  If XEmacs is in one recursive editing level within another,
231 double square brackets appear, and so on.  Since information on
232 recursive editing applies to XEmacs in general and not to any one buffer,
233 the square brackets appear in every mode line on the screen or not in
234 any of them.  @xref{Recursive Edit}.@refill
235
236 @findex display-time
237   XEmacs can optionally display the time and system load in all mode lines.
238 To enable this feature, type @kbd{M-x display-time}.  The information added
239 to the mode line usually appears after the file name, before the mode names
240 and their parentheses.  It looks like this:
241
242 @example
243 @var{hh}:@var{mm}pm @var{l.ll} [@var{d}]
244 @end example
245
246 @noindent
247 (Some fields may be missing if your operating system cannot support them.)
248 @var{hh} and @var{mm} are the hour and minute, followed always by @samp{am}
249 or @samp{pm}.  @var{l.ll} is the average number of running processes in the
250 whole system recently.  @var{d} is an approximate index of the ratio of
251 disk activity to CPU activity for all users.
252
253 The word @samp{Mail} appears after the load level if there is mail for
254 you that you have not read yet.
255
256 @vindex mode-line-inverse-video
257   Customization note: the variable @code{mode-line-inverse-video}
258 controls whether the mode line is displayed in inverse video (assuming
259 the terminal supports it); @code{nil} means no inverse video.  The
260 default is @code{t}.  For X frames, simply set the foreground and
261 background colors appropriately.
262   
263 @node XEmacs under X, , Mode Line, Frame
264 @section Using XEmacs Under the X Window System
265 @comment  node-name,  next,  previous,  up
266
267 XEmacs can be used with the X Window System and a window manager like
268 MWM or TWM.  In that case, the X window manager opens, closes, and
269 resizes XEmacs frames.  You use the window manager's mouse gestures to
270 perform the operations.  Consult your window manager guide or reference
271 manual for information on manipulating X windows.
272
273 When you are working under X, each X window (that is, each XEmacs frame)
274 has a menu bar for mouse-controlled operations (@pxref{Pull-down Menus}).
275
276 @cindex multi-frame XEmacs
277 @findex make-frame
278 XEmacs under X is also a multi-frame XEmacs.  You can use the @b{New
279 Frame} menu item from the @b{File} menu to create a new XEmacs frame in a
280 new X window from the same process.  The different frames will share the
281 same buffer list, but you can look at different buffers in the different
282 frames.
283
284 @findex find-file-other-frame
285 The function @code{find-file-other-frame} is just like @code{find-file},
286 but creates a new frame to display the buffer in first.  This is
287 normally bound to @kbd{C-x 5 C-f}, and is what the @b{Open File, New
288 Frame} menu item does.
289
290 @findex switch-to-buffer-other-frame
291 The function @code{switch-to-buffer-other-frame} is just like
292 @code{switch-to-buffer}, but creates a new frame to display the buffer
293 in first.  This is normally bound to @kbd{C-x 5 b}.
294
295 @vindex default-frame-alist
296 You can specify a different default frame size other than the one provided.
297 Use the variable @code{default-frame-alist}, which is an alist of default
298 values for frame creation other than the first one.  These may be set in
299 your init file, like this:  
300
301 @example
302   (setq default-frame-alist '((width . 80) (height . 55)))
303 @end example
304
305 @vindex x-frame-defaults
306 For values specific to the first XEmacs frame, you must use X resources.
307 The variable @code{x-frame-defaults} takes an alist of default frame
308 creation parameters for X window frames.  These override what is
309 specified in @file{~/.Xdefaults} but are overridden by the arguments to
310 the particular call to @code{x-create-frame}.
311
312 @vindex create-frame-hook
313 When you create a new frame, the variable @code{create-frame-hook}
314 is called with one argument, the frame just created.
315
316 If you want to close one or more of the X windows you created using
317 @b{New Frame}, use the @b{Delete Frame} menu item from the @b{File} menu.  
318
319 @vindex frame-title-format
320 @vindex frame-icon-title-format
321 If you are working with multiple frames, some special information
322 applies:
323 @itemize @bullet
324 @item
325 Two variables, @code{frame-title-format} and
326 @code{frame-icon-title-format} determine the title of the frame and
327 the title of the icon that results if you shrink the frame.
328
329 @vindex auto-lower-frame
330 @vindex auto-raise-frame
331 @item
332 The variables @code{auto-lower-frame} and @code{auto-raise-frame}
333 position a frame. If true, @code{auto-lower-frame} lowers a frame to
334 the bottom when it is no longer selected. If true,
335 @code{auto-raise-frame} raises a frame to the top when it is
336 selected. Under X, most ICCCM-compliant window managers will have
337 options to do this for you, but these variables are provided in case you
338 are using a broken window manager.
339
340 @item
341 There is a new frame/modeline format directive, %S, which expands to
342 the name of the current frame (a frame's name is distinct from its
343 title; the name is used for resource lookup, among other things, and the
344 title is simply what appears above the window.)
345 @end itemize