0
|
1 ;;; No byte-compiler warnings
|
|
2 ;(eval-when-compile
|
|
3 ; (require 'w3))
|
|
4
|
|
5 ;;; Keep these obsolete variables for backward compatibility
|
|
6 (defconst era-version "0.95" "\
|
|
7 Version numbers of this version of Era.")
|
|
8
|
|
9 ;; We're (not really anymore) calling this version Sun Era.
|
|
10 (defconst sun-era t)
|
|
11
|
|
12 (defun era-version ()
|
|
13 "Return (obsolete) string describing the version of Era that is running.
|
|
14 Era is now known as XEmacs. Use (emacs-version) instead."
|
|
15 (interactive)
|
|
16 (if (interactive-p)
|
|
17 (message "%s" (era-version))
|
|
18 (format "%sEra %s of %s %s on %s (%s)"
|
|
19 (if sun-era "Sun " "")
|
|
20 era-version
|
|
21 (substring emacs-build-time 0
|
|
22 (string-match " *[0-9]*:" emacs-build-time))
|
|
23 (substring emacs-build-time
|
|
24 (string-match "[0-9]*$" emacs-build-time))
|
|
25 emacs-build-system system-type)))
|
|
26
|
|
27 ;(defun sunpro-maybe-connect-to-tooltalk ()
|
|
28 ; (if (and (not (noninteractive))
|
|
29 ; (fboundp 'command-line-do-tooltalk))
|
|
30 ; (command-line-do-tooltalk nil)))
|
|
31
|
|
32 ;; sunpro-maybe-connect-to-tooltalk must appear in the hook list
|
|
33 ;; before any clients that register patterns, like eos-load.el.
|
|
34 ;; Currently eos-load.el places its functions at the end of the list
|
|
35
|
|
36 ;(add-hook 'before-init-hook 'sunpro-maybe-connect-to-tooltalk)
|
|
37
|
|
38 (set-glyph-image text-pointer-glyph "xterm")
|
|
39 (set-glyph-image nontext-pointer-glyph "xterm")
|
|
40
|
|
41 ;; W3 doesn't know about using pageview, so let's fix that.
|
|
42 ;; There doesn't seem to be any such function `w3-parse-mailcap' - mrb
|
|
43
|
|
44 ;(defun sunpro-fix-postscript-viewer ()
|
|
45 ; (if (not (noninteractive))
|
|
46 ; (condition-case nil
|
|
47 ; (w3-parse-mailcap
|
|
48 ; (expand-file-name "sparcworks/sunpro-mailcap" data-directory))
|
|
49 ; (error nil))))
|
|
50
|
|
51 ;(add-hook 'w3-load-hooks 'sunpro-fix-postscript-viewer)
|
|
52
|
|
53 ;; turn on pending delete without messing up its autoloads
|
|
54 ;(defun sunpro-pending-delete-on ()
|
|
55 ; (if (not (noninteractive))
|
|
56 ; (pending-delete-on nil)))
|
|
57
|
|
58 ;(add-hook 'before-init-hook 'sunpro-pending-delete-on)
|
|
59
|
|
60 ;;; Decide whether to use workshop.el or eos at runtime, based on
|
|
61 ;;; which Sun DevPro products are installed.
|
|
62
|
|
63 (defun sunpro-update-paths-for-workshop ()
|
|
64 "Update exec-path and load-path to find supporting workshop files.
|
|
65 Returns nil if the required files cannot be found."
|
|
66 (and
|
|
67 (cond
|
|
68 ((locate-file "workshop.el" load-path))
|
|
69
|
|
70 ((file-exists-p (concat sunpro-dir "lib/workshop.el"))
|
|
71 (setq load-path (append load-path (list (concat sunpro-dir "lib/"))))))
|
|
72
|
|
73 (cond
|
|
74 ((locate-file "workshop" exec-path))
|
|
75
|
|
76 ((file-exists-p (concat sunpro-dir "bin/workshop"))
|
|
77 (setq exec-path (append exec-path (list (concat sunpro-dir "bin/"))))))))
|
|
78
|
|
79 (defun sunpro-startup ()
|
74
|
80 "Runs at startup if support for Sun Workshop is compiled in. Don't run this."
|
|
81
|
|
82 ;; Sun distribution censors yow, among other things...
|
|
83 (unless (locate-file "yow.el" load-path)
|
|
84 (fmakunbound 'yow)
|
|
85 (delete-menu-item '("Apps" "Games" "Quote from Zippy"))
|
|
86 (delete-menu-item '("Apps" "Games" "Psychoanalyze Zippy!")))
|
|
87
|
0
|
88 (when (not (noninteractive))
|
|
89
|
2
|
90 (flet
|
|
91 ((sunpro-dir-p (dir)
|
|
92 (and dir
|
|
93 (file-exists-p (concat dir "bin/workshop"))
|
|
94 (file-exists-p (concat dir "lib/workshop.el")))))
|
0
|
95 (defconst sunpro-dir
|
|
96 (cond
|
2
|
97 ;; Look on the PATH
|
0
|
98 ((let ((path exec-path) dir (found nil))
|
|
99 (while (and path (not found))
|
2
|
100 (setq dir (or (car path) "."))
|
0
|
101 (setq path (cdr path))
|
|
102 (setq dir (concat dir (if (string-match "/$" dir) "../" "/../")))
|
2
|
103 (setq found (sunpro-dir-p dir)))
|
0
|
104 (if found
|
|
105 (expand-file-name dir))))
|
|
106
|
2
|
107 ;; Check for standard Sun DevPro CD Install layout
|
|
108 ((if (string-match "contrib/[^/]+/[^/]+/[^/]+/[^/]+/$" exec-directory)
|
|
109 (let ((dir (substring exec-directory 0 (match-beginning 0))))
|
|
110 (if (sunpro-dir-p dir)
|
|
111 (expand-file-name dir)))))
|
|
112
|
|
113 ;; Default install location
|
|
114 ("/opt/SUNWspro/"))
|
|
115
|
|
116 "Directory where Sun Developer Products are installed."))
|
0
|
117
|
2
|
118 ;; Sunpro ships the mule version as a 2-file addition to the
|
|
119 ;; non-mule distribution - the binary and the doc file.
|
|
120 ;;
|
|
121 ;; This is a quick hack, I know...
|
|
122 ;; There ought to be a better way to do this.
|
|
123 ;; Perhaps a --xemacs-flavor=mule flag?
|
|
124 (if (featurep 'mule)
|
|
125 (let ((mule-doc-file-name (concat internal-doc-file-name "-mule")))
|
|
126 (if (file-exists-p (concat doc-directory mule-doc-file-name))
|
|
127 (setq internal-doc-file-name mule-doc-file-name))))
|
0
|
128
|
48
|
129 ;; Connect to tooltalk, but only on an X server.
|
185
|
130 (when (and (featurep 'tooltalk)
|
|
131 (fboundp 'command-line-do-tooltalk)
|
|
132 (eq 'x (device-type)))
|
|
133 (command-line-do-tooltalk nil))
|
0
|
134
|
|
135 ;; Sun's pending-del default is like textedit's
|
|
136 (require 'pending-del)
|
185
|
137 (turn-on-pending-delete)
|
0
|
138
|
|
139 ;; Bar cursor 2 pixels wide
|
|
140 (setq bar-cursor 2)
|
|
141
|
|
142 ;; Nice CDE compliant icon -- now the default...
|
185
|
143 ;;(if (featurep 'xpm)
|
|
144 ;; (set-glyph-image
|
|
145 ;; frame-icon-glyph
|
|
146 ;; (format "%s%s" data-directory "xemacs-icon3.xpm")
|
|
147 ;; 'global 'x))
|
0
|
148
|
|
149 (cond
|
2
|
150 ;; Use Sun WorkShop if available
|
0
|
151 ((sunpro-update-paths-for-workshop)
|
197
|
152 ;; Unfortunately, changes to the default toolbar in 20.3 b21
|
|
153 ;; have broken workshop-frob-toolbar in workshop.el. Since new
|
|
154 ;; XEmacsen have to work with older WorkShops, this must be
|
|
155 ;; fixed both in workshop.el (distributed on the Sun WorkShop CD)
|
|
156 ;; and worked-around here.
|
|
157 (set-specifier default-toolbar
|
|
158 (append (specifier-instance default-toolbar)
|
|
159 `([,(toolbar-make-button-list nil)
|
|
160 workshop-bugfix nil nil])))
|
|
161 (require 'workshop)
|
|
162 (set-specifier default-toolbar
|
|
163 (delete-if (lambda (b) (eq (aref b 1) 'workshop-bugfix))
|
|
164 (specifier-instance default-toolbar))))
|
0
|
165
|
|
166 ;; Else, use eos package with sparcworks if available
|
|
167 ((or
|
|
168 (locate-file "sparcworks" exec-path)
|
|
169 (prog1
|
|
170 (file-exists-p (concat sunpro-dir "bin/sparcworks"))
|
|
171 (setq exec-path (append exec-path (list (concat sunpro-dir "bin/"))))))
|
|
172
|
189
|
173 (load "sun-eos-init")
|
|
174 (load "sun-eos-common")
|
|
175 (load "sun-eos-editor")
|
|
176 (load "sun-eos-browser")
|
|
177 (load "sun-eos-debugger")
|
|
178 (load "sun-eos-debugger-extra")
|
|
179 (load "sun-eos-menubar")
|
|
180 (eos::start))
|
0
|
181
|
|
182 (t ; Neither? Complain...
|
|
183 (display-warning
|
|
184 'sunpro
|
|
185 "XEmacs was compiled with support for Sun Developer Products,
|
|
186 but neither `workshop' nor `sparcworks' were found on the PATH.")))
|
|
187 ))
|
|
188
|
|
189 (add-hook 'before-init-hook 'sunpro-startup)
|
|
190
|
|
191 (provide 'sunpro)
|