annotate lisp/speedbar.el @ 56905:661d52db56de

(isearch-toggle-regexp): Set `isearch-success' and `isearch-adjusted' to `t'. (isearch-toggle-case-fold): Set `isearch-success' to `t'. (isearch-message-prefix): Add "pending" for isearch-adjusted. (isearch-other-meta-char): Restore isearch-point unconditionally. (isearch-query-replace): Add new arg `regexp-flag' and use it. Set point to start of match if region is not active in transient mark mode (to include the current match to region boundaries). Push the search string to `query-replace-from-history-variable'. Add prompt "Query replace regexp" for isearch-regexp. Add region beginning/end as last arguments of `perform-replace.' (isearch-query-replace-regexp): Replace code by the call to `isearch-query-replace' with arg `t'.
author Juri Linkov <juri@jurta.org>
date Fri, 03 Sep 2004 20:32:57 +0000
parents c36d40df2cc6
children feb47c14dfa5 d8411455de48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38377
diff changeset
1 ;;; speedbar.el --- quick access to files and tags in a frame
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2
36047
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
3 ;;; Copyright (C) 1996, 97, 98, 99, 2000, 01 Free Software Foundation
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
5 ;; Author: Eric M. Ludlam <zappo@gnu.org>
36047
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
6 ;; Version: 0.11a
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
7 ;; Keywords: file, tags, tools
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
8
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
10
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
14 ;; any later version.
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
15
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
19 ;; GNU General Public License for more details.
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
20
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
24 ;; Boston, MA 02111-1307, USA.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
25
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
26 ;;; Commentary:
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
27 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
28 ;; The speedbar provides a frame in which files, and locations in
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
29 ;; files are displayed. These items can be clicked on with mouse-2
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
30 ;; in order to make the last active frame display that file location.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
31 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
32 ;; Starting Speedbar:
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
33 ;;
26491
7de24bd78e93 Clean up comment at the start of the file.
Gerd Moellmann <gerd@gnu.org>
parents: 25432
diff changeset
34 ;; Simply type `M-x speedbar', and it will be autoloaded for you.
7de24bd78e93 Clean up comment at the start of the file.
Gerd Moellmann <gerd@gnu.org>
parents: 25432
diff changeset
35
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
36 ;; If you want to choose it from a menu, such as "Tools", you can do this:
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
37 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
38 ;; (define-key-after (lookup-key global-map [menu-bar tools])
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
39 ;; [speedbar] '("Speedbar" . speedbar-frame-mode) [calendar])
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
40 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
41 ;; If you want to access speedbar using only the keyboard, do this:
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
42 ;;
26491
7de24bd78e93 Clean up comment at the start of the file.
Gerd Moellmann <gerd@gnu.org>
parents: 25432
diff changeset
43 ;; (global-set-key [f4] 'speedbar-get-focus)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
44 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
45 ;; This will let you hit f4 (or whatever key you choose) to jump
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
46 ;; focus to the speedbar frame. Pressing it again will bring you back
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
47 ;; to the attached frame. Pressing RET or e to jump to a file
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
48 ;; or tag will move you back to the attached frame. The command
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
49 ;; `speedbar-get-focus' will also create a speedbar frame if it does
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
50 ;; not exist.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
51 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
52 ;; Customizing Speedbar:
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
53 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
54 ;; Once a speedbar frame is active, it takes advantage of idle time
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
55 ;; to keep its contents updated. The contents is usually a list of
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
56 ;; files in the directory of the currently active buffer. When
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
57 ;; applicable, tags in the active file can be expanded.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
58 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
59 ;; To add new supported files types into speedbar, use the function
40815
18a8015d9546 Minor fixes of the docs in the commentary. From sen_ml@eccosys.com.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
60 ;; `speedbar-add-supported-extension'. If speedbar complains that the
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
61 ;; file type is not supported, that means there is no built in
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
62 ;; support from imenu, and the etags part wasn't set up correctly. You
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
63 ;; may add elements to `speedbar-supported-extension-expressions' as long
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
64 ;; as it is done before speedbar is loaded.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
65 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
66 ;; To prevent speedbar from following you into certain directories
40815
18a8015d9546 Minor fixes of the docs in the commentary. From sen_ml@eccosys.com.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
67 ;; use the function `speedbar-add-ignored-path-regexp' to add a new
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
68 ;; regular expression matching a type of path. You may add list
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
69 ;; elements to `speedbar-ignored-path-expressions' as long as it is
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
70 ;; done before speedbar is loaded.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
71 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
72 ;; To add new file types to imenu, see the documentation in the
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
73 ;; file imenu.el that comes with Emacs. To add new file types which
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
74 ;; etags supports, you need to modify the variable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
75 ;; `speedbar-fetch-etags-parse-list'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
76 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
77 ;; If the updates are going too slow for you, modify the variable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
78 ;; `speedbar-update-speed' to a longer idle time before updates.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
79 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
80 ;; If you navigate directories, you will probably notice that you
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
81 ;; will navigate to a directory which is eventually replaced after
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
82 ;; you go back to editing a file (unless you pull up a new file.)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
83 ;; The delay time before this happens is in
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
84 ;; `speedbar-navigating-speed', and defaults to 10 seconds.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
85 ;;
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
86 ;; To enable mouse tracking with information in the minibuffer of
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
87 ;; the attached frame, use the variable `speedbar-track-mouse-flag'.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
88 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
89 ;; Tag layout can be modified through `speedbar-tag-hierarchy-method',
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
90 ;; which controls how tags are layed out. It is actually a list of
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
91 ;; functions that filter the data. The default groups large tag lists
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
92 ;; into sub-lists. A long flat list can be used instead if needed.
40815
18a8015d9546 Minor fixes of the docs in the commentary. From sen_ml@eccosys.com.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
93 ;; Other filters can be easily added.
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
94 ;;
56754
5ea587a67aae Update AUCTeX information.
David Kastrup <dak@gnu.org>
parents: 56647
diff changeset
95 ;; AUCTEX users: The imenu tags for AUCTEX mode doesn't work very
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
96 ;; well. Use the imenu keywords from tex-mode.el for better results.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
97 ;;
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
98 ;; This file requires the library package assoc (association lists)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
99 ;;
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
100 ;;; Developing for speedbar
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
101 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
102 ;; Adding a speedbar specialized display mode:
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
103 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
104 ;; Speedbar can be configured to create a special display for certain
40815
18a8015d9546 Minor fixes of the docs in the commentary. From sen_ml@eccosys.com.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
105 ;; modes that do not display traditional file/tag data. Rmail, Info,
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
106 ;; and the debugger are examples. These modes can, however, benefit
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
107 ;; from a speedbar style display in their own way.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
108 ;;
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
109 ;; If your `major-mode' is `foo-mode', the only requirement is to
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
110 ;; create a function called `foo-speedbar-buttons' which takes one
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
111 ;; argument, BUFFER. BUFFER will be the buffer speedbar wants filled.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
112 ;; In `foo-speedbar-buttons' there are several functions that make
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
113 ;; building a speedbar display easy. See the documentation for
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
114 ;; `speedbar-with-writable' (needed because the buffer is usually
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
115 ;; read-only) `speedbar-make-tag-line', `speedbar-insert-button', and
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
116 ;; `speedbar-insert-generic-list'. If you use
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
117 ;; `speedbar-insert-generic-list', also read the doc for
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
118 ;; `speedbar-tag-hierarchy-method' in case you wish to override it.
40815
18a8015d9546 Minor fixes of the docs in the commentary. From sen_ml@eccosys.com.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
119 ;; The macro `speedbar-with-attached-buffer' brings you back to the
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
120 ;; buffer speedbar is displaying for.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
121 ;;
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
122 ;; For those functions that make buttons, the "function" should be a
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
123 ;; symbol that is the function to call when clicked on. The "token"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
124 ;; is extra data you can pass along. The "function" must take three
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
125 ;; parameters. They are (TEXT TOKEN INDENT). TEXT is the text of the
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
126 ;; button clicked on. TOKEN is the data passed in when you create the
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
127 ;; button. INDENT is an indentation level, or 0. You can store
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
128 ;; indentation levels with `speedbar-make-tag-line' which creates a
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
129 ;; line with an expander (eg. [+]) and a text button.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
130 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
131 ;; Some useful functions when writing expand functions, and click
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
132 ;; functions are `speedbar-change-expand-button-char',
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
133 ;; `speedbar-delete-subblock', and `speedbar-center-buffer-smartly'.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
134 ;; The variable `speedbar-power-click' is set to t in your functions
40815
18a8015d9546 Minor fixes of the docs in the commentary. From sen_ml@eccosys.com.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
135 ;; when the user shift-clicks. This is an indication of anything from
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
136 ;; refreshing cached data to making a buffer appear in a new frame.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
137 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
138 ;; If you wish to add to the default speedbar menu for the case of
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
139 ;; `foo-mode', create a variable `foo-speedbar-menu-items'. This
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
140 ;; should be a list compatible with the `easymenu' package. It will
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
141 ;; be spliced into the main menu. (Available with click-mouse-3). If
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
142 ;; you wish to have extra key bindings in your special mode, create a
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
143 ;; variable `foo-speedbar-key-map'. Instead of using `make-keymap',
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
144 ;; or `make-sparse-keymap', use the function
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
145 ;; `speedbar-make-specialized-keymap'. This lets you inherit all of
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
146 ;; speedbar's default bindings with low overhead.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
147 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
148 ;; Adding a speedbar top-level display mode:
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
149 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
150 ;; Unlike the specialized modes, there are no name requirements,
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
151 ;; however the methods for writing a button display, menu, and keymap
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
152 ;; are the same. Once you create these items, you can call the
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
153 ;; function `speedbar-add-expansion-list'. It takes one parameter
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
154 ;; which is a list element of the form (NAME MENU KEYMAP &rest
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
155 ;; BUTTON-FUNCTIONS). NAME is a string that will show up in the
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
156 ;; Displays menu item. MENU is a symbol containing the menu items to
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
157 ;; splice in. KEYMAP is a symbol holding the keymap to use, and
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
158 ;; BUTTON-FUNCTIONS are the function names to call, in order, to create
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
159 ;; the display.
40815
18a8015d9546 Minor fixes of the docs in the commentary. From sen_ml@eccosys.com.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
160 ;; Another tweakable variable is `speedbar-stealthy-function-list'
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
161 ;; which is of the form (NAME &rest FUNCTION ...). NAME is the string
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
162 ;; name matching `speedbar-add-expansion-list'. (It does not need to
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
163 ;; exist.). This provides additional display info which might be
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
164 ;; time-consuming to calculate.
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
165 ;; Lastly, `speedbar-mode-functions-list' allows you to set special
40815
18a8015d9546 Minor fixes of the docs in the commentary. From sen_ml@eccosys.com.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
166 ;; function overrides. At the moment very few functions may be
18a8015d9546 Minor fixes of the docs in the commentary. From sen_ml@eccosys.com.
Eli Zaretskii <eliz@gnu.org>
parents: 38436
diff changeset
167 ;; overridden, but more will be added as the need is discovered.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
168
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
169 ;;; TODO:
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
170 ;; - More functions to create buttons and options
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
171 ;; - Timeout directories we haven't visited in a while.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
172
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
173 (require 'assoc)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
174 (require 'easymenu)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
175
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
176 (condition-case nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
177 (require 'image)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
178 (error nil))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
179
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
180 (defvar speedbar-xemacsp (string-match "XEmacs" emacs-version)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
181 "Non-nil if we are running in the XEmacs environment.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
182 (defvar speedbar-xemacs20p (and speedbar-xemacsp
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
183 (>= emacs-major-version 20)))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
184
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
185 ;; customization stuff
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
186 (defgroup speedbar nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
187 "File and tag browser frame."
48380
d2b6a3d52d08 (defgroup speedbar): Use group 'etags instead of nonexisting group
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47627
diff changeset
188 :group 'etags
21658
d8a81542dbf9 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21650
diff changeset
189 :group 'tools
22250
a77d473867b8 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21658
diff changeset
190 :group 'convenience
21658
d8a81542dbf9 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21650
diff changeset
191 :version "20.3")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
192
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
193 (defgroup speedbar-faces nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
194 "Faces used in speedbar."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
195 :prefix "speedbar-"
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
196 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
197 :group 'faces)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
198
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
199 (defgroup speedbar-vc nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
200 "Version control display in speedbar."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
201 :prefix "speedbar-"
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
202 :group 'speedbar)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
203
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
204 ;;; Code:
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
205 (defvar speedbar-initial-expansion-mode-alist
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
206 '(("buffers" speedbar-buffer-easymenu-definition speedbar-buffers-key-map
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
207 speedbar-buffer-buttons)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
208 ("quick buffers" speedbar-buffer-easymenu-definition speedbar-buffers-key-map
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
209 speedbar-buffer-buttons-temp)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
210 ;; Files last, means first in the Displays menu
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
211 ("files" speedbar-easymenu-definition-special speedbar-file-key-map
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
212 speedbar-directory-buttons speedbar-default-directory-list)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
213 )
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
214 "List of named expansion elements for filling the speedbar frame.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
215 These expansion lists are only valid for regular files. Special modes
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
216 still get to override this list on a mode-by-mode basis. This list of
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
217 lists is of the form (NAME MENU KEYMAP FN1 FN2 ...). NAME is a string
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
218 representing the types of things to be displayed. MENU is an easymenu
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
219 structure used when in this mode. KEYMAP is a local keymap to install
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
220 over the regular speedbar keymap. FN1 ... are functions that will be
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
221 called in order. These functions will always get the default
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
222 directory to use passed in as the first parameter, and a 0 as the
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
223 second parameter. The 0 indicates the uppermost indentation level.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
224 They must assume that the cursor is at the position where they start
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
225 inserting buttons.")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
226
23372
64e80b07376b (speedbar-frame-mode): Check if cfx or cfy is a list, and make sure it
Eric M. Ludlam <zappo@gnu.org>
parents: 23275
diff changeset
227 (defvar speedbar-initial-expansion-list-name "files"
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
228 "A symbol name representing the expansion list to use.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
229 The expansion list `speedbar-initial-expansion-mode-alist' contains
23372
64e80b07376b (speedbar-frame-mode): Check if cfx or cfy is a list, and make sure it
Eric M. Ludlam <zappo@gnu.org>
parents: 23275
diff changeset
230 the names and associated functions to use for buttons in speedbar.")
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
231
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
232 (defvar speedbar-previously-used-expansion-list-name "files"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
233 "Save the last expansion list method.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
234 This is used for returning to a previous expansion list method when
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
235 the user is done with the current expansion list.")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
236
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
237 (defvar speedbar-stealthy-function-list
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
238 '(("files"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
239 speedbar-update-current-file speedbar-check-vc speedbar-check-objects)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
240 )
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
241 "List of functions to periodically call stealthily.
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
242 This list is of the form:
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
243 '( (\"NAME\" FUNCTION ...)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
244 ...)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
245 where NAME is the name of the major display mode these functions are
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
246 for, and the remaining elements FUNCTION are functions to call in order.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
247 Each function must return nil if interrupted, or t if completed.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
248 Stealthy functions which have a single operation should always return
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
249 t. Functions which take a long time should maintain a state (where
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
250 they are in their speedbar related calculations) and permit
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
251 interruption. See `speedbar-check-vc' as a good example.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
252
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
253 (defvar speedbar-mode-functions-list
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
254 '(("files" (speedbar-item-info . speedbar-files-item-info)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
255 (speedbar-line-path . speedbar-files-line-path))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
256 ("buffers" (speedbar-item-info . speedbar-buffers-item-info)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
257 (speedbar-line-path . speedbar-buffers-line-path))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
258 ("quick buffers" (speedbar-item-info . speedbar-buffers-item-info)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
259 (speedbar-line-path . speedbar-buffers-line-path))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
260 )
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
261 "List of function tables to use for different major display modes.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
262 It is not necessary to define any functions for a specialized mode.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
263 This just provides a simple way of adding lots of customizations.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
264 Each sublist is of the form:
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
265 (\"NAME\" (FUNCTIONSYMBOL . REPLACEMENTFUNCTION) ...)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
266 Where NAME is the name of the specialized mode. The rest of the list
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
267 is a set of dotted pairs of the form FUNCTIONSYMBOL, which is the name
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
268 of a function you would like to replace, and REPLACEMENTFUNCTION,
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
269 which is a function you can call instead. Not all functions can be
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
270 replaced this way. Replaceable functions must provide that
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
271 functionality individually.")
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
272
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
273 (defcustom speedbar-mode-specific-contents-flag t
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
274 "*Non-nil means speedbar will show special mode contents.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
275 This permits some modes to create customized contents for the speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
276 frame."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
277 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
278 :type 'boolean)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
279
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
280 (defvar speedbar-special-mode-expansion-list nil
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
281 "Default function list for creating specialized button lists.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
282 This list is set by modes that wish to have special speedbar displays.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
283 The list is of function names. Each function is called with one
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
284 parameter BUFFER, the originating buffer. The current buffer is the
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
285 speedbar buffer.")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
286
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
287 (defvar speedbar-special-mode-key-map nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
288 "Default keymap used when identifying a specialized display mode.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
289 This keymap is local to each buffer that wants to define special keybindings
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
290 effective when its display is shown.")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
291
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
292 (defcustom speedbar-visiting-file-hook nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
293 "Hooks run when speedbar visits a file in the selected frame."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
294 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
295 :type 'hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
296
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
297 (defcustom speedbar-visiting-tag-hook '(speedbar-highlight-one-tag-line)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
298 "Hooks run when speedbar visits a tag in the selected frame."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
299 :group 'speedbar
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
300 :type 'hook
31562
a2d8210661c8 Add :version to several defcustoms.
Dave Love <fx@gnu.org>
parents: 29260
diff changeset
301 :version "21.1"
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
302 :options '(speedbar-highlight-one-tag-line
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
303 speedbar-recenter-to-top
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
304 speedbar-recenter
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
305 ))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
306
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
307 (defcustom speedbar-load-hook nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
308 "Hooks run when speedbar is loaded."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
309 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
310 :type 'hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
311
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
312 (defcustom speedbar-reconfigure-keymaps-hook nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
313 "Hooks run when the keymaps are regenerated."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
314 :group 'speedbar
31562
a2d8210661c8 Add :version to several defcustoms.
Dave Love <fx@gnu.org>
parents: 29260
diff changeset
315 :version "21.1"
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
316 :type 'hook)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
317
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
318 (defcustom speedbar-show-unknown-files nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
319 "*Non-nil show files we can't expand with a ? in the expand button.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
320 nil means don't show the file in the list."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
321 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
322 :type 'boolean)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
323
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
324 (defcustom speedbar-update-speed
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
325 (if speedbar-xemacsp
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
326 (if speedbar-xemacs20p
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
327 2 ; 1 is too obrusive in XEmacs
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
328 5) ; when no idleness, need long delay
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
329 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
330 "*Idle time in seconds needed before speedbar will update itself.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
331 Updates occur to allow speedbar to display directory information
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
332 relevant to the buffer you are currently editing."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
333 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
334 :type 'integer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
335
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
336 ;; When I moved to a repeating timer, I had the horrible missfortune
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
337 ;; of loosing the ability for adaptive speed choice. This update
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
338 ;; speed currently causes long delays when it should have been turned off.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
339 (defcustom speedbar-navigating-speed speedbar-update-speed
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
340 "*Idle time to wait after navigation commands in speedbar are executed.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
341 Navigation commands included expanding/contracting nodes, and moving
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
342 between different directories."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
343 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
344 :type 'integer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
345
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
346 (defcustom speedbar-frame-parameters '((minibuffer . nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
347 (width . 20)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
348 (border-width . 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
349 (menu-bar-lines . 0)
36047
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
350 (tool-bar-lines . 0)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
351 (unsplittable . t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
352 "*Parameters to use when creating the speedbar frame in Emacs.
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
353 Any parameter supported by a frame may be added. The parameter `height'
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
354 will be initialized to the height of the frame speedbar is
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
355 attached to and added to this list before the new frame is initialized."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
356 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
357 :type '(repeat (sexp :tag "Parameter:")))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
358
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
359 ;; These values by Hrvoje Niksic <hniksic@srce.hr>
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
360 (defcustom speedbar-frame-plist
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
361 '(minibuffer nil width 20 border-width 0
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
362 internal-border-width 0 unsplittable t
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
363 default-toolbar-visible-p nil has-modeline-p nil
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
364 menubar-visible-p nil)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
365 "*Parameters to use when creating the speedbar frame in XEmacs.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
366 Parameters not listed here which will be added automatically are
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
367 `height' which will be initialized to the height of the frame speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
368 is attached to."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
369 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
370 :type '(repeat (group :inline t
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
371 (symbol :tag "Property")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
372 (sexp :tag "Value"))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
373
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
374 (defcustom speedbar-use-imenu-flag (stringp (locate-library "imenu"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
375 "*Non-nil means use imenu for file parsing. nil to use etags.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
376 XEmacs prior to 20.4 doesn't support imenu, therefore the default is to
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
377 use etags instead. Etags support is not as robust as imenu support."
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
378 :tag "Use Imenu for tags"
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
379 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
380 :type 'boolean)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
381
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
382 (defvar speedbar-dynamic-tags-function-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
383 '((speedbar-fetch-dynamic-imenu . speedbar-insert-imenu-list)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
384 (speedbar-fetch-dynamic-etags . speedbar-insert-etags-list))
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
385 "Set to a list of functions which will return and insert a list of tags.
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
386 Each element is of the form ( FETCH . INSERT ) where FETCH
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
387 is a function which takes one parameter (the file to tag) and returns a
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
388 list of tags. The tag list can be of any form as long as the
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
389 corresponding insert method can handle it. If it returns t, then an
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
390 error occurred, and the next fetch routine is tried.
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
391 INSERT is a function which takes an INDENTation level, and a LIST of
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
392 tags to insert. It will then create the speedbar buttons.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
393
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
394 (defcustom speedbar-track-mouse-flag t
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
395 "*Non-nil means to display info about the line under the mouse."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
396 :group 'speedbar
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
397 :type 'boolean)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
398
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
399 (defcustom speedbar-sort-tags nil
44578
9c2b72b4b303 (speedbar-generic-item-info)
Pavel Janík <Pavel@Janik.cz>
parents: 44225
diff changeset
400 "*If non-nil, sort tags in the speedbar display. *Obsolete*."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
401 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
402 :type 'boolean)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
403
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
404 (defcustom speedbar-tag-hierarchy-method
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
405 '(speedbar-prefix-group-tag-hierarchy
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
406 speedbar-trim-words-tag-hierarchy)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
407 "*List of hooks which speedbar will use to organize tags into groups.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
408 Groups are defined as expandable meta-tags. Imenu supports
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
409 such things in some languages, such as separating variables from
46286
6117ca314143 (speedbar-tag-hierarchy-method): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 46282
diff changeset
410 functions. Each hook takes one argument LST, and may destructively
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
411 create a new list of the same form. LST is a list of elements of the
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
412 form:
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
413 (ELT1 ELT2 ... ELTn)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
414 where each ELT is of the form
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
415 (TAG-NAME-STRING . NUMBER-OR-MARKER)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
416 or
46286
6117ca314143 (speedbar-tag-hierarchy-method): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 46282
diff changeset
417 (GROUP-NAME-STRING ELT1 ELT2... ELTn)"
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
418 :group 'speedbar
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
419 :type 'hook
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
420 :options '(speedbar-sort-tag-hierarchy
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
421 speedbar-trim-words-tag-hierarchy
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
422 speedbar-prefix-group-tag-hierarchy
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
423 speedbar-simple-group-tag-hierarchy)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
424 )
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
425
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
426 (defcustom speedbar-tag-group-name-minimum-length 4
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
427 "*The minimum length of a prefix group name before expanding.
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
428 Thus, if the `speedbar-tag-hierarchy-method' includes `prefix-group'
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
429 and one such groups common characters is less than this number of
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
430 characters, then the group name will be changed to the form of:
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
431 worda to wordb
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
432 instead of just
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
433 word
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
434 This way we won't get silly looking listings."
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
435 :group 'speedbar
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
436 :type 'integer)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
437
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
438 (defcustom speedbar-tag-split-minimum-length 20
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
439 "*Minimum length before we stop trying to create sub-lists in tags.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
440 This is used by all tag-hierarchy methods that break large lists into
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
441 sub-lists."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
442 :group 'speedbar
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
443 :type 'integer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
444
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
445 (defcustom speedbar-tag-regroup-maximum-length 10
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
446 "*Maximum length of submenus that are regrouped.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
447 If the regrouping option is used, then if two or more short subgroups
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
448 are next to each other, then they are combined until this number of
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
449 items is reached."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
450 :group 'speedbar
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
451 :type 'integer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
452
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
453 (defcustom speedbar-activity-change-focus-flag nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
454 "*Non-nil means the selected frame will change based on activity.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
455 Thus, if a file is selected for edit, the buffer will appear in the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
456 selected frame and the focus will change to that frame."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
457 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
458 :type 'boolean)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
459
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
460 (defcustom speedbar-directory-button-trim-method 'span
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
461 "*Indicates how the directory button will be displayed.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
462 Possible values are:
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
463 'span - span large directories over multiple lines.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
464 'trim - trim large directories to only show the last few.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
465 nil - no trimming."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
466 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
467 :type '(radio (const :tag "Span large directories over mutiple lines."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
468 span)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
469 (const :tag "Trim large directories to only show the last few."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
470 trim)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
471 (const :tag "No trimming." nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
472
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
473 (defcustom speedbar-smart-directory-expand-flag t
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
474 "*Non-nil means speedbar should use smart expansion.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
475 Smart expansion only affects when speedbar wants to display a
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
476 directory for a file in the attached frame. When smart expansion is
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
477 enabled, new directories which are children of a displayed directory
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
478 are expanded in the current framework. If nil, then the current
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
479 hierarchy would be replaced with the new directory."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
480 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
481 :type 'boolean)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
482
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
483 (defcustom speedbar-indentation-width 1
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
484 "*When sub-nodes are expanded, the number of spaces used for indentation."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
485 :group 'speedbar
31562
a2d8210661c8 Add :version to several defcustoms.
Dave Love <fx@gnu.org>
parents: 29260
diff changeset
486 :version "21.1"
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
487 :type 'integer)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
488
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
489 (defcustom speedbar-hide-button-brackets-flag nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
490 "*Non-nil means speedbar will hide the brackets around the + or -."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
491 :group 'speedbar
31562
a2d8210661c8 Add :version to several defcustoms.
Dave Love <fx@gnu.org>
parents: 29260
diff changeset
492 :version "21.1"
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
493 :type 'boolean)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
494
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
495 (defcustom speedbar-use-images (and (or (fboundp 'defimage)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
496 (fboundp 'make-image-specifier))
29260
7f1b3013a136 (speedbar-use-images, speedbar-update-flag)
Eli Zaretskii <eliz@gnu.org>
parents: 29130
diff changeset
497 (if (fboundp 'display-graphic-p)
7f1b3013a136 (speedbar-use-images, speedbar-update-flag)
Eli Zaretskii <eliz@gnu.org>
parents: 29130
diff changeset
498 (display-graphic-p)
7f1b3013a136 (speedbar-use-images, speedbar-update-flag)
Eli Zaretskii <eliz@gnu.org>
parents: 29130
diff changeset
499 window-system))
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
500 "*Non-nil if speedbar should display icons."
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
501 :group 'speedbar
31562
a2d8210661c8 Add :version to several defcustoms.
Dave Love <fx@gnu.org>
parents: 29260
diff changeset
502 :version "21.1"
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
503 :type 'boolean)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
504
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
505 (defcustom speedbar-before-popup-hook nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
506 "*Hooks called before popping up the speedbar frame."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
507 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
508 :type 'hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
509
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
510 (defcustom speedbar-before-delete-hook nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
511 "*Hooks called before deleting the speedbar frame."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
512 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
513 :type 'hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
514
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
515 (defcustom speedbar-mode-hook nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
516 "*Hooks called after creating a speedbar buffer."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
517 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
518 :type 'hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
519
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
520 (defcustom speedbar-timer-hook nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
521 "*Hooks called after running the speedbar timer function."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
522 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
523 :type 'hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
524
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
525 (defcustom speedbar-verbosity-level 1
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
526 "*Verbosity level of the speedbar. 0 means say nothing.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
527 1 means medium level verbosity. 2 and higher are higher levels of
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
528 verbosity."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
529 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
530 :type 'integer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
531
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
532 (defvar speedbar-indicator-separator " "
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
533 "String separating file text from indicator characters.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
534
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
535 (defcustom speedbar-vc-do-check t
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
536 "*Non-nil check all files in speedbar to see if they have been checked out.
46286
6117ca314143 (speedbar-tag-hierarchy-method): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 46282
diff changeset
537 Any file checked out is marked with `speedbar-vc-indicator'."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
538 :group 'speedbar-vc
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
539 :type 'boolean)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
540
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
541 (defvar speedbar-vc-indicator "*"
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
542 "Text used to mark files which are currently checked out.
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
543 Other version control systems can be added by examining the function
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
544 `speedbar-vc-path-enable-hook' and `speedbar-vc-in-control-hook'.")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
545
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
546 (defcustom speedbar-vc-path-enable-hook nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
547 "*Return non-nil if the current path should be checked for Version Control.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
548 Functions in this hook must accept one parameter which is the path
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
549 being checked."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
550 :group 'speedbar-vc
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
551 :type 'hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
552
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
553 (defcustom speedbar-vc-in-control-hook nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
554 "*Return non-nil if the specified file is under Version Control.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
555 Functions in this hook must accept two parameters. The PATH of the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
556 current file, and the FILENAME of the file being checked."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
557 :group 'speedbar-vc
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
558 :type 'hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
559
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
560 (defvar speedbar-vc-to-do-point nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
561 "Local variable maintaining the current version control check position.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
562
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
563 (defcustom speedbar-obj-do-check t
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
564 "*Non-nil check all files in speedbar to see if they have an object file.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
565 Any file checked out is marked with `speedbar-obj-indicator', and the
46288
1b1c4b4ef8d4 (speedbar-obj-do-check): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 46286
diff changeset
566 marking is based on `speedbar-obj-alist'."
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
567 :group 'speedbar-vc
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
568 :type 'boolean)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
569
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
570 (defvar speedbar-obj-to-do-point nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
571 "Local variable maintaining the current version control check position.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
572
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
573 (defvar speedbar-obj-indicator '("#" . "!")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
574 "Text used to mark files that have a corresponding hidden object file.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
575 The car is for an up-to-date object. The cdr is for an out of date object.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
576 The expression `speedbar-obj-alist' defines who gets tagged.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
577
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
578 (defvar speedbar-obj-alist
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
579 '(("\\.\\([cpC]\\|cpp\\|cc\\)$" . ".o")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
580 ("\\.el$" . ".elc")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
581 ("\\.java$" . ".class")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
582 ("\\.f\\(or\\|90\\|77\\)?$" . ".o")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
583 ("\\.tex$" . ".dvi")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
584 ("\\.texi$" . ".info"))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
585 "Alist of file extensions, and their corresponding object file type.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
586
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
587 (defvar speedbar-indicator-regex
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
588 (concat (regexp-quote speedbar-indicator-separator)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
589 "\\("
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
590 (regexp-quote speedbar-vc-indicator)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
591 "\\|"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
592 (regexp-quote (car speedbar-obj-indicator))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
593 "\\|"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
594 (regexp-quote (cdr speedbar-obj-indicator))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
595 "\\)*")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
596 "Regular expression used when identifying files.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
597 Permits stripping of indicator characters from a line.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
598
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
599 (defcustom speedbar-scanner-reset-hook nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
600 "*Hook called whenever generic scanners are reset.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
601 Set this to implement your own scanning / rescan safe functions with
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
602 state data."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
603 :group 'speedbar
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
604 :type 'hook)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
605
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
606 (defvar speedbar-ignored-modes nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
607 "*List of major modes which speedbar will not switch directories for.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
608
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
609 (defun speedbar-extension-list-to-regex (extlist)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
610 "Takes EXTLIST, a list of extensions and transforms it into regexp.
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
611 All the preceding `.' are stripped for an optimized expression starting
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
612 with `.' followed by extensions, followed by full-filenames."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
613 (let ((regex1 nil) (regex2 nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
614 (while extlist
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
615 (if (= (string-to-char (car extlist)) ?.)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
616 (setq regex1 (concat regex1 (if regex1 "\\|" "")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
617 (substring (car extlist) 1)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
618 (setq regex2 (concat regex2 (if regex2 "\\|" "") (car extlist))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
619 (setq extlist (cdr extlist)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
620 ;; concat all the sub-exressions together, making sure all types
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
621 ;; of parts exist during concatination.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
622 (concat "\\("
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
623 (if regex1 (concat "\\(\\.\\(" regex1 "\\)\\)") "")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
624 (if (and regex1 regex2) "\\|" "")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
625 (if regex2 (concat "\\(" regex2 "\\)") "")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
626 "\\)$")))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
627
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
628 (defvar speedbar-ignored-path-regexp nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
629 "Regular expression matching paths speedbar will not switch to.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
630 Created from `speedbar-ignored-path-expressions' with the function
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
631 `speedbar-extension-list-to-regex' (A misnamed function in this case.)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
632 Use the function `speedbar-add-ignored-path-regexp', or customize the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
633 variable `speedbar-ignored-path-expressions' to modify this variable.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
634
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
635 (defcustom speedbar-ignored-path-expressions
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
636 '("[/\\]logs?[/\\]\\'")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
637 "*List of regular expressions matching directories speedbar will ignore.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
638 They should included paths to directories which are notoriously very
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
639 large and take a long time to load in. Use the function
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
640 `speedbar-add-ignored-path-regexp' to add new items to this list after
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
641 speedbar is loaded. You may place anything you like in this list
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
642 before speedbar has been loaded."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
643 :group 'speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
644 :type '(repeat (regexp :tag "Path Regexp"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
645 :set (lambda (sym val)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
646 (setq speedbar-ignored-path-expressions val
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
647 speedbar-ignored-path-regexp
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
648 (speedbar-extension-list-to-regex val))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
649
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
650 (defcustom speedbar-directory-unshown-regexp "^\\(CVS\\|RCS\\|SCCS\\)\\'"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
651 "*Regular expression matching directories not to show in speedbar.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
652 They should include commonly existing directories which are not
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
653 useful, such as version control."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
654 :group 'speedbar
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
655 :type 'string)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
656
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
657 (defvar speedbar-file-unshown-regexp
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
658 (let ((nstr "") (noext completion-ignored-extensions))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
659 (while noext
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
660 (setq nstr (concat nstr (regexp-quote (car noext)) "\\'"
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
661 (if (cdr noext) "\\|" ""))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
662 noext (cdr noext)))
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
663 ;; backup refdir lockfile
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
664 (concat nstr "\\|#[^#]+#$\\|\\.\\.?\\'\\|\\.#"))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
665 "*Regexp matching files we don't want displayed in a speedbar buffer.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
666 It is generated from the variable `completion-ignored-extensions'")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
667
56776
c36d40df2cc6 Minor comment change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56772
diff changeset
668 ;; Compiler silencing trick. The real defvar comes later in this file.
56772
87ac4f004dc4 (speedbar-file-regexp): Give it a phony defvar before and a real
Luc Teirlinck <teirllm@auburn.edu>
parents: 56762
diff changeset
669 (defvar speedbar-file-regexp)
56762
85c0c238dbbf (speedbar-file-regexp): Definition moved up.
Richard M. Stallman <rms@gnu.org>
parents: 56754
diff changeset
670
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
671 ;; this is dangerous to customize, because the defaults will probably
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
672 ;; change in the future.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
673 (defcustom speedbar-supported-extension-expressions
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
674 (append '(".[ch]\\(\\+\\+\\|pp\\|c\\|h\\|xx\\)?" ".tex\\(i\\(nfo\\)?\\)?"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
675 ".el" ".emacs" ".l" ".lsp" ".p" ".java" ".f\\(90\\|77\\|or\\)?")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
676 (if speedbar-use-imenu-flag
38377
308a2e8895e3 (speedbar-supported-extension-expressions): Add .g to the extension list,
Eli Zaretskii <eliz@gnu.org>
parents: 37891
diff changeset
677 '(".ada" ".p[lm]" ".tcl" ".m" ".scm" ".pm" ".py" ".g"
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
678 ;; html is not supported by default, but an imenu tags package
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
679 ;; is available. Also, html files are nice to be able to see.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
680 ".s?html"
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
681 "[Mm]akefile\\(\\.in\\)?")))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
682 "*List of regular expressions which will match files supported by tagging.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
683 Do not prefix the `.' char with a double \\ to quote it, as the period
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
684 will be stripped by a simplified optimizer when compiled into a
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
685 singular expression. This variable will be turned into
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
686 `speedbar-file-regexp' for use with speedbar. You should use the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
687 function `speedbar-add-supported-extension' to add a new extension at
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
688 runtime, or use the configuration dialog to set it in your .emacs
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
689 file."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
690 :group 'speedbar
31562
a2d8210661c8 Add :version to several defcustoms.
Dave Love <fx@gnu.org>
parents: 29260
diff changeset
691 :version "21.1"
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
692 :type '(repeat (regexp :tag "Extension Regexp"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
693 :set (lambda (sym val)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
694 (setq speedbar-supported-extension-expressions val
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
695 speedbar-file-regexp (speedbar-extension-list-to-regex val))))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
696
56772
87ac4f004dc4 (speedbar-file-regexp): Give it a phony defvar before and a real
Luc Teirlinck <teirllm@auburn.edu>
parents: 56762
diff changeset
697 (defvar speedbar-file-regexp
87ac4f004dc4 (speedbar-file-regexp): Give it a phony defvar before and a real
Luc Teirlinck <teirllm@auburn.edu>
parents: 56762
diff changeset
698 (speedbar-extension-list-to-regex speedbar-supported-extension-expressions)
87ac4f004dc4 (speedbar-file-regexp): Give it a phony defvar before and a real
Luc Teirlinck <teirllm@auburn.edu>
parents: 56762
diff changeset
699 "Regular expression matching files we know how to expand.
87ac4f004dc4 (speedbar-file-regexp): Give it a phony defvar before and a real
Luc Teirlinck <teirllm@auburn.edu>
parents: 56762
diff changeset
700 Created from `speedbar-supported-extension-expression' with the
87ac4f004dc4 (speedbar-file-regexp): Give it a phony defvar before and a real
Luc Teirlinck <teirllm@auburn.edu>
parents: 56762
diff changeset
701 function `speedbar-extension-list-to-regex'")
87ac4f004dc4 (speedbar-file-regexp): Give it a phony defvar before and a real
Luc Teirlinck <teirllm@auburn.edu>
parents: 56762
diff changeset
702
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
703 (defcustom speedbar-scan-subdirs nil
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
704 "*Non-nil means speedbar will check if subdirs are empty.
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
705 That way you don't have to click on them to find out. But this
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
706 incurs extra I/O, hence it slows down directory display
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
707 proportionally to the number of subdirs."
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
708 :group 'speedbar
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
709 :type 'boolean
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
710 :version 21.4)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
711
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
712 (defun speedbar-add-supported-extension (extension)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
713 "Add EXTENSION as a new supported extension for speedbar tagging.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
714 This should start with a `.' if it is not a complete file name, and
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
715 the dot should NOT be quoted in with \\. Other regular expression
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
716 matchers are allowed however. EXTENSION may be a single string or a
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
717 list of strings."
44578
9c2b72b4b303 (speedbar-generic-item-info)
Pavel Janík <Pavel@Janik.cz>
parents: 44225
diff changeset
718 (interactive "sExtension: ")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
719 (if (not (listp extension)) (setq extension (list extension)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
720 (while extension
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
721 (if (member (car extension) speedbar-supported-extension-expressions)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
722 nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
723 (setq speedbar-supported-extension-expressions
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
724 (cons (car extension) speedbar-supported-extension-expressions)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
725 (setq extension (cdr extension)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
726 (setq speedbar-file-regexp (speedbar-extension-list-to-regex
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
727 speedbar-supported-extension-expressions)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
728
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
729 (defun speedbar-add-ignored-path-regexp (path-expression)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
730 "Add PATH-EXPRESSION as a new ignored path for speedbar tracking.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
731 This function will modify `speedbar-ignored-path-regexp' and add
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
732 PATH-EXPRESSION to `speedbar-ignored-path-expressions'."
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
733 (interactive "sPath regex: ")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
734 (if (not (listp path-expression))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
735 (setq path-expression (list path-expression)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
736 (while path-expression
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
737 (if (member (car path-expression) speedbar-ignored-path-expressions)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
738 nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
739 (setq speedbar-ignored-path-expressions
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
740 (cons (car path-expression) speedbar-ignored-path-expressions)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
741 (setq path-expression (cdr path-expression)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
742 (setq speedbar-ignored-path-regexp (speedbar-extension-list-to-regex
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
743 speedbar-ignored-path-expressions)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
744
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
745 ;; If we don't have custom, then we set it here by hand.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
746 (if (not (fboundp 'custom-declare-variable))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
747 (setq speedbar-file-regexp (speedbar-extension-list-to-regex
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
748 speedbar-supported-extension-expressions)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
749 speedbar-ignored-path-regexp (speedbar-extension-list-to-regex
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
750 speedbar-ignored-path-expressions)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
751
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
752 (defvar speedbar-update-flag (and
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
753 (or (fboundp 'run-with-idle-timer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
754 (fboundp 'start-itimer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
755 (boundp 'post-command-idle-hook))
29260
7f1b3013a136 (speedbar-use-images, speedbar-update-flag)
Eli Zaretskii <eliz@gnu.org>
parents: 29130
diff changeset
756 (if (fboundp 'display-graphic-p)
7f1b3013a136 (speedbar-use-images, speedbar-update-flag)
Eli Zaretskii <eliz@gnu.org>
parents: 29130
diff changeset
757 (display-graphic-p)
7f1b3013a136 (speedbar-use-images, speedbar-update-flag)
Eli Zaretskii <eliz@gnu.org>
parents: 29130
diff changeset
758 window-system))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
759 "*Non-nil means to automatically update the display.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
760 When this is nil then speedbar will not follow the attached frame's path.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
761 When speedbar is active, use:
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
762
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
763 \\<speedbar-key-map> `\\[speedbar-toggle-updates]'
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
764
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
765 to toggle this value.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
766
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
767 (defvar speedbar-syntax-table nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
768 "Syntax-table used on the speedbar.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
769
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
770 (if speedbar-syntax-table
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
771 nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
772 (setq speedbar-syntax-table (make-syntax-table))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
773 ;; turn off paren matching around here.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
774 (modify-syntax-entry ?\' " " speedbar-syntax-table)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
775 (modify-syntax-entry ?\" " " speedbar-syntax-table)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
776 (modify-syntax-entry ?( " " speedbar-syntax-table)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
777 (modify-syntax-entry ?) " " speedbar-syntax-table)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
778 (modify-syntax-entry ?{ " " speedbar-syntax-table)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
779 (modify-syntax-entry ?} " " speedbar-syntax-table)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
780 (modify-syntax-entry ?[ " " speedbar-syntax-table)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
781 (modify-syntax-entry ?] " " speedbar-syntax-table))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
782
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
783 (defvar speedbar-key-map nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
784 "Keymap used in speedbar buffer.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
785
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
786 (if speedbar-key-map
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
787 nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
788 (setq speedbar-key-map (make-keymap))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
789 (suppress-keymap speedbar-key-map t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
790
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
791 ;; control
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
792 (define-key speedbar-key-map "g" 'speedbar-refresh)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
793 (define-key speedbar-key-map "t" 'speedbar-toggle-updates)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
794 (define-key speedbar-key-map "q" 'speedbar-close-frame)
23080
8b7bb810f362 *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 23073
diff changeset
795 (define-key speedbar-key-map "Q" 'delete-frame)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
796
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
797 ;; navigation
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
798 (define-key speedbar-key-map "n" 'speedbar-next)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
799 (define-key speedbar-key-map "p" 'speedbar-prev)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
800 (define-key speedbar-key-map "\M-n" 'speedbar-restricted-next)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
801 (define-key speedbar-key-map "\M-p" 'speedbar-restricted-prev)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
802 (define-key speedbar-key-map "\C-\M-n" 'speedbar-forward-list)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
803 (define-key speedbar-key-map "\C-\M-p" 'speedbar-backward-list)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
804 (define-key speedbar-key-map " " 'speedbar-scroll-up)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
805 (define-key speedbar-key-map [delete] 'speedbar-scroll-down)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
806
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
807 ;; Short cuts I happen to find useful
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
808 (define-key speedbar-key-map "r"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
809 (lambda () (interactive)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
810 (speedbar-change-initial-expansion-list
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
811 speedbar-previously-used-expansion-list-name)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
812 (define-key speedbar-key-map "b"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
813 (lambda () (interactive)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
814 (speedbar-change-initial-expansion-list "quick buffers")))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
815 (define-key speedbar-key-map "f"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
816 (lambda () (interactive)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
817 (speedbar-change-initial-expansion-list "files")))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
818
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
819 ;; Overrides
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
820 (substitute-key-definition 'switch-to-buffer
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
821 'speedbar-switch-buffer-attached-frame
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
822 speedbar-key-map global-map)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
823
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
824 (if speedbar-xemacsp
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
825 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
826 ;; mouse bindings so we can manipulate the items on each line
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
827 (define-key speedbar-key-map 'button2 'speedbar-click)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
828 (define-key speedbar-key-map '(shift button2) 'speedbar-power-click)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
829 ;; Info doc fix from Bob Weiner
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
830 (if (featurep 'infodoc)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
831 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
832 (define-key speedbar-key-map 'button3 'speedbar-xemacs-popup-kludge))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
833 (define-key speedbar-key-map '(meta button3) 'speedbar-mouse-item-info)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
834 )
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
835
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
836 ;; mouse bindings so we can manipulate the items on each line
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
837 (define-key speedbar-key-map [down-mouse-1] 'speedbar-double-click)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
838 (define-key speedbar-key-map [mouse-2] 'speedbar-click)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
839 ;; This is the power click for new frames, or refreshing a cache
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
840 (define-key speedbar-key-map [S-mouse-2] 'speedbar-power-click)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
841 ;; This adds a small unecessary visual effect
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
842 ;;(define-key speedbar-key-map [down-mouse-2] 'speedbar-quick-mouse)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
843 (define-key speedbar-key-map [M-mouse-2] 'speedbar-mouse-item-info)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
844
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
845 (define-key speedbar-key-map [down-mouse-3] 'speedbar-emacs-popup-kludge)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
846
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
847 ;; This lets the user scroll as if we had a scrollbar... well maybe not
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
848 (define-key speedbar-key-map [mode-line mouse-2] 'speedbar-mouse-hscroll)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
849 ;; another handy place users might click to get our menu.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
850 (define-key speedbar-key-map [mode-line down-mouse-1]
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
851 'speedbar-emacs-popup-kludge)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
852
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
853 ;; We can't switch buffers with the buffer mouse menu. Lets hack it.
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
854 (define-key speedbar-key-map [C-down-mouse-1] 'speedbar-hack-buffer-menu)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
855
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
856 ;; Lastly, we want to track the mouse. Play here
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
857 (define-key speedbar-key-map [mouse-movement] 'speedbar-track-mouse)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
858 ))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
859
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
860 (defun speedbar-make-specialized-keymap ()
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
861 "Create a keymap for use with a speedbar major or minor display mode.
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
862 This basically creates a sparse keymap, and makes it's parent be
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
863 `speedbar-key-map'."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
864 (let ((k (make-sparse-keymap)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
865 (set-keymap-parent k speedbar-key-map)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
866 k))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
867
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
868 (defvar speedbar-file-key-map nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
869 "Keymap used in speedbar buffer while files are displayed.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
870
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
871 (if speedbar-file-key-map
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
872 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
873 (setq speedbar-file-key-map (speedbar-make-specialized-keymap))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
874
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
875 ;; Basic tree features
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
876 (define-key speedbar-file-key-map "e" 'speedbar-edit-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
877 (define-key speedbar-file-key-map "\C-m" 'speedbar-edit-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
878 (define-key speedbar-file-key-map "+" 'speedbar-expand-line)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
879 (define-key speedbar-file-key-map "=" 'speedbar-expand-line)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
880 (define-key speedbar-file-key-map "-" 'speedbar-contract-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
881
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
882 ;; file based commands
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
883 (define-key speedbar-file-key-map "U" 'speedbar-up-directory)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
884 (define-key speedbar-file-key-map "I" 'speedbar-item-info)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
885 (define-key speedbar-file-key-map "B" 'speedbar-item-byte-compile)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
886 (define-key speedbar-file-key-map "L" 'speedbar-item-load)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
887 (define-key speedbar-file-key-map "C" 'speedbar-item-copy)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
888 (define-key speedbar-file-key-map "D" 'speedbar-item-delete)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
889 (define-key speedbar-file-key-map "O" 'speedbar-item-object-delete)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
890 (define-key speedbar-file-key-map "R" 'speedbar-item-rename)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
891 )
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
892
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
893 (defvar speedbar-easymenu-definition-base
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
894 (append
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
895 '("Speedbar"
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
896 ["Update" speedbar-refresh t]
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
897 ["Auto Update" speedbar-toggle-updates
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
898 :style toggle :selected speedbar-update-flag])
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
899 (if (and (or (fboundp 'defimage)
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
900 (fboundp 'make-image-specifier))
29260
7f1b3013a136 (speedbar-use-images, speedbar-update-flag)
Eli Zaretskii <eliz@gnu.org>
parents: 29130
diff changeset
901 (if (fboundp 'display-graphic-p)
7f1b3013a136 (speedbar-use-images, speedbar-update-flag)
Eli Zaretskii <eliz@gnu.org>
parents: 29130
diff changeset
902 (display-graphic-p)
7f1b3013a136 (speedbar-use-images, speedbar-update-flag)
Eli Zaretskii <eliz@gnu.org>
parents: 29130
diff changeset
903 window-system))
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
904 (list
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
905 ["Use Images" speedbar-toggle-images
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
906 :style toggle :selected speedbar-use-images]))
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
907 )
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
908 "Base part of the speedbar menu.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
909
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
910 (defvar speedbar-easymenu-definition-special
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
911 '(["Edit Item On Line" speedbar-edit-line t]
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
912 ["Show All Files" speedbar-toggle-show-all-files
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
913 :style toggle :selected speedbar-show-unknown-files]
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
914 ["Expand File Tags" speedbar-expand-line
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
915 (save-excursion (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
916 (looking-at "[0-9]+: *.\\+. "))]
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
917 ["Flush Cache & Expand" speedbar-flush-expand-line
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
918 (save-excursion (beginning-of-line)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
919 (looking-at "[0-9]+: *.\\+. "))]
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
920 ["Contract File Tags" speedbar-contract-line
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
921 (save-excursion (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
922 (looking-at "[0-9]+: *.-. "))]
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
923 ; ["Sort Tags" speedbar-toggle-sorting
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
924 ; :style toggle :selected speedbar-sort-tags]
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
925 "----"
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
926 ["File/Tag Information" speedbar-item-info t]
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
927 ["Load Lisp File" speedbar-item-load
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
928 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
929 (beginning-of-line)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
930 (looking-at "[0-9]+: *\\[[+-]\\] .+\\(\\.el\\)\\( \\|$\\)"))]
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
931 ["Byte Compile File" speedbar-item-byte-compile
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
932 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
933 (beginning-of-line)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
934 (looking-at "[0-9]+: *\\[[+-]\\] .+\\(\\.el\\)\\( \\|$\\)"))]
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
935 ["Copy File" speedbar-item-copy
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
936 (save-excursion (beginning-of-line) (looking-at "[0-9]+: *\\["))]
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
937 ["Rename File" speedbar-item-rename
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
938 (save-excursion (beginning-of-line) (looking-at "[0-9]+: *[[<]"))]
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
939 ["Delete File" speedbar-item-delete
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
940 (save-excursion (beginning-of-line) (looking-at "[0-9]+: *[[<]"))]
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
941 ["Delete Object" speedbar-item-object-delete
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
942 (save-excursion (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
943 (looking-at "[0-9]+: *\\[[+-]\\] [^ \n]+ \\*?[!#]$"))]
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
944 )
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
945 "Additional menu items while in file-mode.")
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48716
diff changeset
946
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
947 (defvar speedbar-easymenu-definition-trailer
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
948 (append
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
949 (if (and (featurep 'custom) (fboundp 'custom-declare-variable))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
950 (list ["Customize..." speedbar-customize t]))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
951 (list
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
952 ["Close" speedbar-close-frame t]
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
953 ["Quit" delete-frame t] ))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
954 "Menu items appearing at the end of the speedbar menu.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
955
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
956 (defvar speedbar-desired-buffer nil
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
957 "Non-nil when speedbar is showing buttons specific to a special mode.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
958 In this case it is the originating buffer.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
959 (defvar speedbar-buffer nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
960 "The buffer displaying the speedbar.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
961 (defvar speedbar-frame nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
962 "The frame displaying speedbar.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
963 (defvar speedbar-cached-frame nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
964 "The frame that was last created, then removed from the display.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
965 (defvar speedbar-full-text-cache nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
966 "The last open directory is saved in its entirety for ultra-fast switching.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
967 (defvar speedbar-timer nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
968 "The speedbar timer used for updating the buffer.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
969 (defvar speedbar-attached-frame nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
970 "The frame which started speedbar mode.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
971 This is the frame from which all data displayed in the speedbar is
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
972 gathered, and in which files and such are displayed.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
973
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
974 (defvar speedbar-last-selected-file nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
975 "The last file which was selected in speedbar buffer.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
976
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
977 (defvar speedbar-shown-directories nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
978 "Maintain list of directories simultaneously open in the current speedbar.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
979
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
980 (defvar speedbar-directory-contents-alist nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
981 "An association list of directories and their contents.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
982 Each sublist was returned by `speedbar-file-lists'. This list is
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
983 maintained to speed up the refresh rate when switching between
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
984 directories.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
985
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
986 (defvar speedbar-power-click nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
987 "Never set this by hand. Value is t when S-mouse activity occurs.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
988
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
989
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
990 ;;; Compatibility
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
991 ;;
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
992 (if (fboundp 'frame-parameter)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
993
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
994 (defalias 'speedbar-frame-parameter 'frame-parameter)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48716
diff changeset
995
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
996 (defun speedbar-frame-parameter (frame parameter)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
997 "Return FRAME's PARAMETER value."
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
998 (cdr (assoc parameter (frame-parameters frame)))))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
999
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1000 (if (fboundp 'make-overlay)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1001 (progn
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1002 (defalias 'speedbar-make-overlay 'make-overlay)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1003 (defalias 'speedbar-overlay-put 'overlay-put)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1004 (defalias 'speedbar-delete-overlay 'delete-overlay)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1005 (defalias 'speedbar-overlay-start 'overlay-start)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1006 (defalias 'speedbar-overlay-end 'overlay-end)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1007 (defalias 'speedbar-mode-line-update 'force-mode-line-update))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1008 (defalias 'speedbar-make-overlay 'make-extent)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1009 (defalias 'speedbar-overlay-put 'set-extent-property)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1010 (defalias 'speedbar-delete-overlay 'delete-extent)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1011 (defalias 'speedbar-overlay-start 'extent-start)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1012 (defalias 'speedbar-overlay-end 'extent-end)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1013 (defalias 'speedbar-mode-line-update 'redraw-modeline))
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1014
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1015 ;;; Mode definitions/ user commands
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1016 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1017
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1018 ;;;###autoload
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1019 (defalias 'speedbar 'speedbar-frame-mode)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1020 ;;;###autoload
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1021 (defun speedbar-frame-mode (&optional arg)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1022 "Enable or disable speedbar. Positive ARG means turn on, negative turn off.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1023 nil means toggle. Once the speedbar frame is activated, a buffer in
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1024 `speedbar-mode' will be displayed. Currently, only one speedbar is
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1025 supported at a time.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1026 `speedbar-before-popup-hook' is called before popping up the speedbar frame.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1027 `speedbar-before-delete-hook' is called before the frame is deleted."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1028 (interactive "P")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1029 ;; toggle frame on and off.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1030 (if (not arg) (if (and (frame-live-p speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1031 (frame-visible-p speedbar-frame))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1032 (setq arg -1) (setq arg 1)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1033 ;; turn the frame off on neg number
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1034 (if (and (numberp arg) (< arg 0))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1035 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1036 (run-hooks 'speedbar-before-delete-hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1037 (if (and speedbar-frame (frame-live-p speedbar-frame))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1038 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1039 (setq speedbar-cached-frame speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1040 (make-frame-invisible speedbar-frame)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1041 (setq speedbar-frame nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1042 (speedbar-set-timer nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1043 ;; Used to delete the buffer. This has the annoying affect of
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1044 ;; preventing whatever took its place from ever appearing
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1045 ;; as the default after a C-x b was typed
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1046 ;;(if (bufferp speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1047 ;; (kill-buffer speedbar-buffer))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1048 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1049 ;; Set this as our currently attached frame
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1050 (setq speedbar-attached-frame (selected-frame))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1051 (run-hooks 'speedbar-before-popup-hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1052 ;; Get the frame to work in
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1053 (if (frame-live-p speedbar-cached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1054 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1055 (setq speedbar-frame speedbar-cached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1056 (make-frame-visible speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1057 ;; Get the buffer to play with
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1058 (speedbar-mode)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1059 (select-frame speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1060 (if (not (eq (current-buffer) speedbar-buffer))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1061 (switch-to-buffer speedbar-buffer))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1062 (set-window-dedicated-p (selected-window) t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1063 (raise-frame speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1064 (speedbar-set-timer speedbar-update-speed)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1065 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1066 (if (frame-live-p speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1067 (raise-frame speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1068 (setq speedbar-frame
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1069 (if speedbar-xemacsp
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1070 ;; Only guess height if it is not specified.
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1071 (if (member 'height speedbar-frame-plist)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1072 (make-frame speedbar-frame-plist)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1073 (make-frame (nconc (list 'height
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1074 (speedbar-needed-height))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1075 speedbar-frame-plist)))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1076 (let* ((mh (speedbar-frame-parameter nil 'menu-bar-lines))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1077 (cfx (speedbar-frame-parameter nil 'left))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1078 (cfy (speedbar-frame-parameter nil 'top))
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1079 (cfw (frame-pixel-width))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1080 (params
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1081 ;; Only add a guessed height if one is not specified
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1082 ;; in the input parameters.
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1083 (if (assoc 'height speedbar-frame-parameters)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1084 speedbar-frame-parameters
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1085 (append
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1086 speedbar-frame-parameters
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1087 (list (cons 'height (+ mh (frame-height)))))))
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1088 (frame
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1089 (if (or (< emacs-major-version 20)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1090 (not (eq window-system 'x)))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1091 (make-frame params)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1092 (let ((x-pointer-shape x-pointer-top-left-arrow)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1093 (x-sensitive-text-pointer-shape
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1094 x-pointer-hand2))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
1095 (make-frame params)))))
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1096 ;; Position speedbar frame.
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1097 (if (or (not window-system) (eq window-system 'pc)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1098 (assoc 'left speedbar-frame-parameters)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1099 (assoc 'top speedbar-frame-parameters))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1100 ;; Do no positioning if not on a windowing system,
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1101 ;; or if left/top were specified in the parameters.
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1102 frame
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1103 (let ((cfx
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1104 (if (not (consp cfx))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1105 cfx
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1106 ;; If cfx is a list, that means we grow
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1107 ;; from a specific edge of the display.
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1108 ;; Convert that to the distance from the
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1109 ;; left side of the display.
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1110 (if (eq (car cfx) '-)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1111 ;; A - means distance from the right edge
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1112 ;; of the display, or DW - cfx - framewidth
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1113 (- (x-display-pixel-width) (car (cdr cfx))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1114 (frame-pixel-width))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1115 (car (cdr cfx))))))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1116 (modify-frame-parameters
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1117 frame
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1118 (list
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1119 (cons
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1120 'left
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1121 ;; Decide which side to put it
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1122 ;; on. 200 is just a buffer
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1123 ;; for the left edge of the
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1124 ;; screen. The extra 10 is just
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1125 ;; dressings for window decorations.
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1126 (let ((sfw (frame-pixel-width frame)))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1127 (let ((left-guess (- cfx 10 sfw))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1128 (right-guess (+ cfx cfw 5)))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1129 (let ((left-margin left-guess)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1130 (right-margin
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1131 (- (x-display-pixel-width)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1132 right-guess 5 sfw)))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1133 (cond ((>= left-margin 0) left-guess)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1134 ((>= right-margin 0) right-guess)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1135 ;; otherwise choose side we overlap less
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1136 ((> left-margin right-margin) 0)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1137 (t (- (x-display-pixel-width) sfw 5)))))))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1138 (cons 'top cfy)))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
1139 frame)))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1140 ;; reset the selection variable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1141 (setq speedbar-last-selected-file nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1142 ;; Put the buffer into the frame
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1143 (save-window-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1144 ;; Get the buffer to play with
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1145 (speedbar-mode)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1146 (select-frame speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1147 (switch-to-buffer speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1148 (set-window-dedicated-p (selected-window) t))
23372
64e80b07376b (speedbar-frame-mode): Check if cfx or cfy is a list, and make sure it
Eric M. Ludlam <zappo@gnu.org>
parents: 23275
diff changeset
1149 (if (and (or (null window-system) (eq window-system 'pc))
64e80b07376b (speedbar-frame-mode): Check if cfx or cfy is a list, and make sure it
Eric M. Ludlam <zappo@gnu.org>
parents: 23275
diff changeset
1150 (fboundp 'set-frame-name))
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1151 (progn
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1152 (select-frame speedbar-frame)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1153 (set-frame-name "Speedbar")))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1154 (speedbar-set-timer speedbar-update-speed)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1155
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1156 ;;;###autoload
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1157 (defun speedbar-get-focus ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1158 "Change frame focus to or from the speedbar frame.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1159 If the selected frame is not speedbar, then speedbar frame is
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1160 selected. If the speedbar frame is active, then select the attached frame."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1161 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1162 (if (eq (selected-frame) speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1163 (if (frame-live-p speedbar-attached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1164 (select-frame speedbar-attached-frame))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1165 ;; If updates are off, then refresh the frame (they want it now...)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1166 (if (not speedbar-update-flag)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1167 (let ((speedbar-update-flag t))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1168 (speedbar-timer-fn)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1169 ;; make sure we have a frame
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1170 (if (not (frame-live-p speedbar-frame)) (speedbar-frame-mode 1))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1171 ;; go there
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1172 (select-frame speedbar-frame)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1173 )
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1174 (other-frame 0))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1175
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1176 (defun speedbar-close-frame ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1177 "Turn off a currently active speedbar."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1178 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1179 (speedbar-frame-mode -1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1180 (select-frame speedbar-attached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1181 (other-frame 0))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1182
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1183 (defun speedbar-switch-buffer-attached-frame (&optional buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1184 "Switch to BUFFER in speedbar's attached frame, and raise that frame.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1185 This overrides the default behavior of `switch-to-buffer' which is
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1186 broken because of the dedicated speedbar frame."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1187 (interactive)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1188 ;; Assume we are in the speedbar frame.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1189 (speedbar-get-focus)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1190 ;; Now switch buffers
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1191 (if buffer
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1192 (switch-to-buffer buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1193 (call-interactively 'switch-to-buffer nil nil)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1194
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1195 (defmacro speedbar-frame-width ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1196 "Return the width of the speedbar frame in characters.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1197 nil if it doesn't exist."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1198 '(frame-width speedbar-frame))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1199
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1200 ;; XEmacs function only.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1201 (defun speedbar-needed-height (&optional frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1202 "The needed height for the tool bar FRAME (in characters)."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1203 (or frame (setq frame (selected-frame)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1204 ;; The 1 is the missing modeline/minibuffer
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1205 (+ 1 (/ (frame-pixel-height frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1206 (face-height 'default frame))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1207
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1208 (defun speedbar-mode ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1209 "Major mode for managing a display of directories and tags.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1210 \\<speedbar-key-map>
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1211 The first line represents the default path of the speedbar frame.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1212 Each directory segment is a button which jumps speedbar's default
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1213 directory to that path. Buttons are activated by clicking `\\[speedbar-click]'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1214 In some situations using `\\[speedbar-power-click]' is a `power click' which will
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1215 rescan cached items, or pop up new frames.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1216
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1217 Each line starting with <+> represents a directory. Click on the <+>
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1218 to insert the directory listing into the current tree. Click on the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1219 <-> to retract that list. Click on the directory name to go to that
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1220 directory as the default.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1221
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1222 Each line starting with [+] is a file. If the variable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1223 `speedbar-show-unknown-files' is t, the lines starting with [?] are
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1224 files which don't have imenu support, but are not expressly ignored.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1225 Files are completely ignored if they match `speedbar-file-unshown-regexp'
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1226 which is generated from `completion-ignored-extensions'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1227
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1228 Files with a `*' character after their name are files checked out of a
47286
4f937ab8ad22 (speedbar-mode): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 47267
diff changeset
1229 version control system. (Currently only RCS is supported.) New
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1230 version control systems can be added by examining the documentation
47286
4f937ab8ad22 (speedbar-mode): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 47267
diff changeset
1231 for `speedbar-this-file-in-vc' and `speedbar-vc-check-dir-p'.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1232
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1233 Files with a `#' or `!' character after them are source files that
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1234 have an object file associated with them. The `!' indicates that the
47267
8b5ff870e329 (speedbar-mode): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents: 46288
diff changeset
1235 files is out of date. You can control what source/object associations
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1236 exist through the variable `speedbar-obj-alist'.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1237
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1238 Click on the [+] to display a list of tags from that file. Click on
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1239 the [-] to retract the list. Click on the file name to edit the file
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1240 in the attached frame.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1241
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1242 If you open tags, you might find a node starting with {+}, which is a
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1243 category of tags. Click the {+} to expand the category. Jump-able
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1244 tags start with >. Click the name of the tag to go to that position
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1245 in the selected file.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1246
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1247 \\{speedbar-key-map}"
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1248 ;; NOT interactive
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1249 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1250 (setq speedbar-buffer (set-buffer (get-buffer-create " SPEEDBAR")))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1251 (kill-all-local-variables)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1252 (setq major-mode 'speedbar-mode)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1253 (setq mode-name "Speedbar")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1254 (set-syntax-table speedbar-syntax-table)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1255 (setq font-lock-keywords nil) ;; no font-locking please
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1256 (setq truncate-lines t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1257 (make-local-variable 'frame-title-format)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1258 (setq frame-title-format "Speedbar")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1259 ;; Set this up special just for the speedbar buffer
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1260 ;; Terminal minibuffer stuff does not require this.
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1261 (if (and window-system (not (eq window-system 'pc))
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1262 (null default-minibuffer-frame))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1263 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1264 (make-local-variable 'default-minibuffer-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1265 (setq default-minibuffer-frame speedbar-attached-frame)))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1266 ;; Correct use of `temp-buffer-show-function': Bob Weiner
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1267 (if (and (boundp 'temp-buffer-show-hook)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1268 (boundp 'temp-buffer-show-function))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1269 (progn (make-local-variable 'temp-buffer-show-hook)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1270 (setq temp-buffer-show-hook temp-buffer-show-function)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1271 (make-local-variable 'temp-buffer-show-function)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1272 (setq temp-buffer-show-function 'speedbar-temp-buffer-show-function)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1273 (if speedbar-xemacsp
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1274 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1275 ;; Argh! mouse-track-click-hook doesn't understand the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1276 ;; make-local-hook conventions.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1277 (make-local-variable 'mouse-track-click-hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1278 (add-hook 'mouse-track-click-hook
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1279 (lambda (event count)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1280 (if (/= (event-button event) 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1281 nil ; Do normal operations.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1282 (cond ((eq count 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1283 (speedbar-quick-mouse event))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1284 ((or (eq count 2)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1285 (eq count 3))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1286 (speedbar-mouse-set-point event)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1287 (speedbar-do-function-pointer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1288 (speedbar-quick-mouse event)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1289 ;; Don't do normal operations.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1290 t)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1291 (add-hook 'kill-buffer-hook (lambda () (let ((skilling (boundp 'skilling)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1292 (if skilling
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1293 nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1294 (if (eq (current-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1295 speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1296 (speedbar-frame-mode -1)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1297 t t)
23083
2dea437fe88a (speedbar-with-writable): remove `toggle-read-only'.
Eric M. Ludlam <zappo@gnu.org>
parents: 23080
diff changeset
1298 (toggle-read-only 1)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1299 (speedbar-set-mode-line-format)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1300 (if speedbar-xemacsp
56762
85c0c238dbbf (speedbar-file-regexp): Definition moved up.
Richard M. Stallman <rms@gnu.org>
parents: 56754
diff changeset
1301 (with-no-warnings
85c0c238dbbf (speedbar-file-regexp): Definition moved up.
Richard M. Stallman <rms@gnu.org>
parents: 56754
diff changeset
1302 (set (make-local-variable 'mouse-motion-handler)
85c0c238dbbf (speedbar-file-regexp): Definition moved up.
Richard M. Stallman <rms@gnu.org>
parents: 56754
diff changeset
1303 'speedbar-track-mouse-xemacs))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1304 (if speedbar-track-mouse-flag
28925
89a795d90175 (speedbar-recenter): Typo, and fix logic.
Eric M. Ludlam <zappo@gnu.org>
parents: 28902
diff changeset
1305 (set (make-local-variable 'track-mouse) t)) ;this could be messy.
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1306 (setq auto-show-mode nil)) ;no auto-show for Emacs
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1307 (run-hooks 'speedbar-mode-hook))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1308 (speedbar-update-contents)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1309 speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1310
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1311 (defmacro speedbar-with-attached-buffer (&rest forms)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1312 "Execute FORMS in the attached frame's special buffer.
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1313 Optionally select that frame if necessary."
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1314 `(save-selected-window
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1315 (speedbar-set-timer speedbar-update-speed)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1316 (select-frame speedbar-attached-frame)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1317 ,@forms
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1318 (speedbar-maybee-jump-to-attached-frame)))
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1319
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1320 (defun speedbar-message (fmt &rest args)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1321 "Like message, but for use in the speedbar frame.
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1322 Argument FMT is the format string, and ARGS are the arguments for message."
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1323 (save-selected-window
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1324 (select-frame speedbar-attached-frame)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1325 (apply 'message fmt args)))
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1326
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1327 (defun speedbar-y-or-n-p (prompt)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1328 "Like `y-or-n-p', but for use in the speedbar frame.
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1329 Argument PROMPT is the prompt to use."
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1330 (save-selected-window
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1331 (if (and default-minibuffer-frame (not (eq default-minibuffer-frame
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1332 speedbar-attached-frame)))
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1333 (select-frame speedbar-attached-frame))
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1334 (y-or-n-p prompt)))
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1335
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1336 (defun speedbar-show-info-under-mouse (&optional event)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1337 "Call the info function for the line under the mouse.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1338 Optional EVENT is currently not used."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1339 (let ((pos (mouse-position))) ; we ignore event until I use it later.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1340 (if (equal (car pos) speedbar-frame)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1341 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1342 (save-window-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1343 (apply 'set-mouse-position pos)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1344 (speedbar-item-info))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1345
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1346 (defun speedbar-set-mode-line-format ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1347 "Set the format of the mode line based on the current speedbar environment.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1348 This gives visual indications of what is up. It EXPECTS the speedbar
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1349 frame and window to be the currently active frame and window."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1350 (if (and (frame-live-p speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1351 (or (not speedbar-xemacsp)
56762
85c0c238dbbf (speedbar-file-regexp): Definition moved up.
Richard M. Stallman <rms@gnu.org>
parents: 56754
diff changeset
1352 (with-no-warnings
85c0c238dbbf (speedbar-file-regexp): Definition moved up.
Richard M. Stallman <rms@gnu.org>
parents: 56754
diff changeset
1353 (specifier-instance has-modeline-p))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1354 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1355 (set-buffer speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1356 (let* ((w (or (speedbar-frame-width) 20))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1357 (p1 "<<")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1358 (p5 ">>")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1359 (p3 (if speedbar-update-flag "SPEEDBAR" "SLOWBAR"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1360 (blank (- w (length p1) (length p3) (length p5)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1361 (if line-number-mode 4 0)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1362 (p2 (if (> blank 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1363 (make-string (/ blank 2) ? )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1364 ""))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1365 (p4 (if (> blank 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1366 (make-string (+ (/ blank 2) (% blank 2)) ? )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1367 ""))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1368 (tf
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1369 (if line-number-mode
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1370 (list (concat p1 p2 p3) '(line-number-mode " %3l")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1371 (concat p4 p5))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1372 (list (concat p1 p2 p3 p4 p5)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1373 (if (not (equal mode-line-format tf))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1374 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1375 (setq mode-line-format tf)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1376 (speedbar-mode-line-update)))))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1377
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1378 (defun speedbar-temp-buffer-show-function (buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1379 "Placed in the variable `temp-buffer-show-function' in `speedbar-mode'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1380 If a user requests help using \\[help-command] <Key> the temp BUFFER will be
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1381 redirected into a window on the attached frame."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1382 (if speedbar-attached-frame (select-frame speedbar-attached-frame))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1383 (pop-to-buffer buffer nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1384 (other-window -1)
23084
e1613f1c52f8 (speedbar-temp-buffer-show-function): For emacs don't call hook
Eric M. Ludlam <zappo@gnu.org>
parents: 23083
diff changeset
1385 ;; Fix for using this hook on some platforms: Bob Weiner
e1613f1c52f8 (speedbar-temp-buffer-show-function): For emacs don't call hook
Eric M. Ludlam <zappo@gnu.org>
parents: 23083
diff changeset
1386 (cond ((not speedbar-xemacsp)
e1613f1c52f8 (speedbar-temp-buffer-show-function): For emacs don't call hook
Eric M. Ludlam <zappo@gnu.org>
parents: 23083
diff changeset
1387 (run-hooks 'temp-buffer-show-hook))
e1613f1c52f8 (speedbar-temp-buffer-show-function): For emacs don't call hook
Eric M. Ludlam <zappo@gnu.org>
parents: 23083
diff changeset
1388 ((fboundp 'run-hook-with-args)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1389 (run-hook-with-args 'temp-buffer-show-hook buffer))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1390 ((and (boundp 'temp-buffer-show-hook)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1391 (listp temp-buffer-show-hook))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1392 (mapcar (function (lambda (hook) (funcall hook buffer)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1393 temp-buffer-show-hook))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1394
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1395 (defvar speedbar-previous-menu nil
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1396 "The menu before the last `speedbar-reconfigure-keymaps' was called.")
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1397
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1398 (defun speedbar-reconfigure-keymaps ()
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1399 "Reconfigure the menu-bar in a speedbar frame.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1400 Different menu items are displayed depending on the current display mode
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1401 and the existence of packages."
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1402 (let ((md (append
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1403 speedbar-easymenu-definition-base
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1404 (if speedbar-shown-directories
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1405 ;; file display mode version
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1406 (speedbar-initial-menu)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1407 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1408 (select-frame speedbar-attached-frame)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1409 (if (local-variable-p
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1410 'speedbar-easymenu-definition-special
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1411 (current-buffer))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1412 ;; If bound locally, we can use it
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1413 speedbar-easymenu-definition-special)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1414 ;; Dynamic menu stuff
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1415 '("-")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1416 (list (cons "Displays"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1417 (let ((displays nil)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1418 (alist speedbar-initial-expansion-mode-alist))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1419 (while alist
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1420 (setq displays
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1421 (cons
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1422 (vector
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1423 (capitalize (car (car alist)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1424 (list
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1425 'speedbar-change-initial-expansion-list
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1426 (car (car alist)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1427 t)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1428 displays))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1429 (setq alist (cdr alist)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1430 displays)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1431 ;; The trailer
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1432 speedbar-easymenu-definition-trailer))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1433 (localmap (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1434 (let ((cf (selected-frame)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1435 (prog2
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1436 (select-frame speedbar-attached-frame)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1437 (if (local-variable-p
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1438 'speedbar-special-mode-key-map
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1439 (current-buffer))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1440 speedbar-special-mode-key-map)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1441 (select-frame cf))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1442 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1443 (set-buffer speedbar-buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1444 (use-local-map (or localmap
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1445 (speedbar-initial-keymap)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1446 ;; This creates a small keymap we can glom the
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1447 ;; menu adjustments into.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1448 (speedbar-make-specialized-keymap)))
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1449 ;; Delete the old menu if applicable.
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1450 (if speedbar-previous-menu (easy-menu-remove speedbar-previous-menu))
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1451 (setq speedbar-previous-menu md)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1452 ;; Now add the new menu
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1453 (if (not speedbar-xemacsp)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1454 (easy-menu-define speedbar-menu-map (current-local-map)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1455 "Speedbar menu" md)
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1456 (easy-menu-add md (current-local-map))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1457 (set-buffer-menubar (list md))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1458 (run-hooks 'speedbar-reconfigure-keymaps-hook)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1459
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1460
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1461 ;;; User Input stuff
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1462 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1463
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1464 ;; XEmacs: this can be implemented using modeline keymaps, but there
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1465 ;; is no use, as we have horizontal scrollbar (as the docstring
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1466 ;; hints.)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1467 (defun speedbar-mouse-hscroll (e)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1468 "Read a mouse event E from the mode line, and horizontally scroll.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1469 If the mouse is being clicked on the far left, or far right of the
46286
6117ca314143 (speedbar-tag-hierarchy-method): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 46282
diff changeset
1470 mode-line. This is only useful for non-XEmacs."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1471 (interactive "e")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1472 (let* ((xp (car (nth 2 (car (cdr e)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1473 (cpw (/ (frame-pixel-width)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1474 (frame-width)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1475 (oc (1+ (/ xp cpw)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1476 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1477 (cond ((< oc 3)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1478 (scroll-left 2))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1479 ((> oc (- (window-width) 3))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1480 (scroll-right 2))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1481 (t (speedbar-message
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1482 "Click on the edge of the modeline to scroll left/right")))
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1483 ;;(speedbar-message "X: Pixel %d Char Pixels %d On char %d" xp cpw oc)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1484 ))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1485
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1486 (defun speedbar-customize ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1487 "Customize speedbar using the Custom package."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1488 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1489 (let ((sf (selected-frame)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1490 (select-frame speedbar-attached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1491 (customize-group 'speedbar)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1492 (select-frame sf))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1493 (speedbar-maybee-jump-to-attached-frame))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1494
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1495 (defun speedbar-track-mouse (event)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1496 "For motion EVENT, display info about the current line."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1497 (interactive "e")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1498 (if (not speedbar-track-mouse-flag)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1499 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1500 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1501 (let ((char (nth 1 (car (cdr event)))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1502 (if (not (numberp char))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1503 (speedbar-message nil)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1504 (goto-char char)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1505 ;; (speedbar-message "%S" event)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1506 (speedbar-item-info)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1507 )))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1508
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1509 (defun speedbar-track-mouse-xemacs (event)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1510 "For motion EVENT, display info about the current line."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1511 (if (functionp (default-value 'mouse-motion-handler))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1512 (funcall (default-value 'mouse-motion-handler) event))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1513 (if speedbar-track-mouse-flag
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1514 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1515 (save-window-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1516 (condition-case ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1517 (progn (mouse-set-point event)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1518 ;; Prevent focus-related bugs.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1519 (if (eq major-mode 'speedbar-mode)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1520 (speedbar-item-info)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1521 (error nil))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1522
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1523 ;; In XEmacs, we make popup menus work on the item over mouse (as
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1524 ;; opposed to where the point happens to be.) We attain this by
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1525 ;; temporarily moving the point to that place.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1526 ;; Hrvoje Niksic <hniksic@srce.hr>
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1527 (defun speedbar-xemacs-popup-kludge (event)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1528 "Pop up a menu related to the clicked on item.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1529 Must be bound to EVENT."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1530 (interactive "e")
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1531 (select-frame speedbar-frame)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1532 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1533 (goto-char (event-closest-point event))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1534 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1535 (forward-char (min 5 (- (save-excursion (end-of-line) (point))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1536 (save-excursion (beginning-of-line) (point)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1537 (popup-mode-menu)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1538 ;; Wait for menu to bail out. `popup-mode-menu' (and other popup
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1539 ;; menu functions) return immediately.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1540 (let (new)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1541 (while (not (misc-user-event-p (setq new (next-event))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1542 (dispatch-event new))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1543 (dispatch-event new))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1544
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1545 (defun speedbar-emacs-popup-kludge (e)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1546 "Pop up a menu related to the clicked on item.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1547 Must be bound to event E."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1548 (interactive "e")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1549 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1550 (mouse-set-point e)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1551 ;; This gets the cursor where the user can see it.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1552 (if (not (bolp)) (forward-char -1))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1553 (sit-for 0)
56762
85c0c238dbbf (speedbar-file-regexp): Definition moved up.
Richard M. Stallman <rms@gnu.org>
parents: 56754
diff changeset
1554 (mouse-major-mode-menu e nil)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1555
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1556 (defun speedbar-hack-buffer-menu (e)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1557 "Control mouse 1 is buffer menu.
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1558 This hack overrides it so that the right thing happens in the main
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1559 Emacs frame, not in the speedbar frame.
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1560 Argument E is the event causing this activity."
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1561 (interactive "e")
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1562 (let ((fn (lookup-key global-map (if speedbar-xemacsp
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1563 '(control button1)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1564 [C-down-mouse-1])))
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1565 (newbuff nil))
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1566 (unwind-protect
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1567 (save-excursion
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1568 (set-window-dedicated-p (selected-window) nil)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1569 (call-interactively fn)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1570 (setq newbuff (current-buffer)))
24809
078e0b907e6e (speedbar-hack-buffer-menu): Fixed so if the user
Karl Heuer <kwzh@gnu.org>
parents: 24475
diff changeset
1571 (switch-to-buffer speedbar-buffer)
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1572 (set-window-dedicated-p (selected-window) t))
24809
078e0b907e6e (speedbar-hack-buffer-menu): Fixed so if the user
Karl Heuer <kwzh@gnu.org>
parents: 24475
diff changeset
1573 (if (not (eq newbuff speedbar-buffer))
078e0b907e6e (speedbar-hack-buffer-menu): Fixed so if the user
Karl Heuer <kwzh@gnu.org>
parents: 24475
diff changeset
1574 (speedbar-with-attached-buffer
078e0b907e6e (speedbar-hack-buffer-menu): Fixed so if the user
Karl Heuer <kwzh@gnu.org>
parents: 24475
diff changeset
1575 (switch-to-buffer newbuff)))))
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1576
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1577 (defun speedbar-next (arg)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1578 "Move to the next ARGth line in a speedbar buffer."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1579 (interactive "p")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1580 (forward-line (or arg 1))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1581 (speedbar-item-info)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1582 (speedbar-position-cursor-on-line))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1583
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1584 (defun speedbar-prev (arg)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1585 "Move to the previous ARGth line in a speedbar buffer."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1586 (interactive "p")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1587 (speedbar-next (if arg (- arg) -1)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1588
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1589 (defun speedbar-restricted-move (arg)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1590 "Move to the next ARGth line in a speedbar buffer at the same depth.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1591 This means that movement is restricted to a subnode, and that siblings
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1592 of intermediate nodes are skipped."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1593 (if (not (numberp arg)) (signal 'wrong-type-argument (list arg 'numberp)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1594 ;; First find the extent for which we are allowed to move.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1595 (let ((depth (save-excursion (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1596 (if (looking-at "[0-9]+:")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1597 (string-to-int (match-string 0))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1598 0)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1599 (crement (if (< arg 0) 1 -1)) ; decrement or increment
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1600 (lastmatch (point)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1601 (while (/= arg 0)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1602 (forward-line (- crement))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1603 (let ((subdepth (save-excursion (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1604 (if (looking-at "[0-9]+:")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1605 (string-to-int (match-string 0))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1606 0))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1607 (cond ((or (< subdepth depth)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1608 (progn (end-of-line) (eobp))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1609 (progn (beginning-of-line) (bobp)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1610 ;; We have reached the end of this block.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1611 (goto-char lastmatch)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1612 (setq arg 0)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1613 (error "End of sub-list"))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1614 ((= subdepth depth)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1615 (setq lastmatch (point)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1616 arg (+ arg crement))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1617 (speedbar-position-cursor-on-line)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1618
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1619 (defun speedbar-restricted-next (arg)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1620 "Move to the next ARGth line in a speedbar buffer at the same depth.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1621 This means that movement is restricted to a subnode, and that siblings
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1622 of intermediate nodes are skipped."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1623 (interactive "p")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1624 (speedbar-restricted-move (or arg 1))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1625 (speedbar-item-info))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1626
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1627
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1628 (defun speedbar-restricted-prev (arg)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1629 "Move to the previous ARGth line in a speedbar buffer at the same depth.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1630 This means that movement is restricted to a subnode, and that siblings
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1631 of intermediate nodes are skipped."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1632 (interactive "p")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1633 (speedbar-restricted-move (if arg (- arg) -1))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1634 (speedbar-item-info))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1635
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1636 (defun speedbar-navigate-list (arg)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1637 "Move across ARG groups of similarly typed items in speedbar.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1638 Stop on the first line of the next type of item, or on the last or first item
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1639 if we reach a buffer boundary."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1640 (interactive "p")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1641 (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1642 (if (looking-at "[0-9]+: *[[<{][-+?][]>}] ")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1643 (let ((str (regexp-quote (match-string 0))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1644 (while (looking-at str)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1645 (speedbar-restricted-move arg)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1646 (beginning-of-line))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1647 (speedbar-position-cursor-on-line))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1648
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1649 (defun speedbar-forward-list ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1650 "Move forward over the current list.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1651 A LIST in speedbar is a group of similarly typed items, such as directories,
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1652 files, or the directory button."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1653 (interactive)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1654 (speedbar-navigate-list 1)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1655 (speedbar-item-info))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1656
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1657 (defun speedbar-backward-list ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1658 "Move backward over the current list.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1659 A LIST in speedbar is a group of similarly typed items, such as directories,
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1660 files, or the directory button."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1661 (interactive)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1662 (speedbar-navigate-list -1)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1663 (speedbar-item-info))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1664
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1665 (defun speedbar-scroll-up (&optional arg)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1666 "Page down one screen-full of the speedbar, or ARG lines."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1667 (interactive "P")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1668 (scroll-up arg)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1669 (speedbar-position-cursor-on-line))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1670
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1671 (defun speedbar-scroll-down (&optional arg)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1672 "Page up one screen-full of the speedbar, or ARG lines."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1673 (interactive "P")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1674 (scroll-down arg)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1675 (speedbar-position-cursor-on-line))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1676
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1677 (defun speedbar-up-directory ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1678 "Keyboard accelerator for moving the default directory up one.
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
1679 Assumes that the current buffer is the speedbar buffer."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1680 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1681 (setq default-directory (expand-file-name (concat default-directory "../")))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1682 (speedbar-update-contents))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1683
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1684 ;;; Speedbar file activity (aka creeping featurism)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1685 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1686 (defun speedbar-refresh ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1687 "Refresh the current speedbar display, disposing of any cached data."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1688 (interactive)
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1689 (let ((dl speedbar-shown-directories)
47627
33bcb75e91e8 (speedbar-refresh): Simply bind deactivate-mark.
Richard M. Stallman <rms@gnu.org>
parents: 47286
diff changeset
1690 deactivate-mark)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1691 (while dl
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1692 (adelete 'speedbar-directory-contents-alist (car dl))
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1693 (setq dl (cdr dl)))
22906
adfc04c48002 Updated refresh messages to clear themselves.
Eric M. Ludlam <zappo@gnu.org>
parents: 22893
diff changeset
1694 (if (<= 1 speedbar-verbosity-level)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1695 (speedbar-message "Refreshing speedbar..."))
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1696 (speedbar-update-contents)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1697 (speedbar-stealthy-updates)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1698 ;; Reset the timer in case it got really hosed for some reason...
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1699 (speedbar-set-timer speedbar-update-speed)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
1700 (if (<= 1 speedbar-verbosity-level)
47627
33bcb75e91e8 (speedbar-refresh): Simply bind deactivate-mark.
Richard M. Stallman <rms@gnu.org>
parents: 47286
diff changeset
1701 (speedbar-message "Refreshing speedbar...done"))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1702
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1703 (defun speedbar-item-load ()
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1704 "Load the item under the cursor or mouse if it is a Lisp file."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1705 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1706 (let ((f (speedbar-line-file)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1707 (if (and (file-exists-p f) (string-match "\\.el\\'" f))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1708 (if (and (file-exists-p (concat f "c"))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1709 (speedbar-y-or-n-p (format "Load %sc? " f)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1710 ;; If the compiled version exists, load that instead...
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1711 (load-file (concat f "c"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1712 (load-file f))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1713 (error "Not a loadable file"))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1714
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1715 (defun speedbar-item-byte-compile ()
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1716 "Byte compile the item under the cursor or mouse if it is a Lisp file."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1717 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1718 (let ((f (speedbar-line-file))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1719 (sf (selected-frame)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1720 (if (and (file-exists-p f) (string-match "\\.el\\'" f))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1721 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1722 (select-frame speedbar-attached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1723 (byte-compile-file f nil)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1724 (select-frame sf)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1725 (speedbar-reset-scanners)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1726 ))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1727
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1728 (defun speedbar-mouse-item-info (event)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1729 "Provide information about what the user clicked on.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1730 This should be bound to a mouse EVENT."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1731 (interactive "e")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1732 (mouse-set-point event)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1733 (speedbar-item-info))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1734
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1735 (defun speedbar-generic-item-info ()
44578
9c2b72b4b303 (speedbar-generic-item-info)
Pavel Janík <Pavel@Janik.cz>
parents: 44225
diff changeset
1736 "Attempt to derive, and then display information about this line item.
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1737 File style information is displayed with `speedbar-item-info'."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1738 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1739 (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1740 ;; Skip invisible number info.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1741 (if (looking-at "\\([0-9]+\\):") (goto-char (match-end 0)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1742 ;; Skip items in "folder" type text characters.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1743 (if (looking-at "\\s-*[[<({].[]>)}] ") (goto-char (match-end 0)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1744 ;; Get the text
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1745 (speedbar-message "Text: %s" (buffer-substring-no-properties
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1746 (point) (progn (end-of-line) (point))))))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1747
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1748 (defun speedbar-item-info ()
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1749 "Display info in the mini-buffer about the button the mouse is over.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1750 This function can be replaced in `speedbar-mode-functions-list' as
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
1751 `speedbar-item-info'."
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1752 (interactive)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1753 (let (message-log-max)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1754 (funcall (or (speedbar-fetch-replacement-function 'speedbar-item-info)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1755 'speedbar-generic-item-info))))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1756
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1757 (defun speedbar-item-info-file-helper (&optional filename)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1758 "Display info about a file that is on the current line.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1759 nil if not applicable. If FILENAME, then use that instead of reading
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1760 it from the speedbar buffer."
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1761 (let* ((item (or filename (speedbar-line-file)))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1762 (attr (if item (file-attributes item) nil)))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1763 (if (and item attr) (speedbar-message "%s %-6d %s" (nth 8 attr)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1764 (nth 7 attr) item)
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1765 nil)))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1766
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1767 (defun speedbar-item-info-tag-helper ()
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1768 "Display info about a tag that is on the current line.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1769 nil if not applicable."
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1770 (save-excursion
24321
0e5b7bb19ddc (speedbar-item-info-tag-helper): Scan the whole line.
Richard M. Stallman <rms@gnu.org>
parents: 24232
diff changeset
1771 (beginning-of-line)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1772 (if (re-search-forward " [-+=]?> \\([^\n]+\\)"
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1773 (save-excursion(end-of-line)(point)) t)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1774 (let ((tag (match-string 1))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1775 (attr (speedbar-line-token))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1776 (item nil))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1777 (if (and (featurep 'semantic) (semantic-token-p attr))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1778 (speedbar-message (semantic-summerize-nonterminal attr))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1779 (looking-at "\\([0-9]+\\):")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1780 (setq item (file-name-nondirectory (speedbar-line-path)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1781 (speedbar-message "Tag: %s in %s" tag item)))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1782 (if (re-search-forward "{[+-]} \\([^\n]+\\)$"
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1783 (save-excursion(end-of-line)(point)) t)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1784 (speedbar-message "Group of tags \"%s\"" (match-string 1))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1785 (if (re-search-forward " [+-]?[()|@] \\([^\n]+\\)$" nil t)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1786 (let* ((detailtext (match-string 1))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1787 (detail (or (speedbar-line-token) detailtext))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1788 (parent (save-excursion
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1789 (beginning-of-line)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1790 (let ((dep (if (looking-at "[0-9]+:")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1791 (1- (string-to-int (match-string 0)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1792 0)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1793 (re-search-backward (concat "^"
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1794 (int-to-string dep)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1795 ":")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1796 nil t))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1797 (if (looking-at "[0-9]+: +[-+=>]> \\([^\n]+\\)$")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1798 (speedbar-line-token)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1799 nil))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1800 (if (and (featurep 'semantic) (semantic-token-p detail))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1801 (speedbar-message
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1802 (semantic-summerize-nonterminal detail parent))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1803 (if parent
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1804 (speedbar-message "Detail: %s of tag %s" detail
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1805 (if (and (featurep 'semantic)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1806 (semantic-token-p parent))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1807 (semantic-token-name parent)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1808 parent))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1809 (speedbar-message "Detail: %s" detail))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1810 nil)))))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1811
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1812 (defun speedbar-files-item-info ()
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1813 "Display info in the mini-buffer about the button the mouse is over."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1814 (if (not speedbar-shown-directories)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1815 (speedbar-generic-item-info)
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1816 (or (speedbar-item-info-file-helper)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1817 (speedbar-item-info-tag-helper)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
1818 (speedbar-generic-item-info))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1819
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1820 (defun speedbar-item-copy ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1821 "Copy the item under the cursor.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1822 Files can be copied to new names or places."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1823 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1824 (let ((f (speedbar-line-file)))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1825 (if (not f) (error "Not a file"))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1826 (if (file-directory-p f)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1827 (error "Cannot copy directory")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1828 (let* ((rt (read-file-name (format "Copy %s to: "
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1829 (file-name-nondirectory f))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1830 (file-name-directory f)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1831 (refresh (member (expand-file-name (file-name-directory rt))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1832 speedbar-shown-directories)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1833 ;; Create the right file name part
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1834 (if (file-directory-p rt)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1835 (setq rt
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1836 (concat (expand-file-name rt)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1837 (if (string-match "[/\\]$" rt) "" "/")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1838 (file-name-nondirectory f))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1839 (if (or (not (file-exists-p rt))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1840 (speedbar-y-or-n-p (format "Overwrite %s with %s? " rt f)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1841 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1842 (copy-file f rt t t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1843 ;; refresh display if the new place is currently displayed.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1844 (if refresh
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1845 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1846 (speedbar-refresh)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1847 (if (not (speedbar-goto-this-file rt))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1848 (speedbar-goto-this-file f))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1849 ))))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1850
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1851 (defun speedbar-item-rename ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1852 "Rename the item under the cursor or mouse.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1853 Files can be renamed to new names or moved to new directories."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1854 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1855 (let ((f (speedbar-line-file)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1856 (if f
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1857 (let* ((rt (read-file-name (format "Rename %s to: "
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1858 (file-name-nondirectory f))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1859 (file-name-directory f)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1860 (refresh (member (expand-file-name (file-name-directory rt))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1861 speedbar-shown-directories)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1862 ;; Create the right file name part
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1863 (if (file-directory-p rt)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1864 (setq rt
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1865 (concat (expand-file-name rt)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1866 (if (string-match "[/\\]\\'" rt) "" "/")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1867 (file-name-nondirectory f))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1868 (if (or (not (file-exists-p rt))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1869 (speedbar-y-or-n-p (format "Overwrite %s with %s? " rt f)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1870 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1871 (rename-file f rt t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1872 ;; refresh display if the new place is currently displayed.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1873 (if refresh
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1874 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1875 (speedbar-refresh)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1876 (speedbar-goto-this-file rt)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1877 )))))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1878 (error "Not a file"))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1879
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1880 (defun speedbar-item-delete ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1881 "Delete the item under the cursor. Files are removed from disk."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1882 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1883 (let ((f (speedbar-line-file)))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1884 (if (not f) (error "Not a file"))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1885 (if (speedbar-y-or-n-p (format "Delete %s? " f))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1886 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1887 (if (file-directory-p f)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1888 (delete-directory f)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1889 (delete-file f))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1890 (speedbar-message "Okie dokie..")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1891 (let ((p (point)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1892 (speedbar-refresh)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1893 (goto-char p))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1894 ))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1895 ))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1896
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1897 (defun speedbar-item-object-delete ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1898 "Delete the object associated from the item under the cursor.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1899 The file is removed from disk. The object is determined from the
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1900 variable `speedbar-obj-alist'."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1901 (interactive)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1902 (let* ((f (speedbar-line-file))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1903 (obj nil)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1904 (oa speedbar-obj-alist))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1905 (if (not f) (error "Not a file"))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1906 (while (and oa (not (string-match (car (car oa)) f)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1907 (setq oa (cdr oa)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1908 (setq obj (concat (file-name-sans-extension f) (cdr (car oa))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1909 (if (and oa (file-exists-p obj)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
1910 (speedbar-y-or-n-p (format "Delete %s? " obj)))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1911 (progn
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1912 (delete-file obj)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1913 (speedbar-reset-scanners)))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
1914
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1915 (defun speedbar-enable-update ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1916 "Enable automatic updating in speedbar via timers."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1917 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1918 (setq speedbar-update-flag t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1919 (speedbar-set-mode-line-format)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1920 (speedbar-set-timer speedbar-update-speed))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1921
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1922 (defun speedbar-disable-update ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1923 "Disable automatic updating and stop consuming resources."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1924 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1925 (setq speedbar-update-flag nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1926 (speedbar-set-mode-line-format)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1927 (speedbar-set-timer nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1928
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1929 (defun speedbar-toggle-updates ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1930 "Toggle automatic update for the speedbar frame."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1931 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1932 (if speedbar-update-flag
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1933 (speedbar-disable-update)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1934 (speedbar-enable-update)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1935
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1936 (defun speedbar-toggle-images ()
44584
7329202ae660 (speedbar-tag-hierarchy-method)
Pavel Janík <Pavel@Janik.cz>
parents: 44578
diff changeset
1937 "Toggle images for the speedbar frame."
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1938 (interactive)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1939 (setq speedbar-use-images (not speedbar-use-images))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1940 (speedbar-refresh))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
1941
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1942 (defun speedbar-toggle-sorting ()
44584
7329202ae660 (speedbar-tag-hierarchy-method)
Pavel Janík <Pavel@Janik.cz>
parents: 44578
diff changeset
1943 "Toggle sorting for the speedbar frame."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1944 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1945 (setq speedbar-sort-tags (not speedbar-sort-tags)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1946
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1947 (defun speedbar-toggle-show-all-files ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1948 "Toggle display of files speedbar can not tag."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1949 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1950 (setq speedbar-show-unknown-files (not speedbar-show-unknown-files))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1951 (speedbar-refresh))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1952
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1953 ;;; Utility functions
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1954 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1955 (defun speedbar-set-timer (timeout)
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
1956 "Apply a timer with TIMEOUT, or remove a timer if TIMEOUT is nil.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1957 TIMEOUT is the number of seconds until the speedbar timer is called
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1958 again. When TIMEOUT is nil, turn off all timeouts.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1959 This function will also enable or disable the `vc-checkin-hook' used
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1960 to track file check ins, and will change the mode line to match
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1961 `speedbar-update-flag'."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1962 (cond
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1963 ;; XEmacs
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1964 (speedbar-xemacsp
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1965 (if speedbar-timer
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1966 (progn (delete-itimer speedbar-timer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1967 (setq speedbar-timer nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1968 (if timeout
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1969 (if (and speedbar-xemacsp
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1970 (or (>= emacs-major-version 20)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1971 (>= emacs-minor-version 15)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1972 (setq speedbar-timer (start-itimer "speedbar"
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1973 'speedbar-timer-fn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1974 timeout
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1975 timeout
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1976 t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1977 (setq speedbar-timer (start-itimer "speedbar"
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1978 'speedbar-timer-fn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1979 timeout
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1980 nil)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1981 ;; Post 19.31 Emacs
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1982 ((fboundp 'run-with-idle-timer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1983 (if speedbar-timer
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1984 (progn (cancel-timer speedbar-timer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1985 (setq speedbar-timer nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1986 (if timeout
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1987 (setq speedbar-timer
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1988 (run-with-idle-timer timeout t 'speedbar-timer-fn))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1989 ;; Emacs 19.30 (Thanks twice: ptype@dra.hmg.gb)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1990 ((fboundp 'post-command-idle-hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1991 (if timeout
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1992 (add-hook 'post-command-idle-hook 'speedbar-timer-fn)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1993 (remove-hook 'post-command-idle-hook 'speedbar-timer-fn)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1994 ;; Older or other Emacsen with no timers. Set up so that its
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1995 ;; obvious this emacs can't handle the updates
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1996 (t
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1997 (setq speedbar-update-flag nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1998 ;; Apply a revert hook that will reset the scanners. We attach to revert
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
1999 ;; because most reverts occur during VC state change, and this lets our
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2000 ;; VC scanner fix itself.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2001 (if timeout
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2002 (add-hook 'after-revert-hook 'speedbar-reset-scanners)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2003 (remove-hook 'after-revert-hook 'speedbar-reset-scanners)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2004 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2005 ;; change this if it changed for some reason
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2006 (speedbar-set-mode-line-format))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2007
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2008 (defmacro speedbar-with-writable (&rest forms)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2009 "Allow the buffer to be writable and evaluate FORMS."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2010 (list 'let '((inhibit-read-only t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2011 (cons 'progn forms)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2012 (put 'speedbar-with-writable 'lisp-indent-function 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2013
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2014 (defun speedbar-select-window (buffer)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2015 "Select a window in which BUFFER is shown.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2016 If it is not shown, force it to appear in the default window."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2017 (let ((win (get-buffer-window buffer speedbar-attached-frame)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2018 (if win
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2019 (select-window win)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2020 (set-window-buffer (selected-window) buffer))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2021
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2022 (defun speedbar-insert-button (text face mouse function
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2023 &optional token prevline)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2024 "Insert TEXT as the next logical speedbar button.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2025 FACE is the face to put on the button, MOUSE is the highlight face to use.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2026 When the user clicks on TEXT, FUNCTION is called with the TOKEN parameter.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2027 This function assumes that the current buffer is the speedbar buffer.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2028 If PREVLINE, then put this button on the previous line.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2029
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
2030 This is a convenience function for special modes that create their own
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2031 specialized speedbar displays."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2032 (goto-char (point-max))
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
2033 (let ((start (point)))
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
2034 (if (/= (current-column) 0) (insert "\n"))
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
2035 (put-text-property start (point) 'invisible nil))
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
2036 (if prevline (progn (delete-char -1)
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
2037 (insert " ") ;back up if desired...
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
2038 (put-text-property (1- (point)) (point) 'invisible nil)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2039 (let ((start (point)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2040 (insert text)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2041 (speedbar-make-button start (point) face mouse function token))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2042 (let ((start (point)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2043 (insert "\n")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2044 (put-text-property start (point) 'face nil)
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
2045 (put-text-property start (point) 'invisible nil)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2046 (put-text-property start (point) 'mouse-face nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2047
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2048 (defun speedbar-make-button (start end face mouse function &optional token)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2049 "Create a button from START to END, with FACE as the display face.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2050 MOUSE is the mouse face. When this button is clicked on FUNCTION
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
2051 will be run with the TOKEN parameter (any Lisp object)."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2052 (put-text-property start end 'face face)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2053 (put-text-property start end 'mouse-face mouse)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2054 (put-text-property start end 'invisible nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2055 (if function (put-text-property start end 'speedbar-function function))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2056 (if token (put-text-property start end 'speedbar-token token))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2057 ;; So far the only text we have is less that 3 chars.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2058 (if (<= (- end start) 3)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2059 (speedbar-insert-image-button-maybe start (- end start)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2060 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2061
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2062 ;;; Initial Expansion list management
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2063 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2064 (defun speedbar-initial-expansion-list ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2065 "Return the current default expansion list.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2066 This is based on `speedbar-initial-expansion-list-name' referencing
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2067 `speedbar-initial-expansion-mode-alist'."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2068 ;; cdr1 - name, cdr2 - menu
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2069 (cdr (cdr (cdr (assoc speedbar-initial-expansion-list-name
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2070 speedbar-initial-expansion-mode-alist)))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2071
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2072 (defun speedbar-initial-menu ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2073 "Return the current default menu data.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2074 This is based on `speedbar-initial-expansion-list-name' referencing
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2075 `speedbar-initial-expansion-mode-alist'."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2076 (symbol-value
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2077 (car (cdr (assoc speedbar-initial-expansion-list-name
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2078 speedbar-initial-expansion-mode-alist)))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2079
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2080 (defun speedbar-initial-keymap ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2081 "Return the current default menu data.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2082 This is based on `speedbar-initial-expansion-list-name' referencing
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2083 `speedbar-initial-expansion-mode-alist'."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2084 (symbol-value
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2085 (car (cdr (cdr (assoc speedbar-initial-expansion-list-name
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2086 speedbar-initial-expansion-mode-alist))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2087
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2088 (defun speedbar-initial-stealthy-functions ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2089 "Return a list of functions to call stealthily.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2090 This is based on `speedbar-initial-expansion-list-name' referencing
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2091 `speedbar-stealthy-function-list'."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2092 (cdr (assoc speedbar-initial-expansion-list-name
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2093 speedbar-stealthy-function-list)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2094
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2095 (defun speedbar-add-expansion-list (new-list)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2096 "Add NEW-LIST to the list of expansion lists."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2097 (add-to-list 'speedbar-initial-expansion-mode-alist new-list))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2098
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2099 (defun speedbar-change-initial-expansion-list (new-default)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2100 "Change speedbar's default expansion list to NEW-DEFAULT."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2101 (interactive
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2102 (list
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2103 (completing-read (format "Speedbar Mode (default %s): "
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2104 speedbar-previously-used-expansion-list-name)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2105 speedbar-initial-expansion-mode-alist
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2106 nil t "" nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2107 speedbar-previously-used-expansion-list-name)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2108 (setq speedbar-previously-used-expansion-list-name
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2109 speedbar-initial-expansion-list-name
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2110 speedbar-initial-expansion-list-name new-default)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2111 (speedbar-refresh)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2112 (speedbar-reconfigure-keymaps))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2113
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2114 (defun speedbar-fetch-replacement-function (function)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2115 "Return a current mode specific replacement for function, or nil.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2116 Scans `speedbar-mode-functions-list' first for the current mode, then
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2117 for FUNCTION."
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2118 (cdr (assoc function
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2119 (cdr (assoc speedbar-initial-expansion-list-name
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2120 speedbar-mode-functions-list)))))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2121
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2122 (defun speedbar-add-mode-functions-list (new-list)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2123 "Add NEW-LIST to the list of mode functions.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2124 See `speedbar-mode-functions-list' for details."
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2125 (add-to-list 'speedbar-mode-functions-list new-list))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
2126
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2127
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2128 ;;; Special speedbar display management
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2129 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2130 (defun speedbar-maybe-add-localized-support (buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2131 "Quick check function called on BUFFERs by the speedbar timer function.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2132 Maintains the value of local variables which control speedbars use
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2133 of the special mode functions."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2134 (or speedbar-special-mode-expansion-list
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2135 (speedbar-add-localized-speedbar-support buffer)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2136
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2137 (defun speedbar-add-localized-speedbar-support (buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2138 "Add localized speedbar support to BUFFER's mode if it is available."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2139 (interactive "bBuffer: ")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2140 (if (stringp buffer) (setq buffer (get-buffer buffer)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2141 (if (not (buffer-live-p buffer))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2142 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2143 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2144 (set-buffer buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2145 (save-match-data
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2146 (let ((ms (symbol-name major-mode)) v)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2147 (if (not (string-match "-mode$" ms))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2148 nil ;; do nothing to broken mode
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2149 (setq ms (substring ms 0 (match-beginning 0)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2150 (setq v (intern-soft (concat ms "-speedbar-buttons")))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2151 (make-local-variable 'speedbar-special-mode-expansion-list)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2152 (if (not v)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2153 (setq speedbar-special-mode-expansion-list t)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2154 ;; If it is autoloaded, we need to load it now so that
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2155 ;; we have access to the varialbe -speedbar-menu-items.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2156 ;; Is this XEmacs safe?
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2157 (let ((sf (symbol-function v)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2158 (if (and (listp sf) (eq (car sf) 'autoload))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2159 (load-library (car (cdr sf)))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2160 (setq speedbar-special-mode-expansion-list (list v))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2161 (setq v (intern-soft (concat ms "-speedbar-key-map")))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2162 (if (not v)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2163 nil ;; don't add special keymap
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2164 (make-local-variable 'speedbar-special-mode-key-map)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2165 (setq speedbar-special-mode-key-map
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2166 (symbol-value v)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2167 (setq v (intern-soft (concat ms "-speedbar-menu-items")))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2168 (if (not v)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2169 nil ;; don't add special menus
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2170 (make-local-variable 'speedbar-easymenu-definition-special)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2171 (setq speedbar-easymenu-definition-special
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2172 (symbol-value v)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2173 )))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2174
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2175 (defun speedbar-remove-localized-speedbar-support (buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2176 "Remove any traces that BUFFER supports speedbar in a specialized way."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2177 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2178 (set-buffer buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2179 (kill-local-variable 'speedbar-special-mode-expansion-list)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2180 (kill-local-variable 'speedbar-special-mode-key-map)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2181 (kill-local-variable 'speedbar-easymenu-definition-special)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2182
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2183 ;;; File button management
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2184 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2185 (defun speedbar-file-lists (directory)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2186 "Create file lists for DIRECTORY.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2187 The car is the list of directories, the cdr is list of files not
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2188 matching ignored headers. Cache any directory files found in
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2189 `speedbar-directory-contents-alist' and use that cache before scanning
46286
6117ca314143 (speedbar-tag-hierarchy-method): Fix typos.
Juanma Barranquero <lekktu@gmail.com>
parents: 46282
diff changeset
2190 the file-system."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2191 (setq directory (expand-file-name directory))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2192 ;; If in powerclick mode, then the directory we are getting
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2193 ;; should be rescanned.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2194 (if speedbar-power-click
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2195 (adelete 'speedbar-directory-contents-alist directory))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2196 ;; find the directory, either in the cache, or build it.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2197 (or (cdr-safe (assoc directory speedbar-directory-contents-alist))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2198 (let ((default-directory directory)
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2199 (case-fold-search read-file-name-completion-ignore-case)
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2200 dirs files)
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2201 (dolist (file (directory-files directory nil))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2202 (or (string-match speedbar-file-unshown-regexp file)
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2203 (string-match speedbar-directory-unshown-regexp file)
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2204 (if (file-directory-p file)
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2205 (setq dirs (cons file dirs))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2206 (setq files (cons file files)))))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2207 (let ((nl `(,(nreverse dirs) ,(nreverse files))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2208 (aput 'speedbar-directory-contents-alist directory nl)
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2209 nl))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2210
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2211 (defun speedbar-directory-buttons (directory index)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2212 "Insert a single button group at point for DIRECTORY.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2213 Each directory path part is a different button. If part of the path
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2214 matches the user directory ~, then it is replaced with a ~.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2215 INDEX is not used, but is required by the caller."
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2216 (let* ((tilde (expand-file-name "~/"))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2217 (dd (expand-file-name directory))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2218 (junk (string-match (regexp-quote tilde) dd))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2219 (displayme (if junk
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2220 (concat "~/" (substring dd (match-end 0)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2221 dd))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2222 (p (point)))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2223 (if (string-match "^~[/\\]?\\'" displayme) (setq displayme tilde))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2224 (insert displayme)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2225 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2226 (goto-char p)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2227 (while (re-search-forward "\\([^/\\]+\\)[/\\]" nil t)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2228 (speedbar-make-button (match-beginning 1) (match-end 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2229 'speedbar-directory-face
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2230 'speedbar-highlight-face
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2231 'speedbar-directory-buttons-follow
25432
07df7c764669 (speedbar-directory-buttons): Recognize
Richard M. Stallman <rms@gnu.org>
parents: 24809
diff changeset
2232 (if (and (= (match-beginning 1) p)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2233 (not (char-equal (char-after (+ p 1)) ?:)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2234 (expand-file-name "~/") ;the tilde
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2235 (buffer-substring-no-properties
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2236 p (match-end 0)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2237 ;; Nuke the beginning of the directory if it's too long...
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2238 (cond ((eq speedbar-directory-button-trim-method 'span)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2239 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2240 (let ((ww (or (speedbar-frame-width) 20)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2241 (move-to-column ww nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2242 (while (>= (current-column) ww)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2243 (re-search-backward "[/\\]" nil t)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2244 (if (<= (current-column) 2)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2245 (progn
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2246 (re-search-forward "[/\\]" nil t)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2247 (if (< (current-column) 4)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2248 (re-search-forward "[/\\]" nil t))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2249 (forward-char -1)))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2250 (if (looking-at "[/\\]?$")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2251 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2252 (insert "/...\n ")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2253 (move-to-column ww nil)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2254 ((eq speedbar-directory-button-trim-method 'trim)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2255 (end-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2256 (let ((ww (or (speedbar-frame-width) 20))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2257 (tl (current-column)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2258 (if (< ww tl)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2259 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2260 (move-to-column (- tl ww))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2261 (if (re-search-backward "[/\\]" nil t)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2262 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2263 (delete-region (point-min) (point))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2264 (insert "$")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2265 )))))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2266 )
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2267 (if (string-match "\\`[/\\][^/\\]+[/\\]\\'" displayme)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2268 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2269 (insert " ")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2270 (let ((p (point)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2271 (insert "<root>")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2272 (speedbar-make-button p (point)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2273 'speedbar-directory-face
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2274 'speedbar-highlight-face
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2275 'speedbar-directory-buttons-follow
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2276 "/"))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2277 (end-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2278 (insert-char ?\n 1 nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2279
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2280 (defun speedbar-make-tag-line (exp-button-type
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2281 exp-button-char exp-button-function
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2282 exp-button-data
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2283 tag-button tag-button-function tag-button-data
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2284 tag-button-face depth)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2285 "Create a tag line with EXP-BUTTON-TYPE for the small expansion button.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2286 This is the button that expands or contracts a node (if applicable),
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2287 and EXP-BUTTON-CHAR the character in it (+, -, ?, etc). EXP-BUTTON-FUNCTION
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2288 is the function to call if it's clicked on. Button types are
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2289 'bracket, 'angle, 'curly, or nil. EXP-BUTTON-DATA is extra data
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2290 attached to the text forming the expansion button.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2291
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2292 Next, TAG-BUTTON is the text of the tag. TAG-BUTTON-FUNCTION is the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2293 function to call if clicked on, and TAG-BUTTON-DATA is the data to
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2294 attach to the text field (such a tag positioning, etc).
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2295 TAG-BUTTON-FACE is a face used for this type of tag.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2296
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2297 Lastly, DEPTH shows the depth of expansion.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2298
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2299 This function assumes that the cursor is in the speedbar window at the
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
2300 position to insert a new item, and that the new item will end with a CR."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2301 (let ((start (point))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2302 (end (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2303 (insert (int-to-string depth) ":")
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2304 (point)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2305 (depthspacesize (* depth speedbar-indentation-width)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2306 (put-text-property start end 'invisible t)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2307 (insert-char ? depthspacesize nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2308 (put-text-property (- (point) depthspacesize) (point) 'invisible nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2309 (let* ((exp-button (cond ((eq exp-button-type 'bracket) "[%c]")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2310 ((eq exp-button-type 'angle) "<%c>")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2311 ((eq exp-button-type 'curly) "{%c}")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2312 (t ">")))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2313 (buttxt (format exp-button exp-button-char))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2314 (start (point))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2315 (end (progn (insert buttxt) (point)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2316 (bf (if exp-button-type 'speedbar-button-face nil))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2317 (mf (if exp-button-function 'speedbar-highlight-face nil))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2318 )
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2319 (speedbar-make-button start end bf mf exp-button-function exp-button-data)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2320 (if speedbar-hide-button-brackets-flag
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2321 (progn
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2322 (put-text-property start (1+ start) 'invisible t)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2323 (put-text-property end (1- end) 'invisible t)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2324 )
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2325 (insert-char ? 1 nil)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2326 (put-text-property (1- (point)) (point) 'invisible nil)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2327 (let ((start (point))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2328 (end (progn (insert tag-button) (point))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2329 (insert-char ?\n 1 nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2330 (put-text-property (1- (point)) (point) 'invisible nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2331 (speedbar-make-button start end tag-button-face
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2332 (if tag-button-function 'speedbar-highlight-face nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2333 tag-button-function tag-button-data))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2334 ))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48716
diff changeset
2335
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2336 (defun speedbar-change-expand-button-char (char)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2337 "Change the expansion button character to CHAR for the current line."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2338 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2339 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2340 (if (re-search-forward ":\\s-*.\\([-+?]\\)" (save-excursion (end-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2341 (point)) t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2342 (speedbar-with-writable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2343 (goto-char (match-beginning 1))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2344 (delete-char 1)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2345 (insert-char char 1 t)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2346 (put-text-property (point) (1- (point)) 'invisible nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2347 ;; make sure we fix the image on the text here.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2348 (speedbar-insert-image-button-maybe (- (point) 2) 3)))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2349
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2350
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2351 ;;; Build button lists
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2352 ;;
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2353 (defun speedbar-insert-files-at-point (files level directory)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2354 "Insert list of FILES starting at point, and indenting all files to LEVEL.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2355 Tag expandable items with a +, otherwise a ?. Don't highlight ? as we
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2356 don't know how to manage them. The input parameter FILES is a cons
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
2357 cell of the form ( 'DIRLIST . 'FILELIST )."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2358 ;; Start inserting all the directories
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2359 (dolist (dir (car files))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2360 (if (if speedbar-scan-subdirs
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2361 (condition-case nil
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2362 (let ((l (speedbar-file-lists (concat directory dir))))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2363 (or (car l) (cadr l)))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2364 (file-error))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2365 (file-readable-p (concat directory dir)))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2366 (speedbar-make-tag-line 'angle ?+ 'speedbar-dired dir
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2367 dir 'speedbar-dir-follow nil
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2368 'speedbar-directory-face level)
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2369 (speedbar-make-tag-line 'angle ? nil dir
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2370 dir 'speedbar-dir-follow nil
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2371 'speedbar-directory-face level)))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2372 (let ((case-fold-search read-file-name-completion-ignore-case))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2373 (dolist (file (cadr files))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2374 (let* ((known (and (file-readable-p (concat directory file))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2375 (string-match speedbar-file-regexp file)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2376 (expchar (if known ?+ ??))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2377 (fn (if known 'speedbar-tag-file nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2378 (if (or speedbar-show-unknown-files (/= expchar ??))
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2379 (speedbar-make-tag-line 'bracket expchar fn file
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2380 file 'speedbar-find-file nil
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2381 'speedbar-file-face level))))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2382
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2383 (defun speedbar-default-directory-list (directory index)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2384 "Insert files for DIRECTORY with level INDEX at point."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2385 (speedbar-insert-files-at-point
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2386 (speedbar-file-lists directory) index directory)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2387 (speedbar-reset-scanners)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2388 (if (= index 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2389 ;; If the shown files variable has extra directories, then
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2390 ;; it is our responsibility to redraw them all
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2391 ;; Luckilly, the nature of inserting items into this list means
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2392 ;; that by reversing it, we can easilly go in the right order
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2393 (let ((sf (cdr (reverse speedbar-shown-directories))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2394 (setq speedbar-shown-directories
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2395 (list (expand-file-name default-directory)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2396 ;; exand them all as we find them
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2397 (while sf
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2398 (if (speedbar-goto-this-file (car sf))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2399 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2400 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2401 (if (looking-at "[0-9]+:[ ]*<")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2402 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2403 (goto-char (match-end 0))
44225
e47fc6bb028d (speedbar-default-directory-list): Made robust against deleted directories.
Richard M. Stallman <rms@gnu.org>
parents: 42456
diff changeset
2404 (speedbar-do-function-pointer)))))
e47fc6bb028d (speedbar-default-directory-list): Made robust against deleted directories.
Richard M. Stallman <rms@gnu.org>
parents: 42456
diff changeset
2405 (setq sf (cdr sf)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2406 )))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2407
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2408 (defun speedbar-sort-tag-hierarchy (lst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2409 "Sort all elements of tag hierarchy LST."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2410 (sort (copy-alist lst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2411 (lambda (a b) (string< (car a) (car b)))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2412
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2413 (defun speedbar-prefix-group-tag-hierarchy (lst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2414 "Prefix group names for tag hierarchy LST."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2415 (let ((newlst nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2416 (sublst nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2417 (work-list nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2418 (junk-list nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2419 (short-group-list nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2420 (short-start-name nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2421 (short-end-name nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2422 (num-shorts-grouped 0)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2423 (bins (make-vector 256 nil))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2424 (diff-idx 0))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2425 ;; Break out sub-lists
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2426 (while lst
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2427 (if (and (listp (cdr-safe (car-safe lst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2428 ;; This one is for bovine tokens
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2429 (not (symbolp (car-safe (cdr-safe (car-safe lst))))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2430 (setq newlst (cons (car lst) newlst))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2431 (setq sublst (cons (car lst) sublst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2432 (setq lst (cdr lst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2433 ;; Reverse newlst because it was made backwards.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2434 ;; Sublist doesn't need reversing because the act
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2435 ;; of binning things will reverse it for us.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2436 (setq newlst (nreverse newlst))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2437 ;; Now, first find out how long our list is. Never let a
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2438 ;; list get-shorter than our minimum.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2439 (if (<= (length sublst) speedbar-tag-split-minimum-length)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2440 (setq work-list (nreverse sublst))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2441 (setq diff-idx (length (try-completion "" sublst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2442 ;; Sort the whole list into bins.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2443 (while sublst
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2444 (let ((e (car sublst))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2445 (s (car (car sublst))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2446 (cond ((<= (length s) diff-idx)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2447 ;; 0 storage bin for shorty.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2448 (aset bins 0 (cons e (aref bins 0))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2449 (t
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2450 ;; stuff into a bin based on ascii value at diff
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2451 (aset bins (aref s diff-idx)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2452 (cons e (aref bins (aref s diff-idx)))))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2453 (setq sublst (cdr sublst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2454 ;; Go through all our bins Stick singles into our
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2455 ;; junk-list, everything else as sublsts in work-list.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2456 ;; If two neighboring lists are both small, make a grouped
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2457 ;; group combinding those two sub-lists.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2458 (setq diff-idx 0)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2459 (while (> 256 diff-idx)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2460 (let ((l (nreverse;; Reverse the list since they are stuck in
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2461 ;; backwards.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2462 (aref bins diff-idx))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2463 (if l
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2464 (let ((tmp (cons (try-completion "" l) l)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2465 (if (or (> (length l) speedbar-tag-regroup-maximum-length)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2466 (> (+ (length l) (length short-group-list))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2467 speedbar-tag-split-minimum-length))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2468 (progn
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2469 ;; We have reached a longer list, so we
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2470 ;; must finish off a grouped group.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2471 (cond
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2472 ((and short-group-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2473 (= (length short-group-list)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2474 num-shorts-grouped))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2475 ;; All singles? Junk list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2476 (setq junk-list (append short-group-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2477 junk-list)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2478 ((= num-shorts-grouped 1)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2479 ;; Only one short group? Just stick it in
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2480 ;; there by itself. Make a group, and find
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2481 ;; a subexpression
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2482 (let ((subexpression (try-completion
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2483 "" short-group-list)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2484 (if (< (length subexpression)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2485 speedbar-tag-group-name-minimum-length)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2486 (setq subexpression
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2487 (concat short-start-name
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2488 " ("
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2489 (substring
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2490 (car (car short-group-list))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2491 (length short-start-name))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2492 ")")))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2493 (setq work-list
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2494 (cons (cons subexpression
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2495 short-group-list)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2496 work-list))))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2497 (short-group-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2498 ;; Multiple groups to be named in a special
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2499 ;; way by displaying the range over which we
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2500 ;; have grouped them.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2501 (setq work-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2502 (cons (cons (concat short-start-name
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2503 " to "
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2504 short-end-name)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2505 (nreverse short-group-list))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2506 work-list))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2507 ;; Reset short group list information every time.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2508 (setq short-group-list nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2509 short-start-name nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2510 short-end-name nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2511 num-shorts-grouped 0)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2512 ;; Ok, now that we cleaned up the short-group-list,
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2513 ;; we can deal with this new list, to decide if it
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2514 ;; should go on one of these sub-lists or not.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2515 (if (< (length l) speedbar-tag-regroup-maximum-length)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2516 (setq short-group-list (append short-group-list l)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2517 num-shorts-grouped (1+ num-shorts-grouped)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2518 short-end-name (car tmp)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2519 short-start-name (if short-start-name
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2520 short-start-name
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2521 (car tmp)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2522 (setq work-list (cons tmp work-list))))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2523 (setq diff-idx (1+ diff-idx))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2524 ;; Did we run out of things? Drop our new list onto the end.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2525 (cond
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2526 ((and short-group-list (= (length short-group-list) num-shorts-grouped))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2527 ;; All singles? Junk list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2528 (setq junk-list (append short-group-list junk-list)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2529 ((= num-shorts-grouped 1)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2530 ;; Only one short group? Just stick it in
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2531 ;; there by itself.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2532 (setq work-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2533 (cons (cons (try-completion "" short-group-list)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2534 short-group-list)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2535 work-list)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2536 (short-group-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2537 ;; Multiple groups to be named in a special
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2538 ;; way by displaying the range over which we
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2539 ;; have grouped them.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2540 (setq work-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2541 (cons (cons (concat short-start-name " to " short-end-name)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2542 short-group-list)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2543 work-list))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2544 ;; Reverse the work list nreversed when consing.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2545 (setq work-list (nreverse work-list))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2546 ;; Now, stick our new list onto the end of
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2547 (if work-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2548 (if junk-list
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2549 (append newlst work-list junk-list)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2550 (append newlst work-list))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2551 (append newlst junk-list))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2552
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2553 (defun speedbar-trim-words-tag-hierarchy (lst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2554 "Trim all words in a tag hierarchy.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2555 Base trimming information on word separators, and group names.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2556 Argument LST is the list of tags to trim."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2557 (let ((newlst nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2558 (sublst nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2559 (trim-prefix nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2560 (trim-chars 0)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2561 (trimlst nil))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2562 (while lst
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2563 (if (listp (cdr-safe (car-safe lst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2564 (setq newlst (cons (car lst) newlst))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2565 (setq sublst (cons (car lst) sublst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2566 (setq lst (cdr lst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2567 ;; Get the prefix to trim by. Make sure that we don't trim
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2568 ;; off silly pieces, only complete understandable words.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2569 (setq trim-prefix (try-completion "" sublst))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2570 (if (or (= (length sublst) 1)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2571 (not trim-prefix)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2572 (not (string-match "\\(\\w+\\W+\\)+" trim-prefix)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2573 (append (nreverse newlst) (nreverse sublst))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2574 (setq trim-prefix (substring trim-prefix (match-beginning 0)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2575 (match-end 0)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2576 (setq trim-chars (length trim-prefix))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2577 (while sublst
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2578 (setq trimlst (cons
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2579 (cons (substring (car (car sublst)) trim-chars)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2580 (cdr (car sublst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2581 trimlst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2582 sublst (cdr sublst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2583 ;; Put the lists together
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2584 (append (nreverse newlst) trimlst))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2585
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2586 (defun speedbar-simple-group-tag-hierarchy (lst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2587 "Create a simple 'Tags' group with orphaned tags.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2588 Argument LST is the list of tags to sort into groups."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2589 (let ((newlst nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2590 (sublst nil))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2591 (while lst
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2592 (if (listp (cdr-safe (car-safe lst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2593 (setq newlst (cons (car lst) newlst))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2594 (setq sublst (cons (car lst) sublst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2595 (setq lst (cdr lst)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2596 (if (not newlst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2597 (nreverse sublst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2598 (setq newlst (cons (cons "Tags" (nreverse sublst)) newlst))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2599 (nreverse newlst))))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2600
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2601 (defun speedbar-create-tag-hierarchy (lst)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2602 "Adjust the tag hierarchy in LST, and return it.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2603 This uses `speedbar-tag-hierarchy-method' to determine how to adjust
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2604 the list."
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
2605 (let* ((f (save-excursion
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
2606 (forward-line -1)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
2607 (speedbar-line-path)))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
2608 (methods (if (get-file-buffer f)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
2609 (save-excursion (set-buffer (get-file-buffer f))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
2610 speedbar-tag-hierarchy-method)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2611 speedbar-tag-hierarchy-method))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2612 (lst (if (fboundp 'copy-tree)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2613 (copy-tree lst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2614 lst)))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2615 (while methods
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2616 (setq lst (funcall (car methods) lst)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2617 methods (cdr methods)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2618 lst))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2619
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2620 (defun speedbar-insert-generic-list (level lst expand-fun find-fun)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2621 "At LEVEL, insert a generic multi-level alist LST.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2622 Associations with lists get {+} tags (to expand into more nodes) and
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2623 those with positions just get a > as the indicator. {+} buttons will
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2624 have the function EXPAND-FUN and the token is the CDR list. The token
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2625 name will have the function FIND-FUN and not token."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2626 ;; Remove imenu rescan button
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2627 (if (string= (car (car lst)) "*Rescan*")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2628 (setq lst (cdr lst)))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2629 ;; Adjust the list.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2630 (setq lst (speedbar-create-tag-hierarchy lst))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2631 ;; insert the parts
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2632 (while lst
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2633 (cond ((null (car-safe lst)) nil) ;this would be a separator
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2634 ((or (numberp (cdr-safe (car-safe lst)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2635 (markerp (cdr-safe (car-safe lst))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2636 (speedbar-make-tag-line nil nil nil nil ;no expand button data
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2637 (car (car lst)) ;button name
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2638 find-fun ;function
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2639 (cdr (car lst)) ;token is position
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2640 'speedbar-tag-face
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2641 (1+ level)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2642 ((listp (cdr-safe (car-safe lst)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2643 (speedbar-make-tag-line 'curly ?+ expand-fun (cdr (car lst))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2644 (car (car lst)) ;button name
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2645 nil nil 'speedbar-tag-face
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2646 (1+ level)))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2647 (t (speedbar-message "Ooops!")))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2648 (setq lst (cdr lst))))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2649
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2650 (defun speedbar-insert-imenu-list (indent lst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2651 "At level INDENT, insert the imenu generated LST."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2652 (speedbar-insert-generic-list indent lst
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2653 'speedbar-tag-expand
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2654 'speedbar-tag-find))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48716
diff changeset
2655
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2656 (defun speedbar-insert-etags-list (indent lst)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2657 "At level INDENT, insert the etags generated LST."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2658 (speedbar-insert-generic-list indent lst
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2659 'speedbar-tag-expand
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2660 'speedbar-tag-find))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2661
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2662 ;;; Timed functions
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2663 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2664 (defun speedbar-update-contents ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2665 "Generically update the contents of the speedbar buffer."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2666 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2667 ;; Set the current special buffer
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2668 (setq speedbar-desired-buffer nil)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2669 ;; Check for special modes
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2670 (speedbar-maybe-add-localized-support (current-buffer))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2671 ;; Choose the correct method of doodling.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2672 (if (and speedbar-mode-specific-contents-flag
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2673 (listp speedbar-special-mode-expansion-list)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2674 speedbar-special-mode-expansion-list
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2675 (local-variable-p
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2676 'speedbar-special-mode-expansion-list
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2677 (current-buffer)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2678 ;;(eq (get major-mode 'mode-class 'special)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2679 (speedbar-update-special-contents)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2680 (speedbar-update-directory-contents)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2681
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2682 (defun speedbar-update-directory-contents ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2683 "Update the contents of the speedbar buffer based on the current directory."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2684 (let ((cbd (expand-file-name default-directory))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2685 cbd-parent
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2686 (funclst (speedbar-initial-expansion-list))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2687 (cache speedbar-full-text-cache)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2688 ;; disable stealth during update
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2689 (speedbar-stealthy-function-list nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2690 (use-cache nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2691 (expand-local nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2692 ;; Because there is a bug I can't find just yet
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2693 (inhibit-quit nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2694 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2695 (set-buffer speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2696 ;; If we are updating contents to where we are, then this is
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2697 ;; really a request to update existing contents, so we must be
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2698 ;; careful with our text cache!
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2699 (if (member cbd speedbar-shown-directories)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2700 (progn
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2701 (setq cache nil)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2702 ;; If the current directory is not the last element in the dir
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2703 ;; list, then we ALSO need to zap the list of expanded directories
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2704 (if (/= (length (member cbd speedbar-shown-directories)) 1)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2705 (setq speedbar-shown-directories (list cbd))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2706
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2707 ;; Build cbd-parent, and see if THAT is in the current shown
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2708 ;; directories. First, go through pains to get the parent directory
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2709 (if (and speedbar-smart-directory-expand-flag
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2710 (save-match-data
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2711 (setq cbd-parent cbd)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
2712 (if (string-match "[/\\]$" cbd-parent)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2713 (setq cbd-parent (substring cbd-parent 0
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2714 (match-beginning 0))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2715 (setq cbd-parent (file-name-directory cbd-parent)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2716 (member cbd-parent speedbar-shown-directories))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2717 (setq expand-local t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2718
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2719 ;; If this directory is NOT in the current list of available
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2720 ;; paths, then use the cache, and set the cache to our new
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2721 ;; value. Make sure to unhighlight the current file, or if we
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2722 ;; come back to this directory, it might be a different file
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2723 ;; and then we get a mess!
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2724 (if (> (point-max) 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2725 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2726 (speedbar-clear-current-file)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2727 (setq speedbar-full-text-cache
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2728 (cons speedbar-shown-directories (buffer-string)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2729
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2730 ;; Check if our new directory is in the list of directories
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2731 ;; shown in the text-cache
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2732 (if (member cbd (car cache))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2733 (setq speedbar-shown-directories (car cache)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2734 use-cache t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2735 ;; default the shown directories to this list...
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2736 (setq speedbar-shown-directories (list cbd)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2737 ))
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2738 (if (not expand-local) (setq speedbar-last-selected-file nil))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2739 (speedbar-with-writable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2740 (if (and expand-local
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2741 ;; Find this directory as a speedbar node.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2742 (speedbar-path-line cbd))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2743 ;; Open it.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2744 (speedbar-expand-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2745 (erase-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2746 (cond (use-cache
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2747 (setq default-directory
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2748 (nth (1- (length speedbar-shown-directories))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2749 speedbar-shown-directories))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2750 (insert (cdr cache)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2751 (t
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2752 (while funclst
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2753 (setq default-directory cbd)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2754 (funcall (car funclst) cbd 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2755 (setq funclst (cdr funclst))))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2756 (goto-char (point-min)))))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2757 (speedbar-reconfigure-keymaps))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2758
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2759 (defun speedbar-update-special-contents ()
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
2760 "Use the mode-specific variable to fill in the speedbar buffer.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2761 This should only be used by modes classified as special."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2762 (let ((funclst speedbar-special-mode-expansion-list)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2763 (specialbuff (current-buffer)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2764 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2765 (setq speedbar-desired-buffer specialbuff)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2766 (set-buffer speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2767 ;; If we are leaving a directory, cache it.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2768 (if (not speedbar-shown-directories)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2769 ;; Do nothing
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2770 nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2771 ;; Clean up directory maintenance stuff
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2772 (speedbar-clear-current-file)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2773 (setq speedbar-full-text-cache
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2774 (cons speedbar-shown-directories (buffer-string))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2775 speedbar-shown-directories nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2776 ;; Now fill in the buffer with our newly found specialized list.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2777 (speedbar-with-writable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2778 (while funclst
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2779 ;; We do not erase the buffer because these functions may
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2780 ;; decide NOT to update themselves.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2781 (funcall (car funclst) specialbuff)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2782 (setq funclst (cdr funclst))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2783 (goto-char (point-min))))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2784 (speedbar-reconfigure-keymaps))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2785
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2786 (defun speedbar-timer-fn ()
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2787 "Run whenever Emacs is idle to update the speedbar item."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2788 (if (not (and (frame-live-p speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2789 (frame-live-p speedbar-attached-frame)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2790 (speedbar-set-timer nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2791 ;; Save all the match data so that we don't mess up executing fns
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2792 (save-match-data
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2793 ;; Only do stuff if the frame is visible, not an icon, and if
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2794 ;; it is currently flagged to do something.
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2795 (if (and speedbar-update-flag
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2796 (frame-visible-p speedbar-frame)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2797 (not (eq (frame-visible-p speedbar-frame) 'icon)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2798 (let ((af (selected-frame)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2799 (save-window-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2800 (select-frame speedbar-attached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2801 ;; make sure we at least choose a window to
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2802 ;; get a good directory from
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2803 (if (window-minibuffer-p (selected-window))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2804 nil
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2805 ;; Check for special modes
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2806 (speedbar-maybe-add-localized-support (current-buffer))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2807 ;; Update for special mode all the time!
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2808 (if (and speedbar-mode-specific-contents-flag
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2809 (listp speedbar-special-mode-expansion-list)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2810 speedbar-special-mode-expansion-list
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2811 (local-variable-p
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2812 'speedbar-special-mode-expansion-list
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2813 (current-buffer)))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2814 ;;(eq (get major-mode 'mode-class 'special)))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2815 (progn
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2816 (if (<= 2 speedbar-verbosity-level)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2817 (speedbar-message
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2818 "Updating speedbar to special mode: %s..."
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2819 major-mode))
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2820 (speedbar-update-special-contents)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2821 (if (<= 2 speedbar-verbosity-level)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2822 (progn
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2823 (speedbar-message
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2824 "Updating speedbar to special mode: %s...done"
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2825 major-mode)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2826 (speedbar-message nil))))
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2827 ;; Update all the contents if directories change!
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2828 (if (or (member (expand-file-name default-directory)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2829 speedbar-shown-directories)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2830 (and speedbar-ignored-path-regexp
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2831 (string-match
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2832 speedbar-ignored-path-regexp
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2833 (expand-file-name default-directory)))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2834 (member major-mode speedbar-ignored-modes)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2835 (eq af speedbar-frame)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2836 (not (buffer-file-name)))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2837 nil
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2838 (if (<= 1 speedbar-verbosity-level)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2839 (speedbar-message "Updating speedbar to: %s..."
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2840 default-directory))
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2841 (speedbar-update-directory-contents)
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2842 (if (<= 1 speedbar-verbosity-level)
22906
adfc04c48002 Updated refresh messages to clear themselves.
Eric M. Ludlam <zappo@gnu.org>
parents: 22893
diff changeset
2843 (progn
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2844 (speedbar-message "Updating speedbar to: %s...done"
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2845 default-directory)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2846 (speedbar-message nil)))))
23073
a0e975baf1e1 (speedbar-timer-fn): Disable updating if the frame
Eric M. Ludlam <zappo@gnu.org>
parents: 23015
diff changeset
2847 (select-frame af)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2848 ;; Now run stealthy updates of time-consuming items
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2849 (speedbar-stealthy-updates)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2850 ;; Now run the mouse tracking system
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2851 (speedbar-show-info-under-mouse)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2852 (run-hooks 'speedbar-timer-hook))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2853
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2854
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2855 ;;; Stealthy activities
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2856 ;;
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2857 (defvar speedbar-stealthy-update-recurse nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2858 "Recursion avoidance variable for stealthy update.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2859
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2860 (defun speedbar-stealthy-updates ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2861 "For a given speedbar, run all items in the stealthy function list.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2862 Each item returns t if it completes successfully, or nil if
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2863 interrupted by the user."
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2864 (if (not speedbar-stealthy-update-recurse)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2865 (let ((l (speedbar-initial-stealthy-functions))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2866 (speedbar-stealthy-update-recurse t))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2867 (unwind-protect
23085
46deaf6e62a9 (speedbar-stealthy-updates): Do all updates w/ the the buffer writable.
Eric M. Ludlam <zappo@gnu.org>
parents: 23084
diff changeset
2868 (speedbar-with-writable
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
2869 (while (and l (funcall (car l)))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
2870 ;;(sit-for 0)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
2871 (setq l (cdr l))))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
2872 ;;(speedbar-message "Exit with %S" (car l))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2873 ))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2874
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2875 (defun speedbar-reset-scanners ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2876 "Reset any variables used by functions in the stealthy list as state.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2877 If new functions are added, their state needs to be updated here."
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2878 (setq speedbar-vc-to-do-point t
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2879 speedbar-obj-to-do-point t)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2880 (run-hooks 'speedbar-scanner-reset-hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2881 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2882
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2883 (defun speedbar-find-selected-file (file)
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
2884 "Go to the line where FILE is."
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2885 (goto-char (point-min))
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2886 (let ((m nil))
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2887 (while (and (setq m (re-search-forward
37891
2fec97b8ea55 (speedbar-find-selected-file): RE-quote the filename.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37180
diff changeset
2888 (concat " \\(" (regexp-quote (file-name-nondirectory file))
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2889 "\\)\\(" speedbar-indicator-regex "\\)?\n")
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2890 nil t))
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2891 (not (string= file
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2892 (concat
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2893 (speedbar-line-path
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2894 (save-excursion
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2895 (goto-char (match-beginning 0))
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2896 (beginning-of-line)
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2897 (save-match-data
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2898 (looking-at "[0-9]+:")
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2899 (string-to-number (match-string 0)))))
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2900 (match-string 1))))))
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2901 (if m
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2902 (progn
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2903 (goto-char (match-beginning 1))
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2904 (match-string 1)))))
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2905
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2906 (defun speedbar-clear-current-file ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2907 "Locate the file thought to be current, and remove its highlighting."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2908 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2909 (set-buffer speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2910 (if speedbar-last-selected-file
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2911 (speedbar-with-writable
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2912 (if (speedbar-find-selected-file speedbar-last-selected-file)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2913 (put-text-property (match-beginning 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2914 (match-end 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2915 'face
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2916 'speedbar-file-face))))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2917
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2918 (defun speedbar-update-current-file ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2919 "Find the current file, and update our visuals to indicate its name.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2920 This is specific to file names. If the file name doesn't show up, but
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2921 it should be in the list, then the directory cache needs to be
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2922 updated."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2923 (let* ((lastf (selected-frame))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2924 (newcfd (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2925 (select-frame speedbar-attached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2926 (let ((rf (if (buffer-file-name)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2927 (buffer-file-name)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2928 nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2929 (select-frame lastf)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2930 rf)))
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2931 (newcf (if newcfd newcfd))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2932 (lastb (current-buffer))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2933 (sucf-recursive (boundp 'sucf-recursive))
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
2934 (case-fold-search read-file-name-completion-ignore-case))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2935 (if (and newcf
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2936 ;; check here, that way we won't refresh to newcf until
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2937 ;; its been written, thus saving ourselves some time
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2938 (file-exists-p newcf)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2939 (not (string= newcf speedbar-last-selected-file)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2940 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2941 ;; It is important to select the frame, otherwise the window
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2942 ;; we want the cursor to move in will not be updated by the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2943 ;; search-forward command.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2944 (select-frame speedbar-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2945 ;; Remove the old file...
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2946 (speedbar-clear-current-file)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2947 ;; now highlight the new one.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2948 (set-buffer speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2949 (speedbar-with-writable
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2950 (if (speedbar-find-selected-file newcf)
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2951 ;; put the property on it
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2952 (put-text-property (match-beginning 1)
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2953 (match-end 1)
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2954 'face
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2955 'speedbar-selected-face)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2956 ;; Oops, it's not in the list. Should it be?
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2957 (if (and (string-match speedbar-file-regexp newcf)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2958 (string= (file-name-directory newcfd)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2959 (expand-file-name default-directory)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2960 ;; yes, it is (we will ignore unknowns for now...)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2961 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2962 (speedbar-refresh)
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
2963 (if (speedbar-find-selected-file newcf)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2964 ;; put the property on it
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2965 (put-text-property (match-beginning 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2966 (match-end 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2967 'face
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2968 'speedbar-selected-face)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2969 ;; if it's not in there now, whatever...
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2970 ))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2971 (setq speedbar-last-selected-file newcf))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2972 (if (not sucf-recursive)
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
2973 (progn
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
2974 (speedbar-center-buffer-smartly)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
2975 (speedbar-position-cursor-on-line)
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
2976 ))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2977 (set-buffer lastb)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2978 (select-frame lastf)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2979 )))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2980 ;; return that we are done with this activity.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2981 t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
2982
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2983 (defun speedbar-add-indicator (indicator-string &optional replace-this)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2984 "Add INDICATOR-STRING to the end of this speedbar line.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2985 If INDICATOR-STRING is space, and REPLACE-THIS is a character, then
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
2986 the existing indicator is removed. If there is already an
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2987 indicator, then do not add a space."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2988 (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2989 ;; The nature of the beast: Assume we are in "the right place"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2990 (end-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2991 (skip-chars-backward (concat " " speedbar-vc-indicator
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2992 (car speedbar-obj-indicator)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2993 (cdr speedbar-obj-indicator)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2994 (if (and (not (looking-at speedbar-indicator-regex))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2995 (not (string= indicator-string " ")))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2996 (insert speedbar-indicator-separator))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2997 (speedbar-with-writable
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2998 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
2999 (if (and replace-this
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3000 (re-search-forward replace-this (save-excursion (end-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3001 (point))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3002 t))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3003 (delete-region (match-beginning 0) (match-end 0))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3004 (end-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3005 (if (not (string= " " indicator-string))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3006 (insert indicator-string))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3007
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3008 ;; Load efs/ange-ftp only if compiling to remove byte-compiler warnings.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3009 ;; Steven L Baur <steve@xemacs.org> said this was important:
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3010 (eval-when-compile (or (featurep 'xemacs)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3011 (condition-case () (require 'efs)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3012 (error (require 'ange-ftp)))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3013
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3014 (defun speedbar-check-vc ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3015 "Scan all files in a directory, and for each see if it's checked out.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3016 See `speedbar-this-file-in-vc' and `speedbar-vc-check-dir-p' for how
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3017 to add more types of version control systems."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3018 ;; Check for to-do to be reset. If reset but no RCS is available
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3019 ;; then set to nil (do nothing) otherwise, start at the beginning
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3020 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3021 (set-buffer speedbar-buffer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3022 (if (and speedbar-vc-do-check (eq speedbar-vc-to-do-point t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3023 (speedbar-vc-check-dir-p default-directory)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3024 (not (or (and (featurep 'ange-ftp)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3025 (string-match
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3026 (car (if speedbar-xemacsp
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3027 ange-ftp-path-format
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3028 ange-ftp-name-format))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3029 (expand-file-name default-directory)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3030 ;; efs support: Bob Weiner
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3031 (and (featurep 'efs)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3032 (string-match
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3033 (car efs-path-regexp)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3034 (expand-file-name default-directory))))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3035 (setq speedbar-vc-to-do-point 0))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3036 (if (numberp speedbar-vc-to-do-point)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3037 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3038 (goto-char speedbar-vc-to-do-point)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3039 (while (and (not (input-pending-p))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3040 (re-search-forward "^\\([0-9]+\\):\\s-*\\[[+-]\\] "
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3041 nil t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3042 (setq speedbar-vc-to-do-point (point))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3043 (if (speedbar-check-vc-this-line (match-string 1))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3044 (speedbar-add-indicator speedbar-vc-indicator
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3045 (regexp-quote speedbar-vc-indicator))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3046 (speedbar-add-indicator " "
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3047 (regexp-quote speedbar-vc-indicator))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3048 (if (input-pending-p)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3049 ;; return that we are incomplete
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3050 nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3051 ;; we are done, set to-do to nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3052 (setq speedbar-vc-to-do-point nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3053 ;; and return t
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3054 t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3055 t)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3056
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3057 (defun speedbar-check-vc-this-line (depth)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3058 "Return t if the file on this line is check of of a version control system.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3059 Parameter DEPTH is a string with the current depth of indentation of
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3060 the file being checked."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3061 (let* ((d (string-to-int depth))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3062 (f (speedbar-line-path d))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3063 (fn (buffer-substring-no-properties
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3064 ;; Skip-chars: thanks ptype@dra.hmg.gb
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3065 (point) (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3066 (skip-chars-forward "^ "
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3067 (save-excursion (end-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3068 (point)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3069 (point))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3070 (fulln (concat f fn)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3071 (if (<= 2 speedbar-verbosity-level)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
3072 (speedbar-message "Speedbar vc check...%s" fulln))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3073 (and (file-writable-p fulln)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3074 (speedbar-this-file-in-vc f fn))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3075
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3076 (defun speedbar-vc-check-dir-p (path)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3077 "Return t if we should bother checking PATH for version control files.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3078 This can be overloaded to add new types of version control systems."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3079 (or
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3080 ;; Local RCS
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3081 (file-exists-p (concat path "RCS/"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3082 ;; Local SCCS
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3083 (file-exists-p (concat path "SCCS/"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3084 ;; Remote SCCS project
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3085 (let ((proj-dir (getenv "PROJECTDIR")))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3086 (if proj-dir
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3087 (file-exists-p (concat proj-dir "/SCCS"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3088 nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3089 ;; User extension
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3090 (run-hook-with-args 'speedbar-vc-path-enable-hook path)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3091 ))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3092
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3093 (defun speedbar-this-file-in-vc (path name)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3094 "Check to see if the file in PATH with NAME is in a version control system.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3095 You can add new VC systems by overriding this function. You can
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3096 optimize this function by overriding it and only doing those checks
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3097 that will occur on your system."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3098 (or
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3099 ;; RCS file name
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3100 (file-exists-p (concat path "RCS/" name ",v"))
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
3101 (file-exists-p (concat path "RCS/" name))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3102 ;; Local SCCS file name
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3103 (file-exists-p (concat path "SCCS/s." name))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3104 ;; Remote SCCS file name
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3105 (let ((proj-dir (getenv "PROJECTDIR")))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3106 (if proj-dir
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3107 (file-exists-p (concat proj-dir "/SCCS/s." name))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3108 nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3109 ;; User extension
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3110 (run-hook-with-args 'speedbar-vc-in-control-hook path name)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3111 ))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3112
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3113 ;; Objet File scanning
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3114 (defun speedbar-check-objects ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3115 "Scan all files in a directory, and for each see if there is an object.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3116 See `speedbar-check-obj-this-line' and `speedbar-obj-alist' for how
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3117 to add more object types."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3118 ;; Check for to-do to be reset. If reset but no RCS is available
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3119 ;; then set to nil (do nothing) otherwise, start at the beginning
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3120 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3121 (set-buffer speedbar-buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3122 (if (and speedbar-obj-do-check (eq speedbar-obj-to-do-point t))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3123 (setq speedbar-obj-to-do-point 0))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3124 (if (numberp speedbar-obj-to-do-point)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3125 (progn
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3126 (goto-char speedbar-obj-to-do-point)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3127 (while (and (not (input-pending-p))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3128 (re-search-forward "^\\([0-9]+\\):\\s-*\\[[+-]\\] "
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3129 nil t))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3130 (setq speedbar-obj-to-do-point (point))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3131 (let ((ind (speedbar-check-obj-this-line (match-string 1))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3132 (if (not ind) (setq ind " "))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3133 (speedbar-add-indicator ind (concat
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3134 (car speedbar-obj-indicator)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3135 "\\|"
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3136 (cdr speedbar-obj-indicator)))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3137 (if (input-pending-p)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3138 ;; return that we are incomplete
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3139 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3140 ;; we are done, set to-do to nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3141 (setq speedbar-obj-to-do-point nil)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3142 ;; and return t
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3143 t))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3144 t)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3145
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3146 (defun speedbar-check-obj-this-line (depth)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3147 "Return t if the file on this line has an associated object.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3148 Parameter DEPTH is a string with the current depth of indentation of
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3149 the file being checked."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3150 (let* ((d (string-to-int depth))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3151 (f (speedbar-line-path d))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3152 (fn (buffer-substring-no-properties
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3153 ;; Skip-chars: thanks ptype@dra.hmg.gb
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3154 (point) (progn
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3155 (skip-chars-forward "^ "
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3156 (save-excursion (end-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3157 (point)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3158 (point))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3159 (fulln (concat f fn)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3160 (if (<= 2 speedbar-verbosity-level)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
3161 (speedbar-message "Speedbar obj check...%s" fulln))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3162 (let ((oa speedbar-obj-alist))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3163 (while (and oa (not (string-match (car (car oa)) fulln)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3164 (setq oa (cdr oa)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3165 (if (not (and oa (file-exists-p (concat (file-name-sans-extension fulln)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3166 (cdr (car oa))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3167 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3168 ;; Find out if the object is out of date or not.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3169 (let ((date1 (nth 5 (file-attributes fulln)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3170 (date2 (nth 5 (file-attributes (concat
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3171 (file-name-sans-extension fulln)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3172 (cdr (car oa)))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3173 (if (or (< (car date1) (car date2))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3174 (and (= (car date1) (car date2))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3175 (< (nth 1 date1) (nth 1 date2))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3176 (car speedbar-obj-indicator)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3177 (cdr speedbar-obj-indicator)))))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3178
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3179 ;;; Clicking Activity
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3180 ;;
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3181 (defun speedbar-mouse-set-point (e)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3182 "Set POINT based on event E.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3183 Handle clicking on images in XEmacs."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3184 (if (and (fboundp 'event-over-glyph-p) (event-over-glyph-p e))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3185 ;; We are in XEmacs, and clicked on a picture
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3186 (let ((ext (event-glyph-extent e)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3187 ;; This position is back inside the extent where the
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3188 ;; junk we pushed into the property list lives.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3189 (if (extent-end-position ext)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3190 (goto-char (1- (extent-end-position ext)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3191 (mouse-set-point e)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3192 ;; We are not in XEmacs, OR we didn't click on a picture.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3193 (mouse-set-point e)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3194
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3195 (defun speedbar-quick-mouse (e)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3196 "Since mouse events are strange, this will keep the mouse nicely positioned.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3197 This should be bound to mouse event E."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3198 (interactive "e")
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3199 (speedbar-mouse-set-point e)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3200 (speedbar-position-cursor-on-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3201 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3202
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3203 (defun speedbar-position-cursor-on-line ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3204 "Position the cursor on a line."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3205 (let ((oldpos (point)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3206 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3207 (if (looking-at "[0-9]+:\\s-*..?.? ")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3208 (goto-char (1- (match-end 0)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3209 (goto-char oldpos))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3210
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3211 (defun speedbar-power-click (e)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3212 "Activate any speedbar button as a power click.
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3213 A power click will dispose of cached data (if available) or bring a buffer
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3214 up into a different window.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3215 This should be bound to mouse event E."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3216 (interactive "e")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3217 (let ((speedbar-power-click t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3218 (speedbar-click e)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3219
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3220 (defun speedbar-click (e)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3221 "Activate any speedbar buttons where the mouse is clicked.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3222 This must be bound to a mouse event. A button is any location of text
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3223 with a mouse face that has a text property called `speedbar-function'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3224 This should be bound to mouse event E."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3225 (interactive "e")
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3226 (speedbar-mouse-set-point e)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3227 (speedbar-do-function-pointer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3228 (speedbar-quick-mouse e))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3229
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3230 (defun speedbar-double-click (e)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3231 "Activate any speedbar buttons where the mouse is clicked.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3232 This must be bound to a mouse event. A button is any location of text
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3233 with a mouse face that has a text property called `speedbar-function'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3234 This should be bound to mouse event E."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3235 (interactive "e")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3236 ;; Emacs only. XEmacs handles this via `mouse-track-click-hook'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3237 (cond ((eq (car e) 'down-mouse-1)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3238 (speedbar-mouse-set-point e))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3239 ((eq (car e) 'mouse-1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3240 (speedbar-quick-mouse e))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3241 ((or (eq (car e) 'double-down-mouse-1)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3242 (eq (car e) 'triple-down-mouse-1))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3243 (speedbar-mouse-set-point e)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3244 (speedbar-do-function-pointer)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3245 (speedbar-quick-mouse e))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3246
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3247 (defun speedbar-do-function-pointer ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3248 "Look under the cursor and examine the text properties.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3249 From this extract the file/tag name, token, indentation level and call
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3250 a function if appropriate."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3251 (let* ((fn (get-text-property (point) 'speedbar-function))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3252 (tok (get-text-property (point) 'speedbar-token))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3253 ;; The 1-,+ is safe because scaning starts AFTER the point
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3254 ;; specified. This lets the search include the character the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3255 ;; cursor is on.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3256 (tp (previous-single-property-change
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3257 (1+ (point)) 'speedbar-function))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3258 (np (next-single-property-change
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3259 (point) 'speedbar-function))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3260 (txt (buffer-substring-no-properties (or tp (point-min))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3261 (or np (point-max))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3262 (dent (save-excursion (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3263 (string-to-number
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3264 (if (looking-at "[0-9]+")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3265 (buffer-substring-no-properties
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3266 (match-beginning 0) (match-end 0))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3267 "0")))))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
3268 ;;(speedbar-message "%S:%S:%S:%s" fn tok txt dent)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3269 (and fn (funcall fn txt tok dent)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3270 (speedbar-position-cursor-on-line))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3271
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3272 ;;; Reading info from the speedbar buffer
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3273 ;;
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3274 (defun speedbar-line-text (&optional p)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3275 "Retrieve the text after prefix junk for the current line.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3276 Optional argument P is where to start the search from."
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3277 (save-excursion
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3278 (if p (goto-char p))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3279 (beginning-of-line)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3280 (if (looking-at (concat
24232
446e5ef3f423 (speedbar-line-token): Match {...} instead of [...].
Richard M. Stallman <rms@gnu.org>
parents: 24154
diff changeset
3281 "\\([0-9]+\\): *[[<{][-+?][]>}] \\([^ \n]+\\)\\("
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3282 speedbar-indicator-regex "\\)?"))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3283 (match-string 2)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3284 nil)))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3285
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3286 (defun speedbar-line-token (&optional p)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3287 "Retrieve the token information after the prefix junk for the current line.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3288 Optional argument P is where to start the search from."
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3289 (save-excursion
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3290 (if p (goto-char p))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3291 (beginning-of-line)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3292 (if (looking-at (concat
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3293 "\\([0-9]+\\): *[[<{]?[-+?=][]>}@()|] \\([^ \n]+\\)\\("
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3294 speedbar-indicator-regex "\\)?"))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3295 (progn
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3296 (goto-char (match-beginning 2))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3297 (get-text-property (point) 'speedbar-token))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3298 nil)))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3299
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3300 (defun speedbar-line-file (&optional p)
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3301 "Retrieve the file or whatever from the line at point P.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3302 The return value is a string representing the file. If it is a
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3303 directory, then it is the directory name."
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3304 (save-match-data
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3305 (let ((f (speedbar-line-text p)))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3306 (if f
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3307 (let* ((depth (string-to-int (match-string 1)))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3308 (path (speedbar-line-path depth)))
36047
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
3309 (if (file-exists-p (concat path f))
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
3310 (concat path f)
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
3311 nil))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3312 nil))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3313
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3314 (defun speedbar-goto-this-file (file)
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3315 "If FILE is displayed, go to this line and return t.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3316 Otherwise do not move and return nil."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3317 (let ((path (substring (file-name-directory (expand-file-name file))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3318 (length (expand-file-name default-directory))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3319 (dest (point)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3320 (save-match-data
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3321 (goto-char (point-min))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3322 ;; scan all the directories
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3323 (while (and path (not (eq path t)))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3324 (if (string-match "^[/\\]?\\([^/\\]+\\)" path)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3325 (let ((pp (match-string 1 path)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3326 (if (save-match-data
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3327 (re-search-forward (concat "> " (regexp-quote pp) "$")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3328 nil t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3329 (setq path (substring path (match-end 1)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3330 (setq path nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3331 (setq path t)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3332 ;; find the file part
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3333 (if (or (not path) (string= (file-name-nondirectory file) ""))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3334 ;; only had a dir part
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3335 (if path
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3336 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3337 (speedbar-position-cursor-on-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3338 t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3339 (goto-char dest) nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3340 ;; find the file part
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3341 (let ((nd (file-name-nondirectory file)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3342 (if (re-search-forward
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3343 (concat "] \\(" (regexp-quote nd)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3344 "\\)\\(" speedbar-indicator-regex "\\)$")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3345 nil t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3346 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3347 (speedbar-position-cursor-on-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3348 t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3349 (goto-char dest)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3350 nil))))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3351
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3352 (defun speedbar-line-path (&optional depth)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3353 "Retrieve the pathname associated with the current line.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3354 This may require traversing backwards from DEPTH and combining the default
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3355 directory with these items. This function is replaceable in
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3356 `speedbar-mode-functions-list' as `speedbar-line-path'."
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3357 (let ((rf (speedbar-fetch-replacement-function 'speedbar-line-path)))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3358 (if rf (funcall rf depth) default-directory)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48716
diff changeset
3359
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3360 (defun speedbar-files-line-path (&optional depth)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3361 "Retrieve the pathname associated with the current line.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3362 This may require traversing backwards from DEPTH and combining the default
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3363 directory with these items."
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3364 (save-excursion
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3365 (save-match-data
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3366 (if (not depth)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3367 (progn
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3368 (beginning-of-line)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3369 (looking-at "^\\([0-9]+\\):")
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3370 (setq depth (string-to-int (match-string 1)))))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3371 (let ((path nil))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3372 (setq depth (1- depth))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3373 (while (/= depth -1)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3374 (if (not (re-search-backward (format "^%d:" depth) nil t))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3375 (error "Error building path of tag")
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3376 (cond ((looking-at "[0-9]+:\\s-*<->\\s-+\\([^\n]+\\)$")
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3377 (setq path (concat (buffer-substring-no-properties
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3378 (match-beginning 1) (match-end 1))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3379 "/"
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3380 path)))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3381 ((looking-at "[0-9]+:\\s-*[-]\\s-+\\([^\n]+\\)$")
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3382 ;; This is the start of our path.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3383 (setq path (buffer-substring-no-properties
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3384 (match-beginning 1) (match-end 1))))))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3385 (setq depth (1- depth)))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3386 (if (and path
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3387 (string-match (concat speedbar-indicator-regex "$")
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3388 path))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3389 (setq path (substring path 0 (match-beginning 0))))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3390 (concat default-directory path)))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3391
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3392 (defun speedbar-path-line (path)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3393 "Position the cursor on the line specified by PATH."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3394 (save-match-data
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3395 (if (string-match "[/\\]$" path)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3396 (setq path (substring path 0 (match-beginning 0))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3397 (let ((nomatch t) (depth 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3398 (fname (file-name-nondirectory path))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3399 (pname (file-name-directory path)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3400 (if (not (member pname speedbar-shown-directories))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3401 (error "Internal Error: File %s not shown in speedbar" path))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3402 (goto-char (point-min))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3403 (while (and nomatch
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3404 (re-search-forward
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3405 (concat "[]>] \\(" (regexp-quote fname)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3406 "\\)\\(" speedbar-indicator-regex "\\)?$")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3407 nil t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3408 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3409 (looking-at "\\([0-9]+\\):")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3410 (setq depth (string-to-int (match-string 0))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3411 nomatch (not (string= pname (speedbar-line-path depth))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3412 (end-of-line))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3413 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3414 (not nomatch))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3415
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3416 (defun speedbar-edit-line ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3417 "Edit whatever tag or file is on the current speedbar line."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3418 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3419 (or (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3420 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3421 ;; If this fails, then it is a non-standard click, and as such,
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3422 ;; perfectly allowed.
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
3423 (if (re-search-forward "[]>?}] [^ ]"
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3424 (save-excursion (end-of-line) (point))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3425 t)
53487
25ff62ff164d (speedbar-edit-line): Change regexp to position
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
3426 (progn
25ff62ff164d (speedbar-edit-line): Change regexp to position
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
3427 (forward-char -1)
25ff62ff164d (speedbar-edit-line): Change regexp to position
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
3428 (speedbar-do-function-pointer))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3429 nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3430 (speedbar-do-function-pointer)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3431
28925
89a795d90175 (speedbar-recenter): Typo, and fix logic.
Eric M. Ludlam <zappo@gnu.org>
parents: 28902
diff changeset
3432 (defun speedbar-expand-line (&optional arg)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3433 "Expand the line under the cursor.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3434 With universal argument ARG, flush cached data."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3435 (interactive "P")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3436 (beginning-of-line)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3437 (let ((speedbar-power-click arg))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3438 (condition-case nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3439 (progn
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3440 (re-search-forward ":\\s-*.\\+. "
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3441 (save-excursion (end-of-line) (point)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3442 (forward-char -2)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3443 (speedbar-do-function-pointer))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3444 (error (speedbar-position-cursor-on-line)))))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48716
diff changeset
3445
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3446 (defun speedbar-flush-expand-line ()
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3447 "Expand the line under the cursor and flush any cached information."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3448 (interactive)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3449 (speedbar-expand-line 1))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48716
diff changeset
3450
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3451 (defun speedbar-contract-line ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3452 "Contract the line under the cursor."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3453 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3454 (beginning-of-line)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3455 (condition-case nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3456 (progn
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3457 (re-search-forward ":\\s-*.-. "
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3458 (save-excursion (end-of-line) (point)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3459 (forward-char -2)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3460 (speedbar-do-function-pointer))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3461 (error (speedbar-position-cursor-on-line))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3462
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3463 (if speedbar-xemacsp
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3464 (defalias 'speedbar-mouse-event-p 'button-press-event-p)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3465 (defun speedbar-mouse-event-p (event)
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3466 "Return t if the event is a mouse related event."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3467 ;; And Emacs does it this way
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3468 (if (and (listp event)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3469 (member (event-basic-type event)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3470 '(mouse-1 mouse-2 mouse-3)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3471 t
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3472 nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3473
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3474 (defun speedbar-maybee-jump-to-attached-frame ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3475 "Jump to the attached frame ONLY if this was not a mouse event."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3476 (if (or (not (speedbar-mouse-event-p last-input-event))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3477 speedbar-activity-change-focus-flag)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3478 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3479 (select-frame speedbar-attached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3480 (other-frame 0))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3481
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3482 (defun speedbar-find-file (text token indent)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3483 "Speedbar click handler for filenames.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3484 TEXT, the file will be displayed in the attached frame.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3485 TOKEN is unused, but required by the click handler. INDENT is the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3486 current indentation level."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3487 (let ((cdd (speedbar-line-path indent)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3488 (speedbar-find-file-in-frame (concat cdd text))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3489 (speedbar-stealthy-updates)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3490 (run-hooks 'speedbar-visiting-file-hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3491 ;; Reset the timer with a new timeout when cliking a file
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3492 ;; in case the user was navigating directories, we can cancel
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3493 ;; that other timer.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3494 (speedbar-set-timer speedbar-update-speed))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3495 (speedbar-maybee-jump-to-attached-frame))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3496
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3497 (defun speedbar-dir-follow (text token indent)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3498 "Speedbar click handler for directory names.
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3499 Clicking a directory will cause the speedbar to list files in
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3500 the subdirectory TEXT. TOKEN is an unused requirement. The
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3501 subdirectory chosen will be at INDENT level."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3502 (setq default-directory
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3503 (concat (expand-file-name (concat (speedbar-line-path indent) text))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3504 "/"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3505 ;; Because we leave speedbar as the current buffer,
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3506 ;; update contents will change directory without
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3507 ;; having to touch the attached frame. Turn off smart expand just
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3508 ;; in case.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3509 (let ((speedbar-smart-directory-expand-flag nil))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3510 (speedbar-update-contents))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3511 (speedbar-set-timer speedbar-navigating-speed)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3512 (setq speedbar-last-selected-file nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3513 (speedbar-stealthy-updates))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3514
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3515 (defun speedbar-delete-subblock (indent)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3516 "Delete text from point to indentation level INDENT or greater.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3517 Handles end-of-sublist smartly."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3518 (speedbar-with-writable
23917
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3519 (save-excursion
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3520 (end-of-line) (forward-char 1)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3521 (let ((start (point)))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3522 (while (and (looking-at "^\\([0-9]+\\):")
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3523 (> (string-to-int (match-string 1)) indent)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3524 (not (eobp)))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3525 (forward-line 1)
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3526 (beginning-of-line))
4182d24c6d9f (speedbar-frame-parameters) Add : to custom prompt.
Eric M. Ludlam <zappo@gnu.org>
parents: 23372
diff changeset
3527 (delete-region start (point))))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3528
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3529 (defun speedbar-dired (text token indent)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3530 "Speedbar click handler for directory expand button.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3531 Clicking this button expands or contracts a directory. TEXT is the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3532 button clicked which has either a + or -. TOKEN is the directory to be
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3533 expanded. INDENT is the current indentation level."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3534 (cond ((string-match "+" text) ;we have to expand this dir
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3535 (setq speedbar-shown-directories
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3536 (cons (expand-file-name
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3537 (concat (speedbar-line-path indent) token "/"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3538 speedbar-shown-directories))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3539 (speedbar-change-expand-button-char ?-)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3540 (speedbar-reset-scanners)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3541 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3542 (end-of-line) (forward-char 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3543 (speedbar-with-writable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3544 (speedbar-default-directory-list
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3545 (concat (speedbar-line-path indent) token "/")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3546 (1+ indent)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3547 ((string-match "-" text) ;we have to contract this node
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3548 (speedbar-reset-scanners)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3549 (let ((oldl speedbar-shown-directories)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3550 (newl nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3551 (td (expand-file-name
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3552 (concat (speedbar-line-path indent) token))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3553 (while oldl
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3554 (if (not (string-match (concat "^" (regexp-quote td)) (car oldl)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3555 (setq newl (cons (car oldl) newl)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3556 (setq oldl (cdr oldl)))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
3557 (setq speedbar-shown-directories (nreverse newl)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3558 (speedbar-change-expand-button-char ?+)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3559 (speedbar-delete-subblock indent)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3560 )
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3561 (t (error "Ooops... not sure what to do")))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3562 (speedbar-center-buffer-smartly)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3563 (setq speedbar-last-selected-file nil)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3564 (save-excursion (speedbar-stealthy-updates)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3565
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3566 (defun speedbar-directory-buttons-follow (text token indent)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3567 "Speedbar click handler for default directory buttons.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3568 TEXT is the button clicked on. TOKEN is the directory to follow.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3569 INDENT is the current indentation level and is unused."
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
3570 (if (string-match "^[A-z]:$" token)
48716
376c832d1ca7 (speedbar-directory-buttons-follow): Don't use directory-sep-char.
Richard M. Stallman <rms@gnu.org>
parents: 48686
diff changeset
3571 (setq default-directory (concat token "/"))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3572 (setq default-directory token))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3573 ;; Because we leave speedbar as the current buffer,
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3574 ;; update contents will change directory without
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3575 ;; having to touch the attached frame.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3576 (speedbar-update-contents)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3577 (speedbar-set-timer speedbar-navigating-speed))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3578
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3579 (defun speedbar-tag-file (text token indent)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3580 "The cursor is on a selected line. Expand the tags in the specified file.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3581 The parameter TEXT and TOKEN are required, where TEXT is the button
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3582 clicked, and TOKEN is the file to expand. INDENT is the current
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3583 indentation level."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3584 (cond ((string-match "+" text) ;we have to expand this file
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3585 (let* ((fn (expand-file-name (concat (speedbar-line-path indent)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3586 token)))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3587 (mode nil)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3588 (lst (speedbar-fetch-dynamic-tags fn)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3589 ;; if no list, then remove expando button
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3590 (if (not lst)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3591 (speedbar-change-expand-button-char ??)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3592 (speedbar-change-expand-button-char ?-)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3593 (speedbar-with-writable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3594 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3595 (end-of-line) (forward-char 1)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3596 (funcall (car lst) indent (cdr lst)))))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3597 ((string-match "-" text) ;we have to contract this node
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3598 (speedbar-change-expand-button-char ?+)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3599 (speedbar-delete-subblock indent))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3600 (t (error "Ooops... not sure what to do")))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3601 (speedbar-center-buffer-smartly))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3602
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3603 (defun speedbar-tag-find (text token indent)
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3604 "For the tag TEXT in a file TOKEN, go to that position.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3605 INDENT is the current indentation level."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3606 (let ((file (speedbar-line-path indent)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3607 (speedbar-find-file-in-frame file)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3608 (save-excursion (speedbar-stealthy-updates))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3609 ;; Reset the timer with a new timeout when cliking a file
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3610 ;; in case the user was navigating directories, we can cancel
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3611 ;; that other timer.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3612 (speedbar-set-timer speedbar-update-speed)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3613 (goto-char token)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3614 (run-hooks 'speedbar-visiting-tag-hook)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3615 ;;(recenter)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3616 (speedbar-maybee-jump-to-attached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3617 ))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3618
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3619 (defun speedbar-tag-expand (text token indent)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3620 "Expand a tag sublist. Imenu will return sub-lists of specialized tag types.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3621 Etags does not support this feature. TEXT will be the button
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3622 string. TOKEN will be the list, and INDENT is the current indentation
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3623 level."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3624 (cond ((string-match "+" text) ;we have to expand this file
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3625 (speedbar-change-expand-button-char ?-)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3626 (speedbar-with-writable
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3627 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3628 (end-of-line) (forward-char 1)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3629 (speedbar-insert-generic-list indent token 'speedbar-tag-expand
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3630 'speedbar-tag-find))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3631 ((string-match "-" text) ;we have to contract this node
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3632 (speedbar-change-expand-button-char ?+)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3633 (speedbar-delete-subblock indent))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3634 (t (error "Ooops... not sure what to do")))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3635 (speedbar-center-buffer-smartly))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3636
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3637 ;;; Loading files into the attached frame.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3638 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3639 (defun speedbar-find-file-in-frame (file)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3640 "This will load FILE into the speedbar attached frame.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3641 If the file is being displayed in a different frame already, then raise that
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3642 frame instead."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3643 (let* ((buff (find-file-noselect file))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3644 (bwin (get-buffer-window buff 0)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3645 (if bwin
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3646 (progn
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3647 (select-window bwin)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3648 (raise-frame (window-frame bwin)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3649 (if speedbar-power-click
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3650 (let ((pop-up-frames t)) (select-window (display-buffer buff)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3651 (select-frame speedbar-attached-frame)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3652 (switch-to-buffer buff))))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3653 )
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3654
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3655 ;;; Centering Utility
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3656 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3657 (defun speedbar-center-buffer-smartly ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3658 "Recenter a speedbar buffer so the current indentation level is all visible.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3659 This assumes that the cursor is on a file, or tag of a file which the user is
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3660 interested in."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3661 (if (<= (count-lines (point-min) (point-max))
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
3662 (1- (window-height (selected-window))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3663 ;; whole buffer fits
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3664 (let ((cp (point)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3665 (goto-char (point-min))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3666 (recenter 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3667 (goto-char cp))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3668 ;; too big
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3669 (let (depth start end exp p)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3670 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3671 (beginning-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3672 (setq depth (if (looking-at "[0-9]+")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3673 (string-to-int (buffer-substring-no-properties
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3674 (match-beginning 0) (match-end 0)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3675 0))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3676 (setq exp (format "^%d:\\s-*[[{<]\\([?+-]\\)[]>}]" depth)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3677 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3678 (end-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3679 (if (re-search-backward exp nil t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3680 (setq start (point))
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
3681 (setq start (point-min)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3682 (save-excursion ;Not sure about this part.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3683 (end-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3684 (setq p (point))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3685 (while (and (not (re-search-forward exp nil t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3686 (>= depth 0))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3687 (setq depth (1- depth))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3688 (setq exp (format "^%d:\\s-*[[{<]\\([?+-]\\)[]>}]" depth)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3689 (if (/= (point) p)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3690 (setq end (point))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3691 (setq end (point-max)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3692 ;; Now work out the details of centering
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3693 (let ((nl (count-lines start end))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3694 (cp (point)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3695 (if (> nl (window-height (selected-window)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3696 ;; We can't fit it all, so just center on cursor
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3697 (progn (goto-char start)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3698 (recenter 1))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3699 ;; we can fit everything on the screen, but...
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3700 (if (and (pos-visible-in-window-p start (selected-window))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3701 (pos-visible-in-window-p end (selected-window)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3702 ;; we are all set!
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3703 nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3704 ;; we need to do something...
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3705 (goto-char start)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3706 (let ((newcent (/ (- (window-height (selected-window)) nl) 2))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3707 (lte (count-lines start (point-max))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3708 (if (and (< (+ newcent lte) (window-height (selected-window)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3709 (> (- (window-height (selected-window)) lte 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3710 newcent))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3711 (setq newcent (- (window-height (selected-window))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3712 lte 1)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3713 (recenter newcent))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3714 (goto-char cp)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3715
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3716
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3717 ;;; Tag Management -- List of expanders:
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3718 ;;
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3719 (defun speedbar-fetch-dynamic-tags (file)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3720 "Return a list of tags generated dynamically from FILE.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3721 This uses the entries in `speedbar-dynamic-tags-function-list'
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3722 to find the proper tags. It is up to each of those individual
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3723 functions to do caching and flushing if appropriate."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3724 (save-excursion
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3725 (set-buffer (find-file-noselect file))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3726 ;; If there is a buffer-local value of
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3727 ;; speedbar-dynamic-tags-function-list, it will now be available.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3728 (let ((dtf speedbar-dynamic-tags-function-list)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3729 (ret t))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3730 (while (and (eq ret t) dtf)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3731 (setq ret
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3732 (if (fboundp (car (car dtf)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3733 (funcall (car (car dtf)) (buffer-file-name))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3734 t))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3735 (if (eq ret t)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3736 (setq dtf (cdr dtf))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3737 (if (eq ret t)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3738 ;; No valid tag list, return nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3739 nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3740 ;; We have some tags. Return the list with the insert fn
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3741 ;; prepended
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3742 (cons (cdr (car dtf)) ret)))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3743
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3744 ;;; Tag Management -- Imenu
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3745 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3746 (if (not speedbar-use-imenu-flag)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3747
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3748 nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3749
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3750 (eval-when-compile (if (locate-library "imenu") (require 'imenu)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3751
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3752 (defun speedbar-fetch-dynamic-imenu (file)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3753 "Load FILE into a buffer, and generate tags using Imenu.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3754 Returns the tag list, or t for an error."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3755 ;; Load this AND compile it in
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3756 (require 'imenu)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3757 (if speedbar-power-click (setq imenu--index-alist nil))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3758 (condition-case nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3759 (let ((index-alist (imenu--make-index-alist t)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3760 (if speedbar-sort-tags
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3761 (sort (copy-alist index-alist)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3762 (lambda (a b) (string< (car a) (car b))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3763 index-alist))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3764 (error t)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3765 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3766
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3767 ;;; Tag Management -- etags (old XEmacs compatibility part)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3768 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3769 (defvar speedbar-fetch-etags-parse-list
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3770 '(;; Note that java has the same parse-group as c
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3771 ("\\.\\([cChH]\\|c\\+\\+\\|cpp\\|cc\\|hh\\|java\\)\\'" .
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3772 speedbar-parse-c-or-c++tag)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3773 ("^\\.emacs$\\|.\\(el\\|l\\|lsp\\)\\'" .
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3774 "def[^i]+\\s-+\\(\\(\\w\\|[-_]\\)+\\)\\s-*\C-?")
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3775 ; ("\\.\\([fF]\\|for\\|FOR\\|77\\|90\\)\\'" .
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3776 ; speedbar-parse-fortran77-tag)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3777 ("\\.tex\\'" . speedbar-parse-tex-string)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3778 ("\\.p\\'" .
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3779 "\\(\\(FUNCTION\\|function\\|PROCEDURE\\|procedure\\)\\s-+\\([a-zA-Z0-9_.:]+\\)\\)\\s-*(?^?")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3780 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3781 "Associations of file extensions and expressions for extracting tags.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3782 To add a new file type, you would want to add a new association to the
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3783 list, where the car is the file match, and the cdr is the way to
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3784 extract an element from the tags output. If the output is complex,
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3785 use a function symbol instead of regexp. The function should expect
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3786 to be at the beginning of a line in the etags buffer.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3787
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3788 This variable is ignored if `speedbar-use-imenu-flag' is non-nil.")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3789
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3790 (defvar speedbar-fetch-etags-command "etags"
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3791 "*Command used to create an etags file.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3792
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3793 This variable is ignored if `speedbar-use-imenu-flag' is t.")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3794
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3795 (defvar speedbar-fetch-etags-arguments '("-D" "-I" "-o" "-")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3796 "*List of arguments to use with `speedbar-fetch-etags-command'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3797 This creates an etags output buffer. Use `speedbar-toggle-etags' to
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3798 modify this list conveniently.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3799
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3800 This variable is ignored if `speedbar-use-imenu-flag' is t.")
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3801
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3802 (defun speedbar-toggle-etags (flag)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3803 "Toggle FLAG in `speedbar-fetch-etags-arguments'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3804 FLAG then becomes a member of etags command line arguments. If flag
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3805 is \"sort\", then toggle the value of `speedbar-sort-tags'. If its
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3806 value is \"show\" then toggle the value of
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3807 `speedbar-show-unknown-files'.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3808
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3809 This function is a convenience function for XEmacs menu created by
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3810 Farzin Guilak <farzin@protocol.com>."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3811 (interactive)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3812 (cond
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3813 ((equal flag "sort")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3814 (setq speedbar-sort-tags (not speedbar-sort-tags)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3815 ((equal flag "show")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3816 (setq speedbar-show-unknown-files (not speedbar-show-unknown-files)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3817 ((or (equal flag "-C")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3818 (equal flag "-S")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3819 (equal flag "-D"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3820 (if (member flag speedbar-fetch-etags-arguments)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3821 (setq speedbar-fetch-etags-arguments
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3822 (delete flag speedbar-fetch-etags-arguments))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3823 (add-to-list 'speedbar-fetch-etags-arguments flag)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3824 (t nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3825
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3826 (defun speedbar-fetch-dynamic-etags (file)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3827 "For FILE, run etags and create a list of symbols extracted.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3828 Each symbol will be associated with its line position in FILE."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3829 (let ((newlist nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3830 (unwind-protect
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3831 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3832 (if (get-buffer "*etags tmp*")
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3833 (kill-buffer "*etags tmp*")) ;kill to clean it up
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
3834 (if (<= 1 speedbar-verbosity-level)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
3835 (speedbar-message "Fetching etags..."))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3836 (set-buffer (get-buffer-create "*etags tmp*"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3837 (apply 'call-process speedbar-fetch-etags-command nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3838 (current-buffer) nil
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3839 (append speedbar-fetch-etags-arguments (list file)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3840 (goto-char (point-min))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
3841 (if (<= 1 speedbar-verbosity-level)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
3842 (speedbar-message "Fetching etags..."))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3843 (let ((expr
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3844 (let ((exprlst speedbar-fetch-etags-parse-list)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3845 (ans nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3846 (while (and (not ans) exprlst)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3847 (if (string-match (car (car exprlst)) file)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3848 (setq ans (car exprlst)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3849 (setq exprlst (cdr exprlst)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3850 (cdr ans))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3851 (if expr
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3852 (let (tnl)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3853 (set-buffer (get-buffer-create "*etags tmp*"))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3854 (while (not (save-excursion (end-of-line) (eobp)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3855 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3856 (setq tnl (speedbar-extract-one-symbol expr)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3857 (if tnl (setq newlist (cons tnl newlist)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3858 (forward-line 1)))
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
3859 (speedbar-message
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
3860 "Sorry, no support for a file of that extension"))))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3861 )
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3862 (if speedbar-sort-tags
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3863 (sort newlist (lambda (a b) (string< (car a) (car b))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3864 (reverse newlist))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3865
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3866 ;; This bit donated by Farzin Guilak <farzin@protocol.com> but I'm not
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3867 ;; sure it's needed with the different sorting method.
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3868 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3869 ;(defun speedbar-clean-etags()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3870 ; "Removes spaces before the ^? character, and removes `#define',
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3871 ;return types, etc. preceding tags. This ensures that the sort operation
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3872 ;works on the tags, not the return types."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3873 ; (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3874 ; (goto-char (point-min))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3875 ; (while
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3876 ; (re-search-forward "(?[ \t](?\C-?" nil t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3877 ; (replace-match "\C-?" nil nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3878 ; (goto-char (point-min))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3879 ; (while
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3880 ; (re-search-forward "\\(.*[ \t]+\\)\\([^ \t\n]+.*\C-?\\)" nil t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3881 ; (delete-region (match-beginning 1) (match-end 1)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3882
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3883 (defun speedbar-extract-one-symbol (expr)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3884 "At point, return nil, or one alist in the form: (SYMBOL . POSITION)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3885 The line should contain output from etags. Parse the output using the
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3886 regular expression EXPR."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3887 (let* ((sym (if (stringp expr)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3888 (if (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3889 (re-search-forward expr (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3890 (end-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3891 (point)) t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3892 (buffer-substring-no-properties (match-beginning 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3893 (match-end 1)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3894 (funcall expr)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3895 (pos (let ((j (re-search-forward "[\C-?\C-a]\\([0-9]+\\),\\([0-9]+\\)"
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3896 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3897 (end-of-line)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3898 (point))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3899 t)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3900 (if (and j sym)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3901 (1+ (string-to-int (buffer-substring-no-properties
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3902 (match-beginning 2)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3903 (match-end 2))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3904 0))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3905 (if (/= pos 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3906 (cons sym pos)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3907 nil)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3908
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3909 (defun speedbar-parse-c-or-c++tag ()
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
3910 "Parse a C or C++ tag, which tends to be a little complex."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3911 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3912 (let ((bound (save-excursion (end-of-line) (point))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3913 (cond ((re-search-forward "\C-?\\([^\C-a]+\\)\C-a" bound t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3914 (buffer-substring-no-properties (match-beginning 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3915 (match-end 1)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3916 ((re-search-forward "\\<\\([^ \t]+\\)\\s-+new(" bound t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3917 (buffer-substring-no-properties (match-beginning 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3918 (match-end 1)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3919 ((re-search-forward "\\<\\([^ \t(]+\\)\\s-*(\C-?" bound t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3920 (buffer-substring-no-properties (match-beginning 1)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3921 (match-end 1)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3922 (t nil))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3923 )))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3924
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3925 (defun speedbar-parse-tex-string ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3926 "Parse a Tex string. Only find data which is relevant."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3927 (save-excursion
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3928 (let ((bound (save-excursion (end-of-line) (point))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3929 (cond ((re-search-forward "\\(\\(sub\\)*section\\|chapter\\|cite\\)\\s-*{[^\C-?}]*}?" bound t)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3930 (buffer-substring-no-properties (match-beginning 0)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3931 (match-end 0)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3932 (t nil)))))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3933
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
3934
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3935 ;;; BUFFER DISPLAY mode.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3936 ;;
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3937 (defvar speedbar-buffers-key-map nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3938 "Keymap used when in the buffers display mode.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3939
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3940 (if speedbar-buffers-key-map
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3941 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3942 (setq speedbar-buffers-key-map (speedbar-make-specialized-keymap))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3943
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3944 ;; Basic tree features
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3945 (define-key speedbar-buffers-key-map "e" 'speedbar-edit-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3946 (define-key speedbar-buffers-key-map "\C-m" 'speedbar-edit-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3947 (define-key speedbar-buffers-key-map "+" 'speedbar-expand-line)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3948 (define-key speedbar-buffers-key-map "=" 'speedbar-expand-line)
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3949 (define-key speedbar-buffers-key-map "-" 'speedbar-contract-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3950
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3951 ;; Buffer specific keybindings
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3952 (define-key speedbar-buffers-key-map "k" 'speedbar-buffer-kill-buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3953 (define-key speedbar-buffers-key-map "r" 'speedbar-buffer-revert-buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3954
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3955 )
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3956
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3957 (defvar speedbar-buffer-easymenu-definition
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3958 '(["Jump to buffer" speedbar-edit-line t]
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3959 ["Expand File Tags" speedbar-expand-line
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3960 (save-excursion (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3961 (looking-at "[0-9]+: *.\\+. "))]
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3962 ["Flush Cache & Expand" speedbar-flush-expand-line
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3963 (save-excursion (beginning-of-line)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3964 (looking-at "[0-9]+: *.\\+. "))]
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3965 ["Contract File Tags" speedbar-contract-line
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3966 (save-excursion (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3967 (looking-at "[0-9]+: *.-. "))]
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3968 ["Kill Buffer" speedbar-buffer-kill-buffer
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3969 (save-excursion (beginning-of-line)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3970 (looking-at "[0-9]+: *.-. "))]
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3971 ["Revert Buffer" speedbar-buffer-revert-buffer
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3972 (save-excursion (beginning-of-line)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
3973 (looking-at "[0-9]+: *.-. "))]
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3974 )
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3975 "Menu item elements shown when displaying a buffer list.")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3976
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3977 (defun speedbar-buffer-buttons (directory zero)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3978 "Create speedbar buttons based on the buffers currently loaded.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3979 DIRECTORY is the path to the currently active buffer, and ZERO is 0."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3980 (speedbar-buffer-buttons-engine nil))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3981
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3982 (defun speedbar-buffer-buttons-temp (directory zero)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3983 "Create speedbar buttons based on the buffers currently loaded.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3984 DIRECTORY is the path to the currently active buffer, and ZERO is 0."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3985 (speedbar-buffer-buttons-engine t))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3986
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3987 (defun speedbar-buffer-buttons-engine (temp)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3988 "Create speedbar buffer buttons.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3989 If TEMP is non-nil, then clicking on a buffer restores the previous display."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3990 (insert "Active Buffers:\n")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3991 (let ((bl (buffer-list)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3992 (while bl
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3993 (if (string-match "^[ *]" (buffer-name (car bl)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3994 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3995 (let* ((known (string-match speedbar-file-regexp
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3996 (buffer-name (car bl))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3997 (expchar (if known ?+ ??))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3998 (fn (if known 'speedbar-tag-file nil))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
3999 (fname (save-excursion (set-buffer (car bl))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4000 (buffer-file-name))))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4001 (speedbar-make-tag-line 'bracket expchar fn
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4002 (if fname (file-name-nondirectory fname))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4003 (buffer-name (car bl))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4004 'speedbar-buffer-click temp
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4005 'speedbar-file-face 0)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4006 (setq bl (cdr bl)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4007 (setq bl (buffer-list))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4008 (insert "Scratch Buffers:\n")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4009 (while bl
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4010 (if (not (string-match "^\\*" (buffer-name (car bl))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4011 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4012 (if (eq (car bl) speedbar-buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4013 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4014 (speedbar-make-tag-line 'bracket ?? nil nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4015 (buffer-name (car bl))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4016 'speedbar-buffer-click temp
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4017 'speedbar-file-face 0)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4018 (setq bl (cdr bl)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4019 (setq bl (buffer-list))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4020 (insert "Hidden Buffers:\n")
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4021 (while bl
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4022 (if (not (string-match "^ " (buffer-name (car bl))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4023 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4024 (if (eq (car bl) speedbar-buffer)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4025 nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4026 (speedbar-make-tag-line 'bracket ?? nil nil
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4027 (buffer-name (car bl))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4028 'speedbar-buffer-click temp
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4029 'speedbar-file-face 0)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4030 (setq bl (cdr bl)))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4031
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4032 (defun speedbar-buffers-item-info ()
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4033 "Display information about the current buffer on the current line."
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4034 (or (speedbar-item-info-tag-helper)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4035 (let* ((item (speedbar-line-text))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4036 (buffer (if item (get-buffer item) nil)))
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4037 (and buffer
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
4038 (speedbar-message "%s%s %S %d %s"
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
4039 (if (buffer-modified-p buffer) "* " "")
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
4040 item
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
4041 (save-excursion (set-buffer buffer) major-mode)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
4042 (save-excursion (set-buffer buffer)
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
4043 (buffer-size))
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
4044 (or (buffer-file-name buffer) "<No file>"))))))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4045
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4046 (defun speedbar-buffers-line-path (&optional depth)
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4047 "Fetch the full path to the file (buffer) specified on the current line.
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4048 Optional argument DEPTH specifies the current depth of the back search."
36047
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4049 (save-excursion
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4050 (end-of-line)
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4051 (let ((start (point)))
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4052 ;; Buffers are always at level 0
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4053 (if (not (re-search-backward "^0:" nil t))
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4054 nil
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4055 (let* ((bn (speedbar-line-text))
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4056 (buffer (if bn (get-buffer bn))))
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4057 (if buffer
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4058 (if (save-excursion
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4059 (end-of-line)
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4060 (eq start (point)))
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4061 (file-name-directory (buffer-file-name buffer))
e1126269be53 (speedbar-frame-parameters): No toolbar lines.
Eric M. Ludlam <zappo@gnu.org>
parents: 31562
diff changeset
4062 (buffer-file-name buffer))))))))
24154
91c00b394901 (speedbar-item-info-file-helper): Add optional arg
Eric M. Ludlam <zappo@gnu.org>
parents: 23917
diff changeset
4063
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4064 (defun speedbar-buffer-click (text token indent)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4065 "When the users clicks on a buffer-button in speedbar.
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4066 TEXT is the buffer's name, TOKEN and INDENT are unused."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4067 (if speedbar-power-click
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4068 (let ((pop-up-frames t)) (select-window (display-buffer text)))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4069 (select-frame speedbar-attached-frame)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4070 (switch-to-buffer text)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4071 (if token (speedbar-change-initial-expansion-list
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4072 speedbar-previously-used-expansion-list-name))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4073
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4074 (defun speedbar-buffer-kill-buffer ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4075 "Kill the buffer the cursor is on in the speedbar buffer."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4076 (interactive)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4077 (or (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4078 (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4079 ;; If this fails, then it is a non-standard click, and as such,
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4080 ;; perfectly allowed.
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
4081 (if (re-search-forward "[]>?}] [^ ]"
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4082 (save-excursion (end-of-line) (point))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4083 t)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4084 (let ((text (progn
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4085 (forward-char -1)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4086 (buffer-substring (point) (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4087 (end-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4088 (point))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4089 (if (and (get-buffer text)
24475
1e20dcb26ff7 Added commentary about stealthy functions.
Karl Heuer <kwzh@gnu.org>
parents: 24321
diff changeset
4090 (speedbar-y-or-n-p (format "Kill buffer %s? " text)))
22893
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
4091 (kill-buffer text))
322179a8fd20 (speedbar-update-current-file): Added call to
Eric M. Ludlam <zappo@gnu.org>
parents: 22735
diff changeset
4092 (speedbar-refresh))))))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4093
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4094 (defun speedbar-buffer-revert-buffer ()
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4095 "Revert the buffer the cursor is on in the speedbar buffer."
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4096 (interactive)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4097 (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4098 (beginning-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4099 ;; If this fails, then it is a non-standard click, and as such,
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4100 ;; perfectly allowed
22950
606be1490be7 (speedbar-edit-line, speedbar-buffer-kill-buffer,
Eric M. Ludlam <zappo@gnu.org>
parents: 22906
diff changeset
4101 (if (re-search-forward "[]>?}] [^ ]"
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4102 (save-excursion (end-of-line) (point))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4103 t)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4104 (let ((text (progn
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4105 (forward-char -1)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4106 (buffer-substring (point) (save-excursion
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4107 (end-of-line)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4108 (point))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4109 (if (get-buffer text)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4110 (progn
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4111 (set-buffer text)
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4112 (revert-buffer t)))))))
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4113
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4114
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4115 ;;; Useful hook values and such.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4116 ;;
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4117 (defvar speedbar-highlight-one-tag-line nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4118 "Overlay used for highlighting the most recently jumped to tag line.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4119
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4120 (defun speedbar-highlight-one-tag-line ()
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4121 "Highlight the current line, unhighlighting a previously jumped to line."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4122 (speedbar-unhighlight-one-tag-line)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4123 (setq speedbar-highlight-one-tag-line
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4124 (speedbar-make-overlay (save-excursion (beginning-of-line) (point))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4125 (save-excursion (end-of-line)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4126 (forward-char 1)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4127 (point))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4128 (speedbar-overlay-put speedbar-highlight-one-tag-line 'face
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4129 'speedbar-highlight-face)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4130 (add-hook 'pre-command-hook 'speedbar-unhighlight-one-tag-line)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4131 )
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4132
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4133 (defun speedbar-unhighlight-one-tag-line ()
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
4134 "Unhighlight the currently highlighted line."
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4135 (if speedbar-highlight-one-tag-line
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4136 (progn
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4137 (speedbar-delete-overlay speedbar-highlight-one-tag-line)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4138 (setq speedbar-highlight-one-tag-line nil)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4139 (remove-hook 'pre-command-hook 'speedbar-unhighlight-one-tag-line))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4140
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4141 (defun speedbar-recenter-to-top ()
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4142 "Recenter the current buffer so POINT is on the top of the window."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4143 (recenter 1))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4144
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4145 (defun speedbar-recenter ()
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4146 "Recenter the current buffer so POINT is in the center of the window."
28925
89a795d90175 (speedbar-recenter): Typo, and fix logic.
Eric M. Ludlam <zappo@gnu.org>
parents: 28902
diff changeset
4147 (recenter (/ (window-height (selected-window)) 2)))
22735
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4148
ca02f300fc41 More commentary.
Karl Heuer <kwzh@gnu.org>
parents: 22250
diff changeset
4149
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4150 ;;; Color loading section.
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4151 ;;
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4152 (defface speedbar-button-face '((((class color) (background light))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4153 (:foreground "green4"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4154 (((class color) (background dark))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4155 (:foreground "green3")))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4156 "Face used for +/- buttons."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4157 :group 'speedbar-faces)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4158
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4159 (defface speedbar-file-face '((((class color) (background light))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4160 (:foreground "cyan4"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4161 (((class color) (background dark))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4162 (:foreground "cyan"))
42456
8a4077ab418c (various face definitions): Use :weight, not :bold.
Richard M. Stallman <rms@gnu.org>
parents: 41576
diff changeset
4163 (t (:weight bold)))
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4164 "Face used for file names."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4165 :group 'speedbar-faces)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4166
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4167 (defface speedbar-directory-face '((((class color) (background light))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4168 (:foreground "blue4"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4169 (((class color) (background dark))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4170 (:foreground "light blue")))
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
4171 "Face used for directory names."
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4172 :group 'speedbar-faces)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4173 (defface speedbar-tag-face '((((class color) (background light))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4174 (:foreground "brown"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4175 (((class color) (background dark))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4176 (:foreground "yellow")))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4177 "Face used for displaying tags."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4178 :group 'speedbar-faces)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4179
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4180 (defface speedbar-selected-face '((((class color) (background light))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4181 (:foreground "red" :underline t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4182 (((class color) (background dark))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4183 (:foreground "red" :underline t))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4184 (t (:underline t)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4185 "Face used to underline the file in the active window."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4186 :group 'speedbar-faces)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4187
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4188 (defface speedbar-highlight-face '((((class color) (background light))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4189 (:background "green"))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4190 (((class color) (background dark))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4191 (:background "sea green"))
48686
ee68dbd692ce (speedbar-highlight-face): Fix face spec.
Andreas Schwab <schwab@suse.de>
parents: 48380
diff changeset
4192 (((class grayscale mono)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4193 (background light))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4194 (:background "black"))
48686
ee68dbd692ce (speedbar-highlight-face): Fix face spec.
Andreas Schwab <schwab@suse.de>
parents: 48380
diff changeset
4195 (((class grayscale mono)
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4196 (background dark))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4197 (:background "white")))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4198 "Face used for highlighting buttons with the mouse."
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4199 :group 'speedbar-faces)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4200
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4201
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4202 ;;; Image loading and inlining
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4203 ;;
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4204
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4205 ;;; Some images if defimage is available:
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4206 (eval-when-compile
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4207
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4208 (if (fboundp 'defimage)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4209 (defalias 'defimage-speedbar 'defimage)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4210
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4211 (if (not (fboundp 'make-glyph))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48716
diff changeset
4212
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4213 (defmacro defimage-speedbar (variable imagespec docstring)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4214 "Don't bother loading up an image...
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
4215 Argument VARIABLE is the variable to define.
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4216 Argument IMAGESPEC is the list defining the image to create.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4217 Argument DOCSTRING is the documentation for VARIABLE."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4218 `(defvar ,variable nil ,docstring))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4219
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4220 ;; ELSE
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4221 (defun speedbar-find-image-on-load-path (image)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4222 "Find the image file IMAGE on the load path."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4223 (let ((l load-path)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4224 (r nil))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4225 (while (and l (not r))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4226 (if (file-exists-p (concat (car l) "/" image))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4227 (setq r (concat (car l) "/" image)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4228 (setq l (cdr l)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4229 r))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4230
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4231 (defun speedbar-convert-emacs21-imagespec-to-xemacs (spec)
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
4232 "Convert the Emacs21 image SPEC into an XEmacs image spec."
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4233 (let* ((sl (car spec))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4234 (itype (nth 1 sl))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4235 (ifile (nth 3 sl)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4236 (vector itype ':file (speedbar-find-image-on-load-path ifile))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4237
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4238 (defmacro defimage-speedbar (variable imagespec docstring)
46282
015a7038f5db (speedbar-make-specialized-keymap): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 44584
diff changeset
4239 "Define VARIABLE as an image if `defimage' is not available.
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4240 IMAGESPEC is the image data, and DOCSTRING is documentation for the image."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4241 `(defvar ,variable
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4242 ;; The Emacs21 version of defimage looks just like the XEmacs image
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4243 ;; specifier, except that it needs a :type keyword. If we line
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4244 ;; stuff up right, we can use this cheat to support XEmacs specifiers.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4245 (condition-case nil
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4246 (make-glyph
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4247 (make-image-specifier
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4248 (speedbar-convert-emacs21-imagespec-to-xemacs (quote ,imagespec)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4249 'buffer)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4250 (error nil))
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
4251 ,docstring)))))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4252
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4253 (defimage-speedbar speedbar-directory-plus
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4254 ((:type xpm :file "sb-dir-plus.xpm" :ascent center))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4255 "Image used for closed directories with stuff in them.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4256
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4257 (defimage-speedbar speedbar-directory-minus
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4258 ((:type xpm :file "sb-dir-minus.xpm" :ascent center))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4259 "Image used for open directories with stuff in them.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4260
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
4261 (defimage-speedbar speedbar-directory
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
4262 ((:type xpm :file "sb-dir.xpm" :ascent center))
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
4263 "Image used for empty or unreadable directories.")
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
4264
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4265 (defimage-speedbar speedbar-page-plus
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4266 ((:type xpm :file "sb-pg-plus.xpm" :ascent center))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4267 "Image used for closed files with stuff in them.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4268
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4269 (defimage-speedbar speedbar-page-minus
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4270 ((:type xpm :file "sb-pg-minus.xpm" :ascent center))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4271 "Image used for open files with stuff in them.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4272
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4273 (defimage-speedbar speedbar-page
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4274 ((:type xpm :file "sb-pg.xpm" :ascent center))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4275 "Image used for files that can't be opened.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4276
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4277 (defimage-speedbar speedbar-tag
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4278 ((:type xpm :file "sb-tag.xpm" :ascent center))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4279 "Image used for tags.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4280
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4281 (defimage-speedbar speedbar-tag-plus
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4282 ((:type xpm :file "sb-tag-plus.xpm" :ascent center))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4283 "Image used for closed tag groups.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4284
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4285 (defimage-speedbar speedbar-tag-minus
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4286 ((:type xpm :file "sb-tag-minus.xpm" :ascent center))
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4287 "Image used for open tag groups.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4288
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4289 (defimage-speedbar speedbar-tag-gt
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4290 ((:type xpm :file "sb-tag-gt.xpm" :ascent center))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4291 "Image used for open tag groups.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4292
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4293 (defimage-speedbar speedbar-tag-v
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4294 ((:type xpm :file "sb-tag-v.xpm" :ascent center))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4295 "Image used for open tag groups.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4296
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4297 (defimage-speedbar speedbar-tag-type
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4298 ((:type xpm :file "sb-tag-type.xpm" :ascent center))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4299 "Image used for open tag groups.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4300
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4301 (defimage-speedbar speedbar-mail
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4302 ((:type xpm :file "sb-mail.xpm" :ascent center))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4303 "Image used for open tag groups.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4304
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4305 (defvar speedbar-expand-image-button-alist
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4306 '(("<+>" . speedbar-directory-plus)
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4307 ("<->" . speedbar-directory-minus)
56647
d21a8e697065 (speedbar-scan-subdirs): New option.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 53487
diff changeset
4308 ("< >" . speedbar-directory)
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4309 ("[+]" . speedbar-page-plus)
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4310 ("[-]" . speedbar-page-minus)
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4311 ("[?]" . speedbar-page)
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4312 ("{+}" . speedbar-tag-plus)
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4313 ("{-}" . speedbar-tag-minus)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4314 ("<M>" . speedbar-mail)
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4315 (" =>" . speedbar-tag)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4316 (" +>" . speedbar-tag-gt)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4317 (" ->" . speedbar-tag-v)
29130
b37210b05707 (speedbar-easymenu-definition-base): Image toggle fix.
Eric M. Ludlam <zappo@gnu.org>
parents: 28925
diff changeset
4318 (">" . speedbar-tag)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4319 ("@" . speedbar-tag-type)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4320 (" @" . speedbar-tag-type)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4321 )
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4322 "List of text and image associations.")
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4323
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4324 (defun speedbar-insert-image-button-maybe (start length)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4325 "Insert an image button based on text starting at START for LENGTH chars.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4326 If buttontext is unknown, just insert that text.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4327 If we have an image associated with it, use that image."
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4328 (if speedbar-use-images
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4329 (let* ((bt (buffer-substring start (+ length start)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4330 (a (assoc bt speedbar-expand-image-button-alist)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4331 ;; Regular images (created with `insert-image' are intangible
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4332 ;; which (I suppose) make them more compatible with XEmacs 21.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4333 ;; Unfortunatly, there is a giant pile o code dependent on the
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4334 ;; underlying text. This means if we leave it tangible, then I
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4335 ;; don't have to change said giant piles o code.
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4336 (if (and a (symbol-value (cdr a)))
37180
fc838f090bbe (speedbar-insert-image-button-maybe): Check for `xemacs' feature
Eric M. Ludlam <zappo@gnu.org>
parents: 36047
diff changeset
4337 (if (featurep 'xemacs)
28902
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4338 (add-text-properties (+ start (length bt)) start
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4339 (list 'end-glyph (symbol-value (cdr a))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4340 'rear-nonsticky (list 'display)
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4341 'invisible t
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4342 'detachable t))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4343 (add-text-properties start (+ start (length bt))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4344 (list 'display (symbol-value (cdr a))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4345 'rear-nonsticky (list 'display))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4346 ;(message "Bad text [%s]" (buffer-substring start (+ start length)))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4347 ))))
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4348
5292e9f1f2ca Updated the commentary section.
Eric M. Ludlam <zappo@gnu.org>
parents: 26659
diff changeset
4349
21650
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4350 ;; some edebug hooks
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4351 (add-hook 'edebug-setup-hook
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4352 (lambda ()
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4353 (def-edebug-spec speedbar-with-writable def-body)))
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4354
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4355 (provide 'speedbar)
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4356
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4357 ;; run load-time hooks
69bdeef5e927 Initial revision
Dan Nicolaescu <done@ece.arizona.edu>
parents:
diff changeset
4358 (run-hooks 'speedbar-load-hook)
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38377
diff changeset
4359
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49597
diff changeset
4360 ;;; arch-tag: 4477e6d1-f78c-48b9-a503-387d3c9767d5
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38377
diff changeset
4361 ;;; speedbar.el ends here