0
|
1 ;;!emacs
|
|
2 ;;
|
|
3 ;; FILE: br-init.el
|
|
4 ;; SUMMARY: OO-Browser per Emacs session initialization.
|
|
5 ;; USAGE: GNU Emacs Lisp Library
|
|
6 ;; KEYWORDS: oop, tools
|
|
7 ;;
|
|
8 ;; AUTHOR: Bob Weiner
|
100
|
9 ;; ORG: InfoDock Associates
|
0
|
10 ;;
|
|
11 ;; ORIG-DATE: 18-May-90
|
100
|
12 ;; LAST-MOD: 20-Feb-97 at 07:02:16 by Bob Weiner
|
0
|
13 ;;
|
100
|
14 ;; Copyright (C) 1990-1995, 1997 Free Software Foundation, Inc.
|
0
|
15 ;; See the file BR-COPY for license information.
|
|
16 ;;
|
|
17 ;; This file is part of the OO-Browser.
|
|
18 ;;
|
|
19 ;; DESCRIPTION:
|
|
20 ;; DESCRIP-END.
|
|
21
|
|
22 ;;; ************************************************************************
|
|
23 ;;; Personal Variable Defaults
|
|
24 ;;; ************************************************************************
|
|
25
|
|
26 ;; >>> If you wish to edit classes displayed by the browser in an editor
|
100
|
27 ;; other than Emacs, set the `br-editor-cmd' variable to the command you
|
0
|
28 ;; want to edit with. Arguments to the command should be placed in
|
|
29 ;; 'br-ed[1-9], with one string argument per variable'. Keep in
|
|
30 ;; mind that the command must generate a new window under your
|
|
31 ;; window system. For example, to run vi under X, one needs to use the
|
|
32 ;; command line "xterm -e vi", the settings would then be:
|
|
33 ;;
|
|
34 ;; (setq br-editor-cmd "xterm" br-ed1 "-e"
|
|
35 ;; br-ed2 "vi")
|
|
36 ;;
|
|
37 ;; This editor will only be used when the browser is run under a window
|
|
38 ;; system external to Emacs, like X. (In such a case, the variable
|
100
|
39 ;; `hyperb:window-system' will be non-nil).
|
0
|
40 ;;
|
|
41 ;;
|
|
42 (defvar br-editor-cmd nil
|
|
43 "When non-nil, the OO-Browser uses a non-standard command for editing files.
|
|
44 This may be either a string to invoke an external program or an Emacs
|
|
45 Lisp function which takes a single file argument.")
|
|
46
|
|
47 (setq br-ed1 nil br-ed2 nil br-ed3 nil br-ed4 nil br-ed5 nil
|
|
48 br-ed6 nil br-ed7 nil br-ed8 nil br-ed9 nil)
|
|
49
|
|
50 ;;
|
|
51 ;; >>> If you want to view classes in a read-only fashion outside of Emacs,
|
100
|
52 ;; set the following `br-viewer-cmd' and `br-vw[1-9]' variables in a
|
0
|
53 ;; similar manner as you did for the editor variables above.
|
|
54 ;;
|
|
55 ;; For example, to use "xmore", an X-compatible version of more, as your
|
|
56 ;; viewer, use the following settings:
|
|
57 ;;
|
|
58 ;; (setq br-viewer-cmd "xmore")
|
|
59 ;;
|
|
60 (defvar br-viewer-cmd nil
|
|
61 "When non-nil, the OO-Browser uses a non-standard command for viewing files.
|
|
62 This may be either a string to invoke an external program or an Emacs
|
|
63 Lisp function which takes a single file argument.")
|
|
64
|
|
65 (setq br-vw1 nil br-vw2 nil br-vw3 nil br-vw4 nil br-vw5 nil
|
|
66 br-vw6 nil br-vw7 nil br-vw8 nil br-vw9 nil)
|
|
67
|
|
68 ;;
|
|
69 ;;
|
|
70 (defvar br-skip-dir-regexps
|
|
71 (if (eq system-type 'next-mach)
|
|
72 ;; .E is an Eiffel system directory
|
|
73 '("^RCS$" "^SCCS$" "\\.lproj$" "^obj$" "\\.E$")
|
|
74 '("^RCS$" "^SCCS$" "\\.E$"))
|
|
75 "*List of regexps matching subdirectories OO-Browser will not descend when scanning files.")
|
|
76
|
|
77
|
|
78 ;;; ************************************************************************
|
|
79 ;;; Public functions
|
|
80 ;;; ************************************************************************
|
|
81
|
|
82 (or (fboundp 'frame-width) (fset 'frame-width 'screen-width))
|
|
83 (or (fboundp 'frame-height) (fset 'frame-width 'screen-height))
|
|
84 (or (fboundp 'selected-frame)
|
|
85 (cond ((fboundp 'selected-screen)
|
|
86 (fset 'selected-frame 'selected-screen))
|
|
87 ((fboundp 'epoch::current-screen)
|
|
88 (fset 'selected-frame 'epoch::current-screen))
|
|
89 (t
|
|
90 (defun selected-frame ()
|
|
91 "Always return t since current frame is always selected."
|
|
92 t))))
|
|
93
|
|
94 (defun br-after-term-init ()
|
|
95 (let ((hypb (expand-file-name "hypb/" br-directory)))
|
|
96 (or (featurep 'hyperbole)
|
|
97 (br-member hypb load-path)
|
|
98 ;; br-site.el should have already loaded "hversion.el".
|
|
99 (load "hyperbole" t t)
|
|
100 ;; Use Hyperbole mouse and keyboard handlers included with the
|
|
101 ;; OO-Browser since Hyperbole is not available on this system.
|
|
102 (progn (or (br-member hypb load-path)
|
|
103 (setq load-path (cons hypb load-path)))
|
|
104 ;;
|
|
105 ;; Necessary to prevent action-key and assist-key from
|
|
106 ;; trying to load this Hyperbole library.
|
|
107 (provide 'hsite)
|
|
108 ;;
|
|
109 (defun hkey-either (arg)
|
|
110 "Executes `action-key' or with non-nil ARG executes `assist-key'."
|
|
111 (interactive "P")
|
|
112 (if arg (assist-key) (action-key)))
|
|
113 ;;
|
100
|
114 ;; A value of t for `hkey-init' below will cause the
|
0
|
115 ;; Smart Keys to be bound to keyboard keys in addition to any
|
|
116 ;; mouse key bindings. Comment it out or set it to nil if you
|
|
117 ;; don't want these bindings. Or change the bindings in the
|
|
118 ;; succeeding lines.
|
|
119 (or (boundp 'hkey-init) (setq hkey-init t))
|
|
120 (and hkey-init
|
|
121 (not (global-key-binding "\M-\C-m"))
|
|
122 (global-set-key "\M-\C-m" 'hkey-either))
|
|
123 ;;
|
|
124 ;; Bind a key, {C-h A}, for Action Key help and {C-u C-h A}
|
|
125 ;; for Assist key help.
|
|
126 (and hkey-init
|
|
127 (not (where-is-internal 'hkey-help))
|
|
128 (define-key help-map "A" 'hkey-help))
|
|
129
|
|
130 ;; Setup Action and Assist keys to perform only
|
|
131 ;; browser-related actions.
|
|
132 (require 'hui-mouse)
|
|
133 (setq hkey-alist
|
|
134 '(
|
|
135 ((and (not (eobp))
|
|
136 (or (eolp) (and selective-display
|
|
137 (= (following-char) ?\^M)))) .
|
|
138 ((smart-scroll-up) .
|
|
139 (smart-scroll-down)))
|
|
140 ;;
|
|
141 ((br-in-browser) .
|
|
142 ((smart-br-dispatch) . (smart-br-assist-dispatch)))
|
|
143 ;;
|
|
144 ((eq major-mode 'Buffer-menu-mode) .
|
|
145 ((smart-buffer-menu) . (smart-buffer-menu-assist)))
|
|
146 ;;
|
|
147 ((eq major-mode 'dired-mode) .
|
|
148 ((smart-dired) . (smart-dired-assist)))
|
|
149 ;;
|
|
150 ((eq major-mode 'tar-mode) .
|
|
151 ((smart-tar) . (smart-tar-assist)))
|
|
152 ;;
|
|
153 (buffer-read-only .
|
|
154 ((scroll-up) . (scroll-down)))
|
|
155 )))))
|
|
156 ;;
|
|
157 (if (stringp br-editor-cmd)
|
|
158 (let ((br-editor-cmd (downcase br-editor-cmd)))
|
|
159 (and (string-match "emacs" br-editor-cmd)
|
|
160 (setq br-editor-cmd nil))))
|
|
161 (if (stringp br-viewer-cmd)
|
|
162 (let ((br-viewer-cmd (downcase br-viewer-cmd)))
|
|
163 (and (string-match "emacs" br-viewer-cmd)
|
|
164 (setq br-viewer-cmd nil))))
|
|
165 ;;
|
|
166 (require 'br)
|
|
167 (require 'hmouse-br)
|
|
168 (require 'hmouse-drv)
|
|
169 ;;
|
|
170 ;; Loads menus under non-tty InfoDock, XEmacs or Emacs19; does nothing
|
|
171 ;; otherwise.
|
|
172 (and (not (featurep 'br-menu)) hyperb:window-system
|
|
173 (or hyperb:lemacs-p hyperb:emacs19-p) (require 'br-menu))
|
|
174 ;;
|
|
175 ;; Adds or replaces class entry in an Environment
|
|
176 (global-set-key "\C-c^" 'br-add-class-file)
|
|
177 ;;
|
|
178 ;; Goes to and from class viewer window
|
|
179 (global-set-key "\C-c\C-v" 'br-to-from-viewer)
|
|
180 ;;
|
|
181 (br-init-autoloads)
|
|
182 ;;
|
|
183 (if (boundp 'hmouse-bindings)
|
|
184 ;; Mouse support has been initialized, possibly by Hyperbole.
|
|
185 nil
|
|
186 (require 'hmouse-key)
|
|
187 ;; See the documentation for this function for instructions on how to
|
|
188 ;; setup shifted or unshifted Action and Assist mouse buttons.
|
|
189 (hmouse-shift-buttons)))
|
|
190
|
|
191 (defun br-init-autoloads ()
|
|
192 "Setup OO-Browser autoloaded functions."
|
|
193 (autoload 'br-add-class-file "br" "Add file to OO-Browser Environment" t)
|
|
194 (autoload 'br-env-browse "br" "Browse an existing OO-Browser Environment" t)
|
|
195 (autoload 'br-env-load "br" "Load a new OO-Browser Environment" t)
|
|
196 (autoload 'br-to-from-viewer "br" "Move between list and viewer windows" t)
|
|
197 ;;
|
|
198 (autoload 'hmail:compose "hmail"
|
|
199 "Compose mail with ADDRESS and evaluation of EXPR." t)
|
|
200 (autoload 'hypb:configuration "hypb"
|
100
|
201 "Insert Emacs configuration information into OUT-BUF or current buffer." nil)
|
|
202 (autoload 'hypb:display-file-with-logo "hypb" "Display FILE with IDA logo." nil)
|
0
|
203 ;;
|
100
|
204 (autoload 'c++-browse "c++-browse" "C++/C OO-Browser" t)
|
0
|
205 (autoload 'clos-browse "clos-brows" "Common Lisp OO-Browser" t)
|
|
206 (autoload 'eif-browse "eif-browse" "Eiffel OO-Browser" t)
|
|
207 (autoload 'info-browse "info-brows" "Info OO-Browser" t)
|
|
208 (autoload 'java-browse "java-brows" "Java OO-Browser" t)
|
|
209 (autoload 'objc-browse "objc-brows" "Objective-C OO-Browser" t)
|
|
210 (autoload 'smt-browse "smt-browse" "Smalltalk OO-Browser" t)
|
|
211 )
|
|
212
|
|
213 ;;; ************************************************************************
|
|
214 ;;; Internal functions
|
|
215 ;;; ************************************************************************
|
|
216
|
|
217 (provide 'br-init)
|