[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/bug-hunter 130cc12 45/95: Report what we can when the u
From: |
Stefan Monnier |
Subject: |
[elpa] externals/bug-hunter 130cc12 45/95: Report what we can when the user aborts. |
Date: |
Fri, 27 Nov 2020 22:06:54 -0500 (EST) |
branch: externals/bug-hunter
commit 130cc12c925613b1eda30747c2c859751246e930
Author: Artur Malabarba <bruce.connor.am@gmail.com>
Commit: Artur Malabarba <bruce.connor.am@gmail.com>
Report what we can when the user aborts.
---
bug-hunter.el | 36 ++++++++++++++++++++++++++++++------
1 file changed, 30 insertions(+), 6 deletions(-)
diff --git a/bug-hunter.el b/bug-hunter.el
index f484c4e..e38fcab 100644
--- a/bug-hunter.el
+++ b/bug-hunter.el
@@ -61,6 +61,10 @@
(require 'seq)
(require 'cl-lib)
+(defvar bug-hunter--current-head nil
+ "Current list of expressions under scrutiny. Used for user feedback.
+Used if the user aborts before bisection ends.")
+
(defvar bug-hunter--i 0
"Current step of the bisection. Used for user feedback.")
(defvar bug-hunter--estimate 0
@@ -149,8 +153,9 @@ file.")
(buffer-string)))
(defun bug-hunter--report-error (line column error &optional expression)
- (bug-hunter--report "%S, line %s pos %s:"
- bug-hunter--current-file line column)
+ (when line
+ (bug-hunter--report "%S, line %s pos %s:"
+ bug-hunter--current-file line column))
(bug-hunter--report " %s"
(cl-case (car error)
(end-of-file
@@ -164,6 +169,21 @@ file.")
" before that.")
(concat "There's a " char
" on this position, and that is not valid elisp syntax."))))
+ (user-aborted
+ (let* ((print-level 2)
+ (print-length 15)
+ (forms (cadr error))
+ (size (length forms)))
+ (concat "User aborted while testing the following expressions:\n"
+ (mapconcat (lambda (x) (bug-hunter--pretty-format x 4))
+ (if (< size 16) forms (seq-take forms 7))
+ "")
+ (when (> size 16)
+ (format "\n ... %s omitted expressions ...\n\n"
+ (- size 14)))
+ (when (> size 16)
+ (mapconcat (lambda (x) (bug-hunter--pretty-format x 4))
+ (seq-drop forms (- size 7)) "")))))
(assertion-triggered
(concat "The assertion returned the following value here:\n"
(bug-hunter--pretty-format (second error) 4)))
@@ -228,6 +248,7 @@ See `bug-hunter' for a description on the ASSERTION."
((and (message "Testing: %s/%s"
(cl-incf bug-hunter--i)
bug-hunter--estimate)
+ (setq bug-hunter--current-head head)
(bug-hunter--run-and-test (append safe head) assertion))
(apply #'bug-hunter--bisect
assertion
@@ -247,8 +268,11 @@ ASSERTION's return value.
If ASSERTION is nil, n is the position of the first form to
signal an error and value is (bug-caught . ERROR-SIGNALED)."
(let ((bug-hunter--i 0)
- (bug-hunter--estimate (ceiling (log (length forms) 2))))
- (apply #'bug-hunter--bisect assertion nil (bug-hunter--split forms))))
+ (bug-hunter--estimate (ceiling (log (length forms) 2)))
+ (bug-hunter--current-head nil))
+ (condition-case-unless-debug er
+ (apply #'bug-hunter--bisect assertion nil (bug-hunter--split forms))
+ (quit `[nil (bug-caught user-aborted ,bug-hunter--current-head)]))))
;;; Main functions
@@ -304,8 +328,8 @@ are evaluated."
"I have no idea what's going on.")
(let* ((pos (elt result 0))
(ret (elt result 1))
- (linecol (cdr (elt rich-forms pos)))
- (expression (elt expressions pos)))
+ (linecol (when pos (cdr (elt rich-forms pos))))
+ (expression (when pos (elt expressions pos))))
(if (eq (car-safe ret) 'bug-caught)
(bug-hunter--report-error
(first linecol) (second linecol) (cdr ret) expression)
- [elpa] externals/bug-hunter 1a050a0 57/95: Merge pull request #2 from lunaryorn/patch-1, (continued)
- [elpa] externals/bug-hunter 1a050a0 57/95: Merge pull request #2 from lunaryorn/patch-1, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter c2f2d29 60/95: Note about init file idempotence, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 36b0594 67/95: Update comments, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter f9780b8 68/95: Style fixes, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 5075592 71/95: Inhibit readonly, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 5f61401 33/95: More tests, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter e903dd0 37/95: Ignore a dummy file, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 1778749 58/95: Improve bisection logic to avoid unnecessary step., Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 0794ccf 66/95: Merge pull request #8 from hariharanr5/master, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 0998393 70/95: Implement interactive assertion throughout, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 130cc12 45/95: Report what we can when the user aborts.,
Stefan Monnier <=
- [elpa] externals/bug-hunter 53a74dd 46/95: Whitespace, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter a4ba22d 49/95: checkdoc, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 91e1fea 50/95: Better Readme, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 5927de0 51/95: More verbose messages., Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 8d2d20e 63/95: Extended readme, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 1232c89 64/95: Don't assume Emacs 24.4. Fix #5, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter c796137 69/95: bug-hunter--run-and-test accepts an 'interactive assertion, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter d0f2034 73/95: Use -q when running interactively too., Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter 2650778 93/95: Fix #17 - Minibuffer completion pre 25, Stefan Monnier, 2020/11/27
- [elpa] externals/bug-hunter ba63f00 42/95: Use pretty-printing on values, Stefan Monnier, 2020/11/27