# HG changeset patch # User Glenn Morris # Date 1189054107 0 # Node ID f4f8dd5f845532dc8cc1906de32f9d8978f04f9c # Parent ff351a74ca78c4392527bb7ce9c2b0ab574bd1fc Move here from ../../man diff -r ff351a74ca78 -r f4f8dd5f8455 doc/emacs/screen.texi --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/emacs/screen.texi Thu Sep 06 04:48:27 2007 +0000 @@ -0,0 +1,359 @@ +@c This is part of the Emacs manual. +@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2001, 2002, +@c 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +@c See file emacs.texi for copying conditions. +@node Screen, User Input, Acknowledgments, Top +@chapter The Organization of the Screen +@cindex screen +@cindex parts of the screen + + On a text-only terminal, the Emacs display occupies the whole +screen. On a graphical display, such as on GNU/Linux using the X +Window System, Emacs creates its own windows to use. We use the term +@dfn{frame} to mean the entire text-only screen or an entire +system-level window used by Emacs. Emacs uses both kinds of frames, +in the same way, to display your editing. Emacs normally starts out +with just one frame, but you can create additional frames if you wish. +@xref{Frames}. + + When you start Emacs, the main central area of the frame, all except +for the top and bottom and sides, displays the text you are editing. +This area is called @dfn{the window}. At the top there is normally a +@dfn{menu bar} where you can access a series of menus; then there may +be a @dfn{tool bar}, a row of icons that perform editing commands if +you click on them. Below this, the window begins, often with a +@dfn{scroll bar} on one side. Below the window comes the last line of +the frame, a special @dfn{echo area} or @dfn{minibuffer window}, where +prompts appear and you enter information when Emacs asks for it. See +following sections for more information about these special lines. + + You can subdivide the window horizontally or vertically to make +multiple text windows, each of which can independently display some +file or text (@pxref{Windows}). In this manual, the word ``window'' +refers to the initial large window if not subdivided, or any one of +the multiple windows you have subdivided it into. + + At any time, one window is the @dfn{selected window}. On graphical +displays, the selected window normally shows a more prominent cursor +(usually solid and blinking) while other windows show a weaker cursor +(such as a hollow box). Text terminals have just one cursor, so it +always appears in the selected window. + + Most Emacs commands implicitly apply to the text in the selected +window; the text in unselected windows is mostly visible for +reference. However, mouse commands generally operate on whatever +window you click them in, whether selected or not. If you use +multiple frames on a graphical display, then giving the input focus to +a particular frame selects a window in that frame. + + Each window's last line is a @dfn{mode line}, which describes what +is going on in that window. It appears in different color and/or a ``3D'' +box if the terminal supports them; its contents normally begin with +@w{@samp{--:-- @ *scratch*}} when Emacs starts. The mode line +displays status information such as what buffer is being displayed +above it in the window, what major and minor modes are in use, and +whether the buffer contains unsaved changes. + +@menu +* Point:: The place in the text where editing commands operate. +* Echo Area:: Short messages appear at the bottom of the screen. +* Mode Line:: Interpreting the mode line. +* Menu Bar:: How to use the menu bar. +@end menu + +@node Point +@section Point +@cindex point +@cindex cursor + + Within Emacs, the active cursor shows the location at which +editing commands will take effect. This location is called @dfn{point}. +Many Emacs commands move point through the text, so that you can edit at +different places in it. You can also place point by clicking mouse +button 1 (normally the left button). + + While the cursor appears to be @emph{on} a character, you should +think of point as @emph{between} two characters; it points @emph{before} +the character that appears under the cursor. For example, if your text +looks like @samp{frob} with the cursor over the @samp{b}, then point is +between the @samp{o} and the @samp{b}. If you insert the character +@samp{!} at that position, the result is @samp{fro!b}, with point +between the @samp{!} and the @samp{b}. Thus, the cursor remains over +the @samp{b}, as before. + + Sometimes people speak of ``the cursor'' when they mean ``point,'' or +speak of commands that move point as ``cursor motion'' commands. + + If you are editing several files in Emacs, each in its own buffer, +each buffer has its own point location. A buffer that is not +currently displayed remembers its point location in case you display +it again later. When Emacs displays multiple windows, each window has +its own point location. If the same buffer appears in more than one +window, each window has its own point position in that buffer, and (when +possible) its own cursor. + + A text-only terminal has just one cursor, in the selected window. +The other windows do not show a cursor, even though they do have their +own position of point. When Emacs updates the screen on a text-only +terminal, it has to put the cursor temporarily at the place the output +goes. This doesn't mean point is there, though. Once display +updating finishes, Emacs puts the cursor where point is. + + On graphical displays, Emacs shows a cursor in each window; the +selected window's cursor is solid and blinking, and the other cursors +are just hollow. Thus, the most prominent cursor always shows you the +selected window, on all kinds of terminals. + + @xref{Cursor Display}, for customizable variables that control display +of the cursor or cursors. + + The term ``point'' comes from the character @samp{.}, which was the +command in TECO (the language in which the original Emacs was written) +for accessing the value now called ``point.'' + +@node Echo Area +@section The Echo Area +@cindex echo area + + The line at the bottom of the frame (below the mode line) is the +@dfn{echo area}. It is used to display small amounts of text for +various purposes. + + @dfn{Echoing} means displaying the characters that you type. At the +command line, the operating system normally echoes all your input. +Emacs handles echoing differently. + + Single-character commands do not echo in Emacs, and multi-character +commands echo only if you pause while typing them. As soon as you pause +for more than a second in the middle of a command, Emacs echoes all the +characters of the command so far. This is to @dfn{prompt} you for the +rest of the command. Once echoing has started, the rest of the command +echoes immediately as you type it. This behavior is designed to give +confident users fast response, while giving hesitant users maximum +feedback. You can change this behavior by setting a variable +(@pxref{Display Custom}). + +@cindex error message in the echo area + If a command cannot do its job, it may display an @dfn{error +message} in the echo area. Error messages are accompanied by beeping +or by flashing the screen. The error also discards any input you have +typed ahead. + + Some commands display informative messages in the echo area. These +messages look much like error messages, but they are not announced +with a beep and do not throw away input. Sometimes the message tells +you what the command has done, when this is not obvious from looking +at the text being edited. Sometimes the sole purpose of a command is +to show you a message giving you specific information---for example, +@kbd{C-x =} (hold down @key{CTRL} and type @kbd{x}, then let go of +@key{CTRL} and type @kbd{=}) displays a message describing the +character position of point in the text and its current column in the +window. Commands that take a long time often display messages ending +in @samp{...} while they are working, and add @samp{done} at the end +when they are finished. They may also indicate progress with +percentages. + +@cindex @samp{*Messages*} buffer +@cindex saved echo area messages +@cindex messages saved from echo area + Echo-area informative messages are saved in an editor buffer named +@samp{*Messages*}. (We have not explained buffers yet; see +@ref{Buffers}, for more information about them.) If you miss a message +that appears briefly on the screen, you can switch to the +@samp{*Messages*} buffer to see it again. (Successive progress messages +are often collapsed into one in that buffer.) + +@vindex message-log-max + The size of @samp{*Messages*} is limited to a certain number of +lines. The variable @code{message-log-max} specifies how many lines. +Once the buffer has that many lines, adding lines at the end deletes lines +from the beginning, to keep the size constant. @xref{Variables}, for +how to set variables such as @code{message-log-max}. + + The echo area is also used to display the @dfn{minibuffer}, a window +where you can input arguments to commands, such as the name of a file +to be edited. When the minibuffer is in use, the echo area begins +with a prompt string that usually ends with a colon; also, the cursor +appears in that line because it is the selected window. You can +always get out of the minibuffer by typing @kbd{C-g}. +@xref{Minibuffer}. + +@node Mode Line +@section The Mode Line +@cindex mode line +@cindex top level +@c + + Each text window's last line is a @dfn{mode line}, which describes +what is going on in that window. The mode line starts and ends with +dashes. When there is only one text window, the mode line appears +right above the echo area; it is the next-to-last line in the frame. +On a text-only terminal, the mode line is in inverse video if the +terminal supports that; on a graphics display, the mode line has a 3D +box appearance to help it stand out. The mode line of the selected +window is highlighted if possible; see @ref{Optional Mode Line}, for +more information. + + Normally, the mode line looks like this: + +@example +-@var{cs}:@var{ch}@var{R}-@var{fr} @var{buf} @var{pos} @var{line} (@var{major} @var{minor})------ +@end example + +@noindent +This gives information about the window and the buffer it displays: the +buffer's name, what major and minor modes are in use, whether the +buffer's text has been changed, and how far down the buffer you are +currently looking. + + @var{ch} contains two stars @samp{**} if the text in the buffer has +been edited (the buffer is ``modified''), or @samp{--} if the buffer has +not been edited. For a read-only buffer, it is @samp{%*} if the buffer +is modified, and @samp{%%} otherwise. + + @var{R} is @samp{@@} if the default-directory for the current buffer +is on a remote machine, or a hyphen otherwise. + + @var{fr} gives the selected frame name (@pxref{Frames}). It appears +only on text-only terminals. The initial frame's name is @samp{F1}. + + @var{buf} is the name of the window's @dfn{buffer}. Usually this is +the same as the name of a file you are editing. @xref{Buffers}. + + The buffer displayed in the selected window (the window with the +cursor) is the @dfn{current buffer}, where editing happens. When a +command's effect applies to ``the buffer,'' we mean it does those +things to the current buffer. + + @var{pos} tells you whether there is additional text above the top of +the window, or below the bottom. If your buffer is small and it is all +visible in the window, @var{pos} is @samp{All}. Otherwise, it is +@samp{Top} if you are looking at the beginning of the buffer, @samp{Bot} +if you are looking at the end of the buffer, or @samp{@var{nn}%}, where +@var{nn} is the percentage of the buffer above the top of the window. +With Size Indication mode, you can display the size of the buffer as +well. @xref{Optional Mode Line}. + + @var{line} is @samp{L} followed by the current line number of point. +This is present when Line Number mode is enabled (it normally is). +You can display the current column number too, by turning on Column +Number mode. It is not enabled by default because it is somewhat +slower. @xref{Optional Mode Line}. + + @var{major} is the name of the @dfn{major mode} in effect in the +buffer. A buffer can only be in one major mode at a time. The major +modes available include Fundamental mode (the least specialized), Text +mode, Lisp mode, C mode, Texinfo mode, and many others. @xref{Major +Modes}, for details of how the modes differ and how to select +them. + + Some major modes display additional information after the major mode +name. For example, Rmail buffers display the current message number and +the total number of messages. Compilation buffers and Shell buffers +display the status of the subprocess. + + @var{minor} is a list of some of the @dfn{minor modes} that are +turned on at the moment in the window's chosen buffer. For example, +@samp{Fill} means that Auto Fill mode is on. @samp{Abbrev} means that +Word Abbrev mode is on. @samp{Ovwrt} means that Overwrite mode is on. +@xref{Minor Modes}, for more information. + + @samp{Narrow} means that the buffer being displayed has editing +restricted to only a portion of its text. (This is not really a minor +mode, but is like one.) @xref{Narrowing}. @samp{Def} means that a +keyboard macro is being defined. @xref{Keyboard Macros}. + + In addition, if Emacs is inside a recursive editing level, square +brackets (@samp{[@dots{}]}) appear around the parentheses that +surround the modes. If Emacs is in one recursive editing level within +another, double square brackets appear, and so on. Since recursive +editing levels affect Emacs globally, not just one buffer, the square +brackets appear in every window's mode line or not in any of them. +@xref{Recursive Edit}.@refill + + @var{cs} states the coding system used for the file you are editing. +A dash indicates the default state of affairs: no code conversion, +except for end-of-line translation if the file contents call for that. +@samp{=} means no conversion whatsoever. Nontrivial code conversions +are represented by various letters---for example, @samp{1} refers to ISO +Latin-1. @xref{Coding Systems}, for more information. + + On a text-only terminal, @var{cs} includes two additional characters +which describe the coding system for keyboard input and the coding +system for terminal output. They come right before the coding system +used for the file you are editing. + + If you are using an input method, a string of the form +@samp{@var{i}>} is added to the beginning of @var{cs}; @var{i} +identifies the input method. (Some input methods show @samp{+} or +@samp{@@} instead of @samp{>}.) @xref{Input Methods}. + + When multibyte characters are not enabled, @var{cs} does not appear at +all. @xref{Enabling Multibyte}. + +@cindex end-of-line conversion, mode-line indication + The colon after @var{cs} changes to another string in some cases. +Emacs uses newline characters to separate lines in the buffer. Some +files use different conventions for separating lines: either +carriage-return linefeed (the MS-DOS convention) or just +carriage-return (the Macintosh convention). If the buffer's file uses +carriage-return linefeed, the colon changes to either a backslash +(@samp{\}) or @samp{(DOS)}, depending on the operating system. If the +file uses just carriage-return, the colon indicator changes to either +a forward slash (@samp{/}) or @samp{(Mac)}. On some systems, Emacs +displays @samp{(Unix)} instead of the colon for files that use newline +as the line separator. + + @xref{Optional Mode Line}, to add other handy information to the +mode line, such as the size of the buffer, the current column number +of point, and whether new mail for you has arrived. + + The mode line is mouse-sensitive; when you move the mouse across +various parts of it, Emacs displays help text to say what a click in +that place will do. @xref{Mode Line Mouse}. + +@node Menu Bar +@section The Menu Bar +@cindex menu bar + + Each Emacs frame normally has a @dfn{menu bar} at the top which you +can use to perform common operations. There's no need to list them +here, as you can more easily see them yourself. + +@kindex M-` +@kindex F10 +@findex tmm-menubar +@findex menu-bar-open + On a graphical display, you can use the mouse to choose a command +from the menu bar. A right-arrow at the end of the menu item means it +leads to a subsidiary menu; @samp{...} at the end means that the +command invoked will read arguments (further input from you) before it +actually does anything. + + You can also invoke the first menu bar item by pressing @key{F10} (to run +the command @code{menu-bar-open}). You can then navigate the menus with +the arrow keys. You select an item by pressing @key{RET} and cancel menu +navigation with @key{ESC}. + + To view the full command name and documentation for a menu item, type +@kbd{C-h k}, and then select the menu bar with the mouse in the usual +way (@pxref{Key Help}). + + On text-only terminals with no mouse, you can use the menu bar by +typing @kbd{M-`} or @key{F10} (these run the command +@code{tmm-menubar}). This lets you select a menu item with the +keyboard. A provisional choice appears in the echo area. You can use +the up and down arrow keys to move through the menu to different +items, and then you can type @key{RET} to select the item. + + Each menu item also has an assigned letter or digit which designates +that item; it is usually the initial of some word in the item's name. +This letter or digit is separated from the item name by @samp{=>}. You +can type the item's letter or digit to select the item. + + Some of the commands in the menu bar have ordinary key bindings as +well; one such binding is shown in parentheses after the item itself. + +@ignore + arch-tag: 104ba40e-d972-4866-a542-a98be94bdf2f +@end ignore