home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.006 / xemacs-1 / lib / xemacs-19.13 / lisp / eos / sun-eos-browser.el < prev    next >
Encoding:
Text File  |  1995-08-22  |  4.5 KB  |  165 lines

  1. ;;; sun-eos-browser.el --- Implements the XEmacs/SPARCworks SourceBrowser interface
  2.  
  3. ;; Copyright (C) 19 Jul 1995  Sun Microsystems, Inc.
  4.  
  5. ;; Maintainer:    Eduardo Pelegri-Llopart <eduardo.pelegri-llopart@Eng.Sun.COM>
  6. ;; Author:      Eduardo Pelegri-Llopart <eduardo.pelegri-llopart@Eng.Sun.COM>
  7. ;; Version:    1.14
  8. ;; Header:    @(#) sun-eos-browser.el: v1.14 95/08/22 10:11:05
  9.  
  10. ;; Keywords:    SPARCworks EOS Era on SPARCworks SBrowser Source Browser
  11.  
  12. ;;; Commentary:
  13. ;; Please send feedback to eduardo.pelegri-llopart@eng.sun.com
  14.  
  15. ;;; Code:
  16.  
  17. (require 'eos-common "sun-eos-common")
  18.  
  19. ;; ================
  20. ;; Browser Protocol
  21. ;; ================
  22. ;;
  23. ;; three notifications
  24. ;;
  25. ;; SPRO_SBENG_START
  26. ;; SPRO_SBENG_CURRENT_ELEMENT CONTEXT_UID filename lineno center==0
  27. ;; SPRO_SBENG_QUIT
  28.  
  29. (defvar eos::currentMatch-inst "/* XPM */
  30. static char * file[] = {
  31. \"14 11 5 1\",
  32. \"     s background c #FFFFFFFFFFFF\",
  33. \".    c #000000000000\",
  34. \"X    c #0000FFFF0000\",
  35. \"o    c #000077770000\",
  36. \"O    c #000044440000\",
  37. \"              \",
  38. \"   oo         \",
  39. \"   oXOo       \",
  40. \"   oXXXOo     \",
  41. \"   oXXXXXOo   \",
  42. \"   oXXXXXXXo. \",
  43. \"   oXXXXXOo   \",
  44. \"   oXXXOo     \",
  45. \"   oXOo       \",
  46. \"   oo         \",
  47. \"              \"};")
  48.  
  49. (defvar eos::currentMatch-inst-alt "/* XPM */
  50. static char * file[] = {
  51. \"14 11 5 1\",
  52. \"     s background c #FFFFFFFFFFFF\",
  53. \".    c #000000000000\",
  54. \"X    c #0000FFFF0000\",
  55. \"o    c #000077770000\",
  56. \"O    c #000044440000\",
  57. \"              \",
  58. \"   oo         \",
  59. \"   oXOo       \",
  60. \"   oXXXOo     \",
  61. \"   oXXXXXOo   \",
  62. \"   oXXXXXXXo. \",
  63. \"   oXXXXXOo   \",
  64. \"   oXXXOo     \",
  65. \"   oXOo       \",
  66. \"   oo      .. \",
  67. \"           .. \"};")
  68.  
  69. (defvar sbrowser-pattern-list nil)
  70.  
  71.  
  72. (defun eos::browser-startup ()
  73.   ;; Actions to do at startup for eos-browser.el
  74.   (make-face 'sbrowse-arrow-face)
  75.  
  76.   (set-face-foreground 'sbrowse-arrow-face
  77.                eos::sbrowse-arrow-color)
  78.   (set-face-background 'sbrowse-arrow-face
  79.                (face-background (get-face 'default)))
  80.  
  81.   (setq sbrowser-pattern-list        ; list of browser TT patterns
  82.     (eos::create-sbrowser-patterns))
  83.  
  84.   ;; now register glyphs and faces...
  85.  
  86.   (eos::annotation-set-inst 'sbrowser 'x eos::currentMatch-inst [nothing])
  87.   (eos::annotation-set-inst 'sbrowser 'tty "|>" [nothing])
  88.   (eos::annotation-set-face 'sbrowser 'x
  89.                 (get-face 'sbrowse-arrow-face)
  90.                 (get-face 'sbrowse-arrow-face))
  91.   (eos::annotation-set-face 'sbrowser 'tty
  92.                 (get-face 'highlight)
  93.                 (get-face 'highlight))
  94. )
  95.  
  96. (defvar eos::current-match nil)
  97.  
  98. (defun eos::spro_sbeng_current_element (msg pat)
  99.   ;; SPRO_SBENG_CURRENT_ELEMENT CONTEXT_UID filename lineno center==0
  100.   (let* ((filename
  101.       (get-tooltalk-message-attribute msg 'arg_val 1))
  102.      (lineno
  103.       (read (get-tooltalk-message-attribute msg 'arg_ival 2)))
  104.      )
  105.     (setq eos::current-match
  106.       (eos::make-annotation-visible eos::current-match
  107.                     filename
  108.                     lineno
  109.                     'sbrowser))
  110.     (return-tooltalk-message msg)
  111.     ))
  112.  
  113. (defun eos::spro_sbeng_start (msg pat)
  114.     (eos::make-annotation-invisible eos::current-match)
  115.     (return-tooltalk-message msg)
  116.     )
  117.  
  118. (defun eos::spro_sbeng_quit (msg pat)
  119.     (eos::make-annotation-invisible eos::current-match)
  120.     (return-tooltalk-message msg)
  121.     )
  122.  
  123. (defun eos::create-sbrowser-patterns ()
  124.   ;; returns list of patterns
  125.   (list
  126.    (make-an-observer "SPRO_SBENG_CURRENT_ELEMENT"
  127.              'eos::spro_sbeng_current_element)
  128.    (make-an-observer "SPRO_SBENG_START"
  129.              'eos::spro_sbeng_start)
  130.    (make-an-observer "SPRO_SBENG_QUIT"
  131.              'eos::spro_sbeng_quit)
  132.    ))
  133.  
  134. (defun eos::register-sbrowser-patterns ()
  135.   ;; register all sbrowser patterns
  136.   (mapcar 'register-tooltalk-pattern sbrowser-pattern-list))
  137.  
  138. (defun eos::unregister-sbrowser-patterns ()
  139.   ;; unregister all sbrowser patterns
  140.   (mapcar 'unregister-tooltalk-pattern sbrowser-pattern-list))
  141.  
  142. ;; Actions to start a sourcebrowser in the background.
  143.  
  144. (defvar eos::sbrowser-process nil
  145.   "sbrowser process for the background.  Only one per XEmacs")
  146.  
  147. (defun eos::start-sbrowser ()
  148.   ;; Start an "sbrowser -editor" in the background. Will ask for confirmation if
  149.   ;; XEmacs somehow believes there is already one running
  150.   (interactive)
  151.   (if (or (not (processp eos::sbrowser-process))
  152.       (not (eq (process-status eos::sbrowser-process) 'run))
  153.       (yes-or-no-p
  154.        "Warning! XEmacs believes there already is a sbrowser -editor, proceed?"))
  155.       (progn
  156.     (setq eos::sbrowser-process
  157.           (start-process "*eos sbrowser*" nil "sbrowser" "-editor"))
  158.     (message "Starting SBrowser subprocess")
  159.     (eos::select-sbrowser-frame (selected-frame))
  160.     )))
  161.  
  162. (provide 'eos-browser) 
  163.  
  164. ;;; sun-eos-browser.el ends here
  165.