~ubuntu-branches/ubuntu/saucy/ecb/saucy

« back to all changes in this revision

Viewing changes to ecb-speedbar.el

  • Committer: Bazaar Package Importer
  • Author(s): Joerg Jaspert
  • Date: 2004-09-01 22:15:18 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040901221518-0jfdt2apb2rj69ey
Tags: 2.27-1
And include latest Upstream too...

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
;; GNU Emacs; see the file COPYING.  If not, write to the Free Software
27
27
;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28
28
 
29
 
;; $Id: ecb-speedbar.el,v 1.53 2004/01/07 10:23:39 berndl Exp $
 
29
;; $Id: ecb-speedbar.el,v 1.59 2004/05/06 09:02:05 berndl Exp $
30
30
 
31
31
;;; Commentary:
32
32
 
73
73
;; imenu
74
74
(silentcomp-defvar imenu--rescan-item)
75
75
(silentcomp-defvar imenu--index-alist)
76
 
 
 
76
;; XEmacs
 
77
(silentcomp-defun event-button)
 
78
(silentcomp-defvar mouse-motion-handler)
 
79
 
 
80
(defgroup ecb-speedbar nil
 
81
  "Settings for the speedbar-integration of ECB."
 
82
  :group 'ecb-general
 
83
  :prefix "ecb-")
 
84
 
 
85
(defcustom ecb-speedbar-before-activate-hook nil
 
86
  "*Hook running directly before ECB activates the integrated speedbar.
 
87
 
 
88
For example this hook can be used to change the expansion-mode of the
 
89
integrated speedbar via `speedbar-change-initial-expansion-list'.
 
90
Example: \(speedbar-change-initial-expansion-list \"buffers\")."
 
91
  :group 'ecb-speedbar
 
92
  :type 'hook)
77
93
 
78
94
(defconst ecb-speedbar-adviced-functions '((speedbar-click . around)
79
95
                                           (speedbar-frame-mode . around)
86
102
adviced with more than one class \(e.g. with a before and an after-advice)
87
103
then for every class a cons must be added to this list.")
88
104
 
 
105
(defconst ecb-speedbar-buffer-name " SPEEDBAR"
 
106
  "Name of the ECB speedbar buffer.")
 
107
 
 
108
(defun ecb-speedbar-buffer-selected ()
 
109
  (equal (current-buffer) (get-buffer ecb-speedbar-buffer-name)))
 
110
 
89
111
(defadvice speedbar-click (around ecb)
90
112
  "Makes the function compatible with ECB. If ECB is active and the window of
91
113
`ecb-speedbar-buffer-name' is visible \(means a layouts uses the
122
144
is not speedbar-window, then the speedbar-window is selected. If the
123
145
speedbar-window is active, then select the edit-window."
124
146
  (if ecb-minor-mode
125
 
      (if (equal (current-buffer) (get-buffer ecb-speedbar-buffer-name))
 
147
      (if (ecb-speedbar-buffer-selected)
126
148
          (ecb-select-edit-window)
127
149
        (ecb-speedbar-select-speedbar-window))
128
150
    ad-do-it))
147
169
    (mouse-set-point e)))
148
170
  
149
171
 
150
 
(defconst ecb-speedbar-buffer-name " SPEEDBAR"
151
 
  "Name of the ECB speedbar buffer.")
152
 
 
153
172
(defun ecb-speedbar-select-speedbar-window ()
154
173
  (ignore-errors
155
174
    (and (window-live-p (get-buffer-window ecb-speedbar-buffer-name))
177
196
  ;; enable the advices for speedbar
178
197
  (ecb-enable-advices ecb-speedbar-adviced-functions)
179
198
  
 
199
  (run-hooks 'ecb-speedbar-before-activate-hook)
 
200
 
180
201
  ;;disable automatic speedbar updates... let the ECB handle this with
181
202
  ;;ecb-current-buffer-sync
182
203
  (speedbar-disable-update)
191
212
    (save-excursion
192
213
      (setq speedbar-buffer (get-buffer-create ecb-speedbar-buffer-name))
193
214
      (set-buffer speedbar-buffer)
194
 
      (speedbar-mode)))
 
215
      (speedbar-mode)
 
216
 
 
217
      (if ecb-running-xemacs
 
218
          ;; Hack the XEmacs mouse-motion handler
 
219
          (progn
 
220
            ;; Hack the XEmacs mouse-motion handler
 
221
            (set (make-local-variable 'mouse-motion-handler)
 
222
                 'dframe-track-mouse-xemacs)
 
223
            ;; Hack the double click handler
 
224
            (make-local-variable 'mouse-track-click-hook)
 
225
            (add-hook 'mouse-track-click-hook
 
226
                      (lambda (event count)
 
227
                        (if (/= (event-button event) 1)
 
228
                            nil         ; Do normal operations.
 
229
                          (cond ((eq count 1)
 
230
                                 (dframe-quick-mouse event))
 
231
                                ((or (eq count 2)
 
232
                                     (eq count 3))
 
233
                                 (dframe-click event)))
 
234
                          ;; Don't do normal operations.
 
235
                          t))))
 
236
        ;; Enable mouse tracking in emacs
 
237
        (if dframe-track-mouse-function
 
238
            (set (make-local-variable 'track-mouse) t)) ;this could be messy.
 
239
        ;; disable auto-show-mode for Emacs
 
240
        (setq auto-show-mode nil))))
195
241
 
196
242
  ;;Start up the timer
197
243
  (speedbar-reconfigure-keymaps)
267
313
             (set-buffer visible-buffer)
268
314
             (ecb-fix-filename default-directory)))
269
315
          (ecb-default-directory (ecb-fix-filename default-directory)))
270
 
      (when (and (not (string-equal speedbar-default-directory
271
 
                                    ecb-default-directory))
 
316
      (when (and (or (not (ecb-string= speedbar-default-directory
 
317
                                       ecb-default-directory))
 
318
                     (ecb-string= speedbar-initial-expansion-list-name "buffers"))
272
319
                 speedbar-buffer
273
320
                 (buffer-live-p speedbar-buffer))
274
321
        (ecb-speedbar-update-contents)))))
306
353
                                              (intern (car tag))))
307
354
             (ecb--semantic--tag-set-overlay new-tag (make-vector 2 (cdr tag)))
308
355
             (ecb--semantic--tag-put-property new-tag 'ecb-speedbar-tag t)
309
 
             (tree-node-new (progn
310
 
                              (set-text-properties
311
 
                               0 (length (car tag))
312
 
                               `(face ,ecb-method-non-semantic-face) (car tag))
313
 
                              (car tag))
314
 
                            0
315
 
                            new-tag
316
 
                            t
317
 
                            node))
 
356
             (ecb-apply-user-filter-to-tags (list new-tag))
 
357
             (when (not (ecb-tag-forbidden-display-p new-tag))
 
358
               (tree-node-new (progn
 
359
                                (set-text-properties
 
360
                                 0 (length (car tag))
 
361
                                 `(face ,ecb-method-non-semantic-face) (car tag))
 
362
                                (car tag))
 
363
                              0
 
364
                              new-tag
 
365
                              t
 
366
                              node)))
318
367
            ((speedbar-generic-list-positioned-group-p tag)
319
368
             ;; the semantic tag for this tag
320
369
             (setq new-tag (ecb--semantic-tag (car tag)
321
370
                                              (intern (car tag))))
322
371
             (ecb--semantic--tag-set-overlay new-tag
323
 
                                            (make-vector 2 (car (cdr tag))))
 
372
                                             (make-vector 2 (car (cdr tag))))
324
373
             (ecb--semantic--tag-put-property new-tag 'ecb-speedbar-tag t)
325
 
             (ecb-create-non-semantic-tree
326
 
              (setq new-node
327
 
                    (tree-node-new (progn
328
 
                                     (set-text-properties
329
 
                                      0 (length (car tag))
330
 
                                      `(face ,ecb-method-non-semantic-face) (car tag))
331
 
                                     (car tag))
332
 
                                   0
333
 
                                   new-tag
334
 
                                   nil node))
335
 
              (cdr (cdr tag)))
336
 
             (tree-node-set-expanded new-node
337
 
                                     (member major-mode
338
 
                                             ecb-non-semantic-methods-initial-expand)))
 
374
             (ecb-apply-user-filter-to-tags (list new-tag))
 
375
             (when (not (ecb-tag-forbidden-display-p new-tag))             
 
376
               (ecb-create-non-semantic-tree
 
377
                (setq new-node
 
378
                      (tree-node-new (progn
 
379
                                       (set-text-properties
 
380
                                        0 (length (car tag))
 
381
                                        `(face ,ecb-method-non-semantic-face) (car tag))
 
382
                                       (car tag))
 
383
                                     0
 
384
                                     new-tag
 
385
                                     nil node))
 
386
                (cdr (cdr tag)))
 
387
               (tree-node-set-expanded new-node
 
388
                                       (member major-mode
 
389
                                               ecb-non-semantic-methods-initial-expand))))
339
390
            ((speedbar-generic-list-group-p tag)
340
391
             (ecb-create-non-semantic-tree
341
392
              (setq new-node
374
425
           (methods speedbar-tag-hierarchy-method))
375
426
    
376
427
      ;; removing the imenu-Rescan-item
377
 
      (if (string= (car (car tag-list)) (car imenu--rescan-item))
 
428
      (if (ecb-string= (car (car tag-list)) (car imenu--rescan-item))
378
429
          (setq tag-list (cdr tag-list)))
379
430
      ;; If imenu or etags returns already groups (etags will do this probably
380
431
      ;; not, but imenu will do this sometimes - e.g. with cperl) then we do not
392
443
 
393
444
(silentcomp-provide 'ecb-speedbar)
394
445
 
395
 
;;; ecb-speedbar.el ends here
 
 
b'\\ No newline at end of file'
 
446
;;; ecb-speedbar.el ends here