Mercurial > emacs
annotate man/speedbar.texi @ 42811:cf0c0ef57504
*** empty log message ***
| author | Jason Rumney <jasonr@gnu.org> |
|---|---|
| date | Thu, 17 Jan 2002 19:29:24 +0000 |
| parents | a8c0a02f6129 |
| children | 661b1aa856cc |
| rev | line source |
|---|---|
| 32674 | 1 \input texinfo @c -*-texinfo-*- |
| 2 @c | |
| 39267 | 3 @c $Id: speedbar.texi,v 1.8 2001/08/20 01:19:13 rms Exp $ |
| 32674 | 4 @c |
| 5 | |
| 6 @c This file is part of GNU Emacs | |
| 7 | |
| 8 @c GNU Emacs is free software; you can redistribute it and/or modify it | |
| 9 @c under the terms of the GNU General Public License as published by the | |
| 10 @c Free Software Foundation; either version 2 of the License, or (at | |
| 11 @c your option) any later version. | |
| 12 | |
| 13 @c GNU Emacs is distributed in the hope that it will be useful, but | |
| 33079 | 14 @c WITHOUT ANY WARRANTY; without even the implied warranty of |
| 32674 | 15 @c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 16 @c General Public License for more details. | |
| 17 | |
| 18 @c You should have received a copy of the GNU General Public License | |
| 33079 | 19 @c along with Emacs; see the file COPYING. If not, write to the Free |
| 32674 | 20 @c Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
| 21 | |
| 22 @setfilename ../info/speedbar | |
| 23 @settitle Speedbar: File/Tag summarizing utility | |
| 24 | |
| 34233 | 25 @dircategory Emacs |
| 26 @direntry | |
| 27 * Speedbar: (speedbar). File/Tag summarizing utility. | |
| 28 @end direntry | |
| 34235 | 29 @ifnottex |
| 30 Copyright @copyright{} 1999, 2000 Free Software Foundation, Inc. | |
| 31 | |
| 32 Permission is granted to copy, distribute and/or modify this document | |
| 33 under the terms of the GNU Free Documentation License, Version 1.1 or | |
| 34 any later version published by the Free Software Foundation; with the | |
| 35 Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and | |
| 36 ``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU | |
| 37 Manual'', and with the Back-Cover Texts as in (a) below. A copy of the | |
| 38 license is included in the section entitled ``GNU Free Documentation | |
| 39 License'' in the Emacs manual. | |
| 40 | |
| 41 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify | |
| 42 this GNU Manual, like GNU software. Copies published by the Free | |
| 43 Software Foundation raise funds for GNU development.'' | |
| 44 | |
| 45 This document is part of a collection distributed under the GNU Free | |
| 46 Documentation License. If you want to distribute this document | |
| 47 separately from the collection, you can do so by adding a copy of the | |
| 48 license to the document, as described in section 6 of the license. | |
| 49 @end ifnottex | |
| 32674 | 50 |
| 51 @titlepage | |
| 52 @sp 10 | |
| 34235 | 53 @center @titlefont{Speedbar} |
| 54 @sp 2 | |
| 55 @center Eric Ludlam | |
| 32674 | 56 @vskip 0pt plus 1 fill |
| 34235 | 57 @page |
| 58 @vskip 0pt plus 1filll | |
| 59 Copyright @copyright{} 1999, 2000 Free Software Foundation, Inc. | |
| 60 @sp 1 | |
| 61 Permission is granted to copy, distribute and/or modify this document | |
| 62 under the terms of the GNU Free Documentation License, Version 1.1 or | |
| 63 any later version published by the Free Software Foundation; with the | |
| 64 Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and | |
| 65 ``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU | |
| 66 Manual'', and with the Back-Cover Texts as in (a) below. A copy of the | |
| 67 license is included in the section entitled ``GNU Free Documentation | |
| 68 License'' in the Emacs manual. | |
| 69 | |
| 70 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify | |
| 71 this GNU Manual, like GNU software. Copies published by the Free | |
| 72 Software Foundation raise funds for GNU development.'' | |
| 73 | |
| 74 This document is part of a collection distributed under the GNU Free | |
| 75 Documentation License. If you want to distribute this document | |
| 76 separately from the collection, you can do so by adding a copy of the | |
| 77 license to the document, as described in section 6 of the license. | |
| 32674 | 78 @end titlepage |
| 79 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
80 @syncodeindex fn cp |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
81 |
| 32674 | 82 @node Top, , , (dir)Top |
| 83 @comment node-name, next, previous, up | |
| 84 | |
| 85 Speedbar is a program for Emacs which can be used to summarize | |
| 86 information related to the current buffer. Its original inspiration | |
| 34238 | 87 is the `explorer' often used in modern development environments, office |
| 32674 | 88 packages, and web browsers. |
| 89 | |
| 90 Speedbar displays a narrow frame in which a tree view is shown. This | |
| 91 tree view defaults to containing a list of files and directories. Files | |
| 34238 | 92 can be `expanded' to list tags inside. Directories can be expanded to |
| 32674 | 93 list the files within itself. Each file or tag can be jumped to |
| 94 immediately. | |
| 95 | |
| 34238 | 96 Speedbar expands upon `explorer' windows by maintaining context with the |
| 32674 | 97 user. For example, when using the file view, the current buffer's file |
| 98 is highlighted. Speedbar also mimics the explorer windows by providing | |
| 99 multiple display modes. These modes come in two flavors. Major display | |
| 100 modes remain consistent across buffers, and minor display modes appear | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
101 only when a buffer of the applicable type is shown. This allows |
| 32674 | 102 authors of other packages to provide speedbar summaries customized to |
| 103 the needs of that mode. | |
| 104 | |
| 34238 | 105 Throughout this manual, activities are defined as `clicking on', or |
| 36154 | 106 `expanding' items. Clicking means using using @kbd{Mouse-2} on a |
| 32674 | 107 button. Expanding refers to clicking on an expansion button to display |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
108 an expanded summary of the entry the expansion button is |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
109 on. @xref{Basic Navigation}. |
| 32674 | 110 |
| 111 @menu | |
| 112 * Introduction:: Basics of speedbar. | |
| 113 * Basic Navigation:: Basics of speedbar common between all modes. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
114 * File Mode:: Summarizing files. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
115 * Buffer Mode:: Summarizing buffers. |
| 32674 | 116 * Minor Modes:: Additional minor modes such as Info and RMAIL. |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
117 * Customizing:: Changing speedbar behavior. |
| 32674 | 118 * Extending:: Extend speedbar for your own project. |
| 119 * Index:: | |
| 120 @end menu | |
| 121 | |
| 122 @node Introduction, Basic Navigation, , Top | |
| 123 @comment node-name, next, previous, up | |
| 124 @chapter Introduction | |
| 125 @cindex introduction | |
| 126 | |
| 127 To start using speedbar use the command @kbd{M-x speedbar RET} or select | |
| 128 it from the Tools menu in versions of Emacs with speedbar installed by | |
| 129 default. This command will open a new frame to summarize the local | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
130 files. On X Window systems or on MS-Windows, speedbar's frame is twenty |
| 32674 | 131 characters wide, and will mimic the height of the frame from which it |
| 132 was started. It positions itself to the left or right of the frame you | |
| 133 started it from. | |
| 134 | |
| 33079 | 135 To use speedbar effectively, it is important to understand its |
| 32674 | 136 relationship with the frame you started it from. This frame is the |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
137 @dfn{attached frame} which speedbar will use as a reference point. Once |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
138 started, speedbar watches the contents of this frame, and attempts to |
| 33079 | 139 make its contents relevant to the buffer loaded into the attached |
| 32674 | 140 frame. In addition, all requests made in speedbar that require the |
| 141 display of another buffer will display in the attached frame. | |
| 142 | |
| 143 When used in terminal mode, the new frame appears the same size as the | |
| 144 terminal. Since it is not visible while working in the attached frame, | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
145 speedbar will save time by using the @dfn{slowbar mode}, where no tracking is |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
146 done until speedbar is requested to show itself (i.e., the speedbar's |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
147 frame becomes the selected frame). |
| 32674 | 148 |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
149 @cindex @code{speedbar-get-focus} |
| 32674 | 150 The function to use when switching between frames using the keyboard is |
| 151 @code{speedbar-get-focus}. This function will toggle between frames, and | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
152 it's useful to bind it to a key in terminal mode. @xref{Customizing}. |
| 32674 | 153 |
| 154 @node Basic Navigation, File Mode, Introduction, Top | |
| 155 @comment node-name, next, previous, up | |
| 156 @chapter Basic Navigation | |
| 157 | |
| 158 Speedbar can display different types of data, and has several display | |
| 159 and behavior modes. These modes all have a common behavior, menu | |
| 160 system, and look. If one mode is learned, then the other modes are easy | |
| 161 to use. | |
| 162 | |
| 163 @menu | |
| 39267 | 164 * Basic Key Bindings:: |
| 32674 | 165 * Basic Visuals:: |
| 166 * Mouse Bindings:: | |
| 167 * Displays Submenu:: | |
| 168 @end menu | |
| 169 | |
| 39267 | 170 @node Basic Key Bindings, Basic Visuals, Basic Navigation, Basic Navigation |
| 32674 | 171 @comment node-name, next, previous, up |
| 39267 | 172 @section Basic Key Bindings |
| 173 @cindex key bindings | |
| 32674 | 174 |
| 39267 | 175 These key bindings are common across all modes: |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
176 |
| 32674 | 177 @table @kbd |
| 178 @item delete, SPC | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
179 @cindex scrolling in speedbar |
| 32674 | 180 Scroll up and down one page. |
| 181 @item Q | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
182 @cindex quitting speedbar |
| 32674 | 183 Quit speedbar, and kill the frame. |
| 184 @item q | |
| 185 Quit speedbar, and hide the frame. This makes it faster to restore the | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
186 speedbar frame, than if you press @kbd{Q}. |
| 32674 | 187 @item g |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
188 @cindex refresh speedbar display |
| 32674 | 189 Refresh whatever contents are in speedbar. |
| 190 @item t | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
191 @cindex slowbar mode |
| 32674 | 192 Toggle speedbar to and from slowbar mode. In slowbar mode, frame |
| 193 tracking is not done. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
194 @item n |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
195 @itemx p |
| 32674 | 196 @cindex navigation |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
197 Move, respectively, to the next or previous item. A summary of that |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
198 item will be displayed in the attached frame's minibuffer. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
199 @item M-n |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
200 @itemx M-p |
| 32674 | 201 Move to the next or previous item in a restricted fashion. If a list is |
| 202 open, the cursor will skip over it. If the cursor is in an open list, | |
| 203 it will not leave it. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
204 @item C-M-n |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
205 @itemx C-M-n |
| 32674 | 206 Move forwards and backwards across extended groups. This lets you |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
207 quickly skip over all files, directories, or other common sub-items at |
| 32674 | 208 the same current depth. |
| 209 @item C-x b | |
| 210 Switch buffers in the attached frame. | |
| 211 @end table | |
| 212 | |
| 213 Speedbar can handle multiple modes. Two are provided by default. | |
| 214 These modes are File mode, and Buffers mode. There are accelerators to | |
| 215 switch into these different modes. | |
| 216 | |
| 217 @cindex mode switching hotkeys | |
| 218 @table @kbd | |
| 219 @item b | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
220 Switch into Quick Buffers mode (@pxref{Buffer Mode}). After one use, the |
| 32674 | 221 previous display mode is restored. |
| 222 @item f | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
223 Switch into File mode. |
| 32674 | 224 @item r |
| 225 Switch back to the previous mode. | |
| 226 @end table | |
| 227 | |
| 228 Some modes provide groups, lists and tags. @xref{Basic Visuals}. When | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
229 these are available, some additional common bindings are available. |
| 32674 | 230 |
| 231 @cindex common keys | |
| 232 @table @kbd | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
233 @item RET |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
234 @itemx e |
| 32674 | 235 Edit/Open the current group or tag. This behavior is dependent on the |
| 236 mode. In general, files or buffers are opened in the attached frame, | |
| 237 and directories or group nodes are expanded locally. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
238 @item + |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
239 @itemx = |
| 32674 | 240 Expand the current group, displaying sub items. |
| 241 When used with a prefix argument, any data that may have been cached is | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
242 flushed. This is similar to a power click. @xref{Mouse Bindings}. |
| 32674 | 243 @item - |
| 244 Contract the current group, hiding sub items. | |
| 245 @end table | |
| 246 | |
| 39267 | 247 @node Basic Visuals, Mouse Bindings, Basic Key Bindings, Basic Navigation |
| 32674 | 248 @comment node-name, next, previous, up |
| 249 @section Basic Visuals | |
| 250 @cindex visuals | |
| 251 | |
| 252 Speedbar has visual cues for indicating different types of data. These | |
| 253 cues are used consistently across the different speedbar modes to make | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
254 them easier to interpret. |
| 32674 | 255 |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
256 At a high level, in File mode, there are directory buttons, sub |
| 32674 | 257 directory buttons, file buttons, tag buttons, and expansion buttons. |
| 258 This makes it easy to use the mouse to navigate a directory tree, and | |
| 259 quickly view files, or a summary of those files. | |
| 260 | |
| 33079 | 261 The most basic visual effect used to distinguish between these button |
| 32674 | 262 types is color and mouse highlighting. Anything the mouse highlights |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
263 can be clicked on and is called a button (@pxref{Mouse Bindings}). |
| 32674 | 264 Anything not highlighted by the mouse will not be clickable. |
| 265 | |
| 266 Text in speedbar consists of four different types of data. Knowing how | |
| 267 to read these textual elements will make it easier to navigate by | |
| 268 identifying the types of data available. | |
| 269 | |
| 270 @subsubsection Groups | |
| 271 @cindex groups | |
| 272 | |
| 273 Groups summarize information in a single line, and provide a high level | |
| 274 view of more complex systems, like a directory tree, or manual chapters. | |
| 275 | |
| 276 Groups appear at different indentation levels, and are prefixed with a | |
| 34238 | 277 @samp{+} in some sort of `box'. The group name will summarize the |
| 32674 | 278 information within it, and the expansion box will display that |
| 34238 | 279 information inline. In File mode, directories and files are `groups' |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
280 where the @samp{+} is surrounded by brackets like this: |
| 32674 | 281 |
| 282 @example | |
| 283 <+> include | |
| 284 <-> src | |
| 285 [+] foo.c | |
| 286 @end example | |
| 287 | |
| 288 In this example, we see both open and closed directories, in addition to | |
| 289 a file. The directories have a box consisting of angle brackets, and a | |
| 290 file uses square brackets. | |
| 291 | |
| 34238 | 292 In all modes, a group can be `edited' by pressing @kbd{RET}, meaning a |
| 32674 | 293 file will be opened, or a directory explicitly opened in speedbar. A |
| 294 group can be expanded or contracted using @kbd{+} or | |
| 39267 | 295 @kbd{-}. @xref{Basic Key Bindings}. |
| 32674 | 296 |
| 33079 | 297 Sometimes groups may have a @samp{?} in its indicator box. This means |
| 32674 | 298 that it is a group type, but there are no contents, or no known way of |
| 299 extracting contents of that group. | |
| 300 | |
| 301 When a group has been expanded, the indicator button changes from | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
302 @samp{+} to @samp{-}. This indicates that the contents are being shown. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
303 Click the @samp{-} button to contract the group, or hide the contents |
| 32674 | 304 currently displayed. |
| 305 | |
| 306 @subsubsection Tags | |
| 307 @cindex tags | |
| 308 | |
| 309 Tags are the leaf nodes of the tree system. Tags are generally prefixed | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
310 with a simple character, such as @samp{>}. Tags can only be jumped to using |
| 32674 | 311 @kbd{RET} or @kbd{e}. |
| 312 | |
| 313 @subsubsection Boolean Flags | |
| 314 | |
| 315 Sometimes a group or tag is given a boolean flag. These flags appear as | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
316 extra text characters at the end of the line. File mode uses boolean |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
317 flags, such as a @samp{*} to indicate that a file has been checked out |
| 32674 | 318 of a versioning system. |
| 319 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
320 For additional flags, see |
| 32674 | 321 @c Note to self, update these to sub-nodes which are more relevant. |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
322 @ref{File Mode}, and @ref{Version Control}. |
| 32674 | 323 |
| 324 @subsubsection Unadorned Text | |
| 325 | |
| 326 Unadorned text generally starts in column 0, without any special symbols | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
327 prefixing them. In Buffers mode different buffer groups are prefixed |
| 32674 | 328 with a description of what the following buffers are (Files, scratch |
| 329 buffers, and invisible buffers.) | |
| 330 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
331 Unadorned text will generally be colorless, and not clickable. |
| 32674 | 332 |
| 333 @subsubsection Color Cues | |
| 334 | |
| 335 Each type of Group, item indicator, and label is given a different | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
336 color. The colors chosen are dependent on whether the background color |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
337 is light or dark. |
| 34238 | 338 Of important note is that the `current item', which may be a buffer or |
| 32674 | 339 file name, is highlighted red, and underlined. |
| 340 | |
| 341 Colors can be customized from the group @code{speedbar-faces}. Some | |
| 342 modes, such as for Info, will use the Info colors instead of default | |
| 343 speedbar colors as an indication of what is currently being displayed. | |
| 344 | |
| 345 The face naming convention mirrors the File display mode. Modes which | |
| 346 do not use files will attempt to use the same colors on analogous | |
| 347 entries. | |
| 348 | |
| 349 @node Mouse Bindings, Displays Submenu, Basic Visuals, Basic Navigation | |
| 350 @comment node-name, next, previous, up | |
| 351 @section Mouse Bindings | |
| 352 @cindex mouse bindings | |
| 353 | |
| 354 The mouse has become a common information navigation tool. Speedbar | |
| 355 will use the mouse to navigate file systems, buffer lists, and other | |
| 356 data. The different textual cues provide buttons which can be clicked | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
357 on (@pxref{Basic Visuals}). Anything that highlights can be clicked on |
| 33079 | 358 with the mouse, or affected by the menu. |
| 32674 | 359 |
| 360 The mouse bindings are: | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
361 |
| 32674 | 362 @table @kbd |
| 36154 | 363 @item Mouse-1 |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
364 Move cursor to that location. |
| 36154 | 365 @item Mouse-2 |
| 366 @itemx Double-Mouse-1 | |
| 367 Activate the current button. @kbd{Double-Mouse-1} is called a @dfn{double | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
368 click} on other platforms, and is useful for windows users with two |
| 32674 | 369 button mice. |
| 36154 | 370 @c Isn't it true that with two-button mice, the right button is Mouse-2? |
| 371 @c On GNU/Linux, the right button is Mouse-3. | |
| 372 @item S-Mouse-2 | |
| 373 @itemx S-Double-Mouse-1 | |
| 32674 | 374 @cindex power click |
| 36154 | 375 This has the same effect as @kbd{Mouse-2}, except it is called a power |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
376 click. This means that if a group with an expansion button @samp{+} is |
| 32674 | 377 clicked, any caches are flushed, and subitems re-read. If it is a name, |
| 378 it will be opened in a new frame. | |
| 36154 | 379 @item Mouse-3 |
| 33079 | 380 Activate the speedbar menu. The item selected affects the line clicked, |
| 32674 | 381 not the line where the cursor was. |
| 36154 | 382 @item Mouse-1 @r{(mode line)} |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
383 Activate the menu. This affects the item the cursor is on before the |
| 32674 | 384 click, since the mouse was not clicked on anything. |
| 36154 | 385 @item C-Mouse-1 |
| 32674 | 386 Buffers sub-menu. The buffer in the attached frame is switched. |
| 387 @end table | |
| 388 | |
| 389 When the mouse moves over buttons in speedbar, details of that item | |
| 390 should be displayed in the minibuffer of the attached frame. Sometimes | |
| 391 this can contain extra information such as file permissions, or tag | |
| 392 location. | |
| 393 | |
| 394 @node Displays Submenu, , Mouse Bindings, Basic Navigation | |
| 395 @comment node-name, next, previous, up | |
| 396 @section Displays Submenu | |
| 397 @cindex displays submenu | |
| 398 | |
| 399 You can display different data by using different display modes. These | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
400 specialized modes make it easier to navigate the relevant pieces of |
| 32674 | 401 information, such as files and directories, or buffers. |
| 402 | |
| 36154 | 403 In the main menu, found by clicking @kbd{Mouse-3}, there is a submenu |
| 404 labeled @samp{Displays}. This submenu lets you easily choose between | |
| 32674 | 405 different display modes. |
| 406 | |
| 407 The contents are modes currently loaded into emacs. By default, this | |
| 408 would include Files, Quick Buffers, and Buffers. Other major display | |
| 409 modes such as Info are loaded separately. | |
| 410 | |
| 411 @node File Mode, Buffer Mode, Basic Navigation, Top | |
| 412 @comment node-name, next, previous, up | |
| 413 @chapter File Mode | |
| 414 @cindex file mode | |
| 415 | |
| 416 File mode displays a summary of your current directory. You can display | |
| 417 files in the attached frame, or summarize the tags found in files. You | |
| 418 can even see if a file is checked out of a version control system, or | |
| 419 has some associated object file. | |
| 420 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
421 Advanced behavior, like copying and renaming files, is also provided. |
| 32674 | 422 |
| 423 @menu | |
| 424 * Directory Display:: What the display means. | |
| 425 * Hidden Files:: How to display hidden files. | |
| 39267 | 426 * File Key Bindings:: Performing file operations. |
| 32674 | 427 @end menu |
| 428 | |
| 429 @node Directory Display, Hidden Files, File Mode, File Mode | |
| 430 @comment node-name, next, previous, up | |
| 431 @section Directory Display | |
| 432 @cindex directory display | |
| 433 | |
| 434 There are three major sections in the display. The first line or two is | |
| 435 the root directory speedbar is currently viewing. You can jump to one | |
| 436 of the parent directories by clicking on the name of the directory you | |
| 437 wish to jump to. | |
| 438 | |
| 439 Next, directories are listed. A directory starts with the group | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
440 indicator button @samp{<+>}. Clicking the directory name makes speedbar |
| 32674 | 441 load that directory as the root directory for its display. Clicking the |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
442 @samp{<+>} button will list all directories and files beneath. |
| 32674 | 443 |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
444 Next, files are listed. Files start with the group indicator @samp{[+]} |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
445 or @samp{[?]}. You can jump to a file in the attached frame by clicking |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
446 on the file name. You can expand a file and look at its tags by |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
447 clicking on the @samp{[+]} symbol near the file name. |
| 32674 | 448 |
| 449 A typical session might look like this: | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
450 |
| 32674 | 451 @example |
| 452 ~/lisp/ | |
| 453 <+> checkdoc | |
| 454 <+> eieio | |
| 455 <-> speedbar | |
| 456 [+] Makefile | |
| 457 [+] rpm.el # | |
| 458 [+] sb-gud.el # | |
| 459 [+] sb-info.el # | |
| 460 [+] sb-rmail.el # | |
| 461 [+] sb-w3.el | |
| 462 [-] speedbar.el *! | |
| 463 @{+@} Types | |
| 464 @{+@} Variables | |
| 465 @{+@} def (group) | |
| 466 @{+@} speedbar- | |
| 467 [+] speedbar.texi * | |
| 468 <+> testme | |
| 469 [+] align.el | |
| 470 [+] autoconf.el | |
| 471 @end example | |
| 472 | |
| 473 In this example, you can see several directories. The directory | |
| 474 @file{speedbar} has been opened inline. Inside the directory | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
475 @file{speedbar}, the file @file{speedbar.el} has its tags exposed. |
| 32674 | 476 These tags are extensive, and they are summarized into tag groups. |
| 477 | |
| 478 Files get additional boolean flags associated with them. Valid flags are: | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
479 |
| 32674 | 480 @cindex file flags |
| 481 @table @code | |
| 482 @item * | |
| 483 This file has been checked out of a version control | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
484 system. @xref{Version Control}. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
485 @cindex @code{speedbar-obj-alist} |
| 32674 | 486 @item # |
| 487 This file has an up to date object file associated with it. The | |
| 488 variable @code{speedbar-obj-alist} defines how speedbar determines this | |
| 489 value. | |
| 490 @item ! | |
| 491 This file has an out of date object file associated with it. | |
| 492 @end table | |
| 493 | |
| 494 A Tag group is prefixed with the symbol @samp{@{+@}}. Clicking this | |
| 495 symbol will show all symbols that have been organized into that group. | |
| 496 Different types of files have unique tagging methods as defined by their | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
497 major mode. Tags are generated with either the @code{imenu} package, or |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
498 through the @code{etags} interface. |
| 32674 | 499 |
| 500 Tag groups are defined in multiple ways which make it easier to find the | |
| 501 tag you are looking for. Imenu keywords explicitly create groups, and | |
| 502 speedbar will automatically create groups if tag lists are too long. | |
| 503 | |
| 504 In our example, Imenu created the groups @samp{Types} and | |
| 505 @samp{Variables}. All remaining top-level symbols are then regrouped | |
| 506 based on the variable @code{speedbar-tag-hierarchy-method}. The | |
| 507 subgroups @samp{def} and @samp{speedbar-} are groupings where the first | |
| 508 few characters of the given symbols are specified in the group name. | |
| 509 Some group names may say something like @samp{speedbar-t to speedbar-v}, | |
| 510 indicating that all symbols which alphabetically fall between those | |
| 33079 | 511 categories are included in that sub-group. @xref{Tag Hierarchy Methods}. |
| 32674 | 512 |
| 39267 | 513 @node Hidden Files, File Key Bindings, Directory Display, File Mode |
| 32674 | 514 @comment node-name, next, previous, up |
| 515 @section Hidden Files | |
| 516 @cindex hidden files | |
| 517 | |
|
38865
62e02f5ae533
Avoid saying "Unix" in a way that includes GNU.
Richard M. Stallman <rms@gnu.org>
parents:
36154
diff
changeset
|
518 On GNU and Unix systems, a hidden file is a file whose name starts |
|
62e02f5ae533
Avoid saying "Unix" in a way that includes GNU.
Richard M. Stallman <rms@gnu.org>
parents:
36154
diff
changeset
|
519 with a period. They are hidden from a regular directory listing |
|
62e02f5ae533
Avoid saying "Unix" in a way that includes GNU.
Richard M. Stallman <rms@gnu.org>
parents:
36154
diff
changeset
|
520 because the user is not generally interested in them. |
| 32674 | 521 |
| 522 In speedbar, a hidden file is a file which isn't very interesting and | |
| 523 might prove distracting to the user. Any uninteresting files are | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
524 removed from the File display. There are two levels of uninterest in |
| 32674 | 525 speedbar. The first level of uninterest are files which have no |
| 526 expansion method, or way of extracting tags. The second level is any | |
| 527 file that matches the same pattern used for completion in | |
| 528 @code{find-file}. This is derived from the variable | |
| 529 @code{completion-ignored-extensions}. | |
| 530 | |
| 531 You can toggle the display of uninteresting files from the toggle menu | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
532 item @samp{Show All Files}. This will display all level one hidden files. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
533 These files will be shown with a @samp{?} indicator. Level 2 hidden |
| 32674 | 534 files will still not be shown. |
| 535 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
536 Object files fall into the category of level 2 hidden files. You can |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
537 determine their presence by the @samp{#} and @samp{!} file indicators. |
| 32674 | 538 @xref{Directory Display}. |
| 539 | |
| 39267 | 540 @node File Key Bindings, , Hidden Files, File Mode |
| 32674 | 541 @comment node-name, next, previous, up |
| 39267 | 542 @section File Key Bindings |
| 543 @cindex file key bindings | |
| 32674 | 544 |
| 39267 | 545 File mode has key bindings permitting different file system operations |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
546 such as copy or rename. These commands all operate on the @dfn{current |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
547 file}. In this case, the current file is the file at point, or clicked |
| 32674 | 548 on when pulling up the menu. |
| 549 | |
| 550 @table @kbd | |
| 551 @item U | |
| 552 Move the entire speedbar display up one directory. | |
| 553 @item I | |
| 554 Display information in the minibuffer about this line. This is the same | |
| 555 information shown when navigating with @kbd{n} and @kbd{p}, or moving | |
| 556 the mouse over an item. | |
| 557 @item B | |
| 558 Byte compile the Emacs Lisp file on this line. | |
| 559 @item L | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
560 Load the Emacs Lisp file on this line. If a @file{.elc} file exists, |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
561 optionally load that. |
| 32674 | 562 @item C |
| 563 Copy the current file to some other location. | |
| 564 @item R | |
| 565 Rename the current file, possibly moving it to some other location. | |
| 566 @item D | |
| 567 Delete the current file. | |
| 568 @item O | |
| 569 Delete the current file's object file. Use the symbols @samp{#} and | |
| 570 @samp{!} to determine if there is an object file available. | |
| 571 @end table | |
| 572 | |
| 573 One menu item toggles the display of all available files. By default, | |
| 574 only files which Emacs understands, and knows how to convert into a tag | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
575 list, are shown. By showing all files, additional files such as text files are |
| 32674 | 576 also displayed, but they are prefixed with the @samp{[?]} symbol. This |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
577 means that it is a file, but Emacs doesn't know how to expand it. |
| 32674 | 578 |
| 579 @node Buffer Mode, Minor Modes, File Mode, Top | |
| 580 @comment node-name, next, previous, up | |
| 581 @chapter Buffer Mode | |
| 582 @cindex buffer mode | |
| 583 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
584 Buffer mode is very similar to File mode, except that instead of |
| 32674 | 585 tracking the current directory and all files available there, the |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
586 current list of Emacs buffers is shown. |
| 32674 | 587 |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
588 These buffers can have their tags expanded in the same way as files, |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
589 and uses the same unknown file indicator (@pxref{File Mode}). |
| 32674 | 590 |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
591 Buffer mode does not have file operation bindings, but the following |
| 39267 | 592 buffer specific key bindings are available: |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
593 |
| 32674 | 594 @table @kbd |
| 595 @item k | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
596 Kill this buffer. Do not touch its file. |
| 32674 | 597 @item r |
| 598 Revert this buffer, reloading from disk. | |
| 599 @end table | |
| 600 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
601 In addition to Buffer mode, there is also Quick Buffer mode. In fact, |
| 32674 | 602 Quick Buffers is bound to the @kbd{b} key. The only difference between |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
603 Buffers and Quick Buffers is that after one operation is performed |
| 33079 | 604 which affects the attached frame, the display is immediately reverted to |
| 32674 | 605 the last displayed mode. |
| 606 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
607 Thus, if you are in File mode, and you need quick access to a buffer, |
| 32674 | 608 press @kbd{b}, click on the buffer you want, and speedbar will revert |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
609 back to File mode. |
| 32674 | 610 |
| 611 @node Minor Modes, Customizing, Buffer Mode, Top | |
| 612 @comment node-name, next, previous, up | |
| 613 @chapter Minor Display Modes | |
| 614 @cindex minor display modes | |
| 615 | |
| 616 For some buffers, a list of files and tags makes no sense. This could | |
| 617 be because files are not currently in reference (such as web pages), or | |
| 618 that the files you might be interested have special properties (such as | |
| 619 email folders.) | |
| 620 | |
| 621 In these cases, a minor display mode is needed. A minor display mode | |
| 622 will override any major display mode currently being displayed for the | |
| 623 duration of the specialized buffer's use. Minor display modes | |
| 624 will follow the general rules of their major counterparts in terms of | |
| 39267 | 625 key bindings and visuals, but will have specialized behaviors. |
| 32674 | 626 |
| 627 @menu | |
| 628 * RMAIL:: Managing folders in speedbar | |
| 629 * Info:: Browsing topics in speedbar | |
| 630 * GDB:: Managing the current stack trace in speedbar | |
| 631 @end menu | |
| 632 | |
| 633 @node RMAIL, Info, Minor Modes, Minor Modes | |
| 634 @comment node-name, next, previous, up | |
| 635 @section RMAIL | |
| 636 @cindex RMAIL | |
| 637 | |
| 638 When using RMAIL, speedbar will display two sections. The first is a | |
| 639 layer one reply button. Clicking here will initialize a reply buffer | |
| 640 showing only this email address in the @samp{To:} field. | |
| 641 | |
| 642 The second section lists all RMAIL folders in the same directory as your | |
| 643 main RMAIL folder. The general rule is that RMAIL folders always appear | |
| 644 in all caps, or numbers. It is possible to save mail in folders with | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
645 lower case letters, but there is no clean way of detecting such RMAIL folders |
| 32674 | 646 without opening them all. |
| 647 | |
| 648 Each folder can be visited by clicking the name. You can move mail from | |
| 649 the current RMAIL folder into a different folder by clicking the | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
650 @samp{<M>} button. The @samp{M} stands for Move. |
| 32674 | 651 |
| 652 In this way you can manage your existing RMAIL folders fairly easily | |
| 653 using the mouse. | |
| 654 | |
| 655 @node Info, GDB, RMAIL, Minor Modes | |
| 656 @comment node-name, next, previous, up | |
| 657 @section Info | |
| 658 @cindex Info | |
| 659 | |
| 660 When browsing Info files, all local relevant information is displayed in | |
| 661 the info buffer and a topical high-level view is provided in speedbar. | |
| 662 All top-level info nodes are shown in the speedbar frame, and can be | |
| 663 jumped to by clicking the name. | |
| 664 | |
| 665 You can open these nodes with the @samp{[+]} button to see what sub-topics | |
| 666 are available. Since these sub-topics are not examined until you click | |
| 667 the @samp{[+]} button, sometimes a @samp{[?]} will appear when you click on | |
| 668 a @samp{[+]}, indicating that there are no sub-topics. | |
| 669 | |
| 670 @node GDB, , Info, Minor Modes | |
| 671 @comment node-name, next, previous, up | |
| 672 @section GDB | |
| 673 @cindex gdb | |
| 674 @cindex gud | |
| 675 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
676 If you are debugging an application with GDB in Emacs, speedbar can show |
| 32674 | 677 you the current stack when the current buffer is the @file{*gdb*} |
| 678 buffer. Usually, it will just report that there is no stack, but when | |
| 679 the application is stopped, the current stack will be shown. | |
| 680 | |
| 681 You can click on any stack element and gdb will move to that stack | |
| 682 level. You can then check variables local to that level at the GDB | |
| 683 prompt. | |
| 684 | |
| 685 This mode has the unfortunate side-effect of breaking GDB's repeat | |
| 686 feature when you hit @kbd{RET} since your previous command is overridden | |
| 687 with a stack fetching command. | |
| 688 | |
| 689 @node Customizing, Extending, Minor Modes, Top | |
| 690 @comment node-name, next, previous, up | |
| 691 @chapter Customizing | |
| 692 @cindex customizing | |
| 693 | |
| 694 Speedbar is highly customizable, with a plethora of control elements. | |
| 695 Since speedbar is so visual and reduces so much information, this is an | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
696 important aspect of its behavior. |
| 32674 | 697 |
| 698 In general, there are three custom groups you can use to quickly modify | |
| 699 speedbar's behavior. | |
| 700 | |
| 701 @table @code | |
| 702 @item speedbar | |
| 703 Basic speedbar behaviors. | |
| 704 @item speedbar-vc | |
| 705 Customizations regarding version control handling. | |
| 706 @item speedbar-faces | |
| 707 Customize speedbar's many colors and fonts. | |
| 708 @end table | |
| 709 | |
| 710 @menu | |
| 711 * Frames and Faces:: Visible behaviors. | |
| 712 * Tag Hierarchy Methods:: Customizing how tags are displayed. | |
| 713 * Version Control:: Adding new VC detection modes. | |
| 714 * Hooks:: The many hooks you can use. | |
| 715 @end menu | |
| 716 | |
| 717 @node Frames and Faces, Tag Hierarchy Methods, Customizing, Customizing | |
| 718 @comment node-name, next, previous, up | |
| 719 @section Frames and Faces | |
| 720 @cindex faces | |
| 721 @cindex frame parameters | |
| 722 | |
| 723 There are several faces speedbar generates to provide a consistent | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
724 color scheme across display types. You can customize these faces using |
| 32674 | 725 your favorite method. They are: |
| 726 | |
| 727 @table @asis | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
728 @cindex @code{speedbar-button-face} |
| 32674 | 729 @item speedbar-button-face |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
730 Face used on expand/contract buttons. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
731 @cindex @code{speedbar-file-face} |
| 32674 | 732 @item speedbar-file-face |
| 733 Face used on Files. Should also be used on non-directory like nodes. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
734 @cindex @code{speedbar-directory-face} |
| 32674 | 735 @item speedbar-directory-face |
| 736 Face used for directories, or nodes which consist of groups of other nodes. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
737 @cindex @code{speedbar-tag-face} |
| 32674 | 738 @item speedbar-tag-face |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
739 Face used for tags in a file, or for leaf items. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
740 @cindex @code{speedbar-selected-face} |
| 32674 | 741 @item speedbar-selected-face |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
742 Face used to highlight the selected item. This would be the current |
| 32674 | 743 file being edited. |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
744 @cindex @code{speedbar-highlight-face} |
| 32674 | 745 @item speedbar-highlight-face |
| 746 Face used when the mouse passes over a button. | |
| 747 @end table | |
| 748 | |
| 749 You can also customize speedbar's initial frame parameters. How this is | |
| 750 accomplished is dependent on your platform being Emacs or XEmacs. | |
| 751 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
752 @cindex @code{speedbar-frame-parameters}, Emacs |
| 32674 | 753 In Emacs, change the alist @code{speedbar-frame-parameters}. This |
| 754 variable is used to set up initial details. Height is also | |
| 755 automatically added when speedbar is created, though you can override | |
| 756 it. | |
| 757 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
758 @cindex @code{speedbar-frame-plist}, XEmacs |
| 32674 | 759 In XEmacs, change the plist @code{speedbar-frame-plist}. This is the |
| 760 XEmacs way of doing the same thing. | |
| 761 | |
| 762 @node Tag Hierarchy Methods, Version Control, Frames and Faces, Customizing | |
| 763 @comment node-name, next, previous, up | |
| 764 @section Tag Hierarchy Methods | |
| 765 @cindex tag hierarchy | |
| 766 @cindex tag groups | |
| 767 @cindex tag sorting | |
| 768 | |
| 769 When listing tags within a file, it is possible to get an annoyingly | |
| 770 long list of entries. Imenu (which generates the tag list in Emacs) | |
| 771 will group some classes of items automatically. Even here, however, | |
| 772 some tag groups can be quite large. | |
| 773 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
774 @cindex @code{speedbar-tag-hierarchy-method} |
| 32674 | 775 To solve this problem, tags can be grouped into logical units through a |
| 776 hierarchy processor. The specific variable to use is | |
| 777 @code{speedbar-tag-hierarchy-method}. There are several methods that | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
778 can be applied in any order. They are: |
| 32674 | 779 |
| 780 @table @code | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
781 @cindex @code{speedbar-trim-words-tag-hierarchy} |
| 32674 | 782 @item speedbar-trim-words-tag-hierarchy |
| 783 Find a common prefix for all elements of a group, and trim it off. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
784 @cindex @code{speedbar-prefix-group-tag-hierarchy} |
| 32674 | 785 @item speedbar-prefix-group-tag-hierarchy |
| 786 If a group is too large, place sets of tags into bins based on common | |
| 787 prefixes. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
788 @cindex @code{speedbar-simple-group-tag-hierarchy} |
| 32674 | 789 @item speedbar-simple-group-tag-hierarchy |
| 790 Take all items in the top level list not in a group, and stick them into | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
791 a @samp{Tags} group. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
792 @cindex @code{speedbar-sort-tag-hierarchy} |
| 32674 | 793 @item speedbar-sort-tag-hierarchy |
| 794 Sort all items, leaving groups on top. | |
| 795 @end table | |
| 796 | |
| 797 You can also add your own functions to reorganize tags as you see fit. | |
| 798 | |
| 799 Some other control variables are: | |
| 800 | |
| 801 @table @code | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
802 @cindex @code{speedbar-tag-group-name-minimum-length} |
| 32674 | 803 @item speedbar-tag-group-name-minimum-length |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
804 Default value: 4. |
| 32674 | 805 |
| 806 The minimum length of a prefix group name before expanding. Thus, if | |
| 807 the @code{speedbar-tag-hierarchy-method} includes | |
| 808 @code{speedbar-prefix-group-tag-hierarchy} and one such group's common | |
| 809 characters is less than this number of characters, then the group name | |
| 810 will be changed to the form of: | |
| 811 | |
| 812 @example | |
| 813 worda to wordb | |
| 814 @end example | |
| 815 | |
| 816 instead of just | |
| 817 | |
| 818 @example | |
| 819 word | |
| 820 @end example | |
| 821 | |
| 822 This way we won't get silly looking listings. | |
| 823 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
824 @cindex @code{speedbar-tag-split-minimum-length} |
| 32674 | 825 @item speedbar-tag-split-minimum-length |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
826 Default value: 20. |
| 32674 | 827 |
| 828 Minimum length before we stop trying to create sub-lists in tags. | |
| 829 This is used by all tag-hierarchy methods that break large lists into | |
| 830 sub-lists. | |
| 831 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
832 @cindex @code{speedbar-tag-regroup-maximum-length} |
| 32674 | 833 @item speedbar-tag-regroup-maximum-length |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
834 Default value: 10. |
| 32674 | 835 |
| 836 Maximum length of submenus that are regrouped. | |
| 837 If the regrouping option is used, then if two or more short subgroups | |
| 838 are next to each other, then they are combined until this number of | |
| 839 items is reached. | |
| 840 @end table | |
| 841 | |
| 842 @node Version Control, Hooks, Tag Hierarchy Methods, Customizing | |
| 843 @comment node-name, next, previous, up | |
| 844 @section Version Control | |
| 845 @cindex version control | |
| 846 @cindex vc extensions | |
| 847 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
848 When using the file mode in speedbar, information regarding a version |
| 32674 | 849 control system adds small details to the display. If a file is in a |
| 36154 | 850 version control system, and is ``checked out'' or ``locked'' locally, an |
| 851 asterisk @samp{*} appears at the end of the file name. In addition, | |
| 32674 | 852 the directory name for Version Control systems are left out of the |
| 853 speedbar display. | |
| 854 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
855 @cindex @code{speedbar-directory-unshown-regexp} |
| 32674 | 856 You can easily add new version control systems into speedbar's detection |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
857 scheme. To make a directory ``disappear'' from the list, use the variable |
| 32674 | 858 @code{speedbar-directory-unshown-regexp}. |
| 859 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
860 @cindex @code{speedbar-vc-path-enable-hook} |
| 32674 | 861 Next, you need to write entries for two hooks. The first is |
| 862 @code{speedbar-vc-path-enable-hook} which will enable a VC check in the | |
| 863 current directory for the group of files being checked. Your hook | |
| 864 function should take one parameter (the directory to check) and return | |
| 865 @code{t} if your VC method is in control here. | |
| 866 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
867 @cindex @code{speedbar-vc-in-control-hook} |
| 32674 | 868 The second function is @code{speedbar-vc-in-control-hook}. This hook |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
869 takes two parameters, the @var{path} of the file to check, and the |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
870 @var{file} name. Return @code{t} if you want to have the asterisk |
| 32674 | 871 placed near this file. |
| 872 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
873 @cindex @code{speedbar-vc-indicator} |
| 32674 | 874 Lastly, you can change the VC indicator using the variable |
| 875 @code{speedbar-vc-indicator}, and specify a single character string. | |
| 876 | |
| 877 @node Hooks, , Version Control, Customizing | |
| 878 @comment node-name, next, previous, up | |
| 879 @section Hooks | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
880 @cindex hooks |
| 32674 | 881 |
| 882 There are several hooks in speedbar allowing custom behaviors to be | |
| 883 added. Available hooks are: | |
| 884 | |
| 885 @table @code | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
886 @cindex @code{speedbar-visiting-file-hook} |
| 32674 | 887 @item speedbar-visiting-file-hook |
| 888 Hooks run when speedbar visits a file in the selected frame. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
889 @cindex @code{speedbar-visiting-tag-hook} |
| 32674 | 890 @item speedbar-visiting-tag-hook |
| 891 Hooks run when speedbar visits a tag in the selected frame. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
892 @cindex @code{speedbar-load-hook} |
| 32674 | 893 @item speedbar-load-hook |
| 894 Hooks run when speedbar is loaded. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
895 @cindex @code{speedbar-reconfigure-keymaps-hook} |
| 32674 | 896 @item speedbar-reconfigure-keymaps-hook |
| 897 Hooks run when the keymaps are regenerated. Keymaps are reconfigured | |
| 39267 | 898 whenever modes change. This will let you add custom key bindings. |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
899 @cindex @code{speedbar-before-popup-hook} |
| 32674 | 900 @item speedbar-before-popup-hook |
| 901 Hooks called before popping up the speedbar frame. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
902 New frames are often popped up when ``power clicking'' on an item to view |
| 32674 | 903 it. |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
904 @cindex @code{speedbar-before-delete-hook} |
| 32674 | 905 @item speedbar-before-delete-hook |
| 906 Hooks called before deleting or hiding the speedbar frame. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
907 @cindex @code{speedbar-mode-hook} |
| 32674 | 908 @item speedbar-mode-hook |
| 909 Hooks called after creating a speedbar buffer. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
910 @cindex @code{speedbar-timer-hook} |
| 32674 | 911 @item speedbar-timer-hook |
| 912 Hooks called after running the speedbar timer function. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
913 @cindex @code{speedbar-scanner-reset-hook} |
| 32674 | 914 @item speedbar-scanner-reset-hook |
| 915 Hook called whenever generic scanners are reset. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
916 Set this to implement your own scanning or rescan safe functions with |
| 32674 | 917 state data. |
| 918 @end table | |
| 919 | |
| 920 @node Extending, Index, Customizing, Top | |
| 921 @comment node-name, next, previous, up | |
| 922 @chapter Extending | |
| 923 @cindex extending | |
| 924 | |
| 925 Speedbar can run different types of Major display modes such as Files | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
926 (@pxref{File Mode}), and Buffers (@pxref{Buffer Mode}). It can also manage |
| 32674 | 927 different minor display modes for use with buffers handling specialized |
| 928 data. | |
| 929 | |
| 930 These major and minor display modes are handled through an extension | |
| 931 system which permits specialized keymaps and menu extensions, in | |
| 932 addition to a unique rendering function. You can also specify a wide | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
933 range of tagging functions. The default uses @code{imenu}, but new |
| 33079 | 934 tagging methods can be easily added. In this chapter, you will |
| 32674 | 935 learn how to write your own major or minor display modes, and how to |
| 936 create specialized tagging functions. | |
| 937 | |
| 938 @menu | |
| 939 * Minor Display Modes:: How to create a minor display mode. | |
| 940 * Major Display Modes:: How to create a major display mode. | |
| 33079 | 941 * Tagging Extensions:: How to create your own tagging methods. |
| 32674 | 942 * Creating a display:: How to insert buttons and hierarchies. |
| 943 @end menu | |
| 944 | |
| 945 @node Minor Display Modes, Major Display Modes, Extending, Extending | |
| 946 @section Minor Display Modes | |
| 947 @cindex create minor display mode | |
| 948 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
949 A @dfn{minor display mode} is a mode useful when using a specific type of |
| 32674 | 950 buffer. This mode might not be useful for any other kind of data or |
| 951 mode, or may just be more useful that a files or buffers based mode when | |
| 952 working with a specialized mode. | |
| 953 | |
| 954 Examples that already exist for speedbar include RMAIL, Info, and gdb. | |
| 955 These modes display information specific to the major mode shown in the | |
| 956 attached frame. | |
| 957 | |
| 958 To enable a minor display mode in your favorite Major mode, follow these | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
959 steps. The string @samp{@var{name}} is the name of the major mode being |
| 32674 | 960 augmented with speedbar. |
| 961 | |
| 962 @enumerate | |
| 963 @item | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
964 Create the keymap variable @code{@var{name}-speedbar-key-map}. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
965 |
| 32674 | 966 @item |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
967 Create a function, named whatever you like, which assigns values into your |
| 32674 | 968 keymap. Use this command to create the keymap before assigning |
| 969 bindings: | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
970 |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
971 @smallexample |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
972 (setq @var{name}-speedbar-key-map (speedbar-make-specialized-keymap)) |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
973 @end smallexample |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
974 |
| 32674 | 975 This function creates a special keymap for use in speedbar. |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
976 |
| 32674 | 977 @item |
| 978 Call your install function, or assign it to a hook like this: | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
979 |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
980 @smallexample |
| 32674 | 981 (if (featurep 'speedbar) |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
982 (@var{name}-install-speedbar-variables) |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
983 (add-hook 'speedbar-load-hook '@var{name}-install-speedbar-variables)) |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
984 @end smallexample |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
985 |
| 32674 | 986 @item |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
987 Create an easymenu compatible vector named |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
988 @code{@var{name}-speedbar-menu-items}. This will be spliced into |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
989 speedbar's control menu. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
990 |
| 32674 | 991 @item |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
992 Create a function called @code{@var{name}-speedbar-buttons}. This function |
| 32674 | 993 should take one variable, which is the buffer for which it will create |
| 994 buttons. At this time @code{(current-buffer)} will point to the | |
| 995 uncleared speedbar buffer. | |
| 996 @end enumerate | |
| 997 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
998 When writing @code{@var{name}-speedbar-buttons}, the first thing you will |
| 32674 | 999 want to do is execute a check to see if you need to re-create your |
| 1000 display. If it needs to be cleared, you need to erase the speedbar | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1001 buffer yourself, and start drawing buttons. @xref{Creating a display}. |
| 32674 | 1002 |
| 33079 | 1003 @node Major Display Modes, Tagging Extensions, Minor Display Modes, Extending |
| 32674 | 1004 @section Major Display Modes |
| 1005 @cindex create major display mode | |
| 1006 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1007 Creating a @dfn{Major Display Mode} for speedbar requires authoring a keymap, |
| 32674 | 1008 an easy-menu segment, and writing several functions. These items can be |
| 1009 given any name, and are made the same way as in a minor display mode | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1010 (@pxref{Minor Display Modes}). Once this is done, these items need to be |
| 32674 | 1011 registered. |
| 1012 | |
| 1013 Because this setup activity may or may not have speedbar available when | |
| 1014 it is being loaded, it is necessary to create an install function. This | |
| 1015 function should create and initialize the keymap, and add your | |
| 1016 expansions into the customization tables. | |
| 1017 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1018 @cindex @code{speedbar-make-specialized-keymap} |
| 32674 | 1019 When creating the keymap, use the function |
| 1020 @code{speedbar-make-specialized-keymap} instead of other keymap making | |
| 1021 functions. This will provide you with the initial bindings needed. | |
| 1022 Some common speedbar functions you might want to bind are: | |
| 1023 | |
| 1024 @table @code | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1025 @cindex @code{speedbar-edit-line} |
| 32674 | 1026 @item speedbar-edit-line |
| 1027 Edit the item on the current line. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1028 @cindex @code{speedbar-expand-line} |
| 32674 | 1029 @item speedbar-expand-line |
| 1030 Expand the item under the cursor. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1031 With a numeric argument (@kbd{C-u}), flush cached data before expanding. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1032 @cindex @code{speedbar-contract-line} |
| 32674 | 1033 @item speedbar-contract-line |
| 1034 Contract the item under the cursor. | |
| 1035 @end table | |
| 1036 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1037 @cindex @code{speedbar-line-path} |
| 32674 | 1038 These function require that function @code{speedbar-line-path} be |
| 1039 correctly overloaded to work. | |
| 1040 | |
| 1041 Next, register your extension like this; | |
| 1042 | |
| 1043 @example | |
| 1044 (speedbar-add-expansion-list '("MyExtension" | |
| 1045 MyExtension-speedbar-menu-items | |
| 1046 MyExtension-speedbar-key-map | |
| 1047 MyExtension-speedbar-buttons)) | |
| 1048 @end example | |
| 1049 | |
| 1050 There are no limitations to the names you use. | |
| 1051 | |
| 1052 The first parameter is the string representing your display mode. | |
| 1053 The second parameter is a variable name containing an easymenu compatible | |
| 1054 menu definition. This will be stuck in the middle of speedbar's menu. | |
| 1055 The third parameter is the variable name containing the keymap we | |
| 1056 discussed earlier. | |
| 1057 The last parameter is a function which draws buttons for your mode. | |
| 1058 This function must take two parameters. The directory currently being | |
| 1059 displayed, and the depth at which you should start rendering buttons. | |
| 1060 The function will then draw (starting at the current cursor position) | |
| 1061 any buttons deemed necessary based on the input parameters. | |
| 1062 @xref{Creating a display}. | |
| 1063 | |
| 1064 Next, you need to register function overrides. This may look something | |
| 1065 like this: | |
| 1066 | |
| 1067 @example | |
| 1068 (speedbar-add-mode-functions-list | |
| 1069 '("MYEXTENSION" | |
| 1070 (speedbar-item-info . MyExtension-speedbar-item-info) | |
| 1071 (speedbar-line-path . MyExtension-speedbar-line-path))) | |
| 1072 @end example | |
| 1073 | |
| 1074 The first element in the list is the name of you extension. The second | |
| 1075 is an alist of functions to overload. The function to overload is | |
| 1076 first, followed by what you want called instead. | |
| 1077 | |
| 1078 For @code{speedbar-line-path} your function should take an optional DEPTH | |
| 1079 parameter. This is the starting depth for heavily indented lines. If | |
| 1080 it is not provided, you can derive it like this: | |
| 1081 | |
| 1082 @example | |
| 1083 (save-match-data | |
| 1084 (if (not depth) | |
| 1085 (progn | |
| 1086 (beginning-of-line) | |
| 1087 (looking-at "^\\([0-9]+\\):") | |
| 1088 (setq depth (string-to-int (match-string 1))))) | |
| 1089 @end example | |
| 1090 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1091 @noindent |
| 32674 | 1092 where the depth is stored as invisible text at the beginning of each |
| 1093 line. | |
| 1094 | |
| 1095 The path returned should be the full path name of the file associated | |
| 1096 with that line. If the cursor is on a tag, then the file containing | |
| 1097 that tag should be returned. This is critical for built in file based | |
| 1098 functions to work (meaning less code for you to write). If your display | |
| 1099 does not deal in files, you do not need to overload this function. | |
| 1100 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1101 @cindex @code{speedbar-item-info} |
| 32674 | 1102 The function @code{speedbar-item-info}, however, is very likely to need |
| 1103 overloading. This function takes no parameters and must derive a text | |
| 1104 summary to display in the minibuffer. | |
| 1105 | |
| 1106 There are several helper functions you can use if you are going to use | |
| 1107 built in tagging. These functions can be @code{or}ed since each one | |
| 1108 returns non-nil if it displays a message. They are: | |
| 1109 | |
| 1110 @table @code | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1111 @cindex @code{speedbar-item-info-file-helper} |
| 32674 | 1112 @item speedbar-item-info-file-helper |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1113 This takes an optional @var{filename} parameter. You can derive your own |
| 32674 | 1114 filename, or it will derive it using a (possibly overloaded) function |
| 1115 @code{speedbar-line-file}. It shows details about a file. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1116 @cindex @code{speedbar-item-info-tag-helper} |
| 32674 | 1117 @item speedbar-item-info-tag-helper |
| 1118 If the current line is a tag, then display information about that tag, | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1119 such as its parent file, and location. |
| 32674 | 1120 @end table |
| 1121 | |
| 1122 Your custom function might look like this: | |
| 1123 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1124 @example |
| 32674 | 1125 (defun MyExtension-item-info () |
| 1126 "Display information about the current line." | |
| 1127 (or (speedbar-item-info-tag-helper) | |
| 1128 (message "Interesting detail."))) | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1129 @end example |
| 32674 | 1130 |
| 1131 Once you have done all this, speedbar will show an entry in the | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1132 @samp{Displays} menu declaring that your extension is available. |
| 32674 | 1133 |
| 33079 | 1134 @node Tagging Extensions, Creating a display, Major Display Modes, Extending |
| 1135 @section Tagging Extensions | |
| 32674 | 1136 |
| 1137 It is possible to create new methods for tagging files in speedbar. | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1138 To do this, you need two basic functions, one function to fetch the |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1139 tags from a buffer, the other to insert them below the filename. |
| 32674 | 1140 |
| 1141 @defun my-fetch-dynamic-tags file | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1142 Parse @var{file} for a list of tags. Return the list, or @code{t} if there was |
| 32674 | 1143 an error. |
| 1144 @end defun | |
| 1145 | |
| 1146 The non-error return value can be anything, as long as it can be | |
| 33079 | 1147 inserted by its paired function: |
| 32674 | 1148 |
| 1149 @defun my-insert-tag-list level lst | |
| 1150 Insert a list of tags @var{lst} started at indentation level | |
| 1151 @var{level}. Creates buttons for each tag, and provides any other | |
| 33079 | 1152 display information required. |
| 32674 | 1153 @end defun |
| 1154 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1155 @cindex @code{speedbar-create-tag-hierarchy} |
| 32674 | 1156 It is often useful to use @code{speedbar-create-tag-hierarchy} on your |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1157 token list. See that function's documentation for details on what it |
| 32674 | 1158 requires. |
| 1159 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1160 @cindex @code{speedbar-dynamic-tags-function-list} |
| 32674 | 1161 Once these two functions are written, modify the variable |
| 1162 @code{speedbar-dynamic-tags-function-list} to include your parser at the | |
| 1163 beginning, like this: | |
| 1164 | |
| 1165 @example | |
| 1166 (add-to-list 'speedbar-dynamic-tags-function-list | |
| 1167 '(my-fetch-dynamic-tags . my-insert-tag-list)) | |
| 1168 @end example | |
| 1169 | |
| 1170 If your parser is only good for a few types of files, make sure that it | |
| 1171 is either a buffer local modification, or that the tag generator returns | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1172 @code{t} for non valid buffers. |
| 32674 | 1173 |
| 33079 | 1174 @node Creating a display, , Tagging Extensions, Extending |
| 32674 | 1175 @section Creating a display |
| 1176 @cindex creating a display | |
| 1177 | |
| 1178 Rendering a display in speedbar is completely flexible. When your | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1179 button function is called, see @ref{Minor Display Modes}, and @ref{Major |
| 32674 | 1180 Display Modes}, you have control to @code{insert} anything you want. |
| 1181 | |
| 1182 The conventions allow almost anything to be inserted, but several helper | |
| 1183 functions are provided to make it easy to create the standardized | |
| 1184 buttons. | |
| 1185 | |
| 34238 | 1186 To understand the built in functions, each `button' in speedbar consists |
| 32674 | 1187 of four important pieces of data. The text to be displayed, token |
| 1188 data to be associated with the text, a function to call, and some face to | |
| 1189 display it in. | |
| 1190 | |
| 1191 When a function is provided, then that text becomes mouse activated, | |
| 1192 meaning the mouse will highlight the text. | |
| 1193 | |
| 1194 Additionally, for data which can form deep trees, each line is given a | |
| 1195 depth which indicates how far down the tree it is. This information is | |
| 1196 stored in invisible text at the beginning of each line, and is used by | |
| 1197 the navigation commands. | |
| 1198 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1199 @defun speedbar-insert-button text face mouse function &optional token prevline |
| 32674 | 1200 This function inserts one button into the current location. |
| 1201 @var{text} is the text to insert. @var{face} is the face in which it | |
| 1202 will be displayed. @var{mouse} is the face to display over the text | |
| 1203 when the mouse passes over it. @var{function} is called whenever the | |
| 1204 user clicks on the text. | |
| 1205 | |
| 1206 The optional argument @var{token} is extra data to associated with the | |
| 1207 text. Lastly @var{prevline} should be non-nil if you want this line to | |
| 1208 appear directly after the last button which was created instead of on | |
| 1209 the next line. | |
| 1210 @end defun | |
| 1211 | |
| 1212 @defun speedbar-make-tag-line exp-button-type exp-button-char exp-button-function exp-button-data tag-button tag-button-function tag-button-data tag-button-face depth | |
| 1213 | |
| 1214 Create a tag line with @var{exp-button-type} for the small expansion | |
| 1215 button. This is the button that expands or contracts a node (if | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1216 applicable), and @var{exp-button-char} the character in it (@samp{+}, |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1217 @samp{-}, @samp{?}, |
| 32674 | 1218 etc). @var{exp-button-function} is the function to call if it's clicked |
| 1219 on. Button types are @code{'bracket}, @code{'angle}, @code{'curly}, | |
| 1220 @code{'expandtag}, @code{'statictag}, or nil. @var{exp-button-data} is | |
| 1221 extra data attached to the text forming the expansion button. | |
| 1222 | |
| 1223 Next, @var{tag-button} is the text of the tag. | |
| 1224 @var{tag-button-function} is the function to call if clicked on, and | |
| 1225 @var{tag-button-data} is the data to attach to the text field (such a | |
| 1226 tag positioning, etc). @var{tag-button-face} is a face used for this | |
| 1227 type of tag. | |
| 1228 | |
| 1229 Lastly, @var{depth} shows the depth of expansion. | |
| 1230 | |
| 1231 This function assumes that the cursor is in the speedbar window at the | |
| 33079 | 1232 position to insert a new item, and that the new item will end with a CR. |
| 32674 | 1233 @end defun |
| 1234 | |
| 1235 @defun speedbar-insert-generic-list level list expand-fun find-fun | |
| 1236 | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1237 At @var{level}, (the current indentation level desired) insert a generic |
| 32674 | 1238 multi-level alist @var{list}. Associations with lists get @samp{@{+@}} |
| 1239 tags (to expand into more nodes) and those with positions or other data | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1240 just get a @samp{>} as the indicator. @samp{@{+@}} buttons will have the |
| 32674 | 1241 function @var{expand-fun} and the token is the @code{cdr} list. The |
| 1242 token name will have the function @var{find-fun} and not token. | |
| 1243 | |
| 1244 Each element of the list can have one of these forms: | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1245 |
| 32674 | 1246 @table @code |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1247 @item (@var{name} . marker-or-number) |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1248 One tag at this level. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1249 @item (@var{name} (@var{name} . marker-or-number) (@var{name} . marker-or-number) ... ) |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1250 One group of tags. |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1251 @item (@var{name} marker-or-number (@var{name} . marker-or-number) ... ) |
|
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1252 One Group of tags where the group has a starting position. |
| 32674 | 1253 @end table |
| 1254 | |
| 1255 When you use @code{speedbar-insert-generic-list}, there are some | |
| 1256 variables you can set buffer-locally to change the behavior. The most | |
| 1257 obvious is @code{speedbar-tag-hierarchy-method}. | |
| 1258 @xref{Tag Hierarchy Methods}. | |
| 1259 | |
| 1260 @defvar speedbar-generic-list-group-expand-button-type | |
|
32702
788c194fbcd1
Correct typos, fix markup, add index entries.
Eli Zaretskii <eliz@gnu.org>
parents:
32674
diff
changeset
|
1261 This is the button type used for groups of tags, whether expanded |
| 32674 | 1262 or added in via a hierarchy method. Two good values are |
| 1263 @code{'curly} and @code{'expandtag}. Curly is the default button, and | |
| 1264 @code{'expandtag} is useful if the groups also has a position. | |
| 1265 @end defvar | |
| 1266 | |
| 1267 @defvar speedbar-generic-list-tag-button-type | |
| 1268 This is the button type used for a single tag. | |
| 1269 Two good values are @code{nil} and @code{'statictag}. | |
| 1270 @code{nil} is the default, and @code{'statictag} has the same width as | |
| 1271 @code{'expandtag}. | |
| 1272 @end defvar | |
| 1273 | |
| 1274 @end defun | |
| 1275 | |
| 1276 @node Index, , Extending, Top | |
| 1277 @comment node-name, next, previous, up | |
| 1278 @unnumbered Concept Index | |
| 1279 @printindex cp | |
| 1280 | |
| 1281 @bye | |
| 39267 | 1282 @c LocalWords: speedbar's xref slowbar kbd subsubsection |
| 32674 | 1283 @c LocalWords: keybindings |
