diff lisp/sunpro/sunpro-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 ac2d302a0011
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/sunpro/sunpro-init.el	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,154 @@
+;;; No byte-compiler warnings
+;(eval-when-compile
+;  (require 'w3))
+
+;;; Keep these obsolete variables for backward compatibility
+(defconst era-version "0.95" "\
+Version numbers of this version of Era.")
+
+;; We're (not really anymore) calling this version Sun Era.
+(defconst sun-era t)
+
+(defun era-version ()
+  "Return (obsolete) string describing the version of Era that is running.
+Era is now known as XEmacs.  Use (emacs-version) instead."
+  (interactive)
+  (if (interactive-p)
+      (message "%s" (era-version))
+    (format "%sEra %s of %s %s on %s (%s)"
+	    (if sun-era "Sun " "")
+	    era-version
+	    (substring emacs-build-time 0
+		       (string-match " *[0-9]*:" emacs-build-time))
+	    (substring emacs-build-time
+                       (string-match "[0-9]*$" emacs-build-time))
+	    emacs-build-system system-type)))
+
+;(defun sunpro-maybe-connect-to-tooltalk ()
+;  (if (and (not (noninteractive))
+;	   (fboundp 'command-line-do-tooltalk))
+;      (command-line-do-tooltalk nil)))
+
+;; sunpro-maybe-connect-to-tooltalk must appear in the hook list
+;; before any clients that register patterns, like eos-load.el.
+;; Currently eos-load.el places its functions at the end of the list
+
+;(add-hook 'before-init-hook 'sunpro-maybe-connect-to-tooltalk)
+
+(set-glyph-image text-pointer-glyph    "xterm")
+(set-glyph-image nontext-pointer-glyph "xterm")
+
+;; W3 doesn't know about using pageview, so let's fix that.
+;; There doesn't seem to be any such function `w3-parse-mailcap' - mrb
+
+;(defun sunpro-fix-postscript-viewer ()
+;  (if (not (noninteractive))
+;    (condition-case nil
+;      (w3-parse-mailcap
+;        (expand-file-name "sparcworks/sunpro-mailcap" data-directory))
+;      (error nil))))
+
+;(add-hook 'w3-load-hooks 'sunpro-fix-postscript-viewer)
+
+;; turn on pending delete without messing up its autoloads
+;(defun sunpro-pending-delete-on ()
+;  (if (not (noninteractive))
+;      (pending-delete-on nil)))
+
+;(add-hook 'before-init-hook 'sunpro-pending-delete-on)
+
+;;; Decide whether to use workshop.el or eos at runtime, based on
+;;; which Sun DevPro products are installed.
+
+(defun sunpro-update-paths-for-workshop ()
+  "Update exec-path and load-path to find supporting workshop files.
+Returns nil if the required files cannot be found."
+  (and
+   (cond
+    ((locate-file "workshop.el" load-path))
+    
+    ((file-exists-p (concat sunpro-dir "lib/workshop.el"))
+     (setq load-path (append load-path (list (concat sunpro-dir "lib/"))))))
+   
+   (cond
+    ((locate-file "workshop" exec-path))
+    
+    ((file-exists-p (concat sunpro-dir "bin/workshop"))
+     (setq exec-path (append exec-path (list (concat sunpro-dir "bin/"))))))))
+
+(defun sunpro-startup ()
+  (when (not (noninteractive))
+
+    (let ((sunpro-dir-p
+           #'(lambda (dir)
+               (and dir
+                    (file-exists-p (concat dir "bin/workshop"))
+                    (file-exists-p (concat dir "lib/workshop.el"))))))
+    
+      (defconst sunpro-dir
+        (cond
+         ((let ((path exec-path) dir (found nil))
+            (while (and path (not found))
+              (setq dir (car path))
+              (setq path (cdr path))
+              (setq dir (concat dir (if (string-match "/$" dir) "../" "/../")))
+              (setq found (funcall sunpro-dir-p dir)))
+            (if found
+                (expand-file-name dir))))
+       
+         ((let ((dir exec-directory) (i 0) (found nil))
+            (while (and (< i 8) (not found))
+              (setq i (1+ i))
+              (setq dir (concat dir "../"))
+              (setq found (funcall sunpro-dir-p dir))
+              )
+            (if found
+                (expand-file-name dir))))
+
+         ("/opt/SUNWspro/"))                  ; Default install location
+
+        "Directory where Sunsoft Developer Products are installed."))
+
+    ;; Connect to tooltalk
+    (and (featurep 'tooltalk)
+         (fboundp 'command-line-do-tooltalk)
+         (command-line-do-tooltalk nil))
+    
+    ;; Sun's pending-del default is like textedit's
+    (require 'pending-del)
+    (pending-delete-on nil)
+    
+    ;; Bar cursor 2 pixels wide
+    (setq bar-cursor 2)
+
+    ;; Nice CDE compliant icon -- now the default...
+    ;(if (featurep 'xpm)
+    ;    (set-glyph-image
+    ;     frame-icon-glyph
+    ;     (format "%s%s" data-directory "xemacs-icon3.xpm")
+    ;     'global 'x))
+    
+    (cond
+     ;; Use Sunsoft WorkShop if available
+     ((sunpro-update-paths-for-workshop)
+      (require 'workshop))
+
+     ;; Else, use eos package with sparcworks if available
+     ((or
+       (locate-file "sparcworks" exec-path)
+       (prog1
+           (file-exists-p (concat sunpro-dir "bin/sparcworks"))
+         (setq exec-path (append exec-path (list (concat sunpro-dir "bin/"))))))
+      
+      (and (fboundp 'eos::start)) (eos::start))
+     
+     (t ; Neither? Complain...
+      (display-warning
+       'sunpro
+       "XEmacs was compiled with support for Sun Developer Products,
+but neither `workshop' nor `sparcworks' were found on the PATH.")))
+    ))
+
+(add-hook 'before-init-hook 'sunpro-startup)
+
+(provide 'sunpro)