diff options
| author | Richard M. Stallman | 2001-08-20 03:57:13 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2001-08-20 03:57:13 +0000 |
| commit | e79c6b89b38c84c475b382b3f1b4feb46f40fc09 (patch) | |
| tree | fd5f14314654380bf2f6ca4733b537356b928f11 | |
| parent | e6fef0a3b30880f18851100f1af61e9312cb066b (diff) | |
| download | emacs-e79c6b89b38c84c475b382b3f1b4feb46f40fc09.tar.gz emacs-e79c6b89b38c84c475b382b3f1b4feb46f40fc09.zip | |
Many clarifications.
| -rw-r--r-- | man/programs.texi | 250 |
1 files changed, 131 insertions, 119 deletions
diff --git a/man/programs.texi b/man/programs.texi index 5c0cb9a9aad..df649b99b43 100644 --- a/man/programs.texi +++ b/man/programs.texi | |||
| @@ -7,8 +7,8 @@ | |||
| 7 | @cindex C editing | 7 | @cindex C editing |
| 8 | @cindex program editing | 8 | @cindex program editing |
| 9 | 9 | ||
| 10 | Emacs provides many features to facilitate editing programs. These | 10 | Emacs provides many features to facilitate editing programs. Some |
| 11 | features can: | 11 | of these features can |
| 12 | 12 | ||
| 13 | @itemize @bullet | 13 | @itemize @bullet |
| 14 | @item | 14 | @item |
| @@ -24,6 +24,8 @@ Balance parentheses (@pxref{Parentheses}). | |||
| 24 | Highlight program syntax (@pxref{Font Lock}). | 24 | Highlight program syntax (@pxref{Font Lock}). |
| 25 | @end itemize | 25 | @end itemize |
| 26 | 26 | ||
| 27 | This chapter describes these features and many more. | ||
| 28 | |||
| 27 | @menu | 29 | @menu |
| 28 | * Program Modes:: Major modes for editing programs. | 30 | * Program Modes:: Major modes for editing programs. |
| 29 | * Defuns:: Commands to operate on major top-level parts | 31 | * Defuns:: Commands to operate on major top-level parts |
| @@ -50,15 +52,15 @@ Highlight program syntax (@pxref{Font Lock}). | |||
| 50 | @xref{Major Modes}. A programming language major mode typically | 52 | @xref{Major Modes}. A programming language major mode typically |
| 51 | specifies the syntax of expressions, the customary rules for | 53 | specifies the syntax of expressions, the customary rules for |
| 52 | indentation, how to do syntax highlighting for the language, and how | 54 | indentation, how to do syntax highlighting for the language, and how |
| 53 | to find the beginning of a function definition. They often provide | 55 | to find the beginning of a function definition. It often customizes |
| 54 | facilities for compiling and debugging programs as well. | 56 | or provides facilities for compiling and debugging programs as well. |
| 55 | 57 | ||
| 56 | Ideally, Emacs should provide a major mode for each programming | 58 | Ideally, Emacs should provide a major mode for each programming |
| 57 | language that you might want to edit; if it doesn't have a mode for | 59 | language that you might want to edit; if it doesn't have a mode for |
| 58 | your favorite language, you can contribute one. But often the mode | 60 | your favorite language, you can contribute one. But often the mode |
| 59 | for one language can serve for other syntactically similar languages. | 61 | for one language can serve for other syntactically similar languages. |
| 60 | The major mode for language @var{l} is called @code{@var{l}-mode}, | 62 | The major mode for language @var{l} is called @code{@var{l}-mode}, |
| 61 | and you can enable it by typing @kbd{M-x @var{l}-mode @key{RET}}. | 63 | and you can select it by typing @kbd{M-x @var{l}-mode @key{RET}}. |
| 62 | @xref{Choosing Modes}. | 64 | @xref{Choosing Modes}. |
| 63 | 65 | ||
| 64 | @cindex Perl mode | 66 | @cindex Perl mode |
| @@ -86,7 +88,7 @@ companion for font creation), Modula2, Objective-C, Octave, Pascal, | |||
| 86 | Perl, Pike, PostScript, Prolog, Simula, Tcl, and VHDL. There is | 88 | Perl, Pike, PostScript, Prolog, Simula, Tcl, and VHDL. There is |
| 87 | also a major mode for makefiles, called Makefile mode. An alternative | 89 | also a major mode for makefiles, called Makefile mode. An alternative |
| 88 | mode for Perl is called CPerl mode. Modes are available for the | 90 | mode for Perl is called CPerl mode. Modes are available for the |
| 89 | scripting languages of the common Unix shells, VMS DCL, and | 91 | scripting languages of the common GNU and Unix shells, VMS DCL, and |
| 90 | MS-DOS/MS-Windows @samp{BAT} files. There are also major modes for | 92 | MS-DOS/MS-Windows @samp{BAT} files. There are also major modes for |
| 91 | editing various sorts of configuration files. | 93 | editing various sorts of configuration files. |
| 92 | 94 | ||
| @@ -94,12 +96,12 @@ editing various sorts of configuration files. | |||
| 94 | @findex c-electric-backspace | 96 | @findex c-electric-backspace |
| 95 | In most programming languages, indentation should vary from line to | 97 | In most programming languages, indentation should vary from line to |
| 96 | line to illustrate the structure of the program. So the major modes | 98 | line to illustrate the structure of the program. So the major modes |
| 97 | for program languages arrange for @key{TAB} to update the indentation | 99 | for programming languages arrange for @key{TAB} to update the |
| 98 | of the current line. They also rebind @key{DEL} to treat a tab as if | 100 | indentation of the current line. They also rebind @key{DEL} to treat |
| 99 | it were the equivalent number of spaces. This makes it possible to | 101 | a tab as if it were the equivalent number of spaces; this lets you |
| 100 | reduce indentation one column at a time without worrying whether it is | 102 | delete one column of indentation without worrying whether the |
| 101 | made up of spaces or tabs. Use @kbd{C-b C-d} to delete a tab | 103 | whitespace consists of spaces or tabs. Use @kbd{C-b C-d} to delete a |
| 102 | character before point, in these modes. | 104 | tab character before point, in these modes. |
| 103 | 105 | ||
| 104 | Separate manuals are available for the modes for Ada (@pxref{Top, , Ada | 106 | Separate manuals are available for the modes for Ada (@pxref{Top, , Ada |
| 105 | Mode, ada-mode, Ada Mode}), C/C++/Objective C/Java/Corba IDL | 107 | Mode, ada-mode, Ada Mode}), C/C++/Objective C/Java/Corba IDL |
| @@ -240,51 +242,52 @@ command while point is between defuns, it uses the following defun. | |||
| 240 | In C mode, @kbd{C-M-h} runs the function @code{c-mark-function}, | 242 | In C mode, @kbd{C-M-h} runs the function @code{c-mark-function}, |
| 241 | which is almost the same as @code{mark-defun}; the difference is that | 243 | which is almost the same as @code{mark-defun}; the difference is that |
| 242 | it backs up over the argument declarations, function name and returned | 244 | it backs up over the argument declarations, function name and returned |
| 243 | data type so that the entire C function is inside the region. | 245 | data type so that the entire C function is inside the region. This is |
| 244 | @xref{Marking Objects}. This is an example of how major modes adjust | 246 | an example of how major modes adjust the standard key bindings so that |
| 245 | the standard key bindings so that they do their standard jobs in a way | 247 | they do their standard jobs in a way better fitting a particular |
| 246 | better fitting a particular language. Other major modes may adjust | 248 | language. Other major modes may replace any or all of these key |
| 247 | any or all of these key bindings for that purpose. | 249 | bindings for that purpose. |
| 248 | 250 | ||
| 249 | @node Imenu | 251 | @node Imenu |
| 250 | @subsection Imenu | 252 | @subsection Imenu |
| 251 | @cindex indexes of buffer contents | 253 | @cindex index of buffer definitions |
| 252 | @cindex buffer content indexes | 254 | @cindex buffer definitions index |
| 253 | @cindex tags | 255 | @cindex tags |
| 254 | 256 | ||
| 255 | The Imenu facility offers a way to find the the major definitions in | 257 | The Imenu facility offers a way to find the the major definitions in |
| 256 | a file by name. It is also useful in text formatter major modes, | 258 | a file by name. It is also useful in text formatter major modes, |
| 257 | where it treats each chapter, section, etc., as a definition. | 259 | where it treats each chapter, section, etc., as a definition. |
| 258 | (@pxref{Tags}, for a more powerful feature that handles multiple files | 260 | (@xref{Tags}, for a more powerful feature that handles multiple files |
| 259 | together.) | 261 | together.) |
| 260 | 262 | ||
| 261 | @findex imenu | 263 | @findex imenu |
| 262 | If you type @kbd{M-x imenu}, it reads the name of a definition using | 264 | If you type @kbd{M-x imenu}, it reads the name of a definition using |
| 263 | the minibuffer, then goes to that definition. You can use completion | 265 | the minibuffer, then moves point to that definition. You can use |
| 264 | to specify the name, and a complete list of possible names is always | 266 | completion to specify the name; the command always displays the whole |
| 265 | displayed. | 267 | list of valid names. |
| 266 | 268 | ||
| 267 | @findex imenu-add-menubar-index | 269 | @findex imenu-add-menubar-index |
| 268 | Alternatively, you can bind the command @code{imenu} to a mouse | 270 | Alternatively, you can bind the command @code{imenu} to a mouse |
| 269 | click. Then it displays mouse menus for you to select the definition | 271 | click. Then it displays mouse menus for you to select a definition |
| 270 | you want. You can also add the buffer's index to the menu bar by | 272 | name. You can also add the buffer's index to the menu bar by calling |
| 271 | calling @code{imenu-add-menubar-index}. If you want to have this | 273 | @code{imenu-add-menubar-index}. If you want to have this menu bar |
| 272 | menu bar item available for all buffers in a certain major mode, you | 274 | item available for all buffers in a certain major mode, you can do |
| 273 | can do this by adding @code{imenu-add-menubar-index} to its mode | 275 | this by adding @code{imenu-add-menubar-index} to its mode hook. But |
| 274 | hook. But then you will have to wait for the buffer to be searched | 276 | if you have done that, you will have to wait each time you visit a |
| 275 | for definitions, each time you visit a file which uses that mode. | 277 | file in that mode, while Emacs finds all the definitions in that |
| 278 | buffer. | ||
| 276 | 279 | ||
| 277 | @vindex imenu-auto-rescan | 280 | @vindex imenu-auto-rescan |
| 278 | When you change the contents of a buffer, if you add or delete | 281 | When you change the contents of a buffer, if you add or delete |
| 279 | definitions, you can update the buffer's index to correspond to the | 282 | definitions, you can update the buffer's index based on the |
| 280 | new contents by invoking the @samp{*Rescan*} item in the menu. | 283 | new contents by invoking the @samp{*Rescan*} item in the menu. |
| 281 | Rescanning happens automatically if @code{imenu-auto-rescan} is | 284 | Rescanning happens automatically you set @code{imenu-auto-rescan} to a |
| 282 | non-@code{nil}. There is no need to rescan because of small changes | 285 | non-@code{nil} value. There is no need to rescan because of small |
| 283 | in the text. | 286 | changes in the text. |
| 284 | 287 | ||
| 285 | @vindex imenu-sort-function | 288 | @vindex imenu-sort-function |
| 286 | You can customize the way the menus are sorted by setting the | 289 | You can customize the way the menus are sorted by setting the |
| 287 | variable @code{imenu-sort-function}. By default names are ordered as | 290 | variable @code{imenu-sort-function}. By default, names are ordered as |
| 288 | they occur in the buffer; if you want alphabetic sorting, use the | 291 | they occur in the buffer; if you want alphabetic sorting, use the |
| 289 | symbol @code{imenu--sort-by-name} as the value. You can also | 292 | symbol @code{imenu--sort-by-name} as the value. You can also |
| 290 | define your own comparison function by writing Lisp code. | 293 | define your own comparison function by writing Lisp code. |
| @@ -309,11 +312,11 @@ buffer. | |||
| 309 | @vindex which-func-modes | 312 | @vindex which-func-modes |
| 310 | To enable (or disable) Which Function mode, use the command @kbd{M-x | 313 | To enable (or disable) Which Function mode, use the command @kbd{M-x |
| 311 | which-function-mode}. This command is global; it applies to all | 314 | which-function-mode}. This command is global; it applies to all |
| 312 | buffers, both existing ones and those yet to be created. However, this | 315 | buffers, both existing ones and those yet to be created. However, |
| 313 | only affects certain major modes, those listed in the value of | 316 | it only takes effect in certain major modes, those listed in the value of |
| 314 | @code{which-func-modes}. If the value is @code{t}, then Which Function | 317 | @code{which-func-modes}. If the value is @code{t}, then Which |
| 315 | mode applies to all major modes that know how to support it---which are | 318 | Function mode applies to all major modes that know how to support |
| 316 | the major modes that support Imenu. | 319 | it---in other words, all the major modes that support Imenu. |
| 317 | 320 | ||
| 318 | @node Program Indent | 321 | @node Program Indent |
| 319 | @section Indentation for Programs | 322 | @section Indentation for Programs |
| @@ -348,7 +351,7 @@ Adjust indentation of current line. | |||
| 348 | @item C-j | 351 | @item C-j |
| 349 | Equivalent to @key{RET} followed by @key{TAB} (@code{newline-and-indent}). | 352 | Equivalent to @key{RET} followed by @key{TAB} (@code{newline-and-indent}). |
| 350 | @item @key{LINEFEED} | 353 | @item @key{LINEFEED} |
| 351 | This key is a way to enter @kbd{C-j}, on some keyboards. | 354 | This key, if the keyboard has it, is another way to enter @kbd{C-j}. |
| 352 | @end table | 355 | @end table |
| 353 | 356 | ||
| 354 | @kindex TAB @r{(programming modes)} | 357 | @kindex TAB @r{(programming modes)} |
| @@ -405,11 +408,11 @@ you have several commands available. | |||
| 405 | @table @kbd | 408 | @table @kbd |
| 406 | @item C-M-q | 409 | @item C-M-q |
| 407 | Reindent all the lines within one parenthetical grouping(@code{indent-sexp}). | 410 | Reindent all the lines within one parenthetical grouping(@code{indent-sexp}). |
| 411 | @item C-M-\ | ||
| 412 | Reindent all lines in the region (@code{indent-region}). | ||
| 408 | @item C-u @key{TAB} | 413 | @item C-u @key{TAB} |
| 409 | Shift an entire parenthetical grouping rigidly sideways so that its | 414 | Shift an entire parenthetical grouping rigidly sideways so that its |
| 410 | first line is properly indented. | 415 | first line is properly indented. |
| 411 | @item C-M-\ | ||
| 412 | Reindent all lines in the region (@code{indent-region}). | ||
| 413 | @item M-x indent-code-rigidly | 416 | @item M-x indent-code-rigidly |
| 414 | Shift all the lines in the region rigidly sideways, but do not alter | 417 | Shift all the lines in the region rigidly sideways, but do not alter |
| 415 | lines that start inside comments and strings. | 418 | lines that start inside comments and strings. |
| @@ -425,6 +428,11 @@ the line where the grouping starts is not changed; therefore, this | |||
| 425 | changes only the relative indentation within the grouping, not its | 428 | changes only the relative indentation within the grouping, not its |
| 426 | overall indentation. To correct that as well, type @key{TAB} first. | 429 | overall indentation. To correct that as well, type @key{TAB} first. |
| 427 | 430 | ||
| 431 | Another way to specify the range to be reindented is with the | ||
| 432 | region. The command @kbd{C-M-\} (@code{indent-region}) applies | ||
| 433 | @key{TAB} to every line whose first character is between point and | ||
| 434 | mark. | ||
| 435 | |||
| 428 | @kindex C-u TAB | 436 | @kindex C-u TAB |
| 429 | If you like the relative indentation within a grouping, but not the | 437 | If you like the relative indentation within a grouping, but not the |
| 430 | indentation of its first line, you can type @kbd{C-u @key{TAB}} to | 438 | indentation of its first line, you can type @kbd{C-u @key{TAB}} to |
| @@ -436,13 +444,11 @@ line. It is clever, though, and does not alter lines that start | |||
| 436 | inside strings, or C preprocessor lines when in C mode. | 444 | inside strings, or C preprocessor lines when in C mode. |
| 437 | 445 | ||
| 438 | @findex indent-code-rigidly | 446 | @findex indent-code-rigidly |
| 439 | Another way to specify the range to be reindented is with the region. | 447 | You can also perform this operation on the region, using the command |
| 440 | The command @kbd{C-M-\} (@code{indent-region}) applies @key{TAB} to | 448 | @kbd{M-x indent-code-rigidly}. It rigidly shifts all the lines in the |
| 441 | every line whose first character is between point and mark. The command | 449 | region sideways, like @code{indent-rigidly} does (@pxref{Indentation |
| 442 | @kbd{M-x indent-code-rigidly} rigidly shifts all the lines in the region | 450 | Commands}). It doesn't alter the indentation of lines that start |
| 443 | sideways, like @code{indent-rigidly} does (@pxref{Indentation | 451 | inside a comment or a string, unless the region starts inside that |
| 444 | Commands}), except that it doesn't alter the indentation of lines that | ||
| 445 | start inside a comment or a string, unless the region starts inside that | ||
| 446 | comment or string. | 452 | comment or string. |
| 447 | 453 | ||
| 448 | @node Lisp Indent | 454 | @node Lisp Indent |
| @@ -482,7 +488,7 @@ function name. There are four possibilities for this property: | |||
| 482 | This is the same as no property---use the standard indentation pattern. | 488 | This is the same as no property---use the standard indentation pattern. |
| 483 | @item @code{defun} | 489 | @item @code{defun} |
| 484 | Handle this function like a @samp{def} construct: treat the second | 490 | Handle this function like a @samp{def} construct: treat the second |
| 485 | line the start of a @dfn{body}. | 491 | line as the start of a @dfn{body}. |
| 486 | @item a number, @var{number} | 492 | @item a number, @var{number} |
| 487 | The first @var{number} arguments of the function are | 493 | The first @var{number} arguments of the function are |
| 488 | @dfn{distinguished} arguments; the rest are considered the body | 494 | @dfn{distinguished} arguments; the rest are considered the body |
| @@ -593,8 +599,8 @@ definition. | |||
| 593 | c-set-style}. Specify a style name as an argument (case is not | 599 | c-set-style}. Specify a style name as an argument (case is not |
| 594 | significant). This command affects the current buffer only, and it | 600 | significant). This command affects the current buffer only, and it |
| 595 | affects only future invocations of the indentation commands; it does | 601 | affects only future invocations of the indentation commands; it does |
| 596 | not change the indentation of the code in the buffer. To reindent the | 602 | not reindent the code in the buffer. To reindent the whole buffer in |
| 597 | whole buffer in the new style, you can type @kbd{C-x h C-M-\}. | 603 | the new style, you can type @kbd{C-x h C-M-\}. |
| 598 | 604 | ||
| 599 | @vindex c-default-style | 605 | @vindex c-default-style |
| 600 | You can also set the variable @code{c-default-style} to specify the | 606 | You can also set the variable @code{c-default-style} to specify the |
| @@ -610,7 +616,7 @@ style to use for it. For example, | |||
| 610 | @noindent | 616 | @noindent |
| 611 | specifies an explicit choice for Java mode, and the default @samp{gnu} | 617 | specifies an explicit choice for Java mode, and the default @samp{gnu} |
| 612 | style for the other C-like modes. This variable takes effect when you | 618 | style for the other C-like modes. This variable takes effect when you |
| 613 | switch to one of the C-like major modes; thus, if you specify a new | 619 | select one of the C-like major modes; thus, if you specify a new |
| 614 | default style for Java mode, you can make it take effect in an | 620 | default style for Java mode, you can make it take effect in an |
| 615 | existing Java mode buffer by typing @kbd{M-x java-mode} there. | 621 | existing Java mode buffer by typing @kbd{M-x java-mode} there. |
| 616 | 622 | ||
| @@ -618,7 +624,7 @@ existing Java mode buffer by typing @kbd{M-x java-mode} there. | |||
| 618 | Project for C; it is the default, so as to encourage use of our | 624 | Project for C; it is the default, so as to encourage use of our |
| 619 | recommended style. | 625 | recommended style. |
| 620 | 626 | ||
| 621 | @xref{Customizing Indentation,, cc-mode, the CC Mode Manual}, for | 627 | @xref{Customizing Indentation,,, cc-mode, the CC Mode Manual}, for |
| 622 | more information on customizing indentation for C and related modes, | 628 | more information on customizing indentation for C and related modes, |
| 623 | including how to override parts of an existing style and how to define | 629 | including how to override parts of an existing style and how to define |
| 624 | your own styles. | 630 | your own styles. |
| @@ -634,9 +640,9 @@ balanced. | |||
| 634 | 640 | ||
| 635 | When talking about these facilities, the term ``parenthesis'' also | 641 | When talking about these facilities, the term ``parenthesis'' also |
| 636 | includes braces, brackets, or whatever delimiters are defined to match | 642 | includes braces, brackets, or whatever delimiters are defined to match |
| 637 | in pairs. This is controlled by the major mode, through the syntax | 643 | in pairs. The major mode controls which delimiters are significant, |
| 638 | table (@pxref{Syntax}). In Lisp, only parentheses count; in C, these | 644 | through the syntax table (@pxref{Syntax}). In Lisp, only parentheses |
| 639 | commands apply to braces and brackets too. | 645 | count; in C, these commands apply to braces and brackets too. |
| 640 | 646 | ||
| 641 | You can use @kbd{M-x check-parens} to find any unbalanced | 647 | You can use @kbd{M-x check-parens} to find any unbalanced |
| 642 | parentheses and unbalanced string quotes in the buffer. | 648 | parentheses and unbalanced string quotes in the buffer. |
| @@ -676,16 +682,16 @@ Put mark after following expression (@code{mark-sexp}). | |||
| 676 | Each programming language major mode customizes the definition of | 682 | Each programming language major mode customizes the definition of |
| 677 | balanced expressions to suit that language. Balanced expressions | 683 | balanced expressions to suit that language. Balanced expressions |
| 678 | typically include symbols, numbers, and string constants, as well as | 684 | typically include symbols, numbers, and string constants, as well as |
| 679 | anything contained in parentheses, brackets or braces. Some languages | 685 | any pair of matching delimiters and their contents. Some languages |
| 680 | have obscure forms of expression syntax that nobody has bothered to | 686 | have obscure forms of expression syntax that nobody has bothered to |
| 681 | implement in Emacs. | 687 | implement in Emacs. |
| 682 | 688 | ||
| 683 | @cindex Control-Meta | 689 | @cindex Control-Meta |
| 684 | By convention, the keys for these commands are always Control-Meta | 690 | By convention, the keys for these commands are all Control-Meta |
| 685 | characters. They usually act like the corresponding Meta characters, | 691 | characters. They usually act on expressions just as the corresponding |
| 686 | except that they take note of parentheses and their contents. For | 692 | Meta characters act on words. For instance, the command @kbd{C-M-b} |
| 687 | instance, the command @kbd{C-M-b} moves backward over a balanced | 693 | moves backward over a balanced expression, just as @kbd{M-b} moves |
| 688 | expression, just as @kbd{M-b} moves back over a word. | 694 | back over a word. |
| 689 | 695 | ||
| 690 | @kindex C-M-f | 696 | @kindex C-M-f |
| 691 | @kindex C-M-b | 697 | @kindex C-M-b |
| @@ -731,10 +737,11 @@ Emacs is really @key{BACKSPACE}, and the reboot command is | |||
| 731 | A somewhat random-sounding command which is nevertheless handy is | 737 | A somewhat random-sounding command which is nevertheless handy is |
| 732 | @kbd{C-M-t} (@code{transpose-sexps}), which drags the previous | 738 | @kbd{C-M-t} (@code{transpose-sexps}), which drags the previous |
| 733 | balanced expression across the next one. An argument serves as a | 739 | balanced expression across the next one. An argument serves as a |
| 734 | repeat count, and a negative argument drags backwards (thus canceling | 740 | repeat count, and a negative argument drags the previous balanced |
| 735 | out the effect of @kbd{C-M-t} with a positive argument). An argument | 741 | expression backwards across those before it (thus canceling out the |
| 736 | of zero, rather than doing nothing, transposes the balanced | 742 | effect of @kbd{C-M-t} with a positive argument). An argument of zero, |
| 737 | expressions ending after point and the mark. | 743 | rather than doing nothing, transposes the balanced expressions ending |
| 744 | at or after point and the mark. | ||
| 738 | 745 | ||
| 739 | @kindex C-M-@@ | 746 | @kindex C-M-@@ |
| 740 | @findex mark-sexp | 747 | @findex mark-sexp |
| @@ -752,8 +759,9 @@ not treat @samp{foo + bar} as a single expression, even though it | |||
| 752 | expression and @samp{bar} as another, with the @samp{+} as punctuation | 759 | expression and @samp{bar} as another, with the @samp{+} as punctuation |
| 753 | between them. Both @samp{foo + bar} and @samp{foo} are legitimate | 760 | between them. Both @samp{foo + bar} and @samp{foo} are legitimate |
| 754 | choices for ``the expression following point'' when point is at the | 761 | choices for ``the expression following point'' when point is at the |
| 755 | @samp{f}. Note that @samp{(foo + bar)} does act as a single | 762 | @samp{f}, so the expression commands must perforce choose one or the |
| 756 | expression in C mode. | 763 | other to operate on. Note that @samp{(foo + bar)} is recognized as a |
| 764 | single expression in C mode, because of the parentheses. | ||
| 757 | 765 | ||
| 758 | @node Moving by Parens | 766 | @node Moving by Parens |
| 759 | @subsection Moving in the Parenthesis Structure | 767 | @subsection Moving in the Parenthesis Structure |
| @@ -817,8 +825,8 @@ automatically how parentheses (and other matching delimiters) match in | |||
| 817 | the text. Whenever you type a self-inserting character that is a | 825 | the text. Whenever you type a self-inserting character that is a |
| 818 | closing delimiter, the cursor moves momentarily to the location of the | 826 | closing delimiter, the cursor moves momentarily to the location of the |
| 819 | matching opening delimiter, provided that is on the screen. If it is | 827 | matching opening delimiter, provided that is on the screen. If it is |
| 820 | not on the screen, Emacs displays some text near it in the echo area. | 828 | not on the screen, Emacs displays some of the text near it in the echo |
| 821 | Either way, you can tell what grouping you are closing off. | 829 | area. Either way, you can tell which grouping you are closing off. |
| 822 | 830 | ||
| 823 | If the opening delimiter and closing delimiter are mismatched---such | 831 | If the opening delimiter and closing delimiter are mismatched---such |
| 824 | as in @samp{[x)}---a warning message is displayed in the echo area. | 832 | as in @samp{[x)}---a warning message is displayed in the echo area. |
| @@ -1102,34 +1110,36 @@ typically available with the appropriate GNU package. | |||
| 1102 | @node Man Page | 1110 | @node Man Page |
| 1103 | @subsection Man Page Lookup | 1111 | @subsection Man Page Lookup |
| 1104 | 1112 | ||
| 1105 | Eventually the GNU project hopes to replace most man pages in the | 1113 | @cindex manual page |
| 1106 | GNU operating system with better-organized manuals that you can browse | 1114 | On Unix, the main form of on-line documentation was the @dfn{manual |
| 1107 | with Info (@pxref{Misc Help}). Since this process is not finished, it | 1115 | page} or @dfn{man page}. In the GNU operating system, we hope to |
| 1108 | is still useful to read manual pages. | 1116 | replace man pages with better-organized manuals that you can browse |
| 1117 | with Info (@pxref{Misc Help}). This process is not finished, so it is | ||
| 1118 | still useful to read manual pages. | ||
| 1109 | 1119 | ||
| 1110 | @findex manual-entry | 1120 | @findex manual-entry |
| 1111 | @cindex manual pages | 1121 | You can read the man page for an operating system command, library |
| 1112 | You can read the ``man page'' for an operating system command, | 1122 | function, or system call, with the @kbd{M-x manual-entry} command. It |
| 1113 | library function, or system call, with the @kbd{M-x manual-entry} | 1123 | runs the @code{man} program to format the man page; if the system |
| 1114 | command. It runs the @code{man} program to format the man page, and | 1124 | permits, it runs @code{man} asynchronously, so that you can keep on |
| 1115 | runs it asynchronously if your system permits, so that you can keep on | 1125 | editing while the page is being formatted. (On MS-DOS and MS-Windows |
| 1116 | editing while the page is being formatted. (MS-DOS and MS-Windows 3 | 1126 | 3, you cannot edit while Emacs waits for @code{man} to finish.) The |
| 1117 | do not permit asynchronous subprocesses, so on these systems you | 1127 | result goes in a buffer named @samp{*Man @var{topic}*}. These buffers |
| 1118 | cannot edit while Emacs waits for @code{man} to finish.) The result | 1128 | use a special major mode, Man mode, that facilitates scrolling and |
| 1119 | goes in a buffer named @samp{*Man @var{topic}*}. These buffers use a | 1129 | jumping to other manual pages. For details, type @kbd{C-h m} while in |
| 1120 | special major mode, Man mode, that facilitates scrolling and jumping | 1130 | a man page buffer. |
| 1121 | to other manual pages. For details, type @kbd{C-h m} while in a man | ||
| 1122 | page buffer. | ||
| 1123 | 1131 | ||
| 1124 | @cindex sections of manual pages | 1132 | @cindex sections of manual pages |
| 1125 | Each man page belongs to one of around ten @dfn{sections}; sometimes | 1133 | Each man page belongs to one of ten or more @dfn{sections}, each |
| 1126 | there are multiple man pages with the same name in different sections. | 1134 | named by a digit or by a digit and a letter. Sometimes there are |
| 1127 | To read a man page from a specific section, type | 1135 | multiple man pages with the same name in different sections. To read |
| 1136 | a man page from a specific section, type | ||
| 1128 | @samp{@var{topic}(@var{section})} or @samp{@var{section} @var{topic}} | 1137 | @samp{@var{topic}(@var{section})} or @samp{@var{section} @var{topic}} |
| 1129 | when @kbd{M-x manual-entry} prompts for the topic. For example, to | 1138 | when @kbd{M-x manual-entry} prompts for the topic. For example, to |
| 1130 | read the man page for the C library function @code{chmod} (as opposed | 1139 | read the man page for the C library function @code{chmod} (as opposed |
| 1131 | to a command by the same name), type @kbd{M-x manual-entry @key{RET} | 1140 | to a command of the same name), type @kbd{M-x manual-entry @key{RET} |
| 1132 | chmod(2v) @key{RET}} (assuming @code{chmod} is in section @samp{2v}). | 1141 | chmod(2) @key{RET}} (@code{chmod} is a system call, so it is in |
| 1142 | section @samp{2}). | ||
| 1133 | 1143 | ||
| 1134 | @vindex Man-switches | 1144 | @vindex Man-switches |
| 1135 | If you do not specify a section, the results depend on how the | 1145 | If you do not specify a section, the results depend on how the |
| @@ -1143,11 +1153,10 @@ can add this option to the value of the variable @code{Man-switches}.}. | |||
| 1143 | The mode line shows how many manual pages are present in the Man buffer. | 1153 | The mode line shows how many manual pages are present in the Man buffer. |
| 1144 | 1154 | ||
| 1145 | @vindex Man-fontify-manpage-flag | 1155 | @vindex Man-fontify-manpage-flag |
| 1146 | By default, Emacs uses faces in man pages if Emacs can display | 1156 | By default, Emacs highlights the text in man pages. For a long man |
| 1147 | different fonts or colors. For a long man page, setting the faces | 1157 | page, highlighting can take substantial time. You can turn off |
| 1148 | properly can take substantial time. You can turn off use of faces in | 1158 | highlighting of man pages by setting the variable |
| 1149 | man pages by setting the variable @code{Man-fontify-manpage-flag} to | 1159 | @code{Man-fontify-manpage-flag} to @code{nil}. |
| 1150 | @code{nil}. | ||
| 1151 | 1160 | ||
| 1152 | @findex Man-fontify-manpage | 1161 | @findex Man-fontify-manpage |
| 1153 | If you insert the text of a man page into an Emacs buffer in some | 1162 | If you insert the text of a man page into an Emacs buffer in some |
| @@ -1186,7 +1195,7 @@ them. | |||
| 1186 | directories specified in the @code{MANPATH} environment variable. (If | 1195 | directories specified in the @code{MANPATH} environment variable. (If |
| 1187 | @code{MANPATH} is not set, @code{woman} uses a suitable default value, | 1196 | @code{MANPATH} is not set, @code{woman} uses a suitable default value, |
| 1188 | which can be customized.) More precisely, @code{woman} looks for | 1197 | which can be customized.) More precisely, @code{woman} looks for |
| 1189 | subdirectories that match the shell wildcard @file{man*} in each one | 1198 | subdirectories that match the shell wildcard pattern @file{man*} in each one |
| 1190 | of these directories, and tries to find the manual pages in those | 1199 | of these directories, and tries to find the manual pages in those |
| 1191 | subdirectories. When first invoked, @kbd{M-x woman} converts the | 1200 | subdirectories. When first invoked, @kbd{M-x woman} converts the |
| 1192 | value of @code{MANPATH} to a list of directory names and stores that | 1201 | value of @code{MANPATH} to a list of directory names and stores that |
| @@ -1316,7 +1325,7 @@ Open neither blocks nor comments. | |||
| 1316 | @end table | 1325 | @end table |
| 1317 | 1326 | ||
| 1318 | @item hs-special-modes-alist | 1327 | @item hs-special-modes-alist |
| 1319 | A list of elements, each Specifying how to initialize Hideshow | 1328 | A list of elements, each specifying how to initialize Hideshow |
| 1320 | variables for one major mode. See the variable's documentation string | 1329 | variables for one major mode. See the variable's documentation string |
| 1321 | for more information. | 1330 | for more information. |
| 1322 | @end table | 1331 | @end table |
| @@ -1325,18 +1334,20 @@ for more information. | |||
| 1325 | @section Completion for Symbol Names | 1334 | @section Completion for Symbol Names |
| 1326 | @cindex completion (symbol names) | 1335 | @cindex completion (symbol names) |
| 1327 | 1336 | ||
| 1328 | Usually completion happens in the minibuffer. But one kind of completion | 1337 | In Emacs, completion is something you normally do in the minibuffer. |
| 1329 | is available in all buffers: completion for symbol names. | 1338 | But one kind of completion is available in all buffers: completion for |
| 1339 | symbol names. | ||
| 1330 | 1340 | ||
| 1331 | @kindex M-TAB | 1341 | @kindex M-TAB |
| 1332 | The character @kbd{M-@key{TAB}} runs a command to complete the partial | 1342 | The character @kbd{M-@key{TAB}} runs a command to complete the |
| 1333 | symbol before point against the set of meaningful symbol names. Any | 1343 | partial symbol before point against the set of meaningful symbol |
| 1334 | additional characters determined by the partial name are inserted at | 1344 | names. This command inserts at point any additional characters that |
| 1335 | point. | 1345 | it can determine from the partial name. |
| 1336 | 1346 | ||
| 1337 | If the partial name in the buffer has more than one possible completion | 1347 | If the partial name in the buffer has multiple possible completions |
| 1338 | and they have no additional characters in common, a list of all possible | 1348 | that differ in the very next character, so that it is impossible to |
| 1339 | completions is displayed in another window. | 1349 | complete even one more character, @kbd{M-@key{TAB}} displays a list of |
| 1350 | all possible completions in another window. | ||
| 1340 | 1351 | ||
| 1341 | @cindex tags-based completion | 1352 | @cindex tags-based completion |
| 1342 | @cindex Info index completion | 1353 | @cindex Info index completion |
| @@ -1373,25 +1384,26 @@ based on the spell-checker's dictionary. @xref{Spelling}. | |||
| 1373 | @findex glasses-mode | 1384 | @findex glasses-mode |
| 1374 | 1385 | ||
| 1375 | Glasses minor mode makes @samp{unreadableIdentifiersLikeThis} | 1386 | Glasses minor mode makes @samp{unreadableIdentifiersLikeThis} |
| 1376 | readable by altering the display. It knows two different ways to do | 1387 | readable by altering the way they display. It knows two different |
| 1377 | this: by displaying underscores between a lower-case letter and the | 1388 | ways to do this: by displaying underscores between a lower-case letter |
| 1378 | following capital letter, or by emboldening the capital letters. It | 1389 | and the following capital letter, and by emboldening the capital |
| 1379 | does not alter the buffer text, only the way they display, so you can | 1390 | letters. It does not alter the buffer text, only the way they |
| 1380 | use it even on read-only buffers. You can use the command @kbd{M-x | 1391 | display, so you can use it even on read-only buffers. You can use the |
| 1381 | glasses-mode} to enable or disable the mode; you can also add | 1392 | command @kbd{M-x glasses-mode} to enable or disable the mode in the |
| 1382 | @code{glasses-mode} to the mode hook of appropriate programming | 1393 | current buffer; you can also add @code{glasses-mode} to the mode hook |
| 1383 | language major modes. | 1394 | of the programming language major modes in which you normally want |
| 1395 | to use Glasses mode. | ||
| 1384 | 1396 | ||
| 1385 | @node Misc for Programs | 1397 | @node Misc for Programs |
| 1386 | @section Other Features Useful for Editing Programs | 1398 | @section Other Features Useful for Editing Programs |
| 1387 | 1399 | ||
| 1388 | A number of Emacs commands that aren't designed specifically for | 1400 | A number of Emacs commands that aren't designed specifically for |
| 1389 | editing programs are useful for it nonetheless. | 1401 | editing programs are useful for that nonetheless. |
| 1390 | 1402 | ||
| 1391 | The Emacs commands that operate on words, sentences and paragraphs | 1403 | The Emacs commands that operate on words, sentences and paragraphs |
| 1392 | are useful for editing code. Most symbols names contain words | 1404 | are useful for editing code. Most symbols names contain words |
| 1393 | (@pxref{Words}); sentences can be found in strings and comments | 1405 | (@pxref{Words}); sentences can be found in strings and comments |
| 1394 | (@pxref{Sentences}). Paragraphs in the strict sense may be found in | 1406 | (@pxref{Sentences}). Paragraphs in the strict sense can be found in |
| 1395 | program code (in long comments), but the paragraph commands are useful | 1407 | program code (in long comments), but the paragraph commands are useful |
| 1396 | in other places too, because programming language major modes define | 1408 | in other places too, because programming language major modes define |
| 1397 | paragraphs to begin and end at blank lines (@pxref{Paragraphs}). | 1409 | paragraphs to begin and end at blank lines (@pxref{Paragraphs}). |