emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r105844: * lisp/emacs-lisp/debug.el (


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r105844: * lisp/emacs-lisp/debug.el (debugger-args): Give it a docstring.
Date: Mon, 19 Sep 2011 17:14:23 -0400
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 105844
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Mon 2011-09-19 17:14:23 -0400
message:
  * lisp/emacs-lisp/debug.el (debugger-args): Give it a docstring.
  (debugger-return-value): Signal an error if the debugging context does
  not await any return value.
modified:
  lisp/ChangeLog
  lisp/emacs-lisp/debug.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2011-09-19 19:27:30 +0000
+++ b/lisp/ChangeLog    2011-09-19 21:14:23 +0000
@@ -1,5 +1,9 @@
 2011-09-19  Stefan Monnier  <address@hidden>
 
+       * emacs-lisp/debug.el (debugger-args): Give it a docstring.
+       (debugger-return-value): Signal an error if the debugging context does
+       not await any return value.
+
        * ps-mule.el (ps-mule-plot-string): Don't inf-loop (bug#5108).
        * image-mode.el (image-toggle-display-text)
        (image-toggle-display-image): Stay away from evil `intangible'.

=== modified file 'lisp/emacs-lisp/debug.el'
--- a/lisp/emacs-lisp/debug.el  2011-09-13 21:13:10 +0000
+++ b/lisp/emacs-lisp/debug.el  2011-09-19 21:14:23 +0000
@@ -98,6 +98,16 @@
 
 (defvar inhibit-trace)                  ;Not yet implemented.
 
+(defvar debugger-args nil
+  "Arguments with which the debugger was called.
+It is a list expected to take the form (CAUSE . REST)
+where CAUSE can be:
+- debug: called for entry to a flagged function.
+- t: called because of debug-on-next-call.
+- lambda: same thing but via `funcall'.
+- exit: called because of exit of a flagged function.
+- error: called because of `debug-on-error'.")
+
 ;;;###autoload
 (setq debugger 'debug)
 ;;;###autoload
@@ -296,32 +306,33 @@
   (insert "Debugger entered")
   ;; lambda is for debug-on-call when a function call is next.
   ;; debug is for debug-on-entry function called.
-  (cond ((memq (car debugger-args) '(lambda debug))
-        (insert "--entering a function:\n"))
-       ;; Exiting a function.
-       ((eq (car debugger-args) 'exit)
-        (insert "--returning value: ")
-        (setq debugger-value (nth 1 debugger-args))
-        (prin1 debugger-value (current-buffer))
-        (insert ?\n)
-        (delete-char 1)
-        (insert ? )
-        (beginning-of-line))
-       ;; Debugger entered for an error.
-       ((eq (car debugger-args) 'error)
-        (insert "--Lisp error: ")
-        (prin1 (nth 1 debugger-args) (current-buffer))
-        (insert ?\n))
-       ;; debug-on-call, when the next thing is an eval.
-       ((eq (car debugger-args) t)
-        (insert "--beginning evaluation of function call form:\n"))
-       ;; User calls debug directly.
-       (t
-        (insert ": ")
-        (prin1 (if (eq (car debugger-args) 'nil)
-                   (cdr debugger-args) debugger-args)
-               (current-buffer))
-        (insert ?\n)))
+  (pcase (car debugger-args)
+    ((or `lambda `debug)
+     (insert "--entering a function:\n"))
+    ;; Exiting a function.
+    (`exit
+     (insert "--returning value: ")
+     (setq debugger-value (nth 1 debugger-args))
+     (prin1 debugger-value (current-buffer))
+     (insert ?\n)
+     (delete-char 1)
+     (insert ? )
+     (beginning-of-line))
+    ;; Debugger entered for an error.
+    (`error
+     (insert "--Lisp error: ")
+     (prin1 (nth 1 debugger-args) (current-buffer))
+     (insert ?\n))
+    ;; debug-on-call, when the next thing is an eval.
+    (`t
+     (insert "--beginning evaluation of function call form:\n"))
+    ;; User calls debug directly.
+    (_
+     (insert ": ")
+     (prin1 (if (eq (car debugger-args) 'nil)
+                (cdr debugger-args) debugger-args)
+            (current-buffer))
+     (insert ?\n)))
   ;; After any frame that uses eval-buffer,
   ;; insert a line that states the buffer position it's reading at.
   (save-excursion
@@ -439,6 +450,10 @@
 This is only useful when the value returned from the debugger
 will be used, such as in a debug on exit from a frame."
   (interactive "XReturn value (evaluated): ")
+  (when (memq (car debugger-args) '(t lambda error debug))
+    (error "Cannot return a value %s"
+           (if (eq (car debugger-args) 'error)
+               "from an error" "at function entrance")))
   (setq debugger-value val)
   (princ "Returning " t)
   (prin1 debugger-value)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]