Mercurial > hg > xemacs-beta
diff lisp/oobr/br-init.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 4103f0995bd7 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/oobr/br-init.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,217 @@ +;;!emacs +;; +;; FILE: br-init.el +;; SUMMARY: OO-Browser per Emacs session initialization. +;; USAGE: GNU Emacs Lisp Library +;; KEYWORDS: oop, tools +;; +;; AUTHOR: Bob Weiner +;; ORG: Motorola Inc. +;; +;; ORIG-DATE: 18-May-90 +;; LAST-MOD: 1-Nov-95 at 20:22:46 by Bob Weiner +;; +;; Copyright (C) 1990-1995 Free Software Foundation, Inc. +;; See the file BR-COPY for license information. +;; +;; This file is part of the OO-Browser. +;; +;; DESCRIPTION: +;; DESCRIP-END. + +;;; ************************************************************************ +;;; Personal Variable Defaults +;;; ************************************************************************ + +;; >>> If you wish to edit classes displayed by the browser in an editor +;; other than Emacs, set the 'br-editor-cmd' variable to the command you +;; want to edit with. Arguments to the command should be placed in +;; 'br-ed[1-9], with one string argument per variable'. Keep in +;; mind that the command must generate a new window under your +;; window system. For example, to run vi under X, one needs to use the +;; command line "xterm -e vi", the settings would then be: +;; +;; (setq br-editor-cmd "xterm" br-ed1 "-e" +;; br-ed2 "vi") +;; +;; This editor will only be used when the browser is run under a window +;; system external to Emacs, like X. (In such a case, the variable +;; 'hyperb:window-system' will be non-nil). +;; +;; +(defvar br-editor-cmd nil + "When non-nil, the OO-Browser uses a non-standard command for editing files. +This may be either a string to invoke an external program or an Emacs +Lisp function which takes a single file argument.") + +(setq br-ed1 nil br-ed2 nil br-ed3 nil br-ed4 nil br-ed5 nil + br-ed6 nil br-ed7 nil br-ed8 nil br-ed9 nil) + +;; +;; >>> If you want to view classes in a read-only fashion outside of Emacs, +;; set the following 'br-viewer-cmd' and 'br-vw[1-9]' variables in a +;; similar manner as you did for the editor variables above. +;; +;; For example, to use "xmore", an X-compatible version of more, as your +;; viewer, use the following settings: +;; +;; (setq br-viewer-cmd "xmore") +;; +(defvar br-viewer-cmd nil + "When non-nil, the OO-Browser uses a non-standard command for viewing files. +This may be either a string to invoke an external program or an Emacs +Lisp function which takes a single file argument.") + +(setq br-vw1 nil br-vw2 nil br-vw3 nil br-vw4 nil br-vw5 nil + br-vw6 nil br-vw7 nil br-vw8 nil br-vw9 nil) + +;; +;; +(defvar br-skip-dir-regexps + (if (eq system-type 'next-mach) + ;; .E is an Eiffel system directory + '("^RCS$" "^SCCS$" "\\.lproj$" "^obj$" "\\.E$") + '("^RCS$" "^SCCS$" "\\.E$")) + "*List of regexps matching subdirectories OO-Browser will not descend when scanning files.") + + +;;; ************************************************************************ +;;; Public functions +;;; ************************************************************************ + +(or (fboundp 'frame-width) (fset 'frame-width 'screen-width)) +(or (fboundp 'frame-height) (fset 'frame-width 'screen-height)) +(or (fboundp 'selected-frame) + (cond ((fboundp 'selected-screen) + (fset 'selected-frame 'selected-screen)) + ((fboundp 'epoch::current-screen) + (fset 'selected-frame 'epoch::current-screen)) + (t + (defun selected-frame () + "Always return t since current frame is always selected." + t)))) + +(defun br-after-term-init () + (let ((hypb (expand-file-name "hypb/" br-directory))) + (or (featurep 'hyperbole) + (br-member hypb load-path) + ;; br-site.el should have already loaded "hversion.el". + (load "hyperbole" t t) + ;; Use Hyperbole mouse and keyboard handlers included with the + ;; OO-Browser since Hyperbole is not available on this system. + (progn (or (br-member hypb load-path) + (setq load-path (cons hypb load-path))) + ;; + ;; Necessary to prevent action-key and assist-key from + ;; trying to load this Hyperbole library. + (provide 'hsite) + ;; + (defun hkey-either (arg) + "Executes `action-key' or with non-nil ARG executes `assist-key'." + (interactive "P") + (if arg (assist-key) (action-key))) + ;; + ;; A value of t for 'hkey-init' below will cause the + ;; Smart Keys to be bound to keyboard keys in addition to any + ;; mouse key bindings. Comment it out or set it to nil if you + ;; don't want these bindings. Or change the bindings in the + ;; succeeding lines. + (or (boundp 'hkey-init) (setq hkey-init t)) + (and hkey-init + (not (global-key-binding "\M-\C-m")) + (global-set-key "\M-\C-m" 'hkey-either)) + ;; + ;; Bind a key, {C-h A}, for Action Key help and {C-u C-h A} + ;; for Assist key help. + (and hkey-init + (not (where-is-internal 'hkey-help)) + (define-key help-map "A" 'hkey-help)) + + ;; Setup Action and Assist keys to perform only + ;; browser-related actions. + (require 'hui-mouse) + (setq hkey-alist + '( + ((and (not (eobp)) + (or (eolp) (and selective-display + (= (following-char) ?\^M)))) . + ((smart-scroll-up) . + (smart-scroll-down))) + ;; + ((br-in-browser) . + ((smart-br-dispatch) . (smart-br-assist-dispatch))) + ;; + ((eq major-mode 'Buffer-menu-mode) . + ((smart-buffer-menu) . (smart-buffer-menu-assist))) + ;; + ((eq major-mode 'dired-mode) . + ((smart-dired) . (smart-dired-assist))) + ;; + ((eq major-mode 'tar-mode) . + ((smart-tar) . (smart-tar-assist))) + ;; + (buffer-read-only . + ((scroll-up) . (scroll-down))) + ))))) + ;; + (if (stringp br-editor-cmd) + (let ((br-editor-cmd (downcase br-editor-cmd))) + (and (string-match "emacs" br-editor-cmd) + (setq br-editor-cmd nil)))) + (if (stringp br-viewer-cmd) + (let ((br-viewer-cmd (downcase br-viewer-cmd))) + (and (string-match "emacs" br-viewer-cmd) + (setq br-viewer-cmd nil)))) + ;; + (require 'br) + (require 'hmouse-br) + (require 'hmouse-drv) + ;; + ;; Loads menus under non-tty InfoDock, XEmacs or Emacs19; does nothing + ;; otherwise. + (and (not (featurep 'br-menu)) hyperb:window-system + (or hyperb:lemacs-p hyperb:emacs19-p) (require 'br-menu)) + ;; + ;; Adds or replaces class entry in an Environment + (global-set-key "\C-c^" 'br-add-class-file) + ;; + ;; Goes to and from class viewer window + (global-set-key "\C-c\C-v" 'br-to-from-viewer) + ;; + (br-init-autoloads) + ;; + (if (boundp 'hmouse-bindings) + ;; Mouse support has been initialized, possibly by Hyperbole. + nil + (require 'hmouse-key) + ;; See the documentation for this function for instructions on how to + ;; setup shifted or unshifted Action and Assist mouse buttons. + (hmouse-shift-buttons))) + +(defun br-init-autoloads () + "Setup OO-Browser autoloaded functions." + (autoload 'br-add-class-file "br" "Add file to OO-Browser Environment" t) + (autoload 'br-env-browse "br" "Browse an existing OO-Browser Environment" t) + (autoload 'br-env-load "br" "Load a new OO-Browser Environment" t) + (autoload 'br-to-from-viewer "br" "Move between list and viewer windows" t) + ;; + (autoload 'hmail:compose "hmail" + "Compose mail with ADDRESS and evaluation of EXPR." t) + (autoload 'hypb:configuration "hypb" + "Insert Emacs configuration information into OUT-BUF or current buffer.") + ;; + (autoload 'c++-browse "c++-browse" "C++ OO-Browser" t) + (autoload 'clos-browse "clos-brows" "Common Lisp OO-Browser" t) + (autoload 'eif-browse "eif-browse" "Eiffel OO-Browser" t) + (autoload 'info-browse "info-brows" "Info OO-Browser" t) + (autoload 'java-browse "java-brows" "Java OO-Browser" t) + (autoload 'objc-browse "objc-brows" "Objective-C OO-Browser" t) + (autoload 'smt-browse "smt-browse" "Smalltalk OO-Browser" t) + (autoload 'python-browse "python-browse" "Python OO-Browser" t) + ) + +;;; ************************************************************************ +;;; Internal functions +;;; ************************************************************************ + +(provide 'br-init)