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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
;;; sun-eos-browser.el --- Implements the XEmacs/SPARCworks SourceBrowser interface
;; Copyright (C) 1995 Sun Microsystems, Inc.
;; Maintainer: Eduardo Pelegri-Llopart <eduardo.pelegri-llopart@Eng.Sun.COM>
;; Author: Eduardo Pelegri-Llopart <eduardo.pelegri-llopart@Eng.Sun.COM>
;; Keywords: SPARCworks EOS Era on SPARCworks SBrowser Source Browser
;;; Commentary:
;; Please send feedback to eduardo.pelegri-llopart@eng.sun.com
;;; Code:
(require 'eos-common "sun-eos-common")
;; ================
;; Browser Protocol
;; ================
;;
;; three notifications
;;
;; SPRO_SBENG_START
;; SPRO_SBENG_CURRENT_ELEMENT CONTEXT_UID filename lineno center==0
;; SPRO_SBENG_QUIT
(defvar eos::currentMatch-inst "/* XPM */
static char * file[] = {
\"14 11 5 1\",
\" s background c #FFFFFFFFFFFF\",
\". c #000000000000\",
\"X c #0000FFFF0000\",
\"o c #000077770000\",
\"O c #000044440000\",
\" \",
\" oo \",
\" oXOo \",
\" oXXXOo \",
\" oXXXXXOo \",
\" oXXXXXXXo. \",
\" oXXXXXOo \",
\" oXXXOo \",
\" oXOo \",
\" oo \",
\" \"};")
(defvar eos::currentMatch-inst-alt "/* XPM */
static char * file[] = {
\"14 11 5 1\",
\" s background c #FFFFFFFFFFFF\",
\". c #000000000000\",
\"X c #0000FFFF0000\",
\"o c #000077770000\",
\"O c #000044440000\",
\" \",
\" oo \",
\" oXOo \",
\" oXXXOo \",
\" oXXXXXOo \",
\" oXXXXXXXo. \",
\" oXXXXXOo \",
\" oXXXOo \",
\" oXOo \",
\" oo .. \",
\" .. \"};")
(defvar sbrowser-pattern-list nil)
(defun eos::browser-startup ()
;; Actions to do at startup for eos-browser.el
(make-face 'sbrowse-arrow-face)
(set-face-foreground 'sbrowse-arrow-face
eos::sbrowse-arrow-color)
(set-face-background 'sbrowse-arrow-face
(face-background (get-face 'default)))
(setq sbrowser-pattern-list ; list of browser TT patterns
(eos::create-sbrowser-patterns))
;; now register glyphs and faces...
(eos::annotation-set-inst 'sbrowser 'x eos::currentMatch-inst [nothing])
(eos::annotation-set-inst 'sbrowser 'tty "|>" [nothing])
(eos::annotation-set-face 'sbrowser 'x
(get-face 'sbrowse-arrow-face)
(get-face 'sbrowse-arrow-face))
(eos::annotation-set-face 'sbrowser 'tty
(get-face 'highlight)
(get-face 'highlight))
)
(defvar eos::current-match nil)
(defun eos::spro_sbeng_current_element (msg pat)
;; SPRO_SBENG_CURRENT_ELEMENT CONTEXT_UID filename lineno center==0
(let* ((filename
(get-tooltalk-message-attribute msg 'arg_val 1))
(lineno
(read (get-tooltalk-message-attribute msg 'arg_ival 2)))
)
(setq eos::current-match
(eos::make-annotation-visible eos::current-match
filename
lineno
'sbrowser))
(return-tooltalk-message msg)
))
(defun eos::spro_sbeng_start (msg pat)
(eos::make-annotation-invisible eos::current-match)
(return-tooltalk-message msg)
)
(defun eos::spro_sbeng_quit (msg pat)
(eos::make-annotation-invisible eos::current-match)
(return-tooltalk-message msg)
)
(defun eos::create-sbrowser-patterns ()
;; returns list of patterns
(list
(make-an-observer "SPRO_SBENG_CURRENT_ELEMENT"
'eos::spro_sbeng_current_element)
(make-an-observer "SPRO_SBENG_START"
'eos::spro_sbeng_start)
(make-an-observer "SPRO_SBENG_QUIT"
'eos::spro_sbeng_quit)
))
(defun eos::register-sbrowser-patterns ()
;; register all sbrowser patterns
(mapcar 'register-tooltalk-pattern sbrowser-pattern-list))
(defun eos::unregister-sbrowser-patterns ()
;; unregister all sbrowser patterns
(mapcar 'unregister-tooltalk-pattern sbrowser-pattern-list))
;; Actions to start a sourcebrowser in the background.
(defvar eos::sbrowser-process nil
"sbrowser process for the background. Only one per XEmacs")
(defun eos::start-sbrowser ()
;; Start an "sbrowser -editor" in the background. Will ask for confirmation if
;; XEmacs somehow believes there is already one running
(interactive)
(if (or (not (processp eos::sbrowser-process))
(not (eq (process-status eos::sbrowser-process) 'run))
(yes-or-no-p
"Warning! XEmacs believes there already is a sbrowser -editor, proceed?"))
(progn
(setq eos::sbrowser-process
(start-process "*eos sbrowser*" nil "sbrowser" "-editor"))
(message "Starting SBrowser subprocess")
(eos::select-sbrowser-frame (selected-frame))
)))
(provide 'eos-browser)
;;; sun-eos-browser.el ends here
|