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