annotate lisp/cedet/ede/speedbar.el @ 108712:056a00ed4b81

Use terminfo rather than termcap on recent NetBSD. * configure.in: On NetBSD, if terminfo is found, use it in preference to termcap. (Bug#6190)
author Glenn Morris <rgm@gnu.org>
date Wed, 19 May 2010 23:37:29 -0700
parents 1d1d5d9bd884
children b150a06c6999
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
104496
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
1 ;;; ede/speedbar.el --- Speedbar viewing of EDE projects
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
2
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105842
diff changeset
3 ;;; Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005, 2007, 2008, 2009, 2010
104496
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
4 ;;; Free Software Foundation, Inc.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
5
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
6 ;; Author: Eric M. Ludlam <zappo@gnu.org>
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
7 ;; Keywords: project, make, tags
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
8
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
10
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
13 ;; the Free Software Foundation, either version 3 of the License, or
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
14 ;; (at your option) any later version.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
15
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
19 ;; GNU General Public License for more details.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
20
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
23
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
24 ;;; Commentary:
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
25 ;;
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
26 ;; Display a project's hierarchy in speedbar.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
27 ;;
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
28
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
29 ;;; Code:
105652
51bc239bdc37 * cedet/srecode/srt.el:
Chong Yidong <cyd@stupidchicken.com>
parents: 105377
diff changeset
30
51bc239bdc37 * cedet/srecode/srt.el:
Chong Yidong <cyd@stupidchicken.com>
parents: 105377
diff changeset
31 (eval-when-compile (require 'cl))
104496
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
32 (require 'speedbar)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
33 (require 'eieio-speedbar)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
34 (require 'ede)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
35
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
36 ;;; Speedbar support mode
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
37 ;;
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
38 (defvar ede-speedbar-key-map nil
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
39 "A Generic object based speedbar display keymap.")
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
40
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
41 (defun ede-speedbar-make-map ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
42 "Make the generic object based speedbar keymap."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
43 (setq ede-speedbar-key-map (speedbar-make-specialized-keymap))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
44
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
45 ;; General viewing things
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
46 (define-key ede-speedbar-key-map "\C-m" 'speedbar-edit-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
47 (define-key ede-speedbar-key-map "+" 'speedbar-expand-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
48 (define-key ede-speedbar-key-map "=" 'speedbar-expand-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
49 (define-key ede-speedbar-key-map "-" 'speedbar-contract-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
50 (define-key ede-speedbar-key-map " " 'speedbar-toggle-line-expansion)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
51
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
52 ;; Some object based things
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
53 (define-key ede-speedbar-key-map "C" 'eieio-speedbar-customize-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
54
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
55 ;; Some project based things
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
56 (define-key ede-speedbar-key-map "R" 'ede-speedbar-remove-file-from-target)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
57 (define-key ede-speedbar-key-map "b" 'ede-speedbar-compile-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
58 (define-key ede-speedbar-key-map "B" 'ede-speedbar-compile-project)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
59 (define-key ede-speedbar-key-map "D" 'ede-speedbar-make-distribution)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
60 (define-key ede-speedbar-key-map "E" 'ede-speedbar-edit-projectfile)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
61 )
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
62
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
63 (defvar ede-speedbar-menu
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
64 '([ "Compile" ede-speedbar-compile-line t]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
65 [ "Compile Project" ede-speedbar-compile-project
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
66 (ede-project-child-p (speedbar-line-token)) ]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
67 "---"
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
68 [ "Edit File/Tag" speedbar-edit-line
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
69 (not (eieio-object-p (speedbar-line-token)))]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
70 [ "Expand" speedbar-expand-line
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
71 (save-excursion (beginning-of-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
72 (looking-at "[0-9]+: *.\\+. "))]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
73 [ "Contract" speedbar-contract-line
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
74 (save-excursion (beginning-of-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
75 (looking-at "[0-9]+: *.-. "))]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
76 "---"
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
77 [ "Remove File from Target" ede-speedbar-remove-file-from-target
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
78 (stringp (speedbar-line-token)) ]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
79 [ "Customize Project/Target" eieio-speedbar-customize-line
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
80 (eieio-object-p (speedbar-line-token)) ]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
81 [ "Edit Project File" ede-speedbar-edit-projectfile t]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
82 [ "Make Distribution" ede-speedbar-make-distribution
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
83 (ede-project-child-p (speedbar-line-token)) ]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
84 )
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
85 "Menu part in easymenu format used in speedbar while browsing objects.")
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
86
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
87 (eieio-speedbar-create 'ede-speedbar-make-map
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
88 'ede-speedbar-key-map
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
89 'ede-speedbar-menu
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
90 "Project"
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
91 'ede-speedbar-toplevel-buttons)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
92
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
93
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
94 (defun ede-speedbar ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
95 "EDE development environment project browser for speedbar."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
96 (interactive)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
97 (speedbar-frame-mode 1)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
98 (speedbar-change-initial-expansion-list "Project")
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
99 (speedbar-get-focus)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
100 )
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
101
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
102 (defun ede-speedbar-toplevel-buttons (dir)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
103 "Return a list of objects to display in speedbar.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
104 Argument DIR is the directory from which to derive the list of objects."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
105 ede-projects
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
106 )
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
107
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
108 ;;; Some special commands useful in EDE
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
109 ;;
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
110 (defun ede-speedbar-remove-file-from-target ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
111 "Remove the file at point from it's target."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
112 (interactive)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
113 (if (stringp (speedbar-line-token))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
114 (progn
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
115 (speedbar-edit-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
116 (ede-remove-file))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
117
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
118 (defun ede-speedbar-compile-line ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
119 "Compile/Build the project or target on this line."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
120 (interactive)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
121 (let ((obj (eieio-speedbar-find-nearest-object)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
122 (if (not (eieio-object-p obj))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
123 nil
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
124 (cond ((obj-of-class-p obj ede-project)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
125 (project-compile-project obj))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
126 ((obj-of-class-p obj ede-target)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
127 (project-compile-target obj))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
128 (t (error "Error in speedbar structure"))))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
129
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
130 (defun ede-speedbar-get-top-project-for-line ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
131 "Return a project object for this line."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
132 (interactive)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
133 (let ((obj (eieio-speedbar-find-nearest-object)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
134 (if (not (eieio-object-p obj))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
135 (error "Error in speedbar or ede structure")
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
136 (if (obj-of-class-p obj ede-target)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
137 (setq obj (ede-target-parent obj)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
138 (if (obj-of-class-p obj ede-project)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
139 obj
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
140 (error "Error in speedbar or ede structure")))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
141
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
142 (defun ede-speedbar-compile-project ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
143 "Compile/Build the project which owns this line."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
144 (interactive)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
145 (project-compile-project (ede-speedbar-get-top-project-for-line)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
146
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
147 (defun ede-speedbar-compile-file-project ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
148 "Compile/Build the target which the current file belongs to."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
149 (interactive)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
150 (let* ((file (speedbar-line-file))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
151 (buf (find-file-noselect file))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
152 (bwin (get-buffer-window buf 0)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
153 (if bwin
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
154 (progn
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
155 (select-window bwin)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
156 (raise-frame (window-frame bwin)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
157 (dframe-select-attached-frame speedbar-frame)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
158 (set-buffer buf)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
159 (ede-compile-target))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
160
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
161 (defun ede-speedbar-make-distribution ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
162 "Edit the project file based on this line."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
163 (interactive)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
164 (project-make-dist (ede-speedbar-get-top-project-for-line)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
165
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
166 (defun ede-speedbar-edit-projectfile ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
167 "Edit the project file based on this line."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
168 (interactive)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
169 (project-edit-file-target (ede-speedbar-get-top-project-for-line)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
170
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
171 ;;; Speedbar Project Methods
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
172 ;;
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
173 (defun ede-find-nearest-file-line ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
174 "Go backwards until we find a file."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
175 (save-excursion
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
176 (beginning-of-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
177 (looking-at "^\\([0-9]+\\):")
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
178 (let ((depth (string-to-number (match-string 1))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
179 (while (not (re-search-forward "[]] [^ ]"
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
180 (save-excursion (end-of-line)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
181 (point))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
182 t))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
183 (re-search-backward (format "^%d:" (1- depth)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
184 (setq depth (1- depth)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
185 (speedbar-line-token))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
186
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
187 (defmethod eieio-speedbar-derive-line-path ((obj ede-project) &optional depth)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
188 "Return the path to OBJ.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
189 Optional DEPTH is the depth we start at."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
190 (file-name-directory (oref obj file))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
191 )
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
192
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
193 (defmethod eieio-speedbar-derive-line-path ((obj ede-target) &optional depth)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
194 "Return the path to OBJ.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
195 Optional DEPTH is the depth we start at."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
196 (let ((proj (ede-target-parent obj)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
197 ;; Check the type of line we are currently on.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
198 ;; If we are on a child, we need a file name too.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
199 (save-excursion
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
200 (let ((lt (speedbar-line-token)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
201 (if (or (eieio-object-p lt) (stringp lt))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
202 (eieio-speedbar-derive-line-path proj)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
203 ;; a child element is a token. Do some work to get a filename too.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
204 (concat (eieio-speedbar-derive-line-path proj)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
205 (ede-find-nearest-file-line)))))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
206
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
207 (defmethod eieio-speedbar-description ((obj ede-project))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
208 "Provide a speedbar description for OBJ."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
209 (ede-description obj))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
210
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
211 (defmethod eieio-speedbar-description ((obj ede-target))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
212 "Provide a speedbar description for OBJ."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
213 (ede-description obj))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
214
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
215 (defmethod eieio-speedbar-child-description ((obj ede-target))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
216 "Provide a speedbar description for a plain-child of OBJ.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
217 A plain child is a child element which is not an EIEIO object."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
218 (or (speedbar-item-info-file-helper)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
219 (speedbar-item-info-tag-helper)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
220
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
221 (defmethod eieio-speedbar-object-buttonname ((object ede-project))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
222 "Return a string to use as a speedbar button for OBJECT."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
223 (if (ede-parent-project object)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
224 (ede-name object)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
225 (concat (ede-name object) " " (oref object version))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
226
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
227 (defmethod eieio-speedbar-object-buttonname ((object ede-target))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
228 "Return a string to use as a speedbar button for OBJECT."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
229 (ede-name object))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
230
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
231 (defmethod eieio-speedbar-object-children ((this ede-project))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
232 "Return the list of speedbar display children for THIS."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
233 (condition-case nil
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
234 (with-slots (subproj targets) this
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
235 (append subproj targets))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
236 (error nil)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
237
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
238 (defmethod eieio-speedbar-object-children ((this ede-target))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
239 "Return the list of speedbar display children for THIS."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
240 (oref this source))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
241
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
242 (defmethod eieio-speedbar-child-make-tag-lines ((this ede-target) depth)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
243 "Create a speedbar tag line for a child of THIS.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
244 It has depth DEPTH."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
245 (with-slots (source) this
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
246 (mapcar (lambda (car)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
247 (speedbar-make-tag-line 'bracket ?+
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
248 'speedbar-tag-file
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
249 car
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
250 car
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
251 'ede-file-find
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
252 car
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
253 'speedbar-file-face depth))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
254 source)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
255
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
256 ;;; Generic file management for TARGETS
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
257 ;;
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
258 (defun ede-file-find (text token indent)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
259 "Find the file TEXT at path TOKEN.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
260 INDENT is the current indentation level."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
261 (speedbar-find-file-in-frame
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
262 (expand-file-name token (speedbar-line-directory indent)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
263 (speedbar-maybee-jump-to-attached-frame))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
264
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
265 (defun ede-create-tag-buttons (filename indent)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
266 "Create the tag buttons associated with FILENAME at INDENT."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
267 (let* ((lst (speedbar-fetch-dynamic-tags filename)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
268 ;; if no list, then remove expando button
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
269 (if (not lst)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
270 (speedbar-change-expand-button-char ??)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
271 (speedbar-with-writable
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
272 ;; We must do 1- because indent was already incremented.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
273 (speedbar-insert-generic-list (1- indent)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
274 lst
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
275 'ede-tag-expand
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
276 'ede-tag-find)))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
277
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
278 (defun ede-tag-expand (text token indent)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
279 "Expand a tag sublist. Imenu will return sub-lists of specialized tag types.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
280 Etags does not support this feature. TEXT will be the button
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
281 string. TOKEN will be the list, and INDENT is the current indentation
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
282 level."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
283 (cond ((string-match "+" text) ;we have to expand this file
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
284 (speedbar-change-expand-button-char ?-)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
285 (speedbar-with-writable
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
286 (save-excursion
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
287 (end-of-line) (forward-char 1)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
288 (speedbar-insert-generic-list indent token
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
289 'ede-tag-expand
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
290 'ede-tag-find))))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
291 ((string-match "-" text) ;we have to contract this node
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
292 (speedbar-change-expand-button-char ?+)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
293 (speedbar-delete-subblock indent))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
294 (t (error "Ooops... not sure what to do")))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
295 (speedbar-center-buffer-smartly))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
296
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
297 (defun ede-tag-find (text token indent)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
298 "For the tag TEXT in a file TOKEN, goto that position.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
299 INDENT is the current indentation level."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
300 (let ((file (ede-find-nearest-file-line)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
301 (speedbar-find-file-in-frame file)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
302 (save-excursion (speedbar-stealthy-updates))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
303 ;; Reset the timer with a new timeout when cliking a file
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
304 ;; in case the user was navigating directories, we can cancel
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
305 ;; that other timer.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
306 ; (speedbar-set-timer speedbar-update-speed)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
307 (goto-char token)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
308 (run-hooks 'speedbar-visiting-tag-hook)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
309 ;;(recenter)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
310 (speedbar-maybee-jump-to-attached-frame)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
311 ))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
312
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
313 ;;; EDE and the speedbar FILE display
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
314 ;;
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
315 ;; This will add a couple keybindings and menu items into the
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
316 ;; FILE display for speedbar.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
317
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
318 (defvar ede-speedbar-file-menu-additions
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
319 '("----"
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
320 ["Create EDE Target" ede-new-target (ede-current-project) ]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
321 ["Add to project" ede-speedbar-file-add-to-project (ede-current-project) ]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
322 ["Compile project" ede-speedbar-compile-project (ede-current-project) ]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
323 ["Compile file target" ede-speedbar-compile-file-target (ede-current-project) ]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
324 ["Make distribution" ede-make-dist (ede-current-project) ]
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
325 )
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
326 "Set of menu items to splice into the speedbar menu.")
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
327
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
328 (defvar ede-speedbar-file-keymap
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
329 (let ((km (make-sparse-keymap)))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
330 (define-key km "a" 'ede-speedbar-file-add-to-project)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
331 (define-key km "t" 'ede-new-target)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
332 (define-key km "s" 'ede-speedbar)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
333 (define-key km "C" 'ede-speedbar-compile-project)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
334 (define-key km "c" 'ede-speedbar-compile-file-target)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
335 (define-key km "d" 'ede-make-dist)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
336 km)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
337 "Keymap spliced into the speedbar keymap.")
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
338
104497
31e9b85bc047 * cedet/ede/speedbar.el (ede-speedbar-file-setup): Add autoload.
Chong Yidong <cyd@stupidchicken.com>
parents: 104496
diff changeset
339 ;;;###autoload
104496
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
340 (defun ede-speedbar-file-setup ()
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
341 "Setup some keybindings in the Speedbar File display."
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
342 (setq speedbar-easymenu-definition-special
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
343 (append speedbar-easymenu-definition-special
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
344 ede-speedbar-file-menu-additions
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
345 ))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
346 (define-key speedbar-file-key-map "." ede-speedbar-file-keymap)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
347 ;; Finally, if the FILES mode is loaded, force a refresh
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
348 ;; of the menus and such.
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
349 (when (and (string= speedbar-initial-expansion-list-name "files")
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
350 (buffer-live-p speedbar-buffer)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
351 )
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
352 (speedbar-change-initial-expansion-list "files")))
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
353
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
354 (provide 'ede/speedbar)
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
355
104497
31e9b85bc047 * cedet/ede/speedbar.el (ede-speedbar-file-setup): Add autoload.
Chong Yidong <cyd@stupidchicken.com>
parents: 104496
diff changeset
356 ;; Local variables:
31e9b85bc047 * cedet/ede/speedbar.el (ede-speedbar-file-setup): Add autoload.
Chong Yidong <cyd@stupidchicken.com>
parents: 104496
diff changeset
357 ;; generated-autoload-file: "loaddefs.el"
31e9b85bc047 * cedet/ede/speedbar.el (ede-speedbar-file-setup): Add autoload.
Chong Yidong <cyd@stupidchicken.com>
parents: 104496
diff changeset
358 ;; generated-autoload-load-name: "ede/speedbar"
31e9b85bc047 * cedet/ede/speedbar.el (ede-speedbar-file-setup): Add autoload.
Chong Yidong <cyd@stupidchicken.com>
parents: 104496
diff changeset
359 ;; End:
31e9b85bc047 * cedet/ede/speedbar.el (ede-speedbar-file-setup): Add autoload.
Chong Yidong <cyd@stupidchicken.com>
parents: 104496
diff changeset
360
105377
7f4c7f5c0eba Add arch tagline
Miles Bader <miles@gnu.org>
parents: 104497
diff changeset
361 ;; arch-tag: 56721fc9-8eb5-4115-8511-18cf8397ec87
104496
8c4870c15962 * cedet/ede.el, cedet/ede/*.el: New files.
Chong Yidong <cyd@stupidchicken.com>
parents:
diff changeset
362 ;;; ede/speedbar.el ends here