File: sun-eos-browser.el

package info (click to toggle)
xemacs20 20.4-13
  • links: PTS
  • area: main
  • in suites: slink
  • size: 67,324 kB
  • ctags: 57,643
  • sloc: lisp: 586,197; ansic: 184,662; sh: 4,296; asm: 3,179; makefile: 2,021; perl: 1,059; csh: 96; sed: 22
file content (162 lines) | stat: -rw-r--r-- 4,511 bytes parent folder | download | duplicates (13)
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