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
|
;;; sun-eos-editor.el --- Implements the XEmacs/SPARCworks editor protocol
;; 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 editor
;;; Commentary:
;; Please send feedback to eduardo.pelegri-llopart@eng.sun.com
;;; Code:
(require 'eos-common "sun-eos-common")
;; ===============
;; Editor protocol
;;
;; message is
;; SPRO_Visit_File CONTEXT_UID filename lineno center==0
(defvar eos::visit-file-pattern)
(defvar eos::get-src-line-pattern)
(defun eos::editor-startup ()
;; Actions to do at startup time for eos-editor
(setq eos::visit-file-pattern
(eos::create-visit-file-pattern))
(setq eos::get-src-line-pattern
(eos::create-get-src-line-pattern))
(eos::register-get-src-line-pattern)
)
(defun eos::visit-file-callback (msg pat)
;; A callback for a SPRO_Visit_File message
;; really should be discarded in the pattern
(let* ((filename
(get-tooltalk-message-attribute msg 'arg_val 1))
(lineno-dot
(read
(get-tooltalk-message-attribute msg 'arg_ival 2)))
)
(if (null (eos::find-line filename lineno-dot 'debugger-visit))
(message "No frame to select"))
(return-tooltalk-message msg)
))
(defun eos::create-visit-file-pattern ()
;; Create Visit File pattern
(let* ((pattern-desc '(category TT_HANDLE
scope TT_SESSION
class TT_REQUEST
op "SPRO_Visit_File"
callback eos::visit-file-callback))
(pattern (make-tooltalk-pattern pattern-desc))
)
pattern
))
(defun eos::register-visit-file-pattern ()
;; Register Visit File pattern
(register-tooltalk-pattern eos::visit-file-pattern))
(defun eos::unregister-visit-file-pattern ()
;; Unregister Visit File pattern
(unregister-tooltalk-pattern eos::visit-file-pattern))
;;
;; ====================
;;
;; Auxiliary TT message to get source and lineno.
;;
;; message is
;; SPRO_Get_Src_Line CONTEXT_UID (INOUT filename) (INOUT lineno)
;;
(defun eos::get-src-line-callback (msg pat)
;; A callback for a SPRO_Get_Src_Line message
;; really should be discarded in the pattern
(let* ((filename
(buffer-file-name))
(lineno
(format "%d" (eos::line-at (point)))))
(set-tooltalk-message-attribute filename msg 'arg_val 1)
(set-tooltalk-message-attribute lineno msg 'arg_val 2)
(return-tooltalk-message msg)
))
(defun eos::create-get-src-line-pattern ()
;; Create a pattern to get filename and lineno
(let* ((pattern-desc '(category TT_HANDLE
scope TT_SESSION
class TT_REQUEST
op "SPRO_Get_Src_Line"
callback eos::get-src-line-callback))
(pattern (make-tooltalk-pattern pattern-desc))
)
pattern
))
(defun eos::register-get-src-line-pattern ()
;; Register Get Src Line pattern
(register-tooltalk-pattern eos::get-src-line-pattern))
(defun eos::unregister-get-src-line-pattern ()
;; Unregister Get Src Line pattern
(unregister-tooltalk-pattern eos::get-src-line-pattern))
(provide 'eos-editor)
;;; sun-eos-debugger.el ends here
|