From decabae2df4669da6279b0fceefb8bddffdda079 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Fri, 1 Oct 2021 15:38:29 +0200 Subject: [PATCH] Fix one-clause movement in erts-mode--goto-start-of-test * lisp/progmodes/erts-mode.el (erts-mode--goto-start-of-test): Fix so this works in one-clause tests. --- lisp/progmodes/erts-mode.el | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lisp/progmodes/erts-mode.el b/lisp/progmodes/erts-mode.el index 46b6a3a711b..9d51c1f8f08 100644 --- a/lisp/progmodes/erts-mode.el +++ b/lisp/progmodes/erts-mode.el @@ -173,7 +173,8 @@ will be prompted for one." (erts-mode--goto-start-of-test) (condition-case arg (ert-test--erts-test - (list (cons 'dummy t) (cons 'code test-function)) + (list (cons 'dummy t) + (cons 'code (car (read-from-string test-function)))) (buffer-file-name)) (:success (message "Test successful")) (ert-test-failed (message "Test failure; result: \n%s" @@ -183,9 +184,17 @@ will be prompted for one." (if (not (erts-mode--in-test-p (point))) (re-search-forward "^=-=\n" nil t) (re-search-backward "^=-=\n" nil t) - (when (save-match-data (erts-mode--in-test-p (point))) - (re-search-backward "^=-=\n" nil t)) - (goto-char (match-end 0)))) + (let ((potential-start (match-end 0))) + ;; See if we're in a two-clause ("before" and "after") test or not. + (if-let ((start (and (save-excursion (re-search-backward "^=-=\n" nil t)) + (match-end 0)))) + (let ((end (save-excursion (re-search-backward "^=-=-=\n" nil t)))) + (if (or (not end) + (> start end)) + ;; We are, so go to the real start. + (goto-char start) + (goto-char potential-start))) + (goto-char potential-start))))) (provide 'erts-mode) -- 2.39.5