X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/1636ca09ab7db26b28351f9d1643f07c407691fd..af330736d14bb0fe3b8121d90bd5bbf92bdd20f8:/man/basic.texi diff --git a/man/basic.texi b/man/basic.texi index f75a446f27..f4d15f9171 100644 --- a/man/basic.texi +++ b/man/basic.texi @@ -1,5 +1,6 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 2000 Free Software Foundation, Inc. +@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 2000, 2001, +@c 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Basic, Minibuffer, Exiting, Top @chapter Basic Editing Commands @@ -20,7 +21,7 @@ use the tutorial, run Emacs and type @kbd{Control-h t} * Moving Point:: How to move the cursor to the place where you want to change something. * Erasing:: Deleting and killing text. -* Undo:: Undoing recent changes in the text. +* Basic Undo:: Undoing recent changes in the text. * Files: Basic Files. Visiting, creating, and saving files. * Help: Basic Help. Asking what a character does. * Blank Lines:: Commands to make or delete blank lines. @@ -43,23 +44,44 @@ in the buffer is @samp{FOOBAR}, with the cursor before the @samp{B}, then if you type @kbd{XX}, you get @samp{FOOXXBAR}, with the cursor still before the @samp{B}. - To @dfn{delete} text you have just inserted, use @key{DEL}. @key{DEL} -deletes the character @emph{before} the cursor (not the one that the cursor -is on top of or under; that is the character @var{after} the cursor). The -cursor and all characters after it move backwards. Therefore, if you type -a printing character and then type @key{DEL}, they cancel out. + To @dfn{delete} text you have just inserted, use the large key +labeled @key{DEL}, @key{BACKSPACE} or @key{DELETE} which is a short +distance above the @key{RET} or @key{ENTER} key. This is the key you +normally use, outside Emacs, for erasing the last character that you +typed. Regardless of the label on that key, Emacs thinks of it as +@key{DEL}, and that's what we call it in this manual. + + The @key{DEL} key deletes the character @emph{before} the cursor. +As a consequence, the cursor and all the characters after it move +backwards. If you type a printing character and then type @key{DEL}, +they cancel out. + + On most computers, Emacs recognizes automatically which key ought to +be @key{DEL}, and sets it up that way. But in some cases, especially +with text-only terminals, you will need to tell Emacs which key to use +for that purpose. If the large key not far above the @key{RET} or +@key{ENTER} key doesn't delete backwards, you need to do this. +@xref{DEL Does Not Delete}, for an explanation of how. + + Most PC keyboards have both a @key{BACKSPACE} key not far above +@key{RET} or @key{ENTER}, and a @key{DELETE} key elsewhere. On these +keyboards, Emacs supports when possible the usual convention that the +@key{BACKSPACE} key deletes backwards (it is @key{DEL}), while the +@key{DELETE} key deletes ``forwards,'' deleting the character after +point, the one underneath the cursor, like @kbd{C-d} (see below). @kindex RET @cindex newline To end a line and start typing a new one, type @key{RET}. This inserts a newline character in the buffer. If point is in the middle of -a line, @key{RET} splits the line. Typing @key{DEL} when the cursor is +a line, the effect is to split the line. Typing @key{DEL} when the cursor is at the beginning of a line deletes the preceding newline, thus joining the line with the preceding line. Emacs can split lines automatically when they become too long, if you turn on a special minor mode called @dfn{Auto Fill} mode. -@xref{Filling}, for how to use Auto Fill mode. +@xref{Filling}, for how to use Auto Fill mode and other modes for +@dfn{filling} text. If you prefer to have text characters replace (overwrite) existing text rather than shove it to the right, you can enable Overwrite mode, @@ -83,23 +105,25 @@ inserts that character. @item @kbd{C-q} followed by a sequence of octal digits inserts the character with the specified octal character code. You can use any number of -octal digits; any non-digit terminates the sequence. If the terminating -character is @key{RET}, it serves only to terminate the sequence; any -other non-digit is itself used as input after terminating the sequence. -(The use of octal sequences is disabled in ordinary non-binary Overwrite -mode, to give you a convenient way to insert a digit instead of -overwriting with it.) +octal digits; any non-digit terminates the sequence. If the +terminating character is @key{RET}, it serves only to terminate the +sequence. Any other non-digit terminates the sequence and then acts +as normal input---thus, @kbd{C-q 1 0 1 B} inserts @samp{AB}. + +The use of octal sequences is disabled in ordinary non-binary +Overwrite mode, to give you a convenient way to insert a digit instead +of overwriting with it. @end itemize @cindex 8-bit character codes @noindent When multibyte characters are enabled, if you specify a code in the -range 0200 through 0377 octal, @kbd{C-q} assumes that you intend to use -some ISO 8859-@var{n} character set, and converts the specified code to -the corresponding Emacs character code. @xref{Enabling Multibyte}. You -select to @emph{which} of the ISO 8859 character sets should Emacs -convert the 8-bit code through your choice of language environment -(@pxref{Language Environments}). +range 0200 through 0377 octal, @kbd{C-q} assumes that you intend to +use some ISO 8859-@var{n} character set, and converts the specified +code to the corresponding Emacs character code. @xref{Enabling +Multibyte}. You select @emph{which} of the ISO 8859 character sets to +use through your choice of language environment (@pxref{Language +Environments}). @vindex read-quoted-char-radix To use decimal or hexadecimal instead of octal, set the variable @@ -122,10 +146,6 @@ rebind @key{DEL} to other commands. @section Changing the Location of Point @cindex arrow keys -@kindex LEFT -@kindex RIGHT -@kindex UP -@kindex DOWN @cindex moving point @cindex movement @cindex cursor motion @@ -135,9 +155,9 @@ rebind @key{DEL} to other commands. clicking the left mouse button where you want to move to. There are also control and meta characters for cursor motion. Some -are equivalent to the arrow keys (these date back to the days before -terminals had arrow keys, and are usable on terminals which don't have -them). Others do more sophisticated things. +are equivalent to the arrow keys (it is faster to use these control +keys than move your hand over to the arrow keys). Others do more +sophisticated things. @kindex C-a @kindex C-e @@ -148,8 +168,12 @@ them). Others do more sophisticated things. @kindex M-> @kindex M-< @kindex M-r -@findex beginning-of-line -@findex end-of-line +@kindex LEFT +@kindex RIGHT +@kindex UP +@kindex DOWN +@findex move-beginning-of-line +@findex move-end-of-line @findex forward-char @findex backward-char @findex next-line @@ -161,13 +185,15 @@ them). Others do more sophisticated things. @findex move-to-window-line @table @kbd @item C-a -Move to the beginning of the line (@code{beginning-of-line}). +Move to the beginning of the line (@code{move-beginning-of-line}). @item C-e -Move to the end of the line (@code{end-of-line}). +Move to the end of the line (@code{move-end-of-line}). @item C-f -Move forward one character (@code{forward-char}). +Move forward one character (@code{forward-char}). The right-arrow key +does the same thing. @item C-b -Move backward one character (@code{backward-char}). +Move backward one character (@code{backward-char}). The left-arrow +key has the same effect. @item M-f Move forward one word (@code{forward-word}). @item M-b @@ -175,10 +201,11 @@ Move backward one word (@code{backward-word}). @item C-n Move down one line, vertically (@code{next-line}). This command attempts to keep the horizontal position unchanged, so if you start in -the middle of one line, you end in the middle of the next. When on -the last line of text, @kbd{C-n} creates a new line and moves onto it. +the middle of one line, you end in the middle of the next. The +down-arrow key does the same thing. @item C-p -Move up one line, vertically (@code{previous-line}). +Move up one line, vertically (@code{previous-line}). The up-arrow key +has the same effect. @item M-r Move point to left margin, vertically centered in the window (@code{move-to-window-line}). Text does not move on the screen. @@ -193,12 +220,32 @@ numeric argument @var{n}, move to @var{n}/10 of the way from the top. @xref{Arguments}, for more information on numeric arguments.@refill @item M-> Move to the end of the buffer (@code{end-of-buffer}). +@item C-v +@itemx @key{PAGEDOWN} +@itemx @key{PRIOR} +Scroll the display one screen forward, and move point if necessary to +put it on the screen (@code{scroll-up}). This doesn't always move +point, but it is commonly used to do so. If your keyboard has a +@key{PAGEDOWN} or @key{PRIOR} key, it does the same thing. + +Scrolling commands are further described in @ref{Scrolling}. +@item M-v +@itemx @key{PAGEUP} +@itemx @key{NEXT} +Scroll one screen backward, and move point if necessary to put it on +the screen (@code{scroll-down}). This doesn't always move point, but +it is commonly used to do so. If your keyboard has a @key{PAGEUP} or +@key{NEXT} key, it does the same thing. @item M-x goto-char Read a number @var{n} and move point to buffer position @var{n}. Position 1 is the beginning of the buffer. -@item M-x goto-line -Read a number @var{n} and move point to line number @var{n}. Line 1 -is the beginning of the buffer. +@item M-g M-g +@itemx M-g g +@itemx M-x goto-line +Read a number @var{n} and move point to the beginning of line number +@var{n}. Line 1 is the beginning of the buffer. If point is on or +just after a number, then that is the default for @var{n}, if you just +press @key{RET} with an empty minibuffer. @item C-x C-n @findex set-goal-column @kindex C-x C-n @@ -214,17 +261,18 @@ again try to stick to a fixed horizontal position, as usual. @vindex track-eol If you set the variable @code{track-eol} to a non-@code{nil} value, -then @kbd{C-n} and @kbd{C-p} when at the end of the starting line move +then @kbd{C-n} and @kbd{C-p}, when starting at the end of the line, move to the end of another line. Normally, @code{track-eol} is @code{nil}. @xref{Variables}, for how to set variables such as @code{track-eol}. @vindex next-line-add-newlines - If non-@code{nil}, @kbd{C-n} on the last line of a buffer appends a -newline to it. If the variable @code{next-line-add-newlines} is -@code{nil}, the default, then @kbd{C-n} gets an error instead (like -@kbd{C-p} on the first line). + @kbd{C-n} normally stops at the end of the buffer when you use it on +the last line of the buffer. But if you set the variable +@code{next-line-add-newlines} to a non-@code{nil} value, @kbd{C-n} on +the last line of a buffer creates an additional line at the end and +moves down onto it. -@node Erasing +@node Erasing @section Erasing Text @table @kbd @@ -232,6 +280,12 @@ newline to it. If the variable @code{next-line-add-newlines} is Delete the character before point (@code{delete-backward-char}). @item C-d Delete the character after point (@code{delete-char}). +@item @key{DELETE} +@itemx @key{BACKSPACE} +One of these keys, whichever is the large key above the @key{RET} or +@key{ENTER} key, deletes the character before point---it is @key{DEL}. +If @key{BACKSPACE} is @key{DEL}, and your keyboard also has @key{DELETE}, +then @key{DELETE} deletes forwards, like @kbd{C-d}. @item C-k Kill to the end of the line (@code{kill-line}). @item M-d @@ -258,125 +312,56 @@ line, it kills all the text up to the end of the line. If you type @xref{Killing}, for more flexible ways of killing text. -@node Undo +@node Basic Undo @section Undoing Changes -@cindex undo -@cindex changes, undoing - You can undo all the recent changes in the buffer text, up to a -certain point. Each buffer records changes individually, and the undo -command always applies to the current buffer. Usually each editing -command makes a separate entry in the undo records, but some commands -such as @code{query-replace} make many entries, and very simple commands -such as self-inserting characters are often grouped to make undoing less -tedious. + Emacs records a list of changes made in the buffer text, so you can +you can undo all the recent changes, as far as the records go. +Usually each editing command makes a separate entry in the undo +records, but sometimes an entry covers just part of a command, and +very simple commands may be grouped. @table @kbd @item C-x u -Undo one batch of changes---usually, one command worth (@code{undo}). +Undo one entry of the undo records---usually, one command worth +(@code{undo}). @item C-_ +@itemx C-/ The same. -@item C-u C-x u -Undo one batch of changes in the region. @end table -@kindex C-x u -@kindex C-_ -@findex undo - The command @kbd{C-x u} or @kbd{C-_} is how you undo. The first time -you give this command, it undoes the last change. Point moves back to -where it was before the command that made the change. - - Consecutive repetitions of @kbd{C-_} or @kbd{C-x u} undo earlier and -earlier changes, back to the limit of the undo information available. -If all recorded changes have already been undone, the undo command -prints an error message and does nothing. - - Any command other than an undo command breaks the sequence of undo -commands. Starting from that moment, the previous undo commands become -ordinary changes that you can undo. Thus, to redo changes you have -undone, type @kbd{C-f} or any other command that will harmlessly break -the sequence of undoing, then type more undo commands. - -@cindex selective undo -@kindex C-u C-x u - Ordinary undo applies to all changes made in the current buffer. You -can also perform @dfn{selective undo}, limited to the current region. -To do this, specify the region you want, then run the @code{undo} -command with a prefix argument (the value does not matter): @kbd{C-u C-x -u} or @kbd{C-u C-_}. This undoes the most recent change in the region. -To undo further changes in the same region, repeat the @code{undo} -command (no prefix argument is needed). In Transient Mark mode, any use -of @code{undo} when there is an active region performs selective undo; -you do not need a prefix argument. - - If you notice that a buffer has been modified accidentally, the -easiest way to recover is to type @kbd{C-_} repeatedly until the stars -disappear from the front of the mode line. At this time, all the -modifications you made have been canceled. Whenever an undo command -makes the stars disappear from the mode line, it means that the buffer -contents are the same as they were when the file was last read in or -saved. - - If you do not remember whether you changed the buffer deliberately, -type @kbd{C-_} once. When you see the last change you made undone, you -will see whether it was an intentional change. If it was an accident, -leave it undone. If it was deliberate, redo the change as described -above. - - Not all buffers record undo information. Buffers whose names start with -spaces don't; these buffers are used internally by Emacs and its extensions -to hold text that users don't normally look at or edit. - - You cannot undo mere cursor motion; only changes in the buffer -contents save undo information. However, some cursor motion commands -set the mark, so if you use these commands from time to time, you can -move back to the neighborhoods you have moved through by popping the -mark ring (@pxref{Mark Ring}). - -@vindex undo-limit -@vindex undo-strong-limit -@cindex undo limit - When the undo information for a buffer becomes too large, Emacs -discards the oldest undo information from time to time (during garbage -collection). You can specify how much undo information to keep by -setting two variables: @code{undo-limit} and @code{undo-strong-limit}. -Their values are expressed in units of bytes of space. - - The variable @code{undo-limit} sets a soft limit: Emacs keeps undo -data for enough commands to reach this size, and perhaps exceed it, but -does not keep data for any earlier commands beyond that. Its default -value is 20000. The variable @code{undo-strong-limit} sets a stricter -limit: the command which pushes the size past this amount is itself -forgotten. Its default value is 30000. - - Regardless of the values of those variables, the most recent change is -never discarded, so there is no danger that garbage collection occurring -right after an unintentional large change might prevent you from undoing -it. - - The reason the @code{undo} command has two keys, @kbd{C-x u} and -@kbd{C-_}, set up to run it is that it is worthy of a single-character -key, but on some keyboards it is not obvious how to type @kbd{C-_}. -@kbd{C-x u} is an alternative you can type straightforwardly on any -terminal. + The command @kbd{C-x u} (or @kbd{C-_} or @kbd{C-/}) is how you undo. +The first time you give this command, it undoes the last change. +Point moves back to where it was before the command that made the +change. + + Consecutive repetitions of @kbd{C-x u} (or its aliases) undo earlier +and earlier changes, back to the limit of the undo information +available. If all recorded changes have already been undone, the undo +command displays an error message and does nothing. + + The undo command applies only to changes in the buffer; you can't +use it to undo mere cursor motion. However, some cursor motion +commands set the mark, so if you use these commands from time to time, +you can move back to the neighborhoods you have moved through by +popping the mark ring (@pxref{Mark Ring}). @node Basic Files @section Files The commands described above are sufficient for creating and altering text in an Emacs buffer; the more advanced Emacs commands just make -things easier. But to keep any text permanently you must put it in a +things easier. However, to keep any text permanently you must put it in a @dfn{file}. Files are named units of text which are stored by the operating system for you to retrieve later by name. To look at or use the contents of a file in any way, including editing the file with Emacs, you must specify the file name. - Consider a file named @file{/usr/rms/foo.c}. In Emacs, to begin editing -this file, type + Consider a file named @file{test.emacs}. (We can assume it is in +your home directory.) In Emacs, to begin editing this file, type @example -C-x C-f /usr/rms/foo.c @key{RET} +C-x C-f test.emacs @key{RET} @end example @noindent @@ -390,8 +375,8 @@ copying the contents of the file into the buffer, and then displaying the buffer for you to edit. If you alter the text, you can @dfn{save} the new text in the file by typing @kbd{C-x C-s} (@code{save-buffer}). This makes the changes permanent by copying the altered buffer contents -back into the file @file{/usr/rms/foo.c}. Until you save, the changes -exist only inside Emacs, and the file @file{foo.c} is unaltered. +back into the file @file{test.emacs}. Until you save, the changes +exist only inside Emacs, and the file @file{test.emacs} is unaltered. To create a file, just visit the file with @kbd{C-x C-f} as if it already existed. This creates an empty buffer in which you can insert @@ -421,7 +406,6 @@ a description of all the help facilities. @xref{Help}.@refill Here are special commands and techniques for putting in and taking out blank lines. -@c widecommands @table @kbd @item C-o Insert one or more blank lines after the cursor (@code{open-line}). @@ -446,7 +430,7 @@ type the text for the new line. @kbd{C-o F O O} has the same effect as You can make several blank lines by typing @kbd{C-o} several times, or by giving it a numeric argument to tell it how many blank lines to make. -@xref{Arguments}, for how. If you have a fill prefix, then @kbd{C-o} +@xref{Arguments}, for how. If you have a fill prefix, the @kbd{C-o} command inserts the fill prefix on the new line, when you use it at the beginning of a line. @xref{Fill Prefix}. @@ -463,40 +447,41 @@ nonblank line. @cindex continuation line @cindex wrapping @cindex line wrapping +@cindex fringes, and continuation lines If you add too many characters to one line without breaking it with -@key{RET}, the line will grow to occupy two (or more) lines on the screen, -with a @samp{\} at the extreme right margin of all but the last of them. -The @samp{\} says that the following screen line is not really a distinct -line in the text, but just the @dfn{continuation} of a line too long to fit -the screen. Continuation is also called @dfn{line wrapping}. - - Sometimes it is nice to have Emacs insert newlines automatically when -a line gets too long. Continuation on the screen does not do that. Use -Auto Fill mode (@pxref{Filling}) if that's what you want. - -@vindex truncate-lines -@findex toggle-truncate-lines +@key{RET}, the line grows to occupy two (or more) lines on the screen. +On graphical displays, Emacs indicates line wrapping with small bent +arrows in the fringes to the left and right of the window. On +text-only terminals, Emacs displays a @samp{\} character at the right +margin of a screen line if it is not the last in its text line. This +@samp{\} character says that the following screen line is not really a +distinct line in the text, just a @dfn{continuation} of a line too +long to fit the screen. Continuation is also called @dfn{line +wrapping}. + + When line wrapping occurs before a character that is wider than one +column, some columns at the end of the previous screen line may be +``empty.'' In this case, Emacs displays additional @samp{\} +characters in the ``empty'' columns, just before the @samp{\} +character that indicates continuation. + + Continued lines can be rather difficult to read, since each line is +typically broken in the middle of a word. You can have Emacs insert a +newline automatically when a line gets too long, by using Auto Fill +mode. Another approach, intermediate between continued lines and Auto +Fill mode, is Long Lines mode, which ensures that wrapping only occurs +in the spaces between words. @xref{Filling}. + @cindex truncation - As an alternative to continuation, Emacs can display long lines by -@dfn{truncation}. This means that all the characters that do not fit in -the width of the screen or window do not appear at all. They remain in -the buffer, temporarily invisible. @samp{$} is used in the last column -instead of @samp{\} to inform you that truncation is in effect. - - Truncation instead of continuation happens whenever horizontal -scrolling is in use, and optionally in all side-by-side windows -(@pxref{Windows}). You can enable truncation for a particular buffer by -setting the variable @code{truncate-lines} to non-@code{nil} in that -buffer. (@xref{Variables}.) Altering the value of -@code{truncate-lines} makes it local to the current buffer; until that -time, the default value is in effect. The default is initially -@code{nil}. @xref{Locals}. - - The command @kbd{M-x toggle-truncate-lines} toggles the display -between continuation and truncation. - - @xref{Display Vars}, for additional variables that affect how text is -displayed. +@cindex line truncation, and fringes + Emacs can also display long lines by @dfn{truncation}. This means +that all the characters that do not fit in the width of the screen or +window do not appear at all. @samp{$} in the last column or a small +straight arrow in the fringe to the right of the window indicates a +truncated line. + + @xref{Display Custom}, for more information about line truncation, +and other variables that affect how text is displayed. @node Position Info @section Cursor Position Information @@ -506,21 +491,25 @@ parts of the buffer, and to count lines. @table @kbd @item M-x what-page -Print page number of point, and line number within page. +Display the page number of point, and the line number within the page. @item M-x what-line -Print line number of point in the buffer. +Display the line number of point in the buffer. @item M-x line-number-mode @itemx M-x column-number-mode Toggle automatic display of current line number or column number. @xref{Optional Mode Line}. @item M-= -Print number of lines in the current region (@code{count-lines-region}). +Display the number of lines in the current region (@code{count-lines-region}). @xref{Mark}, for information about the region. @item C-x = -Print character code of character after point, character position of +Display the character code of character after point, character position of point, and column of point (@code{what-cursor-position}). @item M-x hl-line-mode -Highlighting the current line. +Enable or disable highlighting of the current line. @xref{Cursor +Display}. +@item M-x size-indication-mode +Toggle automatic display of the size of the buffer. +@xref{Optional Mode Line}. @end table @findex what-page @@ -529,50 +518,50 @@ Highlighting the current line. @cindex location of point @cindex cursor location @cindex point location - There are two commands for working with line numbers. @kbd{M-x -what-line} computes the current line number and displays it in the echo -area. To go to a given line by number, use @kbd{M-x goto-line}; it -prompts you for the number. These line numbers count from one at the -beginning of the buffer. - - You can also see the current line number in the mode line; @xref{Mode -Line}. If you narrow the buffer, then the line number in the mode line -is relative to the accessible portion (@pxref{Narrowing}). By contrast, -@code{what-line} shows both the line number relative to the narrowed -region and the line number relative to the whole buffer. - - By contrast, @kbd{M-x what-page} counts pages from the beginning of -the file, and counts lines within the page, printing both numbers. + @kbd{M-x what-line} computes the current line number and displays it +in the echo area. You can also see the current line number in the +mode line; see @ref{Mode Line}. If you narrow the buffer, then the +line number in the mode line is relative to the accessible portion +(@pxref{Narrowing}). By contrast, @code{what-line} shows both the +line number relative to the narrowed region and the line number +relative to the whole buffer. + + @kbd{M-x what-page} counts pages from the beginning of the file, and +counts lines within the page, showing both numbers in the echo area. @xref{Pages}. @kindex M-= @findex count-lines-region While on this subject, we might as well mention @kbd{M-=} (@code{count-lines-region}), -which prints the number of lines in the region (@pxref{Mark}). +which displays the number of lines in the region (@pxref{Mark}). @xref{Pages}, for the command @kbd{C-x l} which counts the lines in the current page. @kindex C-x = @findex what-cursor-position - The command @kbd{C-x =} (@code{what-cursor-position}) can be used to find out -the column that the cursor is in, and other miscellaneous information about -point. It prints a line in the echo area that looks like this: + The command @kbd{C-x =} (@code{what-cursor-position}) shows what +column the cursor is in, and other miscellaneous information about +point and the character after it. It displays a line in the echo area +that looks like this: @smallexample -Char: c (0143, 99, 0x63) point=21044 of 26883(78%) column 53 +Char: c (99, #o143, #x63) point=28062 of 36168 (78%) column=53 @end smallexample -@noindent -(In fact, this is the output produced when point is before the -@samp{column} in the example.) - The four values after @samp{Char:} describe the character that follows point, first by showing it and then by giving its character code in -octal, decimal and hex. For a non-ASCII multibyte character, these are -followed by @samp{ext} and the character's representation, in hex, in +decimal, octal and hex. For a non-@acronym{ASCII} multibyte character, these are +followed by @samp{file} and the character's representation, in hex, in the buffer's coding system, if that coding system encodes the character safely and with a single byte (@pxref{Coding Systems}). If the -character's encoding is longer than one byte, Emacs shows @samp{ext ...}. +character's encoding is longer than one byte, Emacs shows @samp{file ...}. + + However, if the character displayed is in the range 0200 through +0377 octal, it may actually stand for an invalid UTF-8 byte read from +a file. In Emacs, that byte is represented as a sequence of 8-bit +characters, but all of them together display as the original invalid +byte, in octal code. In this case, @kbd{C-x =} shows @samp{part of +display ...} instead of @samp{file}. @samp{point=} is followed by the position of point expressed as a character count. The front of the buffer counts as position 1, one character later @@ -580,16 +569,16 @@ as 2, and so on. The next, larger, number is the total number of characters in the buffer. Afterward in parentheses comes the position expressed as a percentage of the total size. - @samp{column} is followed by the horizontal position of point, in + @samp{column=} is followed by the horizontal position of point, in columns from the left edge of the window. If the buffer has been narrowed, making some of the text at the -beginning and the end temporarily inaccessible, @kbd{C-x =} prints +beginning and the end temporarily inaccessible, @kbd{C-x =} displays additional text describing the currently accessible range. For example, it might display this: @smallexample -Char: C (0103, 67, 0x43) point=252 of 889(28%) <231 - 599> column 0 +Char: C (67, #o103, #x43) point=252 of 889 (28%) <231-599> column=0 @end smallexample @noindent @@ -602,42 +591,70 @@ part), the @w{@kbd{C-x =}} output does not describe a character after point. The output might look like this: @smallexample -point=26957 of 26956(100%) column 0 +point=36169 of 36168 (EOB) column=0 @end smallexample - @w{@kbd{C-u C-x =}} displays additional information about a character, -in place of the buffer coordinates and column: the character set name -and the codes that identify the character within that character set; -ASCII characters are identified as belonging to the @code{ASCII} -character set. In addition, the full character encoding, even if it -takes more than a single byte, is shown after @samp{ext}. Here's an -example for a Latin-1 character A with a grave accent in a buffer whose -coding system is iso-2022-7bit@footnote{On terminals that support -Latin-1 characters, the character shown after @samp{Char:} is displayed -as the actual glyph of A with grave accent.}: +@cindex character set of character at point +@cindex font of character at point +@cindex text properties at point + @w{@kbd{C-u C-x =}} displays the following additional information about a +character. -@example -Char: @`A (04300, 2240, 0x8c0, ext ESC , A @@) (latin-iso8859-1 64) -@end example +@itemize @bullet +@item +The character set name, and the codes that identify the character +within that character set; @acronym{ASCII} characters are identified +as belonging to the @code{ascii} character set. + +@item +The character's syntax and categories. + +@item +The character's encodings, both internally in the buffer, and externally +if you were to save the file. + +@item +What to type to input the character in the current input method +(if it supports the character). + +@item +If you are running Emacs on a graphical display, the font name and +glyph code for the character. If you are running Emacs on a text-only +terminal, the code(s) sent to the terminal. -@findex hl-line-mode -@findex blink-cursor-mode -@cindex cursor, locating visually -@cindex cursor, blinking -@kbd{M-x hl-line-mode} turns on a global minor mode which highlights the -line about point in the selected window (on terminals which support -highlighting). Some people find this convenient. If you find the -cursor difficult to spot, you might try changing its color by -customizing the @code{cursor} face or rely on (the default) -@code{blink-cursor-mode}. Cursor color and blinking can be conrolled -via the @code{cursor} Custom group. +@item +The character's text properties (@pxref{Text Properties,,, +elisp, the Emacs Lisp Reference Manual}), and any overlays containing it +(@pxref{Overlays,,, elisp, the same manual}). +@end itemize + + Here's an example showing the Latin-1 character A with grave accent, +in a buffer whose coding system is @code{iso-latin-1}, whose +terminal coding system is @code{iso-latin-1} (so the terminal actually +displays the character as @samp{@`A}), and which has font-lock-mode +(@pxref{Font Lock}) enabled: + +@smallexample + character: @`A (2240, #o4300, #x8c0, U+00C0) + charset: latin-iso8859-1 + (Right-Hand Part of Latin Alphabet 1@dots{} + code point: #x40 + syntax: w which means: word + category: l:Latin + to input: type "`A" with latin-1-prefix +buffer code: #x81 #xC0 + file code: #xC0 (encoded by coding system iso-latin-1) + display: terminal code #xC0 + +There are text properties here: + fontified t +@end smallexample @node Arguments @section Numeric Arguments @cindex numeric arguments @cindex prefix arguments -@cindex arguments, numeric -@cindex arguments, prefix +@cindex arguments to commands In mathematics and computer usage, the word @dfn{argument} means ``data provided to a function or operation.'' You can give any Emacs @@ -652,19 +669,23 @@ act in the opposite direction. @kindex M-@t{-} @findex digit-argument @findex negative-argument - If your terminal keyboard has a @key{META} key, the easiest way to -specify a numeric argument is to type digits and/or a minus sign while -holding down the @key{META} key. For example, + If your terminal keyboard has a @key{META} key (labeled @key{ALT} on +PC keyboards), the easiest way to specify a numeric argument is to +type digits and/or a minus sign while holding down the @key{META} key. +For example, + @example M-5 C-n @end example + @noindent would move down five lines. The characters @kbd{Meta-1}, @kbd{Meta-2}, and so on, as well as @kbd{Meta--}, do this because they are keys bound to commands (@code{digit-argument} and @code{negative-argument}) that -are defined to contribute to an argument for the next command. Digits -and @kbd{-} modified with Control, or Control and Meta, also specify -numeric arguments. +are defined to contribute to an argument for the next command. +@kbd{Meta--} without digits normally means @minus{}1. Digits and +@kbd{-} modified with Control, or Control and Meta, also specify numeric +arguments. @kindex C-u @findex universal-argument @@ -675,15 +696,14 @@ holding down modifier keys; @kbd{C-u} works on all terminals. To type a negative argument, type a minus sign after @kbd{C-u}. Just a minus sign without digits normally means @minus{}1. - @kbd{C-u} followed by a character which is neither a digit nor a minus -sign has the special meaning of ``multiply by four.'' It multiplies the -argument for the next command by four. @kbd{C-u} twice multiplies it by -sixteen. Thus, @kbd{C-u C-u C-f} moves forward sixteen characters. This -is a good way to move forward ``fast,'' since it moves about 1/5 of a line -in the usual size screen. Other useful combinations are @kbd{C-u C-n}, -@kbd{C-u C-u C-n} (move down a good fraction of a screen), @kbd{C-u C-u -C-o} (make ``a lot'' of blank lines), and @kbd{C-u C-k} (kill four -lines).@refill + @kbd{C-u} without digits or minus sign has the special meaning of +``four times'': it multiplies the argument for the next command by +four. @kbd{C-u C-u} multiplies it by sixteen. Thus, @kbd{C-u C-u +C-f} moves forward sixteen characters. This is a good way to move +forward ``fast,'' since it moves about 1/5 of a line in the usual size +screen. Other useful combinations are @kbd{C-u C-n}, @kbd{C-u C-u +C-n} (move down a good fraction of a screen), @kbd{C-u C-u C-o} (make +``a lot'' of blank lines), and @kbd{C-u C-k} (kill four lines).@refill Some commands care only about whether there is an argument, and not about its value. For example, the command @kbd{M-q} (@code{fill-paragraph}) with @@ -704,8 +724,9 @@ with an argument of one. (@xref{Killing}, for more information on A few commands treat a plain @kbd{C-u} differently from an ordinary argument. A few others may treat an argument of just a minus sign differently from an argument of @minus{}1. These unusual cases are -described when they come up; they are always for reasons of convenience -of use of the individual command. +described when they come up; they are always for reasons of +convenience of use of the individual command, and they are documented +in the command's documentation string. You can use a numeric argument to insert multiple copies of a character. This is straightforward unless the character is a digit; for @@ -724,6 +745,13 @@ the command. @section Repeating a Command @cindex repeating a command + Many simple commands, such as those invoked with a single key or +with @kbd{M-x @var{command-name} @key{RET}}, can be repeated by +invoking them with a numeric argument that serves as a repeat count +(@pxref{Arguments}). However, if the command you want to repeat +prompts for some input, or uses a numeric argument in another way, +repetition using a numeric argument might be problematical. + @kindex C-x z @findex repeat The command @kbd{C-x z} (@code{repeat}) provides another way to repeat @@ -741,3 +769,6 @@ additional times, to delete a total of 80 characters, by typing @kbd{C-x z z z}. The first @kbd{C-x z} repeats the command once, and each subsequent @kbd{z} repeats it once again. +@ignore + arch-tag: cda8952a-c439-41c1-aecf-4bc0d6482956 +@end ignore