;ELC   
;;; compiled by jwz@thalidomide on Wed May 25 21:53:23 1994
;;; from file /u/jwz/emacs19/lisp/eos/eos-debugger-extra.el
;;; emacs version 19.10 Lucid.
;;; bytecomp version 2.24; 26-Apr-94.
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19")))
    (error "This file was compiled for Emacs 19."))

(require 'eos-common)
(defvar eos::debugger-buffer "*debugger*" "\
name of buffer where to log debugger activity; see eos::use-debugger-buffer")
(fset 'eos::ensure-debugger-buffer #[nil "	!\n!	!q !#)" [get-buffer eos::debugger-buffer buf switch-to-buffer get-buffer-create eos::debugger-mode eos::insert-string-as-extent "[Debugger] " t get-face bold] 6 "\
will ensure a debugger buffer, with the proper major mode"])
(fset 'eos::synchronize-debugger-buffer #[nil " db!\")" [eos::ensure-debugger-buffer x mapcar #[(win) "	\n\"" [set-window-point win x] 3] get-buffer-window-list eos::debugger-buffer] 5 "\
ensure all views of this buffer are at the end"])
(byte-code "M! \"###ć" [eos::debugger-mode #[nil " !\n!" [kill-all-local-variables eos::debugger-mode major-mode "eos::debugger" mode-name t truncate-lines set-syntax-table emacs-lisp-mode-syntax-table use-local-map eos::debugger-mode-map] 2 nil nil] boundp eos::debugger-mode-map nil make-keymap set-keymap-name define-key [(meta p)] eos::debugger-previous-cmd [(meta n)] eos::debugger-next-cmd [return] eos::debugger-send-cmd] 4)
(defvar eos::current-command nil "\
Current command navigated; as an extent")
(defvar eos::last-command nil "\
last command sent to debugger, as an extent")
(fset 'eos::debugger-previous-cmd #[nil "\n\n\"	 db	!	!S{c	!*" [nil xt eos::current-command eos::last-command extent-property previous-command eos::debugger-delete-last-cmd-line extent-start-position extent-end-position error "no previous command"] 3 "\
present the previous command" nil])
(fset 'eos::debugger-next-cmd #[nil "\n!\n\" 	db	!	!S{c	*" [nil xt eos::current-command error "no next command" extent-property next-command eos::debugger-delete-last-cmd-line extent-start-position extent-end-position] 3 "\
present the next command" nil])
(fset 'eos::debugger-delete-last-cmd-line #[nil "db`y`!!{|," [e 0 extent-at xt extent-end-position p str] 3 "\
delete the last command line, not yet inputed, returns that cmd line"])
(fset 'eos::debugger-send-cmd #[nil "`y`!!	{	|P \"db," [nil e 0 extent-at xt extent-end-position p str eos::send-spider-current-do-msg "\n" selected-screen eos::current-command] 4 "\
send the message in the current line" nil])
(fset 'get-buffer-window-list #[(buffer) "	!Ɖ$	\n\n??			\n!\nB\nƉ$P\n-" [get-buffer buffer buf next-window nil foo t win1 win first ret window-buffer] 6 "\
like get-buffer-window except that will generate a list of windows
instead of just the first one"])
(fset 'eos::insert-on-debugger-buffer #[(msg rdonly face &optional previous-command) "p #	#	#\n!	*" [nil xt buf eos::ensure-debugger-buffer eos::insert-string-as-extent msg rdonly face previous-command set-extent-property next-command switch-to-buffer] 4 "\
will insert MSG at end of debugger buffer with RDONLY property and with FACE. 
If PREVIOUS-COMMAND is given, the newly created extent will be doubly linked into this one
using 'previous-command and 'next-command properties"])
(fset 'eos::insert-string-as-extent #[(msg rdonly face) "db`c\n`#	#	#	\" 	*" [nil xt here msg make-extent rdonly set-extent-property read-only t duplicable set-extent-face face eos::synchronize-debugger-buffer] 4 "\
insert MSG as a extent with RDONLY and FACE.  Returns the extent"])
(fset 'eos::spider-do-callback #[(msg pat) "#\"!#\n\n!!" [eos::insert-on-debugger-buffer format "%s" get-tooltalk-message-attribute msg arg_val 2 t get-face bold eos::restore-screen select-screen destroy-tooltalk-message] 7 "\
Callback after processing a spider_do request"])
(defvar eos::last-command-was-print nil "\
(eos:: internal)")
(fset 'eos::spro_spider_output #[(msg pat) "#\"!##̘\"c!#)!" [eos::insert-on-debugger-buffer format "%s" get-tooltalk-message-attribute msg arg_val 1 t get-face default 2 err "" "STDERR> %s" destroy-tooltalk-message] 8 "\
For spider output"])
(fset 'eos::spro_spider_output-common #[(msg pat) "\n\"\n\"" [eos::last-command-was-print eos::spro_spider_print_output msg pat eos::spro_spider_output] 3 "\
For spider output"])
(fset 'eos::spider-tt-args '(macro . #[(cmd spider-id clique-id) "FFF" [list 'class TT_REQUEST 'address TT_HANDLER 'scope TT_SESSION 'handler spider-id 'op "SPRO_SPIDER_DO" 'callback 'eos::spider-do-callback 'args 'TT_IN clique-id "Context_ID" 'TT_IN cmd "string" (list 'TT_OUT)] 20]))
(fset 'eos::send-spider-do-msg #[(cmd spider-id clique-id) "\nEECE!!$!!)" [make-tooltalk-message class TT_REQUEST address TT_HANDLER scope TT_SESSION handler spider-id op "SPRO_SPIDER_DO" callback eos::spider-do-callback args TT_IN clique-id "Context_ID" cmd "string" TT_OUT msg eos::insert-on-debugger-buffer t get-face italic eos::last-command eos::current-command send-tooltalk-message destroy-tooltalk-message] 19 "\
Send CMD, a string, to SPIDER-ID, using CLIQUE-ID"])
(byte-code "" [nil eos::restore-screen ("Xemacs does not know the ID of a debugger to connect to.  You may need\n		to reissue a debug or attach command from the debugger" ["Continue" (message "continuing") t]) eos::no-connection-box] 1)
(fset 'eos::send-spider-current-do-msg #[(cmd restore-screen) "\n!\n#" [restore-screen eos::restore-screen eos::current-debugger-clique-id popup-dialog-box eos::no-connection-box eos::send-spider-do-msg cmd eos::current-dbx-proc-id] 4 "\
Send CMD to the current dbx engine using the current debugger clique;
The cmd ends in a new-line. RESTORE is a screen to request reseting the selected
screen to that value "])
(fset 'eos::dbx-cmd #[(arg) "	P\"" [eos::send-spider-current-do-msg arg "\n" nil] 3 "\
Send CMD to the current dbx engine using the current debugger clique;
The cmd does not end in a new-line; a new-line will be added" "sDbx cmd: "])
(fset 'eos::debugger-extra-startup #[nil "   " [eos::create-debugger-extra-patterns eos::dbx-extra-pattern-list eos::ensure-available-print-screen eos::define-prefix-map] 1 "\
Actions to do at startup for eos-debugger-extra.el"])
(fset 'eos::create-debugger-extra-patterns #[nil "	!)C" [(category TT_OBSERVE scope TT_SESSION class TT_NOTICE op "SPRO_SPIDER_OUTPUT" callback 'eos::spro_spider_output-common) pattern-desc make-tooltalk-pattern] 2 "\
returns a list of patterns"])
(fset 'eos::register-debugger-extra-patterns #[nil "\n\"" [mapcar register-tooltalk-pattern eos::dbx-extra-pattern-list] 3 "\
register additional dbx patterns"])
(fset 'eos::unregister-debugger-extra-patterns #[nil "\n\"" [mapcar unregister-tooltalk-pattern eos::dbx-extra-pattern-list] 3 "\
unregister additional dbx patterns"])
(byte-code "MMMMMMMMMMMMMM" [eos::run #[nil "!" [eos::dbx-cmd "run"] 2 nil nil] eos::fix #[nil "!" [eos::dbx-cmd "fix"] 2 nil nil] eos::cont #[nil "!" [eos::dbx-cmd "cont"] 2 nil nil] eos::next #[nil "!" [eos::dbx-cmd "next"] 2 nil nil] eos::step #[nil "!" [eos::dbx-cmd "step"] 2 nil nil] eos::step-up #[nil "!" [eos::dbx-cmd "step up"] 2 nil nil] eos::up #[nil "!" [eos::dbx-cmd "up"] 2 nil nil] eos::down #[nil "!" [eos::dbx-cmd "down"] 2 nil nil] eos::pop #[nil "!" [eos::dbx-cmd "pop"] 2 nil nil] eos::stop-at #[nil " `!#!" [eos::dbx-cmd format "stop at \"%s\":%d" buffer-file-name eos::line-at] 6 nil nil] eos::clear-at #[nil " `!#!" [eos::dbx-cmd format "clear \"%s\":%d" buffer-file-name eos::line-at] 6 nil nil] eos::stop-in #[nil "` {\"!" [eos::dbx-cmd format "stop in %s" mark] 5 nil nil] eos::func #[nil "` {\"!" [eos::dbx-cmd format "func %s" mark] 5 nil nil] eos::cont-to #[nil " `!#!" [eos::dbx-cmd format "stop at \"%s\":%d -temp; cont" buffer-file-name eos::line-at] 6 nil nil]] 2)
(fset 'eos::send-spider-print-msg #[(expr) "\"!" [t eos::last-command-was-print eos::dbx-cmd format "print %s" expr] 4 "\
Print EXPR using separate screen"])
(fset 'eos::send-spider-print*-msg #[(expr) "\"!" [t eos::last-command-was-print eos::dbx-cmd format "print *(%s)" expr] 4 "\
Send *EXPR using separate screen"])
(byte-code "MMM" [eos::print #[nil "` {!" [eos::send-spider-print-msg mark] 3 nil nil] eos::print* #[nil "` {!" [eos::send-spider-print*-msg mark] 3 nil nil] eos::buffer-line-size #[(buffer) "	!p	!d!)" [bufferp buffer switch-to-buffer eos::line-at] 2 nil nil]] 2)
(fset 'eos::new-available-print-screen #[nil " p!! !!#!!#!!!\n!	!*" [selected-screen buf scr live-screen-p eos::print-screen make-screen-visible make-screen set-face-background modeline face-background get-face default set-face-foreground select-screen switch-to-buffer eos::print-buffer set-buffer-menubar (["Dismiss" (eos::dismiss-print-screen) t])] 5 "\
returns an available print screen"])
(defun eos::ensure-available-print-screen nil "\
ensures that there is at least one available print screen" t)
(byte-code "MM" [eos::show-print-screen #[nil " 	!!	!\\\"eb" [eos::new-available-print-screen eos::print-screen select-screen switch-to-buffer eos::print-buffer set-screen-height eos::buffer-line-size 1] 4 nil nil] eos::dismiss-print-screen #[nil "	! @!" [make-screen-invisible eos::print-screen select-screen visible-screen-list] 2 nil nil]] 2)
(defvar eos::print-screen nil "\
Screen for prints")
(defvar eos::print-buffer " *print output*" "\
Buffer for prints")
(fset 'eos::spro_spider_print_output #[(msg pat) "p !ed|db#\"c#͘\"c) 	!\n!)!҉*" [selected-screen scr buf switch-to-buffer eos::print-buffer format "%s" get-tooltalk-message-attribute msg arg_val 1 2 err "" "STDERR> %s" eos::show-print-screen select-screen destroy-tooltalk-message nil eos::last-command-was-print] 7 "\
For spider print output (switched with spro_spider_output"])
(byte-code "! M" [boundp eos::prefix-map make-keymap eos::define-prefix-map #[nil "	#	#	#	#	#	#	#	#	#	#	#	#	#" [define-key eos::prefix-map "%" eos::dbx-cmd "r" eos::run "f" eos::fix "p" eos::print "" eos::print* "c" eos::cont "b" eos::stop-at "" eos::clear-at "n" eos::next "s" eos::step "" eos::step-up "u" eos::up "d" eos::down] 4]] 2)
(defvar eos::key-mode 'none "\
Style of key mode interaction for Eos")
(fset 'eos::set-key-mode #[(mode) "=# \n#	=# #	=# #!" [mode eos::key-mode none define-key global-map "d" nil eos::remove-function-keys add-menu "SPARCworks" eos::short-menu prefix eos::prefix-map eos::long-menu function eos::add-function-keys error "unimplemented"] 5 "\
Set the key MODE to either 'none, 'prefix, or 'function"])
(byte-code "MM!!Ƈ" [eos::add-function-keys #[nil "\"\"\"\"\"\"\"\"\"\"\"\"" [global-set-key [f6] eos::dbx-cmd [(control f6)] eos::run [(shift f6)] eos::fix [f7] eos::print [(control f7)] eos::print* [(shift f7)] eos::dismiss-print-screen [f8] eos::cont [(control f8)] eos::stop-at [(shift f8)] eos::clear-at [f9] eos::next [(control f9)] eos::step [(shift f9)] eos::step-up] 3 nil nil] eos::remove-function-keys #[nil "\"\"\"\"\"\"\"\"\"\"\"\"" [global-set-key [f6] nil [(control f6)] [(shift f6)] [f7] [(control f7)] [(shift f7)] [f8] [(control f8)] [(shift f8)] [f9] [(control f9)] [(shift f9)]] 3 nil nil] boundp eos::popup-mode nil eos::saved-global-popup-menu] 2)
(fset 'eos::toggle-popup-menu #[nil "	 ?" [eos::popup-mode eos::saved-global-popup-menu global-popup-menu eos::push-popup-menu] 2 "\
Toggle whether to use or not popup menus for SPARCworks" nil])
(fset 'eos::push-popup-menu #[nil "	C\"" [global-popup-menu eos::saved-global-popup-menu append ("SPARCworks Command" ["Stop At" eos::stop-at t] ["Clear At" eos::clear-at t] ["Stop In" eos::stop-in t] ["Cont To" eos::cont-to t] ["Print" eos::print t] ["Print*" eos::print* t] "---" ["Do" eos::dbx-cmd t] "---")] 3])
