;ELC ;;; compiled by jwz@thalidomide on Fri Dec 31 01:48:58 1993 ;;; from file /th/jwz/emacs19/lisp/edebug/edebug.el ;;; emacs version 19.9 Lucid (beta9). ;;; bytecomp version 2.22; 22-dec-93. ;;; 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.")) (byte-code "!!" [provide edebug require backquote "3.1" edebug-version "liberte@cs.uiuc.edu" edebug-maintainer-address] 2) (fset 'edebug-submit-bug-report #[nil "!! Pկ#" [require reporter y-or-n-p "Do you really want to submit a report on edebug? " reporter-submit-bug-report edebug-maintainer-address "edebug.el " edebug-version edebug-setup-hook edebug-all-defs edebug-all-forms edebug-eval-macro-args edebug-stop-before-symbols edebug-save-windows edebug-save-displayed-buffer-points edebug-initial-mode edebug-trace edebug-test-coverage edebug-continue-kbd-macro edebug-print-length edebug-print-level edebug-print-circle] 17 "\ Submit via mail a bug report on edebug" nil]) (defvar edebug-setup-hook nil "\ *Functions to call before edebug is used. Its value is reset to nil after being used, so each time it is set to a new function, that function will be called once and only once.") (defvar edebug-all-defs nil "\ *If non-nil, evaluation of any defining forms will use edebug. eval-defun without prefix arg and eval-region will use edebug-eval-top-level-form. If nil, eval-region evaluates normally, but eval-defun with prefix arg uses edebug-eval-top-level-form. eval-region is called by eval-defun, eval-last-sexp, and eval-print-last-sexp. You can use the command edebug-all-defs to toggle the value of this variable. You may wish to make this variable local to each buffer by calling (make-local-variable 'edebug-all-defs) in your emacs-lisp-mode-hook.") (defvar edebug-all-forms nil "\ *Non-nil means edebug the evaluation of all forms, including top level. Use the command edebug-all-forms to toggle the value of this option.") (defvar edebug-eval-macro-args nil "\ *Non-nil means all macro call arguments may be evaluated. If this variable is nil, the default, edebug will *not* wrap macro call arguments as if they will be evaluated. For each macro, a edebug-form-spec overrides this option. So to specify exceptions for macros that have some arguments evaluated and some not, you should specify an edebug-form-spec") (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. For epoch, this option also controls preserving of screen configurations.") (defvar edebug-save-displayed-buffer-points nil "\ *If non-nil, save and restore the points of all displayed buffers. 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. But this preservation is an expensive operation since it visits each window and its displayed buffer twice for each edebug call, so it is best to avoid it if you can.") (defvar edebug-initial-mode 'step "\ *Initial execution mode for edebug, if non-nil. This is used when edebug is first entered for each recursive-edit level. Possible values are nil (which means leave edebug-execution-mode as is), step, (the default), next, 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 by the variable edebug-trace-buffer, one function entry or exit per line, indented by the stack depth. You can customize by replacing functions edebug-print-trace-before and edebug-print-trace-after.") (defconst edebug-trace-buffer "*edebug-trace*" "\ Name of the buffer to put trace info in.") (defvar edebug-test-coverage nil "\ *If non-nil, Edebug tests coverage of all expressions debugged. This is done by comparing the result of each expression with the previous result. Coverage is considered OK if two different results are found. So to sufficiently test the coverage of your code, try to execute it under conditions that evaluate all expressions more than once, and produce different results for each expression. Use `edebug-display-freq-count' to display the frequency count and coverage information for a definition.") (defvar edebug-continue-kbd-macro nil "\ *If non-nil, continue executing any keyboard macro that is executing outside.") (defvar edebug-print-length 50 "\ *Default value of print-length to use while printing results in edebug.") (defvar edebug-print-level 50 "\ *Default value of print-level to use while printing results in edebug.") (defvar edebug-print-circle t "\ *Default value of print-circle to use while printing results in edebug.") (byte-code "!!#M!M" [fboundp gensym boundp *gensym-index* 0 put variable-documentation "Integer used by gensym to produce new names." #[(&optional prefix) " P\\ !m !i *" [prefix "G" nil "" newname newsymbol *gensym-index* 1 intern-soft make-symbol] 3 "Generate a fresh uninterned symbol.\nThere is an optional argument, PREFIX. PREFIX is the\nstring that begins the new name. Most people take just the default,\nexcept when debugging needs suggest otherwise."] keywordp #[(object) "9!HU" [object symbol-name 0 58] 2 "Return t if OBJECT is a keyword.\nA keyword is a symbol that starts with "]] 4) (fset 'lambda-list-keywordp #[(object) "9!HU" [object symbol-name 0 38] 2 "\ Return t if OBJECT is a lambda list keyword. A lambda list keyword is a symbol that starts with "]) (fset 'edebug-last-sexp #[nil "!`)`{!@" [read-from-string forward-sexp -1] 3 "\ Return the last sexp before point in current buffer. Assumes elisp syntax is active."]) (fset 'edebug-get-emacs-displayed-buffer-points #[nil "  ! = !q`B B !f -" [selected-window first-window next-window next nil buffer-point-list buffer window-buffer] 3 "\ Return a list of buffer point pairs, for all displayed buffers."]) (fset 'edebug-set-buffer-points #[(buffer-points) "p \"q)" [current-buffer mapcar #[(buf-point) " @! @q Ab" [buffer-name buf-point] 2] buffer-points] 3 "\ Restore the buffer-points created by edebug-get-displayed-buffer-points."]) (fset 'edebug-macrop #[(object) "9!Kr<@=A!" [object fboundp macro edebug-functionp] 3 "\ Return the macro named by OBJECT, or nil if it is not a macro."]) (fset 'edebug-functionp #[(object) "9!Kr!<@=A@<" [object fboundp subrp lambda] 3 "\ Returns the function named by OBJECT, or nil if it is not a function."]) (fset '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."]) (byte-code "! " [boundp epoch::version edebug-epoch] 2) (fset 'set-edebug-func #[(edebug-func epoch-func emacs-func) " \nK KM" [edebug-func edebug-epoch epoch-func emacs-func] 2 "\ Define a function as either the epoch version or the emacs version."]) (fset 'edebug-get-epoch-displayed-buffer-points #[nil "!\" )" [nil buffer-point-list mapcar #[(screen) " !  ! = !`BB !k+" [select-screen screen selected-window first-window next-window next window-buffer buffer-point-list] 3] epoch::screen-list unmapped] 4 "\ Return a list of buffer point pairs, for all displayed buffers."]) (set-edebug-func 'edebug-get-displayed-buffer-points 'edebug-get-epoch-displayed-buffer-points 'edebug-get-emacs-displayed-buffer-points) (fset 'edebug-pop-to-buffer #[(buffer) " !\n! \"@ !  ! = ! \" \") q" [edebug-get-buffer-window buffer edebug-window select-window edebug-epoch select-screen symbol-buffer-value allowed-screens epoch::current-screen one-window-p split-window get-buffer-window edebug-trace-buffer next-window set-window-buffer selected-window set-window-hscroll 0] 5 "\ Like pop-to-buffer, but select a window that buffer was shown in. If running epoch, use the same screen too."]) (fset '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."]) (set-edebug-func 'edebug-current-window-configuration 'edebug-current-screen-configuration 'current-window-configuration) (fset '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 "##M#M#" [set-edebug-func edebug-set-window-configuration edebug-set-screen-configuration set-window-configuration edebug-get-buffer-window epoch::get-buffer-window get-buffer-window edebug-epoch-sit-for #[(arg) " \n!" [epoch::dispatch-events sit-for arg] 2] edebug-sit-for sit-for edebug-epoch-input-pending-p #[nil " " [epoch::dispatch-events input-pending-p] 1] edebug-input-pending-p input-pending-p] 4) (fset 'edebug-install-custom-print-funcs #[nil "!MMMMM" [require cust-print edebug-prin1 custom-prin1 edebug-print custom-print edebug-prin1-to-string custom-prin1-to-string edebug-format custom-format edebug-message custom-message] 2 "\ Replace edebug print functions with custom versions. Modifying the custom print functions, or changing print-length, print-level, print-circle, custom-print-list or custom-print-vector have immediate effect." nil]) (fset 'edebug-reset-print-funcs 'edebug-uninstall-custom-print-funcs) (fset 'edebug-uninstall-custom-print-funcs #[nil "!MMMMM" [require cust-print edebug-prin1 CP::internal-prin1 edebug-print CP::internal-print edebug-prin1-to-string CP::internal-prin1-to-string edebug-format CP::internal-format edebug-message CP::internal-message] 2 "\ Replace edebug custom print functions with internal versions." nil]) (byte-code "MMMMM!KM!KM!!KM!KMMMM" [edebug-prin1 prin1 edebug-print print edebug-prin1-to-string prin1-to-string edebug-format format edebug-message message fboundp edebug-original-eval-defun eval-defun edebug-original-eval-region eval-region edebug-original-eval-buffer eval-buffer edebug-original-eval-current-buffer eval-current-buffer edebug-install-eval-functions #[nil "MMMM" [eval-defun edebug-eval-defun eval-region edebug-eval-region eval-buffer edebug-eval-buffer eval-current-buffer edebug-eval-current-buffer] 2 nil nil] edebug-uninstall-eval-functions #[nil "KMKMKMKM" [eval-defun edebug-original-eval-defun eval-region edebug-original-eval-region eval-buffer edebug-original-eval-buffer eval-current-buffer edebug-original-eval-current-buffer] 2 nil nil] edebug-all-defuns edebug-all-defs] 3) (fset 'edebug-all-defs #[nil "?ê\"" [edebug-all-defs message "Edebugging all definitions is %s." "on" "off"] 3 "\ Toggle edebugging of all definitions, not including those evaluated in the minibuffer, or during load." nil]) (fset 'edebug-all-forms #[nil "?ê\"" [edebug-all-forms message "Edebugging all forms is %s." "on" "off"] 3 "\ Toggle edebugging of all forms, not including those evaluated in the minibuffer, or during load." nil]) (fset 'edebug-eval-defun #[(edebug-it) "? ?=?!)" [edebug-it edebug-all-defs edebug-original-eval-defun nil] 2 "\ Evaluate the top-level form that point is in or before. Print value in minibuffer. This version, from edebug, has the following differences: If the prefix argument is the same as edebug-all-defs (nil or non-nil), evaluate normally; otherwise code is instrumented. Also, the value printed is \"edebug: \"." "P"]) (fset 'edebug-eval-region #[(edebug-e-r-start edebug-e-r-end &optional edebug-e-r-output) "`pp “‰ b ` W !p q !p q) B= !! !!) `] `^b-qb.‡" [make-marker edebug-e-r-end nil edebug-e-r-val edebug-e-r-form edebug-e-r-end-marker edebug-e-r-inside-buf edebug-e-r-buf edebug-e-r-pnt edebug-e-r-start edebug-skip-whitespace edebug-read-and-maybe-wrap-form edebug-all-defs edebug-e-r-current-buffer eval edebug-e-r-output t standard-output values prin1 princ "\n"] 6 "\ Execute the region as Lisp code. When called from programs, expects two arguments, giving starting and ending indices in the current buffer of the text to be executed. Programs can pass third argument PRINTFLAG which controls printing of output: nil means discard it; anything else is stream for print. This version, from edebug, maybe instruments code for edebug depending on the values of `edebug-all-defs' and `edebug-all-forms'. If there is no error, point does not move. If there is an error, point remains at the end of the last character read from the buffer." "r"]) (fset 'edebug-eval-current-buffer #[(&optional edebug-e-c-b-output) "ed #" [eval-region edebug-e-c-b-output] 4 "\ Execute the current buffer as Lisp code. Programs can pass argument PRINTFLAG which controls printing of output: nil means discard it; anything else is stream for print. This version from edebug calls eval-region on the whole buffer." nil]) (fset 'edebug-eval-buffer #[(edebug-e-b-bufname &optional edebug-e-b-printflag) " ! \"qed #)" [get-buffer edebug-e-b-bufname error "No such buffer: %s" eval-region edebug-e-b-printflag] 4 "\ Execute BUFFER as Lisp code. Programs can pass argument PRINTFLAG which controls printing of output: nil means discard it; anything else is stream for print. This version from edebug calls eval-region on the whole buffer." "bBuffer: "]) (make-variable-buffer-local 'edebug-form-data) (defconst edebug-form-data nil "\ Per-buffer local variable whose value is a list of entries. @code{(@var{symbol} @var{begin-marker} @var{end-marker}). The markers are at the beginning and end of an entry level form and @var{symbol} is a symbol that holds all edebug related information for the form on its property list.") (fset 'edebug-make-form-data-entry #[(symbol begin end) " \nE" [symbol begin end] 3]) (fset 'edebug-get-form-data-entry #[(pnt) " W @A@ Z\n A\n W\nX 8X\n+G +" [edebug-form-data nil 999999 closest-dist closest-entry rest 0 entry begin pnt dist 2] 4 "\ Find the edebug form data entry which is closest to PNT. Return `nil' if none found."]) (fset 'edebug-form-data-symbol #[nil "`!@!" [edebug-get-form-data-entry error "Form not instrumented."] 2 "\ Return the edebug data symbol of the form where point is in. If point is not inside a edebuggable form, cause error."]) (fset 'edebug-set-form-data-entry #[(new-entry) " ! \nB" [edebug-clear-form-data-entry new-entry edebug-form-data] 2 "\ Make NEW-ENTRY the first element in the `edebug-form-data' list."]) (fset 'edebug-clear-form-data-entry #[(entry) "\n\"" [entry delq edebug-form-data] 3]) (fset 'def-edebug-spec '(macro . #[(symbol spec) "\nD DF" [put quote symbol 'edebug-form-spec spec] 5 "\ Set the edebug-form-spec property of SYMBOL according to SPEC. The unevaluated SPEC can be 0, t, or a symbol (naming a function), or a spec list."])) (byte-code "MMM" [def-edebug-form-spec (macro . #[(symbol spec-form) "!#" [message "Obsolete: use def-edebug-spec instead." put symbol edebug-form-spec (eval spec-form)] 4]) get-edebug-spec #[(symbol) "N9 N q *" [symbol edebug-form-spec nil indirect] 3] nil edebug-def-name edebug-defun edebug-eval-top-level-form] 2) (fset 'edebug-eval-top-level-form #[nil " )!" [eval t edebug-all-forms edebug-read-top-level-form] 2 "\ Evaluate a top level form, such as defun or defmacro. This is like eval-defun, but with edebug calls. Print its name in the minibuffer and leave point where it is, or if an error occurs, leave point after it with mark at the original point." nil]) (fset 'edebug-read-top-level-form #[nil "` !b)" [starting-point end-of-defun beginning-of-defun edebug-read-and-maybe-wrap-form edebug-defs] 2 "\ Read and wrap the top level form with but don't evaluate it."]) (byte-code "MMM" [nil edebug-error-point edebug-read-and-maybe-wrap-form #[(edebug-defs) "! \"!‰ \n   Ѝ\"." [run-hooks edebug-setup-hook nil string-match "Lucid" emacs-version require edebug-lucid no-match edebug-error-point edebug-best-error edebug-fence edebug-&rest edebug-&optional edebug-def-name result (byte-code " !Ç" [edebug-read-and-maybe-wrap-form1 edebug-defs result nil] 2) apply edebug-syntax-error] 9] edebug-read-and-maybe-wrap-form1 #[(edebug-defs) " =u =p!9! < @= A@= =p!)p! \nC C\"!!! ABC$@) # p! \nC C\"!!$) . " [nil offsets form edebug-current-offset edebug-offsets-stack edebug-offsets def-name defining-form-p def-kind spec edebug-next-token-class lparen 1 symbol read get-edebug-spec &define name edebug-defs edebug-read edebug-new-cursor cursor edebug-make-form-wrapper edebug-before-offset edebug-after-offset symbol-name put edebug point-marker edebug-read-sexp edebug-all-forms] 10] edebug-interactive-p-name #[nil " \"!" [intern format "edebug-%s-interactive-p" edebug-def-name] 4]] 2) (fset 'edebug-wrap-def-forms #[(forms) " DC !E !" [edebug-def-interactive let edebug-interactive-p-name (interactive-p) edebug-make-enter-wrapper forms] 4 "\ Wrap the FORMS of a definition body."]) (fset 'edebug-make-enter-wrapper #[(forms) "!D\" \"DF" [edebug-def-name gensym "edebug-anon" edebug-enter quote append (list) edebug-inside-func edebug-def-args function (lambda nil) forms] 7]) (fset 'edebug-unwrap #[(sexp) ":@=8@=8A@AAGV B @)" [sexp edebug-after 3 edebug-enter forms 1 progn] 3 "\ Return the unwrapped SEXP or return it as is if it is not wrapped. The SEXP might be the result of wrapping a body, which is a list of expressions; a `progn' form will be returned enclosing these forms."]) (fset 'edebug-unwrap* #[(sexp) " ! \n=\n !s\n:\n\"\n)" [edebug-unwrap sexp new-sexp mapcar edebug-unwrap*] 3 "\ Return the sexp recursively unwrapped."]) (byte-code "MMMMMMM" [edebug-defining-form #[(cursor form-begin form-end speclist) " ! !A# $" [edebug-set-cursor cursor edebug-cursor-object edebug-cursor-offsets edebug-make-form-wrapper form-begin form-end speclist] 5] edebug-make-form-wrapper #[(cursor form-begin form-end &optional speclist) " !\nA@ ē \n   \"!C! \n!\n\n\n \n\n8 ē#\n\n\nA@ ē\n8ē\n!\n\"!\n!\n!\n E# . " [edebug-get-form-data-entry form-begin form-data-entry make-marker nil edebug-form-begin-marker edebug-offset-list 0 edebug-offset-index result edebug-def-name edebug-def-args edebug-def-interactive edebug-inside-func speclist edebug-match cursor edebug-make-enter-wrapper edebug-form gensym "edebug-anon" edebug-make-form-data-entry 2 form-end edebug-set-form-data-entry message "edebug: %s" vconcat edebug-clear-frequency-count edebug-clear-coverage put edebug] 7] edebug-clear-frequency-count #[(name) " G\"#" [put name edebug-freq-count make-vector edebug-offset-list 0] 6] edebug-clear-coverage #[(name) " G\"#" [put name edebug-coverage make-vector edebug-offset-list unknown] 6] edebug-inc-offset #[(offset) " \nZ BT" [edebug-offset-index offset edebug-form-begin-marker edebug-offset-list] 3] edebug-make-before-and-after-form #[(before-index form after-index) "\nD F" [edebug-after edebug-before before-index after-index form] 4] edebug-make-after-form #[(form after-index) "\n F" [edebug-after 0 after-index form] 4]] 2) (fset 'edebug-form #[(cursor) " \" ! : @= @9! \"  : @= @ !! AB$ @! ! !!#+ 9 > !  @! A!# A!\" !*" [edebug-top-element-required cursor "Expected form" form edebug-top-offset offset quote head get-edebug-spec spec edebug-new-cursor new-cursor &define edebug-defining-form edebug-after-offset symbol-name edebug-make-before-and-after-form edebug-inc-offset edebug-list-form edebug-cursor-offsets (t nil) keywordp edebug-stop-before-symbols edebug-make-after-form edebug-move-cursor] 7 "\ Return the instrumented form for the following form. Add the point offsets to the edebug-offset-list for the form."]) (byte-code "MMMM! ! ! ! ʇ" [edebug-list-form #[(cursor) " \"ĉ ! !A#Ī9!= !  !\"B: \"!," [edebug-top-element-required cursor "Expected elements" t nil edebug-&rest edebug-&optional edebug-fence head edebug-set-cursor edebug-cursor-object edebug-cursor-offsets edebug-syntax-error "nil head" interactive-p check-it edebug-def-interactive edebug-move-cursor edebug-interactive-p-name edebug-list-form-args edebug-match-specs (lambda-expr body) "Head of list form must be a symbol or lambda expression."] 5] edebug-forms #[(cursor) " !" [edebug-match-body cursor] 2] edebug-sexps #[(cursor) " \"" [edebug-match cursor (&rest sexp)] 3] edebug-list-form-args #[(head cursor) " !\n\\ :ʼn  \" ! # \", = ! = ! 9  ! ! ! ! !*" [get-edebug-spec head max-lisp-eval-depth 12 spec nil edebug-error-point edebug-best-error edebug-&rest edebug-&optional edebug-match-specs cursor edebug-empty-cursor apply edebug-no-match "Unmatched argument(s)." t edebug-match-body 0 edebug-sexps edebug-macrop edebug-eval-macro-args] 6] boundp edebug-fence nil edebug-best-error edebug-after-dotted-spec edebug-depth 0 150 edebug-max-depth] 2) (fset 'edebug-match #[(cursor specs) " \"-" [nil edebug-fence edebug-error-point edebug-best-error edebug-&rest edebug-&optional edebug-match-specs cursor specs] 5 "\ Top level spec matching function."]) (byte-code "MMMMM\"MMMMM#MMMMMMMMMMMMMMMMMMM" [edebug-match-specs #[(cursor specs) " \\ \\ V! T:@ ! ! ɉ !\nBq\n =u!\n =!< )\n)u" [1 nil elements edebug-next-token-class (rparen dot) edebug-read1 stream dot dotted-form rparen edebug-syntax-error "Expected `)'" edebug-read-dotted-list] 2] edebug-read-vector #[(stream) "u =!\nBq\n\")u" [1 nil elements edebug-next-token-class rbracket edebug-read1 stream apply vector] 3] edebug-new-cursor #[(object offsets) " ! \" B" [vectorp object append nil offsets] 3] edebug-set-cursor #[(cursor object offsets) " \n" [cursor object offsets] 2] edebug-cursor-object #[(cursor) "@" [cursor] 1] edebug-cursor-offsets #[(cursor) "A" [cursor] 1] edebug-empty-cursor #[(cursor) "@?" [cursor] 1] edebug-top-element-required #[(cursor &rest error) "@ #!" [cursor apply edebug-no-match error edebug-top-element] 4] edebug-top-element #[(cursor) "@@" [cursor] 1] edebug-top-offset #[(cursor) "A@" [cursor] 1] edebug-move-cursor #[(cursor) "@\"@AAA" [cursor edebug-no-match "Not enough arguments."] 3]] 4) (fset 'edebug-spec-p #[(object) "9N" [object edebug-form-spec] 2 "\ Return non-nil if OBJECT is a symbol with an edebug-form-spec property."]) (byte-code "###############################" [put def-edebug-spec edebug-form-spec (&define :name edebug-spec name &or "nil" edebug-spec-p "t" "0" (&rest edebug-spec)) edebug-spec-list ((edebug-spec . [&or nil edebug-spec])) edebug-spec (&or (vector &rest edebug-spec) ("vector" &rest edebug-spec) ("quote" symbolp) edebug-spec-list stringp [lambda-list-keywordp &rest edebug-spec] [keywordp fence edebug-spec] edebug-spec-p symbolp) quote sexp defconst defvar (symbolp &optional form stringp) defun (&define name lambda-list [&optional stringp] [&optional ("interactive" interactive)] def-body) defmacro (&define name lambda-list def-body) defsubst arglist lambda-list (([&rest arg] [&optional ["&optional" arg &rest arg]] &optional ["&rest" arg])) interactive (&optional &or stringp def-form) function-form (&or ([&or "quote" "function"] &or symbolp lambda-expr) form) function (&or symbolp lambda-expr) lambda (&define lambda-list [&optional stringp] [&optional ("interactive" interactive)] def-body) macro (&define "lambda" lambda-list def-body) mapcar (function-form form) mapconcat (function-form form form) mapatoms (function-form &optional form) apply (function-form &rest form) funcall (function-form &rest form) let ((&rest &or symbolp (fence symbolp &optional form)) body) let* setq (&rest symbolp form) setq-default cond (&rest (form &rest form)) condition-case (symbolp form &rest (symbolp body)) \` (backquote-form) backquote-form (&or ([&or "," ",@"] &or ("quote" backquote-form) form) (backquote-form &rest backquote-form) (vector &rest backquote-form) sexp) ad-dolist ((symbolp form &optional form) body) defadvice (&define name (name name &rest sexp) [&optional stringp] [&optional ("interactive" interactive)] def-body)] 4) (defvar edebug-active nil "\ Non-nil when edebug is active") (byte-code " D B!!!Ň" [edebug-active minor-mode-alist " *Debugging*" boundp edebug-stack nil edebug-stack-depth -1 edebug-offset-indices] 2) (defvar edebug-global-break-condition nil "\ If non-nil, an expression to test for at every stop point. If the result is non-nil, then break. Errors are ignored.") (defvar edebug-entered nil "\ Non-nil if edebug has already been entered at this recursive edit level. This should stay nil at the top level.") (byte-code "!!ć" [boundp edebug-execution-mode step edebug-next-execution-mode nil] 2) (defvar edebug-debugger 'edebug "\ Name of function to use for debugging when error or quit occurs. Set this to 'debug if you want to debug edebug.") (fset 'edebug-enter #[(edebug-function edebug-args edebug-body) "  N@ N\nN  ! BB\\\\T   * . " [edebug-entered edebug-next-execution-mode edebug-execution-mode nil edebug-initial-mode t edebug-function edebug edebug-data edebug-def-mark edebug-freq-count edebug-coverage marker-buffer edebug-buffer edebug-stack 0 edebug-offset-indices max-lisp-eval-depth 6 max-specpdl-size 18 executing-macro edebug-outside-executing-macro edebug-continue-kbd-macro edebug-debugger debugger edebug-trace edebug-stack-depth edebug-result edebug-print-trace-before edebug-body edebug-print-trace-after] 3 "\ 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-eval-top-level-form is entered. Return the result of BODY."]) (byte-code "MMMMMMMM M!!ԇ" [edebug-print-trace-before #[nil " \"%" [edebug-trace-display edebug-trace-buffer "%s> %s args: %s" make-string edebug-stack-depth 45 edebug-function edebug-args] 6] edebug-print-trace-after #[nil " \"%" [edebug-trace-display edebug-trace-buffer "%s< %s result: %s" make-string edebug-stack-depth 45 edebug-function edebug-result] 6] edebug-slow-before #[(edebug-before-index) " \n \n HTI > # " [edebug-offset-indices edebug-before-index edebug-freq-count edebug-execution-mode (Go-nonstop next) edebug-input-pending-p edebug-debugger before nil] 4] edebug-fast-before (lambda (edebug-before-index)) edebug-slow-after #[(edebug-before-index edebug-after-index edebug-value) " \n \n HTI =  #" [edebug-offset-indices edebug-after-index edebug-freq-count edebug-test-coverage edebug-update-coverage edebug-execution-mode Go-nonstop edebug-input-pending-p edebug-value edebug-debugger after] 4] edebug-fast-after (lambda (edebug-before-index edebug-after-index edebug-value) edebug-value) edebug-run-slow #[nil "MM" [edebug-before edebug-slow-before edebug-after edebug-slow-after] 2] edebug-run-fast #[nil "MM" [edebug-before edebug-fast-before edebug-after edebug-fast-after] 2] edebug-update-coverage #[nil " H=\n= I \n=? I)" [edebug-coverage edebug-after-index old-result ok-coverage unknown edebug-value] 4] boundp edebug-break-result nil edebug-global-break-result] 2) (fset 'edebug-debugger #[(edebug-offset-index edebug-arg-mode edebug-value) "\\\n\\ A@ A@ ̏  ?!AA@  \" AAB> ." [max-lisp-eval-depth 3 max-specpdl-size 11 edebug-data edebug-breakpoints edebug-offset-index edebug-break-data edebug-break-condition edebug-global-break-condition err (byte-code " !" [eval edebug-global-break-condition edebug-global-break-result] 2) ((error)) edebug-global-break nil edebug-break eval edebug-break-result delq edebug-execution-mode (go continue Continue-fast) edebug-input-pending-p edebug-display edebug-value] 5 "\ Check breakpoints and pending input. If edebug display should be updated, call edebug-display. Return edebug-value."]) (byte-code "!\"!" [boundp edebug-window-start nil set-default make-variable-buffer-local] 3) (defvar edebug-eval-list nil "\ List of expressions to evaluate.") (defvar edebug-previous-result nil "\ Last result returned from an expression.") (byte-code "M \"M" [edebug-mark #[nil " )" [nil zmacs-regions mark] 1] string-match "^19" emacs-version #[nil "!" [mark t] 2]] 3) (fset 'edebug-display #[nil "\\\n\\AA@H\\ʼn p` ʼn  ʼn   \"!#&\")'=*!+ - \"!  !!\"q`b'=g>#&\")6!6 9 '=9 *@=!*@@NAB*AC##DEFGH#IJIK#9L=M!N!'=D9L=OP!Q D9R=SP!9L=ST!9U=SP!9V=ST!W9X>'=Y )pZ\"qbZq." [max-specpdl-size 22 max-lisp-eval-depth 4 t nil edebug-def-mark edebug-data edebug-offset-index selected-window edebug-mark edebug-eval-list edebug-eval-result-list overlay-arrow-position overlay-arrow-string cursor-in-echo-area edebug-trace-window-start edebug-trace-window edebug-outside-c-i-e-a edebug-outside-o-a-s edebug-outside-o-a-p edebug-eval-buffer edebug-buffer-points edebug-outside-windows edebug-outside-mark edebug-outside-point edebug-outside-buffer edebug-outside-window edebug-window edebug-buffer-outside-point edebug-point edebug-stop edebug-active buffer-name edebug-buffer debug-on-error error "Buffer defining %s not found." edebug-function edebug-arg-mode after edebug-compute-previous-result edebug-value edebug-save-windows edebug-current-window-configuration edebug-save-displayed-buffer-points edebug-get-displayed-buffer-points edebug-pop-to-buffer edebug-eval-display select-window before (40 35 96) "Source has changed - reevaluate definition of %s." edebug-adjust-window edebug-window-start edebug-input-pending-p step edebug-execution-mode edebug-overlay-arrow beep quit message "Quit" "%s: %s" error-message mapconcat #[(arg) "\n\"" [format "%s" arg] 3] "," edebug-break edebug-global-break "Global Break: %s => %s" edebug-global-break-condition edebug-global-break-result edebug-break-condition "Break: %s => %s" edebug-break-result Continue-fast "Break" "" sit-for 1 edebug-previous-result continue edebug-sit-for 0 trace Trace-fast ((byte-code " ! q\n!!!  ! !\" ! q\n\n #\n\"!!q =b ! ؓ)؇" [edebug-get-buffer-window edebug-buffer edebug-window window-start edebug-window-start get-buffer-window edebug-trace-buffer edebug-trace-window edebug-trace-window-start edebug-save-windows edebug-set-window-configuration edebug-outside-windows edebug-save-displayed-buffer-points edebug-set-buffer-points edebug-buffer-points set-window-start no-force set-window-point edebug-point window-point edebug-outside-window select-window edebug-outside-buffer edebug-outside-point nil zmacs-regions marker-buffer mark-marker edebug-outside-mark] 5)) (step next) edebug-recursive-edit current-buffer] 23 "\ Setup windows for edebug, determine mode, maybe enter recursive-edit."]) (byte-code "!!M!!‡" [boundp print-level nil print-circle edebug-safe-prin1-to-string #[(value) " \n  !," [t edebug-print-length print-length edebug-print-level print-level edebug-print-circle print-circle print-escape-newlines edebug-prin1-to-string value] 4] edebug-depth 0 edebug-recursion-depth] 2) (fset 'edebug-recursive-edit #[nil " q ) T ʼn  \n  !!!! \n  ʼn  \n  !\"#$%&'! *=,>!  ." [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 boundp unread-command-char last-input-event last-command-event unread-command-event -1 defining-kbd-macro edebug-continue-kbd-macro edebug-outside-defining-kbd-macro edebug-outside-unread-command-event edebug-outside-last-command-event edebug-outside-last-input-event edebug-outside-unread-command-char 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-interactive-p edebug-entered edebug-recursion-depth edebug-outside-match-data edebug-buffer-read-only fboundp zmacs-deactivate-region edebug-execution-mode go edebug-arg-mode (after error) message "Break" edebug-mode t ((byte-code "!\n\n! !!q> \n  !!" [edebug-backtrace-buffer kill-buffer edebug-eval-buffer store-match-data edebug-outside-match-data buffer-name edebug-buffer edebug-execution-mode (go Go-nonstop) edebug-overlay-arrow edebug-buffer-read-only buffer-read-only use-local-map edebug-outside-map get-buffer-create " bogus edebug buffer"] 2)) recursive-edit] 29 "\ Start up a recursive edit inside of edebug."]) (fset 'edebug-adjust-window #[(old-start) " \" ` WŪ ǥ[yy`)\" " [pos-visible-in-window-p old-start set-window-start selected-window window-start -1 window-height 2 0] 4 "\ If pos is not visible, adjust current window to fit following context."]) (defconst edebug-arrow-alist '((Continue-fast . "=") (Trace-fast . "-") (continue . ">") (trace . "->") (step . "=>") (next . "=>") (go . "<>") (Go-nonstop . "..")) "\ Association list of arrows for each edebug mode. If you come up with arrows that make more sense, let me know.") (fset 'edebug-overlay-arrow #[nil "y`) A  p)" [nil pos 0 edebug-execution-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-execution-mode."]) (fset '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. Also, each time you toggle it on, the inside and outside window configurations become the same as the current configuration." nil]) (fset '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]) (fset '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]) (fset 'edebug-bounce-point #[(arg) "!Ë)" [edebug-active error "edebug is not active." ((byte-code " !\nbp` ! !$) ! !" [edebug-pop-to-buffer edebug-outside-buffer edebug-outside-point nil zmacs-regions message "Current buffer: %s Point: %s Mark: %s" marker-buffer mark-marker marker-position "" edebug-sit-for arg edebug-buffer] 6))] 2 "\ Bounce the point in the outside current buffer. If prefix arg is supplied, sit for that many seconds before returning. The default is one second." "p"]) (defvar edebug-display-buffer-list nil "\ List of buffers that edebug will display when it is active.") (fset 'edebug-display-buffer #[(buffer) " > \" B\nƪ#)" [buffer edebug-display-buffer-list already-displaying delq message "Displaying %s %s" "off" "on"] 5 "\ Toggle display of a buffer inside of edebug." "bBuffer: "]) (fset 'edebug-find-stop-point #[nil " N ! \" )@A@ AA@\n!x`)Z\nGW\nHVTiW\nHX B \"." [edebug-form-data-symbol edebug-def-name edebug data markerp error "%s is not instrumented for edebug." edebug-data edebug-def-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."]) (fset 'edebug-next-breakpoint #[nil "  @ A\nN@ A@ AA@\n!  @@ X A p  @@\n\n@H\\b\nAA@Ϊ\nA@\nA@!\"P!).)" [edebug-find-stop-point edebug-stop-point edebug-def-name index edebug edebug-data edebug-def-mark edebug-breakpoints offset-vector nil breakpoint message "No breakpoints in this function." breaks "Temporary " "" format "Condition: %s" edebug-safe-prin1-to-string] 7 "\ Move point to the next breakpoint, or first if none past point." nil]) (fset 'edebug-modify-breakpoint #[(flag &optional condition temporary) "  @ A\nN@ A@ AA@\n \n\n\" EB\"\n#\n\"\n\n\"! A H\\b.)" [edebug-find-stop-point edebug-stop-point edebug-def-name index edebug edebug-data edebug-def-mark edebug-breakpoints offset-vector nil present delq flag edebug-sort-alist condition temporary < message "Breakpoint set in %s with condition: %s." "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. "]) (fset '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"]) (fset 'edebug-unset-breakpoint #[nil "!" [edebug-modify-breakpoint nil] 2 "\ Clear the breakpoint of nearest sexp." nil]) (fset '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." (byte-code " \n@\nA NA@ A@ \"  \"!\".)D" [current-prefix-arg edebug-find-stop-point edebug-stop-point edebug-def-name index edebug edebug-data edebug-breakpoints edebug-break-data edebug-break-condition read-minibuffer format "Condition in %s: " "%s" ""] 7)]) (fset 'edebug-set-global-break-condition #[(expression) "" [expression edebug-global-break-condition] 2 nil (byte-code " \"\"C" [read-minibuffer "Global Condition: " format "%s" edebug-global-break-condition] 5)]) (fset 'edebug-set-mode #[(mode shortmsg msg) " W\n ! \n!" [0 edebug-depth mode edebug-execution-mode message shortmsg exit-recursive-edit edebug-next-execution-mode msg] 2 "\ Set the edebug mode to MODE. Display SHORTMSG, or MSG if not within edebug." nil]) (fset 'edebug-step-through-mode 'edebug-step-mode) (fset 'edebug-step-mode #[nil "#" [edebug-set-mode step "" "edebug will stop at next stop point."] 4 "\ Proceed to next debug step." nil]) (fset 'edebug-next-mode #[nil "#" [edebug-set-mode next "" "edebug will stop after next eval."] 4 "\ Proceed to next debug after step." nil]) (fset 'edebug-go-mode #[(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 current point and go." "P"]) (fset 'edebug-Go-nonstop-mode #[nil "#" [edebug-set-mode Go-nonstop "Go-Nonstop..." "edebug will not stop at breaks."] 4 "\ Go, evaluating without debugging." nil]) (fset 'edebug-trace-mode #[nil "#" [edebug-set-mode trace "Tracing..." "edebug will trace with pause."] 4 "\ Begin trace mode." nil]) (fset 'edebug-Trace-fast-mode #[nil "#" [edebug-set-mode Trace-fast "Trace fast..." "edebug will trace without pause."] 4 "\ Trace with no wait at each step." nil]) (fset 'edebug-continue-mode #[nil "#" [edebug-set-mode continue "Continue..." "edebug will pause at breakpoints."] 4 "\ Begin continue mode." nil]) (fset 'edebug-Continue-fast-mode #[nil "#" [edebug-set-mode Continue-fast "Continue fast..." "edebug will stop and go at breakpoints."] 4 "\ Trace with no wait at each step." nil]) (fset 'edebug-goto-here #[nil "!" [edebug-go-mode t] 2 "\ Proceed to this stop point." nil]) (fset 'edebug-stop #[nil "!" [message "Stop"] 2 "\ Stop execution and do not continue. Useful for exiting from trace loop." nil]) (fset 'edebug-forward-sexp #[(arg) "" [err (byte-code " !!)" [t parse-sexp-ignore-comments forward-sexp arg edebug-go-mode] 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"]) (fset 'edebug-step-out #[nil "" [err (byte-code "!!)!)" [t parse-sexp-ignore-comments up-list 1 edebug-go-mode] 2) ((error (byte-code "`!`U !)" [start-point down-list -1 edebug-step-mode edebug-go-mode 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]) (fset 'edebug-step-in #[nil " =!up!)9N!\n\n!\n!q\nb )\n:\"Ϫ\"*" [edebug-where edebug-arg-mode before message "You must be before a list form." 1 read func edebug "Lambda expressions are instrumented." func-marker markerp marker-buffer edebug-eval-top-level-form "%s is already instrumented." nil "Don't know where %s is defined."] 4 "\ Step into the definition of the form about to be evaluated. Do this when stopped before the form or 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]) (fset 'edebug-top-level-nonstop #[nil " " [Go-nonstop edebug-execution-mode top-level] 1 "\ Set mode to Go-nonstop, and exit to top-level. This is useful for exiting even if unwind-protect code may be executed." nil]) (put 'edebug-outside-excursion 'edebug-form-spec t) (fset 'edebug-outside-excursion '(macro . #[(&rest body) " \"EE" [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) (store-match-data edebug-outside-match-data) let ((max-specpdl-size (+ 19 max-specpdl-size)) (max-lisp-eval-depth (+ 6 max-lisp-eval-depth)) (edebug-inside-map (current-local-map)) (last-command-char edebug-outside-last-command-char) (last-command-event edebug-outside-last-command-event) (last-command edebug-outside-last-command) (this-command edebug-outside-this-command) (unread-command-char edebug-outside-unread-command-char) (unread-command-event edebug-outside-unread-command-event) (last-input-char edebug-outside-last-input-char) (last-input-event edebug-outside-last-input-event) (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) (defining-kbd-macro edebug-outside-defining-kbd-macro)) unwind-protect append (save-excursion (set-buffer edebug-outside-buffer) (goto-char edebug-outside-point) (let ((zmacs-regions nil)) (if (marker-buffer (mark-marker)) (set-marker (mark-marker) edebug-outside-mark)))) body (if edebug-save-windows (edebug-set-window-configuration edebug-inside-windows))] 10 "\ Evaluate an expression list in the outside context. Return the result of the last expression."])) (fset 'edebug-compute-previous-result #[(edebug-value) "WY!#!P" [edebug-value 256 0 format "Result: %s = %s" single-key-description "Result: " edebug-safe-prin1-to-string edebug-previous-result] 5]) (fset 'edebug-previous-result #[nil "\n\"" [message "%s" edebug-previous-result] 3 "\ Print the previous result." nil]) (fset 'edebug-safe-eval #[(edebug-expr) "" [edebug-err (eval edebug-expr) ((error (byte-code "\n@N\nA@#" [edebug-format "%s: %s" edebug-err error-message] 4)))] 3 "\ Evaluate EXPR safely. If there is an error, a string is returned describing the error."]) (fset 'edebug-eval-expression #[(edebug-expr) "  !q! \\ \\  !\"#$%&'()*+,  펊.q/b1 ! 4)7!!.!" [princ edebug-save-windows edebug-current-window-configuration edebug-inside-windows edebug-set-window-configuration edebug-outside-windows edebug-buffer store-match-data edebug-outside-match-data max-specpdl-size 19 max-lisp-eval-depth 6 current-local-map edebug-outside-last-command-char edebug-outside-last-command-event edebug-outside-last-command edebug-outside-this-command edebug-outside-unread-command-char edebug-outside-unread-command-event edebug-outside-last-input-char edebug-outside-last-input-event 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 edebug-outside-defining-kbd-macro defining-kbd-macro executing-macro standard-input standard-output cursor-in-echo-area overlay-arrow-string overlay-arrow-position last-input-event last-input-char unread-command-event unread-command-char this-command last-command last-command-event last-command-char edebug-inside-map ((byte-code "\n!" [edebug-save-windows edebug-set-window-configuration edebug-inside-windows] 2)) edebug-outside-buffer edebug-outside-point nil zmacs-regions marker-buffer mark-marker edebug-outside-mark edebug-safe-prin1-to-string edebug-safe-eval edebug-expr] 19 "\ Evaluate an expression in the outside environment. If interactive, prompt for the expression. Print result in minibuffer." "xEval: "]) (fset 'edebug-eval-last-sexp #[nil " !" [edebug-eval-expression edebug-last-sexp] 2 "\ Evaluate sexp before point in the outside environment; print value in minibuffer." nil]) (fset 'edebug-eval-print-last-sexp #[nil " \n !q !\n\\ \\  !\"#$%&'()*+,- \n/q0b2 ! 5) !!.8p!!8!!+" [edebug-last-sexp edebug-form edebug-save-windows edebug-current-window-configuration edebug-inside-windows edebug-set-window-configuration edebug-outside-windows edebug-buffer store-match-data edebug-outside-match-data max-specpdl-size 19 max-lisp-eval-depth 6 current-local-map edebug-outside-last-command-char edebug-outside-last-command-event edebug-outside-last-command edebug-outside-this-command edebug-outside-unread-command-char edebug-outside-unread-command-event edebug-outside-last-input-char edebug-outside-last-input-event 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 edebug-outside-defining-kbd-macro defining-kbd-macro executing-macro standard-input standard-output cursor-in-echo-area overlay-arrow-string overlay-arrow-position last-input-event last-input-char unread-command-event unread-command-char this-command last-command last-command-event last-command-char edebug-inside-map ((byte-code "\n!" [edebug-save-windows edebug-set-window-configuration edebug-inside-windows] 2)) edebug-outside-buffer edebug-outside-point nil zmacs-regions marker-buffer mark-marker edebug-outside-mark edebug-safe-prin1-to-string edebug-safe-eval edebug-result-string princ "\n"] 18 "\ Evaluate sexp before point in the outside environment; print value into current buffer." nil]) (byte-code " # # # #!  s !  # # # # # # # # # # # # # # # # # # # # # # # # # # # @A# B# CD# EF# GH# IJ# KL# M# N# O# P# Q# RS# T#̇" [define-key emacs-lisp-mode-map "" edebug-step-mode "" edebug-next-mode "" edebug-go-mode " " edebug-where boundp edebug-mode-map nil copy-keymap " " "n" "g" "G" edebug-Go-nonstop-mode "t" edebug-trace-mode "T" edebug-Trace-fast-mode "c" edebug-continue-mode "C" edebug-Continue-fast-mode "f" edebug-forward-sexp "h" edebug-goto-here "i" edebug-step-in "o" edebug-step-out "q" top-level "Q" edebug-top-level-nonstop "a" abort-recursive-edit "S" edebug-stop "b" edebug-set-breakpoint "u" edebug-unset-breakpoint "B" edebug-next-breakpoint "x" edebug-set-conditional-breakpoint "X" edebug-set-global-break-condition "r" edebug-previous-result "e" edebug-eval-expression "" edebug-eval-last-sexp "E" edebug-visit-eval-list "w" "v" edebug-view-outside "p" edebug-bounce-point "P" "W" edebug-toggle-save-windows "?" edebug-help "d" edebug-backtrace "-" negative-argument "=" edebug-temp-display-freq-count "" "" "" " " "" "" #[nil "!" [edebug-set-breakpoint t] 2] " "] 4) (defvar global-edebug-prefix (purecopy "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 "  ! \"#################M" [global-edebug-map make-sparse-keymap global-unset-key global-edebug-prefix global-set-key define-key " " edebug-step-mode "g" edebug-go-mode "G" edebug-Go-nonstop-mode "t" edebug-trace-mode "T" edebug-Trace-fast-mode "c" edebug-continue-mode "C" edebug-Continue-fast-mode "b" edebug-set-breakpoint "u" edebug-unset-breakpoint "x" edebug-set-conditional-breakpoint "X" edebug-set-global-break-condition "w" edebug-where "W" edebug-display-buffer "q" top-level "Q" edebug-top-level-nonstop "a" abort-recursive-edit "=" edebug-display-freq-count edebug-help #[nil "!" [describe-function edebug-mode] 2 nil nil]] 4) (fset 'edebug-mode #[nil " !" [use-local-map edebug-mode-map] 2 "\ Mode for Emacs Lisp buffers while in edebug. There are both buffer local and global key bindings to several functions. E.g. edebug-step-mode is bound to \\[edebug-step-mode] in the debug buffer and \\\\[edebug-step-mode] in any buffer. Also see bindings for the eval list buffer, *edebug*. The edebug buffer commands: \\{edebug-mode-map} Global commands prefixed by global-edbug-prefix: \\{global-edebug-map} Options: edebug-all-defs edebug-all-forms edebug-eval-macro-args edebug-stop-before-symbols edebug-save-windows edebug-save-displayed-buffer-points edebug-initial-mode edebug-trace "]) (fset 'edebug-eval-result-list #[nil "\n\"" [mapcar edebug-safe-eval edebug-eval-list] 3 "\ Return a list of evaluations of edebug-eval-list"]) (byte-code "MM" [edebug-eval-display-list #[(edebug-eval-result-list) " Z\"\" \n q \n\n@! @! !\nA\nAY !+" [edebug-eval-list edebug-eval-buffer format ";%s\n" make-string window-width 2 45 edebug-comment-line standard-output edebug-eval-list-temp erase-buffer prin1 terpri edebug-eval-result-list princ edebug-pop-to-buffer] 7] edebug-create-eval-buffer #[nil "!?!q " [edebug-eval-buffer buffer-name get-buffer-create "*edebug*" edebug-eval-mode] 2]] 2) (fset 'edebug-eval-display #[(edebug-eval-result-list) " !" [edebug-eval-result-list edebug-create-eval-buffer edebug-eval-display-list] 2 "\ Display expressions and evaluations in EVAL-LIST. It modifies the context by popping up the eval display."]) (fset 'edebug-eval-redisplay #[nil "  !q! \\ \\  !\"#$%&'()*+,  펊.q/b1 ! 4) !." [edebug-create-eval-buffer edebug-save-windows edebug-current-window-configuration edebug-inside-windows edebug-set-window-configuration edebug-outside-windows edebug-buffer store-match-data edebug-outside-match-data max-specpdl-size 19 max-lisp-eval-depth 6 current-local-map edebug-outside-last-command-char edebug-outside-last-command-event edebug-outside-last-command edebug-outside-this-command edebug-outside-unread-command-char edebug-outside-unread-command-event edebug-outside-last-input-char edebug-outside-last-input-event 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 edebug-outside-defining-kbd-macro defining-kbd-macro executing-macro standard-input standard-output cursor-in-echo-area overlay-arrow-string overlay-arrow-position last-input-event last-input-char unread-command-event unread-command-char this-command last-command last-command-event last-command-char edebug-inside-map ((byte-code "\n!" [edebug-save-windows edebug-set-window-configuration edebug-inside-windows] 2)) edebug-outside-buffer edebug-outside-point nil zmacs-regions marker-buffer mark-marker edebug-outside-mark edebug-eval-display-list edebug-eval-result-list] 18 "\ Redisplay eval list in outside environment. May only be called from within edebug-recursive-edit."]) (fset 'edebug-visit-eval-list #[nil " \n!" [edebug-eval-redisplay edebug-pop-to-buffer edebug-eval-buffer] 2 nil nil]) (fset 'edebug-update-eval-list #[nil "`eb m! B#ywgUmmj! 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]) (fset '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) (fset '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-mode is bound to \\[edebug-step-mode] in the debug buffer and \\\\[edebug-step-mode] in any buffer. Eval list buffer commands: \\{edebug-eval-mode-map} Global commands prefixed by global-edbug-prefix: \\{global-edebug-map} "]) (fset 'edebug #[(&rest debugger-args) " \n= @ @ A@ʼn ? \n     =? . \"" [edebug-entered recursion-depth edebug-recursion-depth edebug-offset-indices debugger-args nil debug-on-error edebug-outside-debug-on-error edebug-break edebug-global-break edebug-break-condition edebug-break-data edebug-value edebug-arg-mode edebug-offset-index edebug-display error apply debug] 9 "\ Replacement for debug. If we are running an edebugged function, show where we last were. Otherwise call debug normally."]) (fset 'edebug-backtrace #[nil "!!!  \n q eb`#y!`y`|d!_y`|U+" [edebug-backtrace-buffer buffer-name generate-new-buffer "*Backtrace*" standard-output t 50 nil last-ok-point print-length print-escape-newlines backtrace truncate-lines re-search-forward "^ (?edebug" 0 looking-at "^ (edebug-after" 1 "^ edebug"] 5 "\ Display a non-working backtrace. Better than nothing..." nil]) (fset 'edebug-trace-display #[(buf-name fmt &rest args) " \n! ! db \n#˱ Z! `\"db !!+\n" [selected-window get-buffer-create buf-name buffer nil buf-window edebug-pop-to-buffer apply edebug-format fmt args "\n" vertical-motion 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, but one newline is appended."]) (fset 'edebug-trace #[(fmt &rest args) "\n $" [apply edebug-trace-display edebug-trace-buffer fmt args] 5 "\ Convenience call to edebug-trace-display using edebug-trace-buffer"]) (fset 'edebug-display-freq-count #[nil " N N N@AA@ GS\n  \nX \nH\\by`Z\n \nS\nX \nHXly`\n c\nT\n X \nH \nH \nH\\bigUҪZ)`ZZ]\"W>ݪUު!+c \n3." [edebug-form-data-symbol function edebug-freq-count counts edebug-coverage coverages edebug data def-mark edebug-points i nil last-index first-index start-of-line start-of-count-line last-count last-coverage 0 1 -1 ";#" 40 col coverage count make-string 32 (unknown ok-coverage) "=" "" int-to-string " " "\n"] 6 "\ Display the frequency count data for each line of the current definition. The frequency counts are inserted as comment lines after each line, and you can undo all insertions with one `undo' command. The counts are inserted starting under the `(' before an expression or the `)' after an expression, or on the last char of a symbol. The counts are only displayed when they differ from previous counts on the same line. If coverage is being tested, whenever all known results of an expression are `eq', the char `=' will be appended after the count for that expression. Note that this is always the case for an expression only evaluated once. To clear the frequency count and coverage data for a definition, reinstrument it." nil]) (fset 'edebug-temp-display-freq-count #[nil "  )" [nil buffer-read-only undo-boundary edebug-display-freq-count read-char unread-command-char undo] 1 "\ Temporarily display the frequency count data for the current definition. It is removed when you hit any char." nil]) (edebug-install-eval-functions)