;ELC ;;; compiled by jimb@geech.gnu.ai.mit.edu on Mon Jul 5 22:53:57 1993 ;;; from file /gd/gnu/emacs/19.0/lisp/edebug.el ;;; emacs version 19.15.16. ;;; bytecomp version FSF 2.10 ;;; 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")) (defvar edebug-all-defuns nil "\ *If non-nil, all defuns and defmacros evaluated will use edebug. eval-defun without prefix arg and eval-region will use edebug-defun. If nil, eval-region evaluates normally, but eval-defun with prefix arg uses edebug-defun. eval-region is called by eval-defun, eval-last-sexp, and eval-print-last-sexp. You may wish to make this variable local to each Emacs Lisp buffer by calling (make-local-variable 'edebug-all-defuns) in your emacs-lisp-mode-hook. You can use the function edebug-all-defuns to toggle its value.") (defvar edebug-eval-macro-args nil "\ *If non-nil, edebug will assume that all macro call arguments for macros that have no edebug-form-hook may be evaluated, otherwise it will not. To specify exceptions for macros that have some arguments evaluated and some not, you should specify an edebug-form-hook") (defvar edebug-stop-before-symbols nil "\ *Non-nil causes edebug to stop before symbols as well as after. In any case, it is possible to stop before a symbol with a breakpoint or interrupt.") (defvar edebug-save-windows t "\ *If non-nil, save and restore window configuration on edebug calls. It takes some time to save and restore, so if your program does not care what happens to the window configurations, it is better to set this variable to nil.") (defvar edebug-save-point t "\ *If non-nil, save and restore the point and mark in source code buffers.") (defvar edebug-save-buffer-points nil "\ *If non-nil, save and restore the points of all buffers, displayed or not. Saving and restoring buffer points is necessary if you are debugging code that changes the point of a buffer which is displayed in a non-selected window. If edebug or the user then selects the window, the buffer's point will be changed to the window's point. Saving and restoring all the points is an expensive operation since it visits each buffer twice for each edebug call, so it is best to avoid it if you can.") (defvar edebug-initial-mode (quote step) "\ *Global initial mode for edebug, if non-nil. This is used when edebug is first entered for each recursive-edit level. Possible values are nil (meaning keep using edebug-mode), step, go, Go-nonstop, trace, Trace-fast, continue, and Continue-fast.") (defvar edebug-trace nil "\ *Non-nil if edebug should show a trace of function entry and exit. Tracing output is displayed in a buffer named *edebug-trace*, one function entry or exit per line, indented by the recursion level. You can customize by replacing functions edebug-print-trace-entry and edebug-print-trace-exit.") (defalias 'edebug-which-function #[nil " !p!>!p!)" [end-of-defun beginning-of-defun down-list 1 read (defun defmacro) error "Not in defun or defmacro."] 2 "\ Return the symbol of the function we are in"]) (defalias 'edebug-last-sexp #[nil "!`)`{!@" [read-from-string forward-sexp -1] 3 "\ Return the last sexp before point in current buffer. Assumes Emacs Lisp syntax is active."]) (defalias 'edebug-window-list #[nil " C ! = \nB ! \n+" [selected-window first-window window-list next-window next] 3 "\ Return a list of windows, in order of next-window."]) (defalias 'edebug-get-buffer-points #[nil " \")" [mapcar #[(buf) "q`B" [buf] 2] buffer-list] 3 "\ Return a list of buffer point pairs, for all buffers."]) (defalias 'edebug-set-buffer-points #[nil "\n\"" [mapcar #[(buf-point) " @! @q Ab" [buffer-name buf-point] 2] edebug-buffer-points] 3 "\ Restore the buffer-points given by edebug-get-buffer-points."]) (defalias 'edebug-two-window-p #[nil " ? ‰ !!=" [one-window-p selected-window next-window] 4 "\ Return t if there are two windows."]) (defalias 'edebug-macrop #[(object) "9!K<&@=&A!&" [object fboundp macro edebug-functionp] 3 "\ Return the macro named by OBJECT, or nil if it is not a macro."]) (defalias 'edebug-functionp #[(object) "9!K!+<,@=,A@<," [object fboundp subrp lambda] 3 "\ Returns the function named by OBJECT, or nil if it is not a function."]) (defalias 'edebug-sort-alist #[(alist function) " \"" [sort alist #[(e1 e2) " @\n@\"" [function e1 e2] 3]] 3 "\ Return the ALIST sorted with comparison function FUNCTION. This uses 'sort so the sorting is destructive."]) (put (quote edebug-save-restriction) (quote edebug-form-hook) (quote (&rest form))) (defalias 'edebug-save-restriction '(macro . #[(&rest body) " \"EE" [let ((edebug:s-r-beg (point-min-marker)) (edebug:s-r-end (point-max-marker))) unwind-protect append (progn) body (save-excursion (set-buffer (marker-buffer edebug:s-r-beg)) (narrow-to-region edebug:s-r-beg edebug:s-r-end))] 6 "\ Evaluate BODY while saving the current buffers restriction. BODY may change buffer outside of current restriction, unlike save-restriction. BODY may change the current buffer, and the restriction will be restored to the original buffer, and the current buffer remains current. Return the result of the last expression in BODY."])) (defalias 'edebug-all-defuns #[nil "? Â\"" [edebug-all-defuns message "Edebugging is %s." "on" "off"] 3 "\ Toggle edebugging of all defuns and defmacros, not including those evaluated in the minibuffer, or during load." nil]) (byte-code "! KM" [fboundp edebug-emacs-eval-defun eval-defun] 2) (defalias 'eval-defun #[(edebug-debug) "? ?=?!)" [edebug-debug edebug-all-defuns edebug-emacs-eval-defun nil] 2 "\ Edebug replacement for eval-defun. Print value in the minibuffer. Evaluate the top-level form that point is in or before. Note: eval-defun normally evaluates any top-level form, not just defuns. Here are the differences from the standard eval-defun. If the prefix argument is the same as edebug-all-defuns (nil or non-nil), evaluate normally; otherwise edebug-defun is called to wrap edebug calls around evaluatable expressions in the defun or defmacro body. Also, the value printed by edebug-defun is not just the function name." "P"]) (byte-code "! KM" [fboundp edebug-emacs-eval-region eval-region] 2) (defalias 'eval-region #[(edebug-e-r-start edebug-e-r-end &optional edebug-e-r-output) "`pp ē \n b `W I =Iu >)I ! =du >)d # q !p) B\n= ! !`] `^b q b.ć" [edebug-e-r-output symbolp make-marker edebug-e-r-end nil edebug-e-r-val edebug-e-r-end-marker edebug-e-r-inside-buf edebug-e-r-buf edebug-e-r-pnt standard-output edebug-e-r-start edebug-skip-whitespace edebug-all-defuns edebug-next-token-class lparen 1 edebug-read-sexp (defun defmacro) edebug-defun forward-sexp (defun defmacro) put edebug-which-function edebug point-marker eval values t prin1 print] 7 "\ Edebug replacement for eval-defun. Like eval-region, but call edebug-defun for defuns or defmacros. Also, this eval-region does not narrow to the region and if an error occurs, point is left at the error." "r"]) (defalias 'edebug-eval-current-buffer #[(&optional edebug-e-c-b-output) "ed #" [eval-region edebug-e-c-b-output] 4 "\ Call eval-region on the whole buffer." nil]) (defalias 'edebug-eval-buffer #[(&optional buffer edebug-e-c-b-output) "qed\n#)" [buffer eval-region edebug-e-c-b-output] 4 "\ Call eval-region on the whole buffer." "bEval buffer: "]) (byte-code "!!KMM!*!*KMM" [fboundp eval-current-buffer edebug-emacs-eval-current-buffer edebug-eval-current-buffer eval-buffer edebug-emacs-eval-buffer edebug-eval-buffer] 2) (defalias 'edebug-defun #[nil "` \n   Џ . " [nil 0 t parse-sexp-ignore-comments tmp-point starting-point edebug-func-mark edebug-offset-list edebug-offset-index defun-interactive def-docstring def-args def-name def-kind err (byte-code " !  =$=$\"  93 \"  =< >8 8 \"> > +" [edebug-offset-index index nil form class edebug-skip-whitespace edebug-increment-offset edebug-next-token-class lparen edebug-make-edebug-form edebug-list symbol edebug-read-sexp (nil t)] 4 "\ Return the debug form for the following form. Add the point offset to the edebug-offset-list for the function and move point to immediately after the form."]) (defalias 'edebug-list #[nil "`u = 3\n=$ 3\n=/3! >C >N =Y =d >p! = = C ! 9 N=!=!!)! =!!B =u!+" [nil head class beginning 1 edebug-next-token-class symbol edebug-read-sexp lparen edebug-anonymous rparen edebug-syntax-error "Head of list must be a symbol or lambda expression." (let let*) edebug-let (setq setq-default) edebug-setq cond edebug-cond condition-case edebug-condition-case (quote defun defvar defconst defmacro) edebug-sexp-list function edebug-macrop edebug-form-hook form t 0 edebug-form-parser edebug-eval-macro-args interactive "interactive not expected here." "Too many arguments."] 4 "\ Return an edebug form built from the list form that follows point. Insert debug calls as appropriate to the form. Start with point at the left paren. Leave point after the right paren."]) (defalias 'edebug-form-parser #[(args) "  ) =)͍ B B B @>B! =X\nT!X!." [args nil &or &rest &optional class form-list form arg arglist edebug-next-token-class rparen no-match (byte-code "@A\n\n >\" L\" =/  =<  !u\nB\n*" [nil class value-value-list edebug-next-token-class rparen lparen edebug-read-sexp thing edebug-syntax-error "Condition expected in cond" 1 edebug-form edebug-sexp-list t "Right paren expected in cond"] 4 "\ Return the edebug form of the cond form."]) (put (quote condition-case) (quote edebug-form-hook) (quote (symbolp form &rest (symbolp &optional form)))) (defalias 'edebug-condition-case #[nil " 9 \" )  =L=0!Du =?@!BuB*BB" [nil token edebug-read-sexp edebug-syntax-error "Variable or nil required for condition-case; found: %s" edebug-form class symb-sexp-list edebug-next-token-class rparen lparen "Bad handler in condition-case." 1 edebug-sexp-list t] 6 "\ Return the edebug form of the condition-case form."]) (defalias 'edebug-syntax-error #[(msg &rest args) " #\"" [signal invalid-read-syntax apply format msg args] 6 "\ Signal an invalid-read-syntax with MSG and ARGS. This is caught by edebug-defun."]) (defalias 'edebug-skip-whitespace #[nil "wgUww" [" \n " nil 59 "^\n "] 2 "\ Leave point before the next token, skipping white space and comments."]) (defalias 'edebug-read-sexp #[nil " gUgUp!&p!`)`\"^b )" [nil token edebug-skip-whitespace 91 63 read scan-sexps 1] 4 "\ Read one sexp from the current buffer starting at point. Leave point immediately after it. A sexp can be a list or atom. An atom is a symbol (or number), character, string, or vector."]) (defconst edebug-syntax-table (byte-code "\"I I I I I I I )" [make-vector 256 symbol table 40 lparen 41 rparen 39 quote 34 string 63 char 91 vector 46 dot] 4) "\ Lookup table for the token class of each character.") (defalias 'edebug-next-token-class #[nil " gH" [edebug-skip-whitespace edebug-syntax-table] 2 "\ Move to the next token and return its class. We only care about lparen, rparen, dot, quote, string, char, vector, or symbol."]) (defvar edebug-active nil "\ Non-nil when edebug is active") (byte-code " D B" [edebug-active minor-mode-alist " *Debugging*"] 2) (defvar edebug-backtrace nil "\ Stack of active functions evaluated via edebug. Should be nil at the top level.") (defvar edebug-offset-indices nil "\ Stack of offset indices of visited edebug sexps. Should be nil at the top level.") (defvar edebug-entered nil "\ Non-nil if edebug has already been entered at this recursive edit level.") (defalias 'edebug-enter #[(edebug-func edebug-args edebug-body) "\n \n  N@! \nB\n \\  \\ Y\nGS $! $*]!." [edebug-entered edebug-initial-mode edebug-mode t edebug-func edebug edebug-data edebug-func-mark marker-buffer edebug-buffer edebug-backtrace max-lisp-eval-depth 6 max-specpdl-size 10 edebug-trace nil edebug-result edebug-stack-depth edebug-print-trace-entry "*edebug-trace*" edebug-args eval edebug-body edebug-print-trace-exit] 6 "\ Entering FUNC. The arguments are ARGS, and the body is BODY. Setup edebug variables and evaluate BODY. This function is called when a function evaluated with edebug-defun is entered. Return the result of BODY."]) (defalias 'edebug-interactive-entry #[(edebug-func edebug-args) "\n \n  N@!  !," [edebug-entered edebug-initial-mode edebug-mode t edebug-func edebug edebug-data edebug-func-mark marker-buffer edebug-buffer eval edebug-args] 3 "\ Evaluating FUNCs non-string argument of interactive form ARGS."]) (byte-code "\"\"" [defalias edebug-print-trace-entry #[(edebug-stream edebug-function edebug-args edebug-stack-depth) " \"$" [edebug-trace-display edebug-stream "%sEnter: %s\n" make-string edebug-stack-depth 32 edebug-function] 6] edebug-print-trace-exit #[(edebug-stream edebug-function edebug-result edebug-stack-depth) " \"$" [edebug-trace-display edebug-stream "%sExit: %s\n" make-string edebug-stack-depth 32 edebug-function] 6]] 3) (defalias 'edebug #[(edebug-before-index edebug-after-index edebug-exp) "\\\n\\ B =& & !6  # !#-" [max-lisp-eval-depth 5 max-specpdl-size 7 edebug-before-index edebug-offset-indices executing-macro nil edebug-outside-executing-macro edebug-mode Go-nonstop edebug-input-pending-p eval edebug-exp edebug-debugger enter edebug-after-index exit] 5 "\ Debug current function given BEFORE and AFTER positions around EXP. BEFORE and AFTER are indexes into the position offset vector in the functions 'edebug property. edebug is called from functions compiled with edebug-defun."]) (defalias 'edebug-debugger #[(edebug-offset-index edebug-arg-mode edebug-exp) "A@\n  A@? !)1 AA@1 \"AAB>J\nT =T 9T TW  +" [edebug-data edebug-breakpoints edebug-offset-index edebug-break-data edebug-break-condition eval edebug-break delq edebug-mode (go continue Continue-fast) edebug-stop-before-symbols edebug-arg-mode enter edebug-exp edebug-input-pending-p edebug-display] 5 "\ Determine if edebug display should be updated."]) (defvar edebug-window-start 0 "\ Remember where each buffers' window starts between edebug calls. This is to avoid spurious recentering.") (byte-code "\"!" [set-default edebug-window-start 0 make-variable-buffer-local] 3) (defalias 'edebug-display #[nil "\n AA@ H\\  p`! $       \n \"!p#&\"*'y \"! \n!!,`! /0ed~b3!3 6 8=:; 8= :@=!@:@AN:A@#BC!D!BK6E>,p6F=@GH!pGI!p6J=_GH!p6K=pGI!L6=8=6 M ),\"qbN N +'O!qbN N ." [t nil edebug-func-mark edebug-data edebug-offset-index edebug-save-buffer-points edebug-get-buffer-points selected-window mark edebug-eval-list edebug-eval-result-list overlay-arrow-position overlay-arrow-string cursor-in-echo-area edebug-outside-point-max edebug-outside-point-min edebug-outside-c-i-e-a edebug-outside-o-a-s edebug-outside-o-a-p edebug-eval-buffer edebug-outside-edebug-mark edebug-outside-edebug-point edebug-outside-windows edebug-outside-mark edebug-outside-point edebug-outside-buffer edebug-outside-window edebug-inside-window edebug-window edebug-buffer-points edebug-point edebug-stop edebug-active buffer-name edebug-buffer debug-on-error error "Buffer defining %s not found." edebug-func edebug-save-windows edebug-current-window-configuration edebug-pop-to-buffer edebug-eval-display select-window edebug-save-point point-min-marker point-max-marker edebug:s-r-end edebug:s-r-beg ((byte-code " !q \n})" [marker-buffer edebug:s-r-beg edebug:s-r-end] 2)) edebug-adjust-window edebug-window-start edebug-input-pending-p step edebug-mode edebug-overlay-arrow edebug-arg-mode exit edebug-exp edebug-previous-result beep quit message "Quit" "%s: %s" error-message edebug-break "Break" "" (continue Continue-fast) continue edebug-sit-for 1 0 trace Trace-fast ((byte-code " !" [edebug-save-buffer-points edebug-set-buffer-points select-window edebug-outside-window] 2)) edebug-recursive-edit mark-marker edebug-set-window-configuration] 23 "\ Setup windows for edebug, determine mode, maybe enter recursive-edit."]) (defvar edebug-depth 0 "\ Number of recursive edits started by edebug. Should be 0 at the top level.") (defvar edebug-recursion-depth 0 "\ Value of recursion-depth when edebug was called.") (defalias 'edebug-recursive-edit #[nil " q ) T ʼn  \n   \n      \n =^>^! !k\"  ." [buffer-read-only edebug-outside-buffer match-data edebug-depth recursion-depth nil current-local-map standard-output standard-input last-command-char last-command this-command last-input-char debug-on-error edebug-outside-last-input-char edebug-outside-this-command edebug-outside-last-command edebug-outside-last-command-char edebug-outside-standard-input edebug-outside-standard-output edebug-outside-map edebug-inside-windows edebug-backtrace-buffer edebug-entered edebug-recursion-depth edebug-outside-match-data edebug-buffer-read-only edebug-mode go edebug-arg-mode (exit error) message "Break" boundp edebug-outside-debug-on-error t ((byte-code "!\n\n! !!Mq >-   !!!=I  !" [edebug-backtrace-buffer kill-buffer edebug-eval-buffer selected-window edebug-inside-window store-match-data edebug-outside-match-data buffer-name edebug-buffer edebug-mode (go Go-nonstop) edebug-overlay-arrow edebug-buffer-read-only buffer-read-only use-local-map edebug-outside-map select-window edebug-window window-buffer window-start edebug-window-start] 3)) recursive-edit] 19 "\ Start up a recursive edit inside of edebug."]) (defalias 'edebug-adjust-window #[(old-start) " 4 \" 4 ` W%ǂ* ɥ[yy`)\"* " [pos-visible-in-window-p set-window-start selected-window old-start window-start pnt start -1 window-height 2 0] 4 "\ Adjust window to fit as much as possible following point. The display should prefer to start at OLD-START if point is not visible. Return the new window-start."]) (defconst edebug-arrow-alist (quote ((Continue-fast . ">") (Trace-fast . ">") (continue . ">") (trace . "->") (step . "=>") (go . "<>") (Go-nonstop . ".."))) "\ Association list of arrows for each edebug mode. If you come up with arrows that make more sense, let me know.") (defalias 'edebug-overlay-arrow #[nil "y`) A  p)" [nil pos 0 edebug-mode edebug-arrow-alist overlay-arrow-string make-marker overlay-arrow-position] 4 "\ Set up the overlay arrow at beginning-of-line in current buffer. The arrow string is derived from edebug-arrow-alist and edebug-mode."]) (put (quote edebug-outside-excursion) (quote edebug-form-hook) (quote (&rest form))) (defalias 'edebug-outside-excursion '(macro . #[(&rest body) "\n\"EFEF" [save-excursion (if edebug-save-windows (progn (setq edebug-inside-windows (edebug-current-window-configuration)) (edebug-set-window-configuration edebug-outside-windows))) (set-buffer edebug-buffer) let ((edebug-inside-map (current-local-map)) (last-command-char edebug-outside-last-command-char) (last-command edebug-outside-last-command) (this-command edebug-outside-this-command) (last-input-char edebug-outside-last-input-char) (overlay-arrow-position edebug-outside-o-a-p) (overlay-arrow-string edebug-outside-o-a-s) (cursor-in-echo-area edebug-outside-c-i-e-a) (standard-output edebug-outside-standard-output) (standard-input edebug-outside-standard-input) (executing-macro edebug-outside-executing-macro)) unwind-protect save-restriction (narrow-to-region edebug-outside-point-min edebug-outside-point-max) append (save-excursion (if edebug-save-point (progn (goto-char edebug-outside-edebug-point) (if (mark-marker) (set-marker (mark-marker) edebug-outside-edebug-mark)))) (use-local-map edebug-outside-map) (store-match-data edebug-outside-match-data) (select-window edebug-outside-window) (set-buffer edebug-outside-buffer) (goto-char edebug-outside-point)) body (use-local-map edebug-inside-map) (if edebug-save-windows (edebug-set-window-configuration edebug-inside-windows))] 11 "\ Evaluate an expression list in the outside context. Return the result of the last expression."])) (defalias 'edebug-toggle-save-windows #[nil "? Ƃ\"" [edebug-save-windows edebug-current-window-configuration edebug-outside-windows edebug-inside-windows message "Window saving is %s." "on" "off"] 3 "\ Toggle the edebug-save-windows variable. Each time you toggle it, the inside and outside window configurations become the same as the current configuration." nil]) (defalias 'edebug-where #[nil "! ! b" [edebug-active error "edebug is not active." edebug-pop-to-buffer edebug-buffer edebug-point] 2 "\ Show the debug windows and where we stopped in the program." nil]) (defalias 'edebug-view-outside #[nil "! !b!\"" [edebug-active error "edebug is not active." edebug-current-window-configuration edebug-inside-windows edebug-set-window-configuration edebug-outside-windows edebug-outside-point message "Window configuration outside of edebug. Return with %s" substitute-command-keys "\\\\[edebug-where]"] 4 "\ Change to the outside window configuration." nil]) (defalias 'edebug-bounce-point #[nil "!Ë)" [edebug-active error "edebug is not active." ((byte-code " !\nb! !" [edebug-pop-to-buffer edebug-outside-buffer edebug-outside-point edebug-sit-for 1 edebug-buffer] 2))] 2 "\ Bounce the point in the outside current buffer." nil]) (defvar edebug-epoch-running (byte-code "! " [boundp epoch::version] 2) "\ non-nil if epoch is running. Windows are handled a little differently under epoch.") (defalias 'edebug-current-window-configuration #[nil " " [edebug-epoch-running edebug-current-screen-configuration current-window-configuration] 1 "\ Return the current window or frame configuration."]) (defalias 'edebug-set-window-configuration #[(conf) "\n!\n!" [edebug-epoch-running edebug-set-screen-configuration conf set-window-configuration] 2 "\ Set the window or frame configuration to CONF."]) (defalias (quote edebug-get-buffer-window) #[(buffer) "\n!\n!" [edebug-epoch-running epoch::get-buffer-window buffer get-buffer-window] 2]) (defalias 'edebug-pop-to-buffer #[(buffer) " !\n!9 \"@ ! ( ! \" \") q" [edebug-get-buffer-window buffer edebug-window select-window edebug-epoch-running select-screen symbol-buffer-value allowed-screens epoch::current-screen one-window-p split-window next-window set-window-buffer selected-window set-window-hscroll 0] 5 "\ Like pop-to-buffer, but select a frame that buffer was shown in."]) (defalias 'edebug-current-screen-configuration #[nil "! p \"B \" ! q+" [epoch::screen-list unmapped epoch::get-screen current-buffer current-screen screen-list delq mapcar #[(screen) "! B" [screen epoch::select-screen current-window-configuration] 3] epoch::select-screen] 4 "\ Return an object recording the current configuration of Epoch screen-list. The object is a list of pairs of the form (SCREEN . CONFIGURATION) where SCREEN has window-configuration CONFIGURATION. The current screen is the head of the list."]) (defalias 'edebug-set-screen-configuration #[(sc) "\n\"\n@@!\n@@!" [mapcar #[(screen-conf) " @! @! A!" [epoch::screen-p screen-conf epoch::select-screen set-window-configuration] 2] sc epoch::screen-p epoch::select-screen] 3 "\ Set the window-configuration for all the screens in SC. Set the current screen to be the head of SC."]) (byte-code "\"\"" [defalias edebug-sit-for #[(arg) " !" [edebug-epoch-running epoch::dispatch-events sit-for arg] 2] edebug-input-pending-p #[nil " " [edebug-epoch-running epoch::dispatch-events input-pending-p] 1]] 3) (defalias 'edebug-find-stop-point #[nil " N \"@ A@ AA@!(x`)Z GWX HVXT>Wr HXr Bv \"." [edebug-which-function def-name edebug error "%s must first be evaluated with edebug-defun." edebug-data edebug-func-mark edebug-breakpoints offset-vector looking-at "[ ]" " " nil offset len i 0 message "Point is not on an expression in %s."] 4 "\ Return (function . index) of the nearest edebug stop point."]) (defalias 'edebug-next-breakpoint #[nil "  @ A\nN@ A@ AA@\n.! H @@ XH A 6 S @V@\n\n@H\\b\nAA@p΂q\nA@\nA@!\"P!).)" [edebug-find-stop-point edebug-stop-point def-name index edebug edebug-data edebug-func-mark edebug-breakpoints offset-vector nil breakpoint message "No breakpoints in this function." breaks "Temporary " "" format "Condition: %s" prin1-to-string] 7 "\ Move point to the next breakpoint, or first if none past point." nil]) (defalias 'edebug-modify-breakpoint #[(flag &optional condition temporary) " p @ A\nN@ A@ AA@\n \n\n\" L EB\"\n\"]\nY\n\"]!  AAB H\\b.)" [edebug-find-stop-point edebug-stop-point def-name index edebug edebug-data edebug-func-mark edebug-breakpoints offset-vector nil present delq flag edebug-sort-alist condition temporary < message "Breakpoint set in %s." "Breakpoint unset in %s." "No breakpoint here."] 5 "\ Modify the breakpoint for the form at point or after it according to FLAG: set if t, clear if nil. Then move to that point. If CONDITION or TEMPORARY are non-nil, add those attributes to the breakpoint. "]) (defalias 'edebug-set-breakpoint #[(arg) " #" [edebug-modify-breakpoint t nil arg] 4 "\ Set the breakpoint of nearest sexp. With prefix argument, make it a temporary breakpoint." "P"]) (defalias 'edebug-unset-breakpoint #[nil "!" [edebug-modify-breakpoint nil] 2 "\ Clear the breakpoint of nearest sexp." nil]) (defalias 'edebug-set-conditional-breakpoint #[(arg condition) "\n #" [edebug-modify-breakpoint t condition arg] 4 "\ Set a conditional breakpoint at nearest sexp. The condition is evaluated in the outside context. With prefix argument, make it a temporary breakpoint." "P\nxCondition: "]) (defalias 'edebug-set-mode #[(mode shortmsg msg) " Wp =! !" [mode edebug-mode 0 edebug-depth edebug-buffer message shortmsg exit-recursive-edit msg] 2 "\ Set the edebug mode to MODE. Display SHORTMSG, or MSG if not within edebug." nil]) (defalias 'edebug-step-through #[nil "#" [edebug-set-mode step "" "edebug will stop before next eval."] 4 "\ Proceed to next debug step." nil]) (defalias 'edebug-go #[(arg) "!#" [arg edebug-set-breakpoint t edebug-set-mode go "Go..." "edebug will go until break."] 4 "\ Go, evaluating until break. With ARG set temporary break at stop point and go." "P"]) (defalias 'edebug-Go-nonstop #[nil "#" [edebug-set-mode Go-nonstop "Go-Nonstop..." "edebug will not stop at breaks."] 4 "\ Go, evaluating without debugging." nil]) (defalias 'edebug-forward-sexp #[(arg) "" [err (byte-code " !!)" [t parse-sexp-ignore-comments forward-sexp arg edebug-go] 2) ((error (edebug-step-out)))] 3 "\ Proceed from the current point to the end of the ARGth sexp ahead. If there are not ARG sexps ahead, then do edebug-step-out." "p"]) (defalias 'edebug-step-out #[nil "" [err (byte-code "!!)!)" [t parse-sexp-ignore-comments up-list 1 edebug-go] 2) ((error (byte-code "`!`U !)" [start-point down-list -1 edebug-step-through edebug-go t] 2)))] 3 "\ Proceed from the current point to the end of the containing sexp. If there is no containing sexp that is not the top level defun, go to the end of the last sexp, or if that is the same point, then step." nil]) (defalias 'edebug-goto-here #[nil "!" [edebug-go t] 2 "\ Proceed to this stop point." nil]) (defalias 'edebug-trace #[nil "#" [edebug-set-mode trace "Tracing..." "edebug will trace with pause."] 4 "\ Begin trace mode." nil]) (defalias 'edebug-Trace-fast #[nil "#" [edebug-set-mode Trace-fast "Trace fast..." "edebug will trace without pause."] 4 "\ Trace with no wait at each step." nil]) (defalias 'edebug-continue #[nil "#" [edebug-set-mode continue "Continue..." "edebug will pause at breakpoints."] 4 "\ Begin continue mode." nil]) (defalias 'edebug-Continue-fast #[nil "#" [edebug-set-mode Continue-fast "Continue fast..." "edebug will stop and go at breakpoints."] 4 "\ Trace with no wait at each step." nil]) (defalias 'edebug-step-in #[nil "=\n! @N!+!qb )6<6 \"* " [edebug-arg-mode enter error "You must be in front of a function or macro call." edebug-exp func edebug func-marker markerp marker-buffer edebug-defun "You must first evaluate %s in a buffer." exit-recursive-edit] 4 "\ Step into the function about to be called. Do this before the arguments are evaluated since otherwise it will be too late. One side effect of using edebug-step-in is that the next time the function is called, edebug will be called there as well." nil]) (defalias 'edebug-stop #[nil "!" [message "Stop"] 2 "\ Useful for exiting from trace loop." nil]) (defconst edebug-initial-mode-alist (quote ((edebug-Continue-fast . Continue-fast) (edebug-Trace-fast . Trace-fast) (edebug-continue . continue) (edebug-trace . trace) (edebug-go . go) (edebug-step-through . step) (edebug-Go-nonstop . Go-nonstop))) "\ Association list between commands and the modes they set.") (defalias 'edebug-set-initial-mode #[nil " \n = \n N   \"@ #$!! AU NE =U # #X!-" [edebug-which-function this-function edebug-mode-map current-local-map keymap edebug-initial-mode old-mode read-key-sequence format "Change initial edebug mode for %s from %s (%s) to (enter key): " where-is-internal rassq edebug-initial-mode-alist firstonly key key-binding mode put message "Initial mode for %s is now: %s" error "Key must map to one of the mode changing commands."] 10 "\ Ask for the initial mode of the enclosing function. The mode is requested via the key that would be used to set the mode in edebug-mode." nil]) (defvar edebug-previous-result nil "\ Last result returned from an expression.") (defalias 'edebug-previous-result #[nil "!\"*" [t 20 print-length print-escape-newlines message "Result: %s" prin1-to-string edebug-previous-result] 4 "\ Return the previous result." nil]) (defalias 'edebug-eval #[(expr) "!  !q \n   ߎ !}\"d#b d %擈(!*!,!-q.b0!." [edebug-active error "edebug is not active." edebug-save-windows edebug-current-window-configuration edebug-inside-windows edebug-set-window-configuration edebug-outside-windows edebug-buffer current-local-map edebug-outside-last-command-char edebug-outside-last-command edebug-outside-this-command edebug-outside-last-input-char edebug-outside-o-a-p edebug-outside-o-a-s edebug-outside-c-i-e-a edebug-outside-standard-output edebug-outside-standard-input edebug-outside-executing-macro executing-macro standard-input standard-output cursor-in-echo-area overlay-arrow-string overlay-arrow-position last-input-char this-command last-command last-command-char edebug-inside-map ((byte-code " !\n !" [use-local-map edebug-inside-map edebug-save-windows edebug-set-window-configuration edebug-inside-windows] 2)) edebug-outside-point-min edebug-outside-point-max edebug-save-point edebug-outside-edebug-point mark-marker edebug-outside-edebug-mark nil use-local-map edebug-outside-map store-match-data edebug-outside-match-data select-window edebug-outside-window edebug-outside-buffer edebug-outside-point eval expr] 11 "\ Evaluate EXPR in the outside environment."]) (defalias 'edebug-eval-expression #[(expr) "\n!!" [prin1 edebug-eval expr] 3 "\ Prompt and evaluate an expression in the outside environment. Print result in minibuffer." "xEval: "]) (defalias 'edebug-eval-last-sexp #[nil " !!" [prin1 edebug-eval edebug-last-sexp] 3 "\ Evaluate sexp before point in the outside environment; print value in minibuffer." nil]) (defalias 'edebug-eval-print-last-sexp #[nil "pď!)" [standard-output print err (byte-code " !" [edebug-eval edebug-last-sexp] 2) ((error (byte-code "\n@N\nA@#" [format "%s: %s" err error-message] 4)))] 4 "\ Evaluate sexp before point in the outside environment; print value into current buffer." nil]) (defvar edebug-mode (quote step) "\ Current edebug mode set by user.") (byte-code "! ! # # # # # # # # # # # # # # # # # # # # # # # # # # # # #‡" [boundp edebug-mode-map nil copy-keymap emacs-lisp-mode-map define-key " " edebug-step-through "g" edebug-go "G" edebug-Go-nonstop "t" edebug-trace "T" edebug-Trace-fast "c" edebug-continue "C" edebug-Continue-fast "f" edebug-forward-sexp "h" edebug-goto-here "r" edebug-previous-result "i" edebug-step-in "o" edebug-step-out "q" top-level "a" abort-recursive-edit "S" edebug-stop "b" edebug-set-breakpoint "u" edebug-unset-breakpoint "B" edebug-next-breakpoint "x" edebug-set-conditional-breakpoint "e" edebug-eval-expression "" edebug-eval-last-sexp "E" edebug-visit-eval-list "w" edebug-where "v" edebug-view-outside "p" edebug-bounce-point "W" edebug-toggle-save-windows "?" edebug-help "d" edebug-backtrace "-" negative-argument] 4) (defvar global-edebug-prefix "X" "\ Prefix key for global edebug commands, available from any buffer.") (defvar global-edebug-map nil "\ Global map of edebug commands, available from any buffer.") (byte-code "^  ! \"#############\"" [global-edebug-map make-sparse-keymap global-unset-key global-edebug-prefix global-set-key define-key "d" edebug-defun " " edebug-step-through "g" edebug-go "G" edebug-Go-nonstop "t" edebug-trace "T" edebug-Trace-fast "c" edebug-continue "C" edebug-Continue-fast "b" edebug-set-breakpoint "x" edebug-set-conditional-breakpoint "u" edebug-unset-breakpoint "w" edebug-where "q" top-level defalias edebug-help #[nil "!" [describe-function edebug-mode] 2 nil nil]] 4) (defalias 'edebug-mode #[nil " !" [use-local-map edebug-mode-map] 2 "\ Mode for Emacs Lisp buffers while in edebug. Under construction. There are both buffer local and global key bindings to several functions. E.g. edebug-step-through is bound to \\[edebug-step-through] in the debug buffer and \\\\[edebug-step-through] in any buffer. edebug buffer commands: \\{edebug-mode-map} Global commands prefixed by global-edbug-prefix: \\{global-edebug-map} Options: edebug-all-defuns edebug-eval-macro-args edebug-stop-before-symbols edebug-save-windows edebug-save-point edebug-save-buffer-points edebug-initial-mode edebug-trace "]) (defvar edebug-eval-list nil "\ List of expressions to evaluate.") (defalias 'edebug-eval-result-list #[nil "\n\"" [mapcar #[(expr) "" [err (eval expr) ((error (byte-code "\n@N\nA@#" [format "%s: %s" err error-message] 4)))] 3] edebug-eval-list] 3 "\ Return a list of evaluations of edebug-eval-list"]) (byte-code "\"\"" [defalias edebug-eval-display-list #[(edebug-eval-result-list) " Z\"\" \n ! \nB\n@! @! !\nA\nA+" [edebug-eval-list edebug-eval-buffer format ";%s\n" make-string window-width 2 45 edebug-display-line standard-output edebug-eval-list-temp edebug-pop-to-buffer erase-buffer prin1 terpri edebug-eval-result-list princ] 7] edebug-create-eval-buffer #[nil "!?!q " [edebug-eval-buffer buffer-name get-buffer-create "*edebug*" edebug-eval-mode] 2]] 3) (defalias 'edebug-eval-display #[(edebug-eval-result-list) " !!" [edebug-eval-result-list edebug-create-eval-buffer edebug-pop-to-buffer edebug-eval-buffer edebug-eval-display-list] 2 "\ Display expressions and evaluations in EVAL-LIST. It modifies the context by popping up the eval display."]) (defalias 'edebug-eval-redisplay #[nil " \n!  !q \n   ߎ !}\"c#b c %擈(!*!,!-q.b !." [edebug-create-eval-buffer edebug-pop-to-buffer edebug-eval-buffer edebug-save-windows edebug-current-window-configuration edebug-inside-windows edebug-set-window-configuration edebug-outside-windows edebug-buffer current-local-map edebug-outside-last-command-char edebug-outside-last-command edebug-outside-this-command edebug-outside-last-input-char edebug-outside-o-a-p edebug-outside-o-a-s edebug-outside-c-i-e-a edebug-outside-standard-output edebug-outside-standard-input edebug-outside-executing-macro executing-macro standard-input standard-output cursor-in-echo-area overlay-arrow-string overlay-arrow-position last-input-char this-command last-command last-command-char edebug-inside-map ((byte-code " !\n !" [use-local-map edebug-inside-map edebug-save-windows edebug-set-window-configuration edebug-inside-windows] 2)) edebug-outside-point-min edebug-outside-point-max edebug-save-point edebug-outside-edebug-point mark-marker edebug-outside-edebug-mark nil use-local-map edebug-outside-map store-match-data edebug-outside-match-data select-window edebug-outside-window edebug-outside-buffer edebug-outside-point edebug-eval-display-list edebug-eval-result-list] 11 "\ Redisplay eval list in outside environment. May only be called from within edebug-recursive-edit."]) (defalias (quote edebug-visit-eval-list) #[nil " \n!" [edebug-eval-redisplay edebug-pop-to-buffer edebug-eval-buffer] 2 nil nil]) (defalias 'edebug-update-eval-list #[nil "`eb m! B#<ywgUm! B  \nb*" [nil new-list starting-point edebug-skip-whitespace forward-sexp 1 edebug-last-sexp re-search-forward "^;" t " \n " 59 edebug-eval-list edebug-eval-redisplay] 4 "\ Replace the evaluation list with the sexps now in the eval buffer." nil]) (defalias 'edebug-delete-eval-item #[nil "# y`#y`| " [re-search-backward "^;" nil nofail 1 re-search-forward 0 edebug-update-eval-list] 5 "\ Delete the item under point and redisplay." nil]) (defvar edebug-eval-mode-map nil "\ Keymap for edebug-eval-mode. Superset of lisp-interaction-mode.") (byte-code "&\n!#####" [edebug-eval-mode-map copy-keymap lisp-interaction-mode-map define-key "" edebug-where "" edebug-delete-eval-item "" edebug-update-eval-list "" edebug-eval-last-sexp "\n" edebug-eval-print-last-sexp] 4) (defalias 'edebug-eval-mode #[nil " !" [lisp-interaction-mode edebug-eval-mode major-mode "Edebug-Eval" mode-name use-local-map edebug-eval-mode-map] 2 "\ Mode for data display buffer while in edebug. Under construction. ... ignore the following... There are both buffer local and global key bindings to several functions. E.g. edebug-step-through is bound to \\[edebug-step-through] in the debug buffer and \\\\[edebug-step-through] in any buffer. Eval list buffer commands: \\{edebug-eval-mode-map} Global commands prefixed by global-edbug-prefix: \\{global-edebug-map} "]) (byte-code "" [edebug-debug debugger] 1) (defalias 'edebug-debug #[(&rest debugger-args) "* \n=* @ @ A@ʼn \n  . \"" [edebug-backtrace recursion-depth edebug-recursion-depth edebug-offset-indices debugger-args nil debug-on-error edebug-outside-debug-on-eror edebug-break edebug-break-data edebug-exp edebug-arg-mode edebug-offset-index edebug-display apply debug] 7 "\ Replacement for debug. If an error or quit occurred and we are running an edebugged function, show where we last were. Otherwise call debug normally."]) (defalias 'edebug-backtrace #[nil "p !) ! p    eb`!y`|y` #e!T by` )y `|y` :,!)" [old-buf edebug-backtrace-buffer fundamental-mode default-major-mode generate-new-buffer "*Backtrace*" edebug-pop-to-buffer erase-buffer t 50 nil last-ok-point print-length print-escape-newlines standard-output truncate-lines backtrace re-search-forward "^ edebug(" 1 "^ edebug" looking-at "-enter" -1] 4 "\ Display a non-working backtrace. Better than nothing..." nil]) (defalias 'edebug-trace-display #[(buf-name fmt &rest args) " \n! !  qdb \n#c `\" !Zy `\" !)!+" [selected-window get-buffer-create buf-name buffer nil buf-window edebug-pop-to-buffer apply format fmt args set-window-point 1 window-height set-window-start bury-buffer select-window] 4 "\ In buffer BUF-NAME, display FMT and ARGS at the end and make it visible. The buffer is created if it does not exist. You must include newlines in FMT to break lines."]) (provide (quote edebug))