@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
* 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
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 keybindings 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
@table @kbd
@item C-c C-w
-@itemx M-x c-subword-mode
-@findex c-subword-mode
+@itemx M-x subword-mode
+@findex subword-mode
Enable (or disable) @dfn{subword mode}. In subword mode, Emacs's word
commands recognize upper case letters in
@samp{StudlyCapsIdentifiers} as word boundaries. This is indicated by
the flag @samp{/w} on the mode line after the mode name
-(e.g. @samp{C/law}). You can even use @kbd{M-x c-subword-mode} in
+(e.g. @samp{C/law}). You can even use @kbd{M-x subword-mode} in
non-CC Mode buffers.
In the GNU project, we recommend using underscores to separate words
@ifnottex
@include fortran-xtra.texi
@end ifnottex
-
-@ignore
- arch-tag: c7ee7409-40a4-45c7-bfb7-ae7f2c74d0c0
-@end ignore