annotate doc/misc/sem-user.texi @ 112412:647e164c1f3e

aclocal.m4: put this file back into repository This way, we don't have to assume that the maintainer has the automake package installed. See <http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg00746.html>. * .bzrignore: Remove aclocal.m4, undoing the previous change. * Makefile.in (top_maintainer_clean): Do not remove aclocal.m4, undoing the previous change. * aclocal.m4: New file (actually, resurrected).
author Paul Eggert <eggert@cs.ucla.edu>
date Fri, 21 Jan 2011 23:18:23 -0800
parents ef719132ddfa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1 @c This file is included by semantic.texi
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
2
109264
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3 @c Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009,
112218
376148b31b5e Add 2011 to FSF/AIST copyright years.
Glenn Morris <rgm@gnu.org>
parents: 109264
diff changeset
4 @c 2010, 2011 Free Software Foundation, Inc.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
5
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
6 @c Permission is granted to copy, distribute and/or modify this
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
7 @c document under the terms of the GNU Free Documentation License,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
8 @c Version 1.3 or any later version published by the Free Software
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
9 @c Foundation; with no Invariant Sections, no Front-Cover Texts, and
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
10 @c no Back-Cover Texts. A copy of the license is included in the
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
11 @c section entitled ``GNU Free Documentation License''.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
12
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
13 You can begin using @semantic{} by enabling Semantic mode, a global
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
14 minor mode: type @kbd{M-x semantic-mode}, or open the @samp{Tools}
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
15 menu and click on the menu item named @samp{Source Code Parsers
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
16 (Semantic)}. @xref{Semantic mode}.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
17
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
18 When Semantic mode is turned on, Emacs automatically parses each file
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
19 you visit. You can then use @semantic{} user commands in those
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
20 buffers (@pxref{Semantic mode user commands}). You can also choose to
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
21 enable a number of ``helper'' minor modes for saving tags, displaying
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
22 tag information, and so forth.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
23
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
24 To enable Semantic mode each time you start Emacs, add the line
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
25 @code{(semantic-mode 1)} to your initialization file. @xref{Init
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
26 File,,,emacs,Emacs manual}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
27
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
28 @menu
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
29 * Semantic mode:: Global minor mode for @semantic{}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
30 * SemanticDB:: Caching parsed buffers between sessions.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
31 * Idle Scheduler:: @semantic{} actions that occur when idle.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
32 * Analyzer:: Semantic tools for analyzing code.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
33 * Speedbar:: Using @semantic{} with the Speedbar.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
34 * SymRef:: Interface to symbol reference tools.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
35 * MRU Bookmarks:: Managing tag ``bookmarks''.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
36 * Sticky Func Mode:: Showing declarations in the header line.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
37 * Highlight Func Mode:: Highlight the current function declaration.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
38 * Tag Decoration Mode:: Minor mode to decorate tags.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
39 @end menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
40
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
41 @node Semantic mode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
42 @section Semantic mode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
43 @cindex Semantic mode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
44
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
45 Semantic mode is a global minor mode for @semantic{} as a whole. When
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
46 enabled, each file you visit is automatically parsed, provided its
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
47 major mode is specified in the variable
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
48 @code{semantic-new-buffer-setup-functions} (the default value of this
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
49 variable sets up parsing for all the parsers included with Emacs, but
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
50 you may add to it if you install additional parsers).
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
51
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
52 In each parser-enabled buffer, a number of @semantic{} commands are
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
53 available for navigating, querying, and editing source code.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
54 @xref{Semantic mode user commands}. Enabling Semantic mode also
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
55 installs a @samp{Development} menu on the menu-bar, with many of these
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
56 commands.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
57
106076
e142b685cd90 * semantic.texi (Semantic Internals, Glossary):
Juanma Barranquero <lekktu@gmail.com>
parents: 106061
diff changeset
58 In addition, enabling Semantic mode turns on certain auxiliary global
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
59 minor modes. The variable @code{semantic-default-submodes} determines
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
60 which auxiliary modes are enabled; the defaults are SemanticDB mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
61 (@pxref{SemanticDB}) and Global Semantic Idle Scheduler mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
62 (@pxref{Idle Scheduler}). You can also toggle the auxiliary minor
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
63 modes separately, using their mode functions (e.g. @kbd{M-x
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
64 semanticdb-minor-mode}), or via the @samp{Development} menu. The
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
65 various auxiliary minor modes are described in the following sections.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
66
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
67 @defvar semantic-new-buffer-setup-functions
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
68 The value of this variable is an alist of functions to call for
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
69 setting up @semantic{} parsing in the buffer. Each element has the
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
70 form @code{(@var{mode} . @var{fn})}, where @var{mode} is a value of
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
71 @code{major-mode} for the buffer and @var{fn} is the corresponding
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
72 function for setting up the parser. @var{fn} is called, with no
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
73 arguments, after the major mode is initialized (and after the mode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
74 hooks have been run).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
75
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
76 The default value enables @semantic{} for all supported major modes
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
77 (i.e., C, C++, Scheme, Javascript, Java, HTML, SRecode, and Make), but
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
78 you can remove modes from this list if you don't want to use
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
79 @semantic{} with them.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
80 @end defvar
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
81
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
82 @defvar semantic-default-submodes
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
83 The value of this variable is a list of symbols, specifying the
106076
e142b685cd90 * semantic.texi (Semantic Internals, Glossary):
Juanma Barranquero <lekktu@gmail.com>
parents: 106061
diff changeset
84 auxiliary minor modes to enable when enabling Semantic mode. The
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
85 valid mode symbols are:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
86
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
87 @itemize
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
88 @item @code{global-semantic-idle-scheduler-mode} (@pxref{Idle Scheduler}).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
89 @item @code{global-semanticdb-minor-mode} (@pxref{SemanticDB}).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
90 @item @code{global-semantic-idle-summary-mode} (@pxref{Idle Summary Mode}).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
91 @item @code{global-semantic-idle-completions-mode} (@pxref{Idle Completions Mode}).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
92 @item @code{global-semantic-highlight-func-mode} (@pxref{Highlight Func Mode}).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
93 @item @code{global-semantic-decoration-mode} (@pxref{Tag Decoration Mode}).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
94 @item @code{global-semantic-stickyfunc-mode} (@pxref{Sticky Func Mode}).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
95 @item @code{global-semantic-mru-bookmark-mode} (@pxref{MRU Bookmarks}).
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
96 @end itemize
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
97 @end defvar
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
98
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
99 @menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
100 * Semantic mode user commands::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
101 @end menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
102
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
103 @node Semantic mode user commands
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
104 @subsection Semantic mode user commands
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
105
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
106 Semantic mode provides a number of commands for navigating, querying,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
107 and editing source code in a language-aware manner. These commands
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
108 generally act on @dfn{tags}, which are the source-code units deemed
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
109 ``important'' by the present programming language (e.g. functions in
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
110 the C programming language).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
111
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
112 These commands may be used in any buffer that has been parsed by
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
113 @semantic{}. Several of them prompt for a tag name using the
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
114 minibuffer; here, the @kbd{TAB} key can be used to complete tag names.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
115 Others act on the @dfn{current tag}, meaning the tag at (or around)
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
116 point.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
117
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
118 @table @kbd
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
119 @item C-c , j
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
120 Prompt for a tag defined in the current file, and move point to it
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
121 (@code{semantic-complete-jump-local}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
122
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
123 @item C-c , J
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
124 Prompt for a tag defined in any file that Emacs has parsed, and move
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
125 point to it (@code{semantic-complete-jump}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
126
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
127 @item C-c , l
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
128 Display a list of the possible completions of the current tag
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
129 (@code{semantic-analyze-possible-completions}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
130
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
131 @item C-c , g
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
132 Prompt for a tag, and display a list of tags that call it
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
133 (@code{semantic-symref-symbol}). This relies on the presence of an
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
134 external symbol reference tool. @xref{SymRef}.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
135
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
136 @item C-c , G
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
137 Display a list of tags that call the current tag
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
138 (@code{semantic-symref}). This relies on the presence of an external
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
139 symbol reference tool. @xref{SymRef}.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
140
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
141 @item C-c , p
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
142 Move point to the previous tag (@code{senator-previous-tag}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
143
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
144 @item C-c , n
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
145 Move point to the next tag (@code{senator-next-tag}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
146
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
147 @item C-c , u
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
148 Move point ``up'' one reference (@code{senator-go-to-up-reference}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
149 The meaning of ``up'' is language-dependent; in C++, for instance,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
150 this means moving to the parent of the current tag.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
151
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
152 @item C-c, @key{SPC}
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
153 Display a list of possible completions for the symbol at point
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
154 (@code{semantic-complete-analyze-inline}). This also activates a
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
155 special set of keybindings for choosing a completion: @key{RET}
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
156 accepts the current completion, @kbd{M-n} and @kbd{M-p} cycle through
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
157 possible completions, @key{TAB} completes as far as possible and then
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
158 cycles, and @kbd{C-g} or any other key aborts the completion.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
159 @xref{Smart Completion}.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
160
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
161 @item C-c , C-w
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
162 Kill the current tag (@code{senator-kill-tag}). This removes the text
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
163 for that tag, placing it in the kill ring. You can retrieve the text
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
164 with @kbd{C-y}. This also places the tag in the @dfn{tag ring}, so
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
165 that you can yank it with @kbd{\C-c,\C-y}, below.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
166
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
167 @item C-c , M-w
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
168 Copy the current tag into the kill ring as well as the tag ring
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
169 (@code{senator-copy-tag}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
170
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
171 @item C-c , C-y
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
172 Yank a tag from the tag ring (@code{senator-yank-tag}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
173
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
174 @item C-c , r
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
175 Copy the current tag into a register
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
176 (@code{senator-copy-tag-to-register}). With an optional argument,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
177 kill it as well. This allows you to insert or jump to that tag with
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
178 the usual register commands. @xref{Registers,,,emacs,Emacs manual}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
179
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
180 @item \C-c , @kbd{up}
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
181 Transpose the current tag with the previous one
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
182 (@code{senator-transpose-tags-up}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
183
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
184 @item C-c , @kbd{down}
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
185 Transpose the current tag with the next one
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
186 (@code{senator-transpose-tags-down}).
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
187 @end table
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
188
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
189 @node SemanticDB
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
190 @section Semantic Database
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
191 @cindex SemanticDB
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
192
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
193 The Semantic Database (SemanticDB) caches the results of parsing
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
194 source code files. This data can be saved to disk when you exit
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
195 Emacs, and reloaded automatically when you subsequently revisit the
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
196 same source code files. This saves time by eliminating the need to
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
197 re-parse unmodified files.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
198
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
199 SemanticDB also provides an @acronym{API} that programs can use to
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
200 acquire information about source code tags. This information can be
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
201 accessed without loading the original the source files into memory.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
202 It can also be used to create alternate ``back-ends'' for storing tag
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
203 information in alternative on-disk formats.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
204
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
205 By default, SemanticDB is enabled together with Semantic mode. To
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
206 disable it, remove it from @code{semantic-default-submodes}
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
207 (@pxref{Semantic mode}). You can also enable or disable SemanticDB
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
208 with @kbd{M-x global-semanticdb-minor-mode}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
209
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
210 @deffn Command global-semanticdb-minor-mode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
211 Toggle SemanticDB mode. When enabled, any source code parsed by
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
212 @semantic{} is cached in a database.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
213 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
214
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
215 SemanticDB offers a large number of customizable options, which are
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
216 described in the following subsections.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
217
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
218 @menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
219 * Semanticdb Tag Storage::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
220 * Semanticdb Search Configuration::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
221 * Changing Backends::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
222 * Create System Databases::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
223 @end menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
224
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
225 @node Semanticdb Tag Storage
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
226 @subsection Semanticdb Tag Storage
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
227
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
228 Each time you exit Emacs, any data cached by SemanticDB is saved in
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
229 the directory @file{.emacs.d/semanticdb/}, located in your home
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
230 directory. Within this directory, the cache data is written into a
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
231 set of files according to a SemanticDB-specific filename convention.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
232 If the SemanticDB directory does not exist, Emacs first asks if you
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
233 want to create it.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
234
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
235 You can change the name of the SemanticDB directory by customizing the
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
236 variable @code{semanticdb-default-save-directory}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
237
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
238 @deffn Option semanticdb-default-save-directory
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
239 The name of the directory where SemanticDB cache files are saved. If
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
240 the value is @code{nil}, SemanticDB saves its data into a single file,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
241 in the current directory, whose filename is given by
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
242 @code{semanticdb-default-file-name}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
243 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
244
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
245 @deffn Option semanticdb-default-file-name
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
246 The name of a cache file in which to save SemanticDB, when
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
247 @code{semanticdb-default-save-directory} is @code{nil}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
248 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
249
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
250 You can force SemanticDB to save the data from only certain files, or
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
251 suppress saving altogether, by customizing
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
252 @code{semanticdb-persistent-path}:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
253
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
254 @deffn Option semanticdb-persistent-path
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
255 List of valid paths for SemanticDB to cache. Each element should be a
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
256 directory name (a string); then the parse data from any file in that
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
257 directory is saved.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
258
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
259 As a special exception, the value of this variable can be a list
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
260 containing a single symbol: @code{never}, @code{always}, or
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
261 @code{project}. The symbol @code{never} disables saving anywhere;
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
262 @code{always} enables saving everywhere; and @code{project} enables
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
263 saving directory based on the variable
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
264 @code{semanticdb-project-predicate-functions}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
265
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
266 The default value is @code{(always)}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
267 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
268
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
269 @defvar semanticdb-project-predicate-functions
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
270 The value of this variable is a list of predicates for indicating that
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
271 a directory belongs to a project. This list is used when the value of
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
272 @code{semanticdb-persistent-path} is @code{(project)}. If the list is
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
273 empty, all paths are considered valid.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
274
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
275 Project management packages, such as EDE (@pxref{Top,,,ede,EDE
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
276 manual}), may add their own predicates with @dfn{add-hook} to this
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
277 variable. This allows SemanticDB to save tag caches in directories
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
278 controlled by them.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
279 @end defvar
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
280
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
281 @deffn Option semanticdb-save-database-hooks
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
282 Abnormal hook run after a database is saved. Each function is called
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
283 with one argument, the object representing the database recently
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
284 written.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
285 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
286
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
287 @node Semanticdb Search Configuration
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
288 @subsection Semanticdb Search Configuration
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
289
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
290 When another part of @semantic{} (or another Emacs package using
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
291 @semantic{}) queries the SemanticDB library for a source code tag, the
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
292 search need not be limited to tags defined within the current file.
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
293 It can include tags defined elsewhere, such as @dfn{header files}
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
294 referenced by the current file (e.g., via the C/C++ @code{#include}
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
295 directive). While performing the search, the SemanticDB library may
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
296 even automatically visit other files and parse them, if necessary.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
297
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
298 The variable @code{semanticdb-find-default-throttle} determines how
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
299 aggressively SemanticDB searches for source code tags. @xref{Search
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
300 Throttle}.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
301
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
302 The details of SemanticDB searches can vary from language to
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
303 language. In C/C++ code, for example, SemanticDB distinguishes
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
304 between @dfn{project header files} and @dfn{system header files},
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
305 based on whether the @code{#include} directive uses the @code{""} or
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
306 @code{<>} filename delimiter. SemanticDB looks for system header in
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
307 the @dfn{system include path} (@pxref{Include paths}).
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
308
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
309 @menu
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
310 * Search Throttle:: Controlling how semanticdb searches occur.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
311 * Semanticdb Roots:: Specifying the root of different projects.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
312 * Include paths:: Specifying the directories to search.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
313 * Semanticdb search debugging commands::
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
314 @end menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
315
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
316 @node Search Throttle
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
317 @subsubsection SemanticDB Search Throttle
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
318
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
319 The SemanticDB @dfn{search throttle} determines how aggressive
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
320 SemanticDB searches are. It is controlled by the variable
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
321 @code{semanticdb-find-default-throttle}. The default value of this
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
322 variable aims for maximum accuracy, at the expense of search time.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
323
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
324 Other parts of the @semantic{} package, particularly the different
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
325 language parsers, may change the value of
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
326 @code{semanticdb-find-default-throttle}. You can override its value,
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
327 for a given major mode, like this:
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
328
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
329 @example
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
330 (setq-mode-local c-mode
109264
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
331 semanticdb-find-default-throttle
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
332 '(project unloaded system recursive))
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
333 @end example
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
334
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
335 @defvar semanticdb-find-default-throttle
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
336 The default throttle for @code{semanticdb-find} routines.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
337 The throttle controls how detailed the list of database
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
338 tables is for a symbol lookup. The value is a list with
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
339 the following keys:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
340
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
341 @table @code
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
342 @item file
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
343 The file the search is being performed from. This option is here for
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
344 completeness only, and is assumed to always be on.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
345 @item local
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
346 Tables from the same local directory are included. This includes
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
347 files directly referenced by a file name which might be in a different
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
348 directory.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
349 @item project
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
350 Tables from the same local project are included If @code{project} is
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
351 specified, then @code{local} is assumed.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
352 @item unloaded
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
353 If a table is not in memory, load it. If it is not cached on disk
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
354 either, get the source, parse it, and create the table.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
355 @item system
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
356 Tables from system databases. These are specifically tables
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
357 from system header files, or language equivalent.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
358 @item recursive
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
359 For include based searches, includes tables referenced by included
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
360 files.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
361 @item omniscience
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
362 Included system databases which are omniscience, or somehow know
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
363 everything. Omniscience databases are found in
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
364 @code{semanticdb-project-system-databases}. The Emacs Lisp system
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
365 @var{db} is an omniscience database.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
366 @end table
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
367 @end defvar
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
368
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
369 @node Semanticdb Roots
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
370 @subsubsection SemanticDB project roots
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
371
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
372 The @code{project} setting in the SemanticDB search throttle
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
373 (@pxref{Search Throttle}) tells SemanticDB to search within the
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
374 current single code project. For @semantic{}'s point of view,
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
375 @dfn{projects} are determined by their top-level directories, or
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
376 @dfn{project roots}; every subdirectory of a project root is
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
377 considered part of the same project.
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
378
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
379 If you use EDE for project management, it will set the project roots
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
380 automatically. @xref{Top,,,ede,EDE manual}. You can also specify
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
381 them yourself.
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
382
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
383 @deffn Option semanticdb-project-roots
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
384 The value of this variable is a list of directories (strings) that are
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
385 project roots. All subdirectories of a project root are considered
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
386 part of the same project. This variable can be overriden by
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
387 @code{semanticdb-project-root-functions}.
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
388 @end deffn
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
389
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
390 @defvar semanticdb-project-root-functions
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
391 The value of this variable is a list of functions to determine a given
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
392 directory's project root. These functions are called, one at a time,
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
393 with one argument (the directory name), and must return either
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
394 @code{nil}, a string (the project root), or a list of strings
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
395 (multiple project roots, for complex systems). The first
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
396 non-@code{nil} return value, if any, is taken to be the project root,
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
397 overriding @code{semanticdb-project-roots}.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
398 @end defvar
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
399
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
400 @node Include paths
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
401 @subsubsection Include Paths
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
402
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
403 System include paths are standard locations to find source code tags,
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
404 such as the @dfn{header files} in @file{/usr/include} and its
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
405 subdirectories on Unix-like operating systems.
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
406
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
407 You can add and remove system include paths using the following
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
408 commands:
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
409
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
410 @deffn Command semantic-add-system-include dir &optional mode
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
411 Prompts for a directory, @var{dir}, and add it as a system include
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
412 path for the current major mode. When called non-interactively, the
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
413 major mode can be specified with the @var{mode} argument.
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
414 @end deffn
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
415
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
416 @deffn Command semantic-remove-system-include dir &optional mode
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
417 Prompt for a directory, @var{dir}, and remove it from the system
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
418 include path for the current major mode (or @var{mode}).
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
419 @end deffn
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
420
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
421 @deffn Command semantic-customize-system-include-path &optional mode
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
422 Customize the system include path for the current major mode (or
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
423 @var{mode}).
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
424 @end deffn
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
425
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
426 @defun semanticdb-implied-include-tags
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
427 Include tags implied for all files of a given mode. You can set this
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
428 variable with @code{defvar-mode-local} for a particular mode so that
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
429 any symbols that exist for all files for that mode are included.
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
430 @end defun
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
431
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
432 @c @xref{Search Optimization}, for more information on include paths.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
433
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
434 @node Semanticdb search debugging commands
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
435 @subsubsection Semanticdb search debugging commands
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
436
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
437 You can use @kbd{M-x semanticdb-dump-all-table-summary} to see the
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
438 list of databases that will be searched from a given buffer. You can
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
439 follow up with @kbd{M-x semanticdb-find-test-translate-path} to then
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
440 make sure specific tables from the path are discovered correctly.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
441 Alternately, you can get a list of include files @semantic{}
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
442 encountered, but could not find on disk using @kbd{M-x
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
443 semanticdb-find-adebug-lost-includes}.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
444
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
445 @deffn Command semanticdb-dump-all-table-summary
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
446 Dump a list of all databases in Emacs memory.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
447 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
448
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
449 @deffn Command semanticdb-find-test-translate-path &optional arg
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
450 Call and output results of @dfn{semanticdb-find-translate-path}. In
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
451 the displayed buffer, you can type @key{SPC} to expand items. With
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
452 @var{arg} non-@code{nil}, specify a @var{brutish} translation.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
453 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
454
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
455 @deffn Command semanticdb-find-adebug-lost-includes
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
456 Translate the current path, then display the lost includes.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
457 Examines the variable @code{semanticdb-find-lost-includes}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
458 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
459
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
460 Lastly, you can test an explicit search term using this command:
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
461
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
462 @deffn Command semantic-adebug-searchdb regex
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
463 Search the semanticdb for @var{regex} for the current buffer.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
464 Display the results as a debug list.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
465 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
466
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
467 @node Changing Backends
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
468 @subsection Changing Backends
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
469
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
470 If you want to use some other form of backend, you can use this
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
471 variable to choose which back end class to use for your general tag
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
472 storage.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
473
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
474 The default is to save databases in flat files. Alternatively, you
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
475 could write a new database backend that stores tags into a database,
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
476 or other storage system.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
477
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
478 @defvar semanticdb-new-database-class
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
479 The default type of database created for new files. This can be
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
480 changed on a per file basis, so that some directories are saved using
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
481 one mechanism, and some directories via a different mechanism.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
482 @end defvar
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
483
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
484 @node Create System Databases
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
485 @subsection Create System Databases
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
486
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
487 If your supported language stores the system libraries in readily
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
488 available parsable source code, you can pre-generate database files
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
489 for them once, which will be used over and over for tools such as
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
490 summary-mode, or the analyzer.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
491
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
492 @deffn Command semanticdb-create-ebrowse-database dir
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
493 Create an @var{ebrowse} database for directory @var{dir}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
494 The database file is stored in ~/.semanticdb, or whichever directory
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
495 is specified by @code{semanticdb-default-system-save-directory}.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
496 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
497
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
498 @node Idle Scheduler
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
499 @section Idle Scheduler
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
500 @cindex Idle Scheduler
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
501
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
502 The @dfn{Semantic Idle Scheduler} is a part of @semantic{} that
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
503 performs various operations while Emacs is waiting for user input
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
504 (idle time). Its primary job is to perform buffer parsing during idle
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
505 time. You can also use the Idle Scheduler to display function
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
506 prototypes (@pxref{Idle Summary Mode}) or symbol completions
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
507 (@pxref{Idle Completions Mode}).
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
508
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
509 @deffn Command global-semantic-idle-scheduler-mode &optional arg
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
510 This command toggles Semantic Idle Scheduler mode in every
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
511 @semantic{}-enabled buffer. This minor mode ensures that the buffer
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
512 is automatically reparsed whenever Emacs is idle. If there is
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
513 additional idle time, it runs jobs scheduled by other parts of
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
514 @semantic{}, such as Semantic Idle Summary mode (@pxref{Idle Summary
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
515 Mode}) and Semantic Idle Completions mode (@pxref{Idle Completions
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
516 Mode}).
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
517 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
518
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
519 @deffn Option semantic-idle-scheduler-idle-time
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
520 The value of this variable is the amount of idle time, in seconds,
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
521 before the Semantic idle scheduler activates. The default is 1.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
522 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
523
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
524 @deffn Option semantic-idle-scheduler-verbose-flag
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
525 If this variable is non-@code{nil}, the idle scheduler prints verbose
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
526 messages while running, which are useful for debugging.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
527 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
528
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
529 @menu
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
530 * Reparsing Options:: Reparsing the current buffer in idle time.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
531 * Idle Working Options:: Options for extra work done at idle time.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
532 * Debugging Idle Time Issues:: How to produce good bug reports.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
533 * Idle Summary Mode:: Display prototype of symbol under cursor.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
534 * Idle Completions Mode:: Smart completion pop-up help.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
535 @end menu
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
536
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
537 @node Reparsing Options
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
538 @subsection Reparsing Options
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
539
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
540 When activated during idle time, the Semantic idle scheduler
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
541 automatically reparses all buffers that need it. Any arriving user
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
542 input cancels this, returning Emacs to its normal editing behavior.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
543
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
544 @deffn Option semantic-idle-scheduler-max-buffer-size
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
545 Maximum size in bytes of buffers automatically reparsed. If this
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
546 value is less than or equal to @var{0}, buffers are automatically
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
547 reparsed regardless of their size.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
548 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
549
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
550 @deffn Option semantic-idle-scheduler-no-working-message
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
551 If non-@code{nil}, disable display of working messages whie reparsing.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
552 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
553
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
554 @deffn Option semantic-idle-scheduler-working-in-modeline-flag
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
555 If non-@code{nil}, show working messages in the mode line. Normally,
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
556 re-parsing shows messages in the minibuffer; this moves the parse
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
557 message to the modeline instead.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
558 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
559
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
560 @defvar semantic-before-idle-scheduler-reparse-hook
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
561 This normal hook is run just before the idle scheduler begins
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
562 reparsing. If any hook function throws an error, the value of this
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
563 variable is reset to @code{nil}. This hook is not protected from
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
564 lexical errors.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
565 @end defvar
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
566
106151
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
567 @defvar semantic-after-idle-scheduler-reparse-hook
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
568
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
569 This normal hook is run after the idle scheduler finishes reparsing.
9c5f5e4df2ac * sem-user.texi (Semanticdb Search Configuration): Rearrange nodes.
Chong Yidong <cyd@stupidchicken.com>
parents: 106084
diff changeset
570 If any hook throws an error, this variable is reset to @code{nil}.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
571 This hook is not protected from lexical errors.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
572 @end defvar
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
573
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
574 @node Idle Working Options
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
575 @subsection Idle Working Options
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
576
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
577 In addition to reparsing buffers, the Semantic idle scheduler performs
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
578 additional operations, including the following:
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
579
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
580 @itemize
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
581 @item
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
582 Creating the include path caches required for symbol lookup.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
583 @item
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
584 Create data type caches.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
585 @item
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
586 Saving SemanticDB caches to disk.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
587 @item
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
588 Speculatively parsing the files in the same directory as the current
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
589 buffer.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
590 @end itemize
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
591
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
592 Because this extra work is quite time-consuming, it is only carried
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
593 out after a longer idle delay. The following features control how the
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
594 idle work is performed.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
595
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
596 @deffn Option semantic-idle-scheduler-work-idle-time
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
597 The value of this variable is the amount of idle time, in seconds,
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
598 before commencing idle work. The default is 60.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
599 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
600
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
601 @deffn Option semantic-idle-work-parse-neighboring-files-flag
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
602 If the value of this variable is non-@code{nil}, the Semantic idle
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
603 scheduler uses idle work time to parse files in the same directory as
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
604 the current buffer. This improves the accuracy of tag searches and
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
605 saves time when visiting those files later, at the cost of doing a lot
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
606 of parsing. The default is @code{t}.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
607 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
608
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
609 @node Debugging Idle Time Issues
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
610 @subsection Debugging Idle Time Issues
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
611
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
612 If you see an error signalled during idle time, it could be an
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
613 indication of a more serious issue elsewhere. It is not enough to
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
614 enable @code{debug-on-error}, because the idle scheduler inhibits the
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
615 debugger. Instead, use the following commands to debug the error:
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
616
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
617 @deffn Command semantic-debug-idle-function
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
618 Run the Semantic idle function with debugging turned on.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
619 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
620
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
621 @deffn Command semantic-debug-idle-work-function
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
622 Run the Semantic idle work function with debugging turned on.
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
623 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
624
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
625 @node Idle Summary Mode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
626 @subsection Idle Summary Mode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
627
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
628 Semantic Idle Summary mode is a minor mode that displays a short
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
629 summary of the symbol at point, such as its function prototype, in the
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
630 echo area. Its functionality is similar to what ElDoc mode provides
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
631 for Emacs Lisp (@pxref{Lisp Doc,,,emacs,Emacs manual}).
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
632
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
633 @deffn global-semantic-idle-summary-mode &optional arg
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
634 This command toggles Semantic Idle Summary mode in all
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
635 @semantic{}-enabled buffers. You can also toggle it via the
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
636 @samp{Show Tag Summaries} menu item in the @samp{Development} menu.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
637 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
638
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
639 When Semantic Idle Summary mode is active, a summary of the tag at
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
640 point is displayed in the echo area. This display takes place during
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
641 the idle time, as given by @code{semantic-idle-scheduler-idle-time}
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
642 (@pxref{Idle Scheduler}).
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
643
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
644 You can override the method for getting the current tag to display by
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
645 setting @code{idle-summary-current-symbol-info}.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
646
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
647 @deffn Option semantic-idle-summary-function
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
648 The value of this variable should be a function to call to display tag
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
649 information during idle time. See the variable
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
650 @code{semantic-format-tag-functions} for a list of useful functions.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
651 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
652
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
653 @defvar semantic-idle-summary-out-of-context-faces
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
654 The value of this variable is a list of font-lock faces indicating
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
655 useless summary contexts. These are generally faces used to highlight
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
656 comments or strings. Semantic Idle Summary mode does not display its
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
657 usual summary if the text at point has one of these faces.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
658 @end defvar
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
659
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
660 @node Idle Completions Mode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
661 @subsection Idle Completions Mode
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
662
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
663 Semantic Idle Completions mode is a minor mode for performing
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
664 @dfn{code completions} during idle time. The completions are
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
665 displayed inline, with keybindings that allow you to cycle through
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
666 different alternatives.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
667
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
668 Semantic Idle Completions mode performs completion based on the
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
669 Semantic Analyzer (@pxref{Analyzer}).
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
670
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
671 @deffn global-semantic-idle-completions-mode &optional arg
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
672 This command toggles Semantic Idle Completions mode in every
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
673 @semantic{}-enabled buffer. You can also toggle it via the @samp{Show
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
674 Tag Completions} menu item in the @samp{Development} menu.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
675 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
676
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
677 If the tag at point has at least one completion, Semantic Idle
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
678 Completions mode displays that completion inline---i.e., as part of
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
679 the buffer text (you can change the display method by customizing
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
680 @code{semantic-complete-inline-analyzer-idle-displayor-class}, as
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
681 described below). The completed part is highlighted, to indicate that
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
682 it is not yet properly inserted into the buffer. The echo area shows
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
683 the completion, and whether there are other possible completions, like
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
684 this:
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
685
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
686 @example
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
687 besselj [1 of 6 matches]
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
688 @end example
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
689
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
690 @noindent
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
691 While the completion is being displayed, the following keybindings
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
692 take effect:
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
693
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
694 @table @kbd
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
695 @item @key{RET}
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
696 @itemx C-m
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
697 Accept the current completion (@code{semantic-complete-inline-done}),
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
698 placing it in the buffer and moving point to the end of the completed
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
699 tag.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
700 @item M-n
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
701 Select the next possible completion
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
702 (@code{semantic-complete-inline-down}). The new completion is shown
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
703 inline, replacing the old completion.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
704 @item M-p
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
705 Select the previous possible completion
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
706 (@code{semantic-complete-inline-up}).
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
707 @item @key{TAB}
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
708 @item C-i
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
709 Accept as much of the completion as possible. If no additional
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
710 completion can be accepted without ambiguity, select the next possible
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
711 completion (@code{semantic-complete-inline-TAB}).
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
712 @item C-g
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
713 Quit without completing (@code{semantic-complete-inline-quit}).
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
714 @end table
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
715
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
716 @noindent
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
717 You can also exit inline completion by issuing any other Emacs
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
718 command. The completion text then disappears from the buffer.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
719
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
720 @deffn Command semantic-complete-analyze-inline-idle
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
721 This is the command for performing inline code completion. It is
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
722 called by Semantic Idle Completions mode during idle time, but you can
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
723 also call it yourself. It returns immediately, leaving the buffer in
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
724 a state for inline completion.
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
725 @end deffn
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
726
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
727 @deffn Option semantic-complete-inline-analyzer-idle-displayor-class
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
728 The value of this variable determines how
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
729 @code{semantic-complete-analyze-inline-idle} shows its completions.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
730 Possible values include:
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
731
106156
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
732 @table @code
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
733 @item semantic-displayor-ghost
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
734 Display completions ``inline'' with the buffer text, as described
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
735 above. This is the default value.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
736
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
737 @item semantic-displayor-tooltip
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
738 Display completions in a tooltip.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
739
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
740 @item semantic-displayor-traditional
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
741 Display completions in a separate window.
cf329ff7daa6 * sem-user.texi (Idle Completions Mode): More copyedits.
Chong Yidong <cyd@stupidchicken.com>
parents: 106151
diff changeset
742 @end table
106061
014672c3a25f * Makefile.in: Build the Semantic manual.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
743 @end deffn
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
744
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
745 @node Analyzer
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
746 @section Analyzer
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
747 @cindex Analyzer
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
748
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
749 The Semantic Analyzer is a library for performing context analysis on
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
750 source code. It provides user commands for displaying, completing,
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
751 and navigating through source code.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
752
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
753 @menu
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
754 * Smart Completion:: Performing code completion.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
755 * Smart Summary:: Displaying help on a symbol.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
756 * Smart Jump:: Jumping to the definition of a tag.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
757 * Analyzer Debug:: Debugging problems with the analyzer.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
758 @end menu
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
759
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
760 @node Smart Completion
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
761 @subsection Smart Completion
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
762
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
763 The Semantic Analyzer can be used to perform code completion in a
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
764 manner that takes the local context into account. (In addition to the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
765 user commands in this section, Semantic Idle Completions mode also
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
766 uses the Semantic Analyzer. @xref{Idle Completions Mode}.)
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
767
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
768 @deffn Command semantic-analyze-possible-completions context
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
769 This is the most basic command for Semantic Analyzer-based completion.
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
770 Called interactively, it displays a list of the possible completions
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
771 for the symbol at point.
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
772
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
773 When called from a Lisp program,
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
774 @code{semantic-analyze-possible-completions} does not display a
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
775 completions list. The argument @var{context} should be either a
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
776 buffer position, or a context object. The return value is a list of
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
777 @semantic{} tag objects that complete the symbol for @var{context},
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
778 based on the following criteria:
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
779
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
780 @itemize
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
781 @item Elements currently in scope.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
782 @item Constants currently in scope.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
783 @item Elements matching the context's @code{:prefix}.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
784 @item Type of the completion matching the type of the context.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
785 @end itemize
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
786
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
787 Most of the other commands documented in this section call
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
788 @code{semantic-analyze-possible-completions} internally.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
789 @end deffn
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
790
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
791 @deffn Command semantic-complete-analyze-inline
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
792 This command is bound to @kbd{C-c , @key{SPC}} when Semantic mode is
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
793 enabled (@pxref{Semantic mode user commands}). It displays a list of
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
794 possible completions for the symbol at point, and activates a special
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
795 set of keybindings for choosing a completion.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
796
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
797 You can type @key{RET} to accept the current completion, @kbd{M-n} and
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
798 @kbd{M-p} to cycle through the possible completions, @key{TAB} to
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
799 complete as far as possible and then cycle through completions, and
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
800 either @kbd{C-g} or any other key to abort the completion.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
801
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
802 This command is similar to the completion performed by Semantic Idle
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
803 Completions mode. The main difference is that it is called
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
804 explicitly, whereas Semantic Idle Completions mode completes during
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
805 idle time (@pxref{Idle Completions Mode}).
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
806 @end deffn
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
807
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
808 @deffn Option semantic-complete-inline-analyzer-idle-displayor-class
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
809 The value of this variable determines how
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
810 @code{semantic-complete-analyze-inline} shows its completions.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
811 Possible values include:
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
812
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
813 @table @code
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
814 @item semantic-displayor-traditional
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
815 Display completions in a separate window. This is the default value.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
816
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
817 @item semantic-displayor-ghost
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
818 Display completions ``inline'' with the buffer text, similar to the
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
819 default behavior of Semantic Idle Completions mode (@pxref{Idle
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
820 Completions Mode}).
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
821
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
822 @item semantic-displayor-tooltip
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
823 Display completions in a tooltip.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
824 @end table
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
825 @end deffn
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
826
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
827 In addition to @code{semantic-complete-analyze-inline}, you can use
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
828 the simpler command @code{semantic-ia-complete-symbol point}. This
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
829 behaves like the usual @kbd{M-@key{TAB}} (@code{complete-symbol})
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
830 command (@pxref{Symbol Completion,,,emacs,Emacs manual}), except it
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
831 uses the Semantic Analyzer.
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
832
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
833 @deffn Command semantic-ia-complete-symbol point
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
834 Complete the current symbol at @var{point}.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
835 @end deffn
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
836
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
837 @node Smart Summary
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
838 @subsection Smart Summary
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
839
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
840 You can use the following commands to obtain information about the
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
841 code at point:
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
842
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
843 @deffn Command semantic-ia-show-summary pos
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
844 Display a summary for the symbol at @var{pos}. Called interactively,
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
845 @var{pos} defaults to point.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
846 @end deffn
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
847
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
848 @deffn Command semantic-ia-show-doc pos
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
849 Display the code-level documentation for the symbol at @var{pos}.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
850 Called interactively, @var{pos} defaults to point.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
851 @end deffn
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
852
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
853 @deffn Command semantic-ia-describe-class typename
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
854 Prompt for the name of a data type, @var{typename}, and display its
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
855 components. For instance, if the type in question is a class, this
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
856 displays the methods and member variables.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
857 @end deffn
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
858
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
859 You can also use Semantic Idle Summary mode to show information about
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
860 the current symbol in the echo area during idle time. @xref{Idle
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
861 Summary Mode}.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
862
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
863 @node Smart Jump
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
864 @subsection Smart Jump
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
865
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
866 The Semantic Analyzer can be used to jump directly to the definition
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
867 for a code symbol.
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
868
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
869 @deffn Command semantic-ia-fast-jump pos
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
870 Jump to the definition for the symbol at @var{pos}. Called
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
871 interactively, @var{pos} defaults to point.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
872 @end deffn
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
873
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
874 @defun semantic-ia-fast-mouse-jump event
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
875 Jump to the definition for the symbol at the position of the mouse
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
876 event @var{event}. This command is meant to be bound to a mouse
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
877 command, like this:
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
878
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
879 @example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
880 (global-set-key '[(S-mouse-1)] semantic-ia-fast-mouse-jump)
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
881 @end example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
882 @end defun
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
883
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
884 These commands are often more accurate than than the @code{find-tag}
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
885 command (@pxref{Tags,,,emacs,Emacs manual}), because the Semantic
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
886 Analyzer is context-sensitive.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
887
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
888 You can also use @kbd{C-c , j} (@code{semantic-complete-jump-local})
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
889 and @kbd{C-c , J} (@code{semantic-complete-jump}) to navigate tags.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
890 @xref{Semantic mode user commands}. Those commands do not make use of
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
891 the Semantic Analyzer.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
892
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
893 @node Analyzer Debug
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
894 @subsection Debugging the Semantic Analyzer
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
895
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
896 If the Semantic Analyzer does not analyze your code properly, you can
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
897 take steps to identify and solve the problem. This section was
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
898 written with C/C++ in mind, but should be relevant for any typed
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
899 language.
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
900
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
901 @subsubsection Step 1: Check the context
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
902
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
903 To check the current context, type @kbd{M-x
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
904 semantic-analyze-current-context}.
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
905
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
906 @deffn Command semantic-analyze-current-context pos
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
907 Analyze the context at @var{pos}. This function is used by most of
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
908 the other Semantic Analyzer commands to obtain the context of the code
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
909 at a given buffer position. The return value is an EIEIO object
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
910 describing the context at @var{pos} (@pxref{Top,,,eieio,EIEIO
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
911 manual}).
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
912
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
913 When called interactively, this displays a @samp{*Semantic Context
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
914 Analysis*} buffer containing a summary of the context at point.
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
915 @end deffn
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
916
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
917 @noindent
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
918 The Prefix section of the @samp{*Semantic Context Analysis*} buffer
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
919 lists the tags based on the text at point. If it shows only a simple
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
920 string, the Semantic was unable to identify what the data type was.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
921
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
922 The first item in the list of the prefix is the first lookup failure
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
923 in the chain, and that is the item to focus debugging effort on. For
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
924 example:
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
925
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
926 @example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
927 Context Type: #<semantic-analyze-context context>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
928 Bounds: (182 . 185)
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
929 Prefix: Foo* bar
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
930 int bbb (const char* y)
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
931 Prefix Types: class Foo @{@}
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
932 --------
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
933 -> Local Vars: int argc
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
934 char** argv
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
935 @end example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
936
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
937 In this example you can see that the prefix has two fully found tags.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
938 In the following example, the symbol ``bbb'' is incomplete, and could
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
939 not be found:
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
940
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
941 @example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
942 Context Type: #<semantic-analyze-context context>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
943 Bounds: (182 . 184)
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
944 Prefix: Foo* bar
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
945 "bb"
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
946 Prefix Classes: 'function
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
947 'variable
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
948 Prefix Types: class Foo @{@}
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
949 --------
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
950 -> Local Vars: int argc
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
951 char** argv
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
952 @end example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
953
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
954 @subsubsection Step 2 : Check your include path
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
955
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
956 Once you know the missing symbol, check your include path. The header
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
957 or include file containing the needed definition may not be in the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
958 list of headers @semantic{} is searching through. To get a basic
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
959 list, you can use @kbd{M-x semanticdb-find-test-translate-path}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
960 @xref{Semanticdb search debugging commands}.
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
961
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
962 If items should be loaded but aren't, or if you see some tables that
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
963 have no tags in them, then you you may have an incorrectly-set search
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
964 throttle (@pxref{Search Throttle}). For example,
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
965
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
966 @example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
967 *#<semanticdb-table main.cpp (4 tags DIRTY)>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
968 *#<semanticdb-table foo.hh (0 tags DIRTY)>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
969 @end example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
970
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
971 Here, @semantic{} found @file{foo.hh}, but there are 0 tags. This may
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
972 be because you had set the throttle to avoid reading and parsing files
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
973 that Emacs has not visited. To fix this, visit the file and let
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
974 @semantic{} parse it.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
975
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
976 For C++, check also that the @samp{#include} statements for your
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
977 project-level files use quotes, not angle brackets; angle brackets are
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
978 for system files.
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
979
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
980 @subsubsection Step 3: Check the local scope
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
981
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
982 If your data type is somehow abbreviated based on scope, such as from
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
983 a @code{using} statement, you should make sure that the symbol you
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
984 want is in the local scope. Examine the scope with @kbd{M-x
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
985 semantic-calculate-scope}. The scope structure is displayed in ADEBUG
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
986 mode, so use @kbd{SPC} to expand different elements and looking for
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
987 your symbol.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
988
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
989 If your symbol should be in the scope, but you cannot find it, then
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
990 you may have found a language support bug in the local-variable
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
991 parser, or using statement parser.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
992
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
993 Calling @kbd{M-x bovinte} should force a reset on the scope in case
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
994 there is merely some bad state.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
995
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
996 @example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
997 ] Name: Cache
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
998 ] Class: #'semantic-scope-cache
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
999 ] :table #<semanticdb-table testsubclass.cpp (13 tags DIRTY)>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1000 ] tag createMoose : class moose
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1001 ] scopetypes 'nil
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1002 ] parents #<TAG LIST: 1 entries>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1003 ] scope #<TAG LIST: 22 entries>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1004 ] fullscope #<TAG LIST: 23 entries>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1005 ] localvar #<TAG LIST: 6 entries>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1006 @end example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1007
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1008 In the above sample output, the @code{tag} slot specifies where within
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1009 you source this scope is relevant. @code{Parents} should contain any
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1010 in scope parents, such as the class a method belongs to.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1011 @code{Localvar} should contain your local variables. @code{Scope}
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1012 should contain datatypes in scope due to a @code{using} statement or
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1013 the like.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1014
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1015 @subsubsection Step 4: Check the typecache
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1016
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1017 For complex typed languages like C++, @semantic{} creates a typecache,
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1018 or an optimized search table with all the various data types in it.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1019 Elements in the typecache do not obey local scope. It only contains
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1020 fully qualified names. You can examine the typecache with
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1021 @kbd{M-x semanticdb-typecache-dump}.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1022
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1023 If your data types are not in the typecache, there may be some parsing
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1024 error or other bug. Calling @kbd{M-x bovinte} should force a reset on
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1025 the typecache in case there is merely some bad state.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1026
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1027 @example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1028 ]#<semanticdb-typecache /home/zappo/cedet/semantic/tests/testsubclass.cpp>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1029 ] Name: /home/zappo/cedet/semantic/tests/testsubclass.cpp
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1030 ] Class: #'semanticdb-typecache
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1031 ] filestream 'nil
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1032 ] includestream #<TAG LIST: 84 entries>
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1033 ] stream 'nil
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1034 ] dependants 'nil
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1035 @end example
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1036
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1037 In the above example, the output of @kbd{M-x semanticdb-typecache-dump}
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1038 was expanded one level. The @code{filestream} slot should contain
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1039 datatypes in the current file. The @code{includestream} should
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1040 contain all the datatypes in all included header files.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1041
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1042 The @code{dependants} slot will specify other files that depend on
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1043 this one.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1044
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1045 @subsubsection Step 5: Check the parser
106305
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1046
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1047 Go to the location where your unfound tag should be. You can call
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1048 @kbd{M-x bovinate}, and see a dump of the raw tag structure. To see a
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1049 navigable tree, use @kbd{M-x semantic-adebug-bovinate} instead. You
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1050 can then look to make sure your tag has been properly parsed.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1051
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1052 If it has not, then you may have found a parser bug. To get a feel
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1053 how @semantic{} treats your file, type @kbd{M-x
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1054 global-semantic-show-unmatched-syntax-mode}. This causes any syntax
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1055 it cannot parse to be underlined in red.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1056
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1057 If your type is not parsable, it could be for a couple of reasons:
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1058
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1059 @enumerate
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1060 @item
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1061 If there is a MACRO keyword used in the definition of the type, you
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1062 may need to update the @code{semantic-lex-c-preprocessor-symbol-map}
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1063 to account for it.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1064
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1065 @item
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1066 Or perhaps the parser needs to be fixed.
0b797c8cfed8 * semantic.texi (Analyzer Internals): Rename from Analyzer.
Chong Yidong <cyd@stupidchicken.com>
parents: 106156
diff changeset
1067 @end enumerate
106352
3b90f039f42b Add arch tagline
Miles Bader <miles@gnu.org>
parents: 106306
diff changeset
1068
106567
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1069 @node Speedbar
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1070 @section Speedbar
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1071 @cindex speedbar
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1072
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1073 You can integrate @semantic{} with the Speedbar.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1074 @xref{Speedbar,,,emacs,Emacs manual}. To do this, add the following
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1075 line to your init file:
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1076
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1077 @example
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1078 (add-hook 'speedbar-load-hook (lambda () (require 'semantic/sb)))
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1079 @end example
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1080
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1081 @noindent
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1082 Or, alternatively:
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1083
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1084 @example
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1085 (require 'semantic/sb)
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1086 @end example
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1087
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1088 Once installed, the Speedbar will use @semantic{} to find and display
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1089 tags. Tags from @semantic{} are displayed with more details than
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1090 ordinary Speedbar tags, such as function arguments and return type.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1091
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1092 In addition, you can use the Speedbar to show the output of the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1093 Semantic Analyzer (@pxref{Analyzer}). To do this, go to the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1094 @samp{Display} menu item on the Speedbar menu and select
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1095 @samp{Analyze}; or type @kbd{M-x semantic-speedbar-analysis}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1096
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1097 @deffn Command semantic-speedbar-analysis
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1098 Start the Speedbar in Semantic Analysis mode.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1099 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1100
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1101 In Semantic Analysis mode, the Speedbar displays information about the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1102 local context, such as the current function, local arguments and
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1103 variables, and details on the prefix (the current symbol). Each entry
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1104 has an @samp{<i>} button; clicking on this shows a summary of what
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1105 @semantic{} knows about that variable or type. The Speedbar also
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1106 displays a list of possible completions at point.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1107
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1108 @node SymRef
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1109 @section Symbol References
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1110 @cindex symref
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1111
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1112 @semantic{} can interface with external @dfn{symbol reference tools},
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1113 such as GNU Global and GNU Idutils. These tools provide information
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1114 about where different tags or symbols appear.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1115
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1116 By default, @semantic{} tries to look for the best external symbol
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1117 reference tool that can be used. The supported tools are GNU Global,
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1118 GNU Idutils, CScope, and Grep (the fallback method). For best
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1119 results, use GNU Global. However, @semantic{} does not manage your
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1120 GNU Global tables for you; you must manage them yourself.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1121
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1122 @defvar semantic-symref-tool
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1123 The value of this variable is a symbol that determines the external
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1124 symbol reference tool to use. The default value, @code{detect}, says
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1125 to look for the best available tool. Other possible values are
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1126 @code{global}, @code{idutils}, @code{cscope}, and @code{grep}. Note
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1127 that @code{grep} is much slower than the others.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1128 @end defvar
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1129
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1130 The commands to display symbol references are @kbd{C-c , g}
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1131 (@code{semantic-symref-symbol} and @kbd{C-c , G}
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1132 (@code{semantic-symref}). These keybindings are available whenever
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1133 Semantic mode is enabled (@pxref{Semantic mode user commands}).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1134
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1135 @deffn Command semantic-symref-symbol sym
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1136 This command (normally bound to @kbd{C-c , g}) prompts for a symbol
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1137 name, and uses an external reference tool to find references to that
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1138 tag.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1139 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1140
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1141 @deffn Command semantic-symref
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1142 This command (normally bound to @kbd{C-c , G}) uses an external
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1143 reference tool to find references to the current tag.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1144 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1145
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1146 Both @code{semantic-symref-symbol} and @code{semantic-symref} display
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1147 a list of symbol references in a separate buffer. The entries are
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1148 organized by file, and by function name. Typing @key{RET} on the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1149 @samp{[+]} next to each function name ``expands'' that entry, listing
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1150 all references to the target symbol occurring within that function.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1151 Typing @kbd{RET} on a reference line jumps to that reference.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1152
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1153 @node MRU Bookmarks
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1154 @section MRU Bookmarks mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1155 @cindex semantic-mru-bookmark-mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1156
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1157 Semantic MRU Bookmarks mode is a minor mode that keeps track of the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1158 tags you have edited, allowing you to quickly return to them later
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1159 (MRU stands for ``Most Recently Used'').
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1160
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1161 @deffn Command global-semantic-mru-bookmark-mode &optional arg
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1162 Toggle Semantic MRU Bookmarks mode globally. The minor mode can be
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1163 turned on only if the current buffer was set up for parsing. With
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1164 argument @var{arg}, turn the minor mode if @var{arg} is positive, and
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1165 off otherwise.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1166 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1167
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1168 Semantic MRU Bookmarks mode takes note of each tag you edit.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1169 Afterwards, you can type @kbd{C-x B}
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1170 (@code{semantic-mrub-switch-tags}) to return to a tag. This command
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1171 prompts for a tag name, completing with the names of edited tags; at
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1172 the prompt, you can use @kbd{M-p} and @kbd{M-n} to cycle through tags
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1173 in order of last modification time.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1174
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1175 @node Sticky Func Mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1176 @section Sticky Function mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1177
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1178 Semantic Sticky Function minor mode displays a header line that shows
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1179 the declaration line of the function or tag on the topmost line in the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1180 text area. This allows you to keep that declaration line in view at
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1181 all times, even if it is scrolls off the ``top'' of the screen.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1182
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1183 In addition, clicking @kbd{Mouse-1} on the header line opens a context
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1184 menu that contains menu items for copying, killing, or narrowing to
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1185 that tag.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1186
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1187 @deffn Command global-semantic-stickyfunc-mode &optional arg
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1188 Toggle Semantic Sticky Function mode in all Semantic-enabled buffers.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1189 With an optional argument @var{arg}, enable if @var{arg} is positive,
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1190 and disable otherwise.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1191 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1192
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1193 @defvar semantic-stickyfunc-sticky-classes
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1194 The value of this variable is a list of tag classes that Semantic
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1195 Sticky Function mode makes ``sticky''. The default is
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1196 @code{'(function type)}, meaning function declarations and type
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1197 declarations. Other possible tag classes are @code{variable},
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1198 @code{include}, and @code{package}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1199 @end defvar
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1200
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1201 @node Highlight Func Mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1202 @section Highlight Func Mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1203 @cindex semantic-highlight-func-mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1204
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1205 Semantic Highlight Function minor mode highlights the declaration line
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1206 of the current function or tag (that is to say, the first line that
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1207 describes the rest of the construct).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1208
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1209 In addition, clicking @kbd{Mouse-3} on the highlighted declaration
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1210 line opens a context menu that contains menu items for copying,
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1211 killing, or narrowing to that tag.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1212
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1213 The tag classes highlighted by Semantic Highlight Function mode are
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1214 the same ones given by @code{semantic-stickyfunc-sticky-classes}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1215 @xref{Sticky Func Mode}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1216
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1217 @defun global-semantic-highlight-func-mode &optional arg
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1218 Toggle Semantic Highlight Function mode in all Semantic-enabled
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1219 buffers. With an optional argument @var{arg}, enable if @var{arg} is
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1220 positive, and disable otherwise.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1221 @end defun
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1222
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1223 @deffn Face semantic-highlight-func-current-tag-face
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1224 This face is used to highlight declaration lines in Semantic Highlight
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1225 Func mode.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1226 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1227
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1228 @node Tag Decoration Mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1229 @section Tag Decoration Mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1230 @cindex semantic-decoration-mode
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1231
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1232 Semantic Tag Decoration mode ``decorates'' each tag based on certain
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1233 arbitrary features of that tag. Decorations are specified using the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1234 variable @code{semantic-decoration-styles}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1235
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1236 @deffn Command global-semantic-decoration-mode &optional arg
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1237 Toggle Semantic Tag Decoration mode in all Semantic-enabled buffers.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1238 With an optional argument @var{arg}, enable if @var{arg} is positive,
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1239 and disable otherwise.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1240 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1241
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1242 @defvar semantic-decoration-styles
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1243 The value of this variable is a list of decoration styles for Semantic
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1244 Tag Decoration mode. Each element in this list should have the form
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1245 @code{(@var{name} . @var{flag})}, where @var{name} is a style name (a
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1246 symbol) and @var{flag} is non-@code{nil} if the style is enabled.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1247
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1248 The following styles are available:
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1249
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1250 @table @code
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1251 @item semantic-tag-boundary
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1252 Place an overline in front of each long tag (excluding prototypes).
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1253
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1254 @item semantic-decoration-on-private-members
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1255 Highlight class members that are designated as private.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1256
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1257 @item semantic-decoration-on-protected-members
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1258 Highlight class members that are designated as protected.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1259
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1260 @item semantic-decoration-on-includes
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1261 Highlight class members that are includes. Clicking on the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1262 highlighted include statements opens a context menu for configuring
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1263 @semantic{} includes.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1264 @end table
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1265 @end defvar
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1266
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1267 To enable or disable specific decorations, use this function:
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1268
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1269 @deffn Command semantic-toggle-decoration-style name &optional arg
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1270 Prompt for a decoration style, @var{name}, and turn it on or off.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1271 With prefix argument @var{arg}, turn on if positive, otherwise off.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1272 Return non-@code{nil} if the decoration style is enabled.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1273 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1274
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1275 @deffn Face semantic-tag-boundary-face
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1276 Face for long tags in the @code{semantic-tag-boundary} decoration
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1277 style.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1278 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1279
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1280 @deffn Face semantic-decoration-on-private-members-face
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1281 Face for privately-scoped tags in the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1282 @code{semantic-decoration-on-private-members} decoration style.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1283 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1284
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1285 @deffn Face semantic-decoration-on-protected-members-face
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1286 Face for protected tags in the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1287 @code{semantic-decoration-on-protected-members} decoration style.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1288 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1289
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1290 @deffn Face semantic-decoration-on-includes
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1291 Face for includes that are not in some other state, in the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1292 @code{semantic-decoration-on-includes} decoration style.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1293 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1294
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1295 @deffn Face semantic-decoration-on-unknown-includes
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1296 Face for includes that cannot be found, in the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1297 @code{semantic-decoration-on-includes} decoration style.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1298 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1299
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1300 @deffn Face semantic-decoration-on-unparsed-includes
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1301 Face for includes that have not yet been parsed, in the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1302 @code{semantic-decoration-on-includes} decoration style.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1303 @end deffn
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1304
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1305 @subsection Creating New Decoration Modes
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1306
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1307 You can create new types of decorations using the following function:
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1308
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1309 @defun define-semantic-decoration-style name doc &rest flags
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1310 Define a new decoration style with @var{name}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1311 @var{doc} is a documentation string describing the decoration style @var{name}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1312 It is appended to auto-generated doc strings.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1313 An Optional list of @var{flags} can also be specified. Flags are:
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1314 @code{:enabled} <value> - specify the default enabled value for @var{name}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1315
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1316
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1317 This defines two new overload functions respectively called @code{NAME-p}
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1318 and @code{NAME-highlight}, for which you must provide a default
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1319 implementation in respectively the functions @code{NAME-p-default} and
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1320 @code{NAME-highlight-default}. Those functions are passed a tag. @code{NAME-p}
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1321 must return non-@code{nil} to indicate that the tag should be decorated by
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1322 @code{NAME-highlight}.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1323
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1324 To put primary decorations on a tag @code{NAME-highlight}, use
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1325 functions like @dfn{semantic-set-tag-face},
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1326 @dfn{semantic-set-tag-intangible}, etc., found in the
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1327 semantic-decorate library.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1328
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1329 To add other kind of decorations on a tag, @code{NAME-highlight} must use
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1330 @dfn{semantic-decorate-tag}, and other functions of the semantic
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1331 decoration @var{api} found in this library.
c59fc4a754cc * sem-user.texi (Semantic mode, Idle Scheduler, Smart Completion)
Chong Yidong <cyd@stupidchicken.com>
parents: 106352
diff changeset
1332 @end defun