@c This is part of the Emacs manual.
-@c Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1997, 1999, 2000,
-@c 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2011
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Programs, Building, Text, Top
of a program.
* Program Indent:: Adjusting indentation to show the nesting.
* Parentheses:: Commands that operate on parentheses.
-* Comments:: Inserting, killing, and aligning comments.
+* Comments:: Inserting, killing, and aligning comments.
* Documentation:: Getting documentation of functions you plan to call.
* Hideshow:: Displaying blocks selectively.
* Symbol Completion:: Completion on symbol names of your program or language.
* Glasses:: Making identifiersLikeThis more readable.
+* Semantic:: Suite of editing tools based on source code parsing.
* Misc for Programs:: Other Emacs features useful for editing programs.
* C Modes:: Special commands of C, C++, Objective-C,
Java, and Pike modes.
@cindex PostScript mode
@cindex Conf mode
@cindex DNS mode
+@cindex Javascript mode
The existing programming language major modes include Lisp, Scheme
(a variant of Lisp) and the Scheme-based DSSSL expression language,
Ada, ASM, AWK, C, C++, Delphi (Object Pascal), Fortran, Icon, IDL
-(CORBA), IDLWAVE, Java, Metafont (@TeX{}'s companion for font
-creation), Modula2, Objective-C, Octave, Pascal, Perl, Pike,
+(CORBA), IDLWAVE, Java, Javascript, Metafont (@TeX{}'s companion for
+font creation), Modula2, Objective-C, Octave, Pascal, Perl, Pike,
PostScript, Prolog, Python, Ruby, Simula, Tcl, and VHDL. An
alternative mode for Perl is called CPerl mode. Modes are available
for the scripting languages of the common GNU and Unix shells, VMS
single parenthetical grouping.
@menu
-* Basic Indent:: Indenting a single line.
+* Basic Indent:: Indenting a single line.
* Multi-line Indent:: Commands to reindent many lines at once.
-* Lisp Indent:: Specifying how each Lisp function should be indented.
-* C Indent:: Extra features for indenting C and related modes.
-* Custom C Indent:: Controlling indentation style for C and related modes.
+* Lisp Indent:: Specifying how each Lisp function should be indented.
+* C Indent:: Extra features for indenting C and related modes.
+* Custom C Indent:: Controlling indentation style for C and related modes.
@end menu
@cindex pretty-printer
Use @kbd{C-q @key{TAB}} to insert a tab character at point.
-@kindex C-j
+@kindex C-j @r{(indenting source code)}
@findex newline-and-indent
When entering lines of new code, use @kbd{C-j}
(@code{newline-and-indent}), which inserts a newline and then adjusts
first.
@kbd{C-M-\} (@code{indent-region}) applies @key{TAB} to the region.
-This is useful when Transient Mark mode is disabled (@pxref{Persistent
-Mark}), because in that case @key{TAB} does not act on the region.
+This is useful when Transient Mark mode is disabled (@pxref{Disabled
+Transient Mark}), because in that case @key{TAB} does not act on the
+region.
@kindex C-u TAB
If you like the relative indentation within a grouping but not the
@example
(setq c-default-style
- '((java-mode . "java") (awk-mode . "awk") (other . "gnu")))
+ '((java-mode . "java")
+ (awk-mode . "awk")
+ (other . "gnu")))
@end example
@noindent
When talking about these facilities, the term ``parenthesis'' also
includes braces, brackets, or whatever delimiters are defined to match
in pairs. The major mode controls which delimiters are significant,
-through the syntax table (@pxref{Syntax}). In Lisp, only parentheses
-count; in C, these commands apply to braces and brackets too.
+through the syntax table (@pxref{Syntax Tables,, Syntax Tables, elisp,
+The Emacs Lisp Reference Manual}). In Lisp, only parentheses count;
+in C, these commands apply to braces and brackets too.
You can use @kbd{M-x check-parens} to find any unbalanced
parentheses and unbalanced string quotes in the buffer.
* Expressions:: Expressions with balanced parentheses.
* Moving by Parens:: Commands for moving up, down and across
in the structure of parentheses.
-* Matching:: Insertion of a close-delimiter flashes matching open.
+* Matching:: Insertion of a close-delimiter flashes matching open.
@end menu
@node Expressions
@kindex C-M-@@
@kindex C-M-@key{SPC}
@findex mark-sexp
- To set the region around the next balanced expression in the buffer,
-use @kbd{C-M-@key{SPC}} (@code{mark-sexp}), which sets mark at the
-same place that @kbd{C-M-f} would move to. @kbd{C-M-@key{SPC}} treats
+ To operate on balanced expressions with an operation which acts on
+the region, use the command @kbd{C-M-@key{SPC}} (@code{mark-sexp}).
+This sets the mark at the same place that @kbd{C-M-f} would move to.
+@xref{Marking Objects}, for more information about this command.
+
+@kbd{C-M-@key{SPC}} treats
numeric arguments in the same way as @kbd{C-M-f}; in particular, a
negative argument puts the mark at the beginning of the previous
balanced expression. The alias @kbd{C-M-@@} is equivalent to
your machine; the list of available manual pages is computed
automatically the first time you invoke @code{woman}. The word at
point in the current buffer is used to suggest the default for the
-name the manual page.
+name of the manual page.
With a numeric argument, @kbd{M-x woman} recomputes the list of the
manual pages used for completion. This is useful if you add or delete
of the programming language major modes in which you normally want
to use Glasses mode.
+@node Semantic
+@section Semantic
+@cindex Semantic package
+
+Semantic is a package that provides language-aware editing commands
+based on @code{source code parsers}. This section provides a brief
+description of Semantic;
+@ifnottex
+for full details, see @ref{Top, Semantic,, semantic, Semantic}.
+@end ifnottex
+@iftex
+for full details, type @kbd{C-h i} (@code{info}) and then select the
+Semantic manual.
+@end iftex
+
+ Most of the ``language aware'' features in Emacs, such as font lock
+(@pxref{Font Lock}), rely on ``rules of thumb''@footnote{Regular
+expressions and syntax tables.} that usually give good results but are
+never completely exact. In contrast, the parsers used by Semantic
+have an exact understanding of programming language syntax. This
+allows Semantic to provide search, navigation, and completion commands
+that are powerful and precise.
+
+ To begin using Semantic, type @kbd{M-x semantic-mode} or click on
+the menu item named @samp{Source Code Parsers (Semantic)} in the
+@samp{Tools} menu. This enables Semantic mode, a global minor mode.
+
+ When Semantic mode is enabled, Emacs automatically attempts to
+parses each file you visit. Currently, Semantic understands C, C++,
+Scheme, Javascript, Java, HTML, and Make. Within each parsed buffer,
+the following commands are available:
+
+@table @kbd
+@item C-c , j
+@kindex C-c , j
+Prompt for the name of a function defined in the current file, and
+move point there (@code{semantic-complete-jump-local}).
+
+@item C-c , J
+@kindex C-c , J
+Prompt for the name of a function defined in any file Emacs has
+parsed, and move point there (@code{semantic-complete-jump}).
+
+@item C-c , @key{SPC}
+@kindex C-c , @key{SPC}
+Display a list of possible completions for the symbol at point
+(@code{semantic-complete-analyze-inline}). This also activates a set
+of special key bindings for choosing a completion: @key{RET} accepts
+the current completion, @kbd{M-n} and @kbd{M-p} cycle through possible
+completions, @key{TAB} completes as far as possible and then cycles,
+and @kbd{C-g} or any other key aborts completion.
+
+@item C-c , l
+@kindex C-c , l
+Display a list of the possible completions of the symbol at point, in
+another window (@code{semantic-analyze-possible-completions}).
+@end table
+
+@noindent
+In addition to the above commands, the Semantic package provides a
+variety of other ways to make use of parser information. For
+instance, you can use it to display a list of completions when Emacs
+is idle.
+@ifnottex
+@xref{Top, Semantic,, semantic, Semantic}, for details.
+@end ifnottex
+
@node Misc for Programs
@section Other Features Useful for Editing Programs
@ifnottex
@include fortran-xtra.texi
@end ifnottex
-
-@ignore
- arch-tag: c7ee7409-40a4-45c7-bfb7-ae7f2c74d0c0
-@end ignore