-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscala-mode-feature-speedbar.el
89 lines (71 loc) · 3.11 KB
/
scala-mode-feature-speedbar.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
;;; -*-Emacs-Lisp-*-
;;; scala-mode-feature-speedbar.el -
;; Copyright (C) 2009-2011 Scala Dev Team at EPFL
;; Authors: See AUTHORS file
;; Keywords: scala languages oop
;;; License
;; SCALA LICENSE
;;
;; Copyright (c) 2002-2011 EPFL, Lausanne, unless otherwise specified.
;; All rights reserved.
;;
;; This software was developed by the Programming Methods Laboratory of the
;; Swiss Federal Institute of Technology (EPFL), Lausanne, Switzerland.
;;
;; Permission to use, copy, modify, and distribute this software in source
;; or binary form for any purpose with or without fee is hereby granted,
;; provided that the following conditions are met:
;;
;; 1. Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; 2. Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; 3. Neither the name of the EPFL nor the names of its contributors
;; may be used to endorse or promote products derived from this
;; software without specific prior written permission.
;;
;;
;; THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
;; ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
;; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
;; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
;; OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
;; SUCH DAMAGE.
;;; Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(provide 'scala-mode-feature-speedbar)
(eval-when-compile
(require 'scala-mode-feature-tags))
(require 'speedbar)
;; Customization
(defgroup scala-mode-feature:speedbar nil
"Options how the speedbar works under Scala mode"
:group 'scala)
(defcustom scala-mode-feature:speedbar-open nil
"Normally scala-mode starts with the speedbar closed.\
Turning this on will open it whenever scala-mode is loaded."
:type 'boolean
:set (lambda (sym val)
(set-default sym val)
(when val
(speedbar 1)))
:group 'scala-mode-feature:speedbar)
(defun scala-mode-feature-speedbar-install ()
(define-key speedbar-file-key-map "\C-t" '(lambda () (interactive)
(speedbar-flush-expand-line)))
(add-hook 'speedbar-mode-hook
(lambda()
(speedbar-add-supported-extension "\\.scala")))
(setq speedbar-fetch-etags-command scala-mode-feature:tags-command)
(setq speedbar-fetch-etags-arguments '("-e" "-f -"))
(add-to-list 'speedbar-fetch-etags-parse-list
'("\\.scala" . speedbar-parse-c-or-c++tag))
t)