diff --git a/ci/simple-tests/coq-test-goals-present.el b/ci/simple-tests/coq-test-goals-present.el index 6572a5945..e0784f1ba 100644 --- a/ci/simple-tests/coq-test-goals-present.el +++ b/ci/simple-tests/coq-test-goals-present.el @@ -174,7 +174,6 @@ goals buffer is not empty afterwards." (goals-after-test coq-src-error "error")) (ert-deftest goals-reset-after-admitted () - :expected-result :failed "The goals buffer is reset after an Admitted." (message "goals-reset-after-admitted: Check that goals are reset after Admitted.") diff --git a/ci/simple-tests/coq-test-omit-proofs.el b/ci/simple-tests/coq-test-omit-proofs.el index d676ab34b..f2c140bc3 100644 --- a/ci/simple-tests/coq-test-omit-proofs.el +++ b/ci/simple-tests/coq-test-omit-proofs.el @@ -92,10 +92,11 @@ configured there may be taken from faces with less priority." "Test the omit proofs feature. In particular, test that with proof-omit-proofs-option configured: - the proof _is_ processed when using a prefix argument -- in this case the proof as normal locked color +- in this case the proof has normal locked color - without prefix arg, the proof is omitted - the proof has omitted color then - stuff before the proof still has normal color " + (message "omit-proofs-omit-and-not-omit: Check several omit proofs features") (setq proof-omit-proofs-option t proof-three-window-enable nil) (reset-coq) @@ -154,10 +155,21 @@ In particular, test that with proof-omit-proofs-option configured: (forward-line -1) (proof-goto-point) (wait-for-coq) - (with-current-buffer "*response*" - (goto-char (point-min)) - ;; There should be a declared message. - (should (looking-at "classic_excluded_middle is declared"))) + (with-current-buffer "*coq*" + ;; There should be an Admit at the second last prompt without error. + (goto-char (point-max)) + (should (search-backward "" nil t 2)) + ;; move behind prompt + (forward-char 9) + (should (looking-at "Admitted\\.\n")) + (forward-line 1) + ;; There may be an info message about the declaration. The message + ;; may be spread over several lines. + (when (looking-at "") + (should (search-forward "" nil t)) + (forward-line 1)) + ;; no other messages or errors before the next prompt + (should (looking-at "\nCoq <"))) ;; Check 4: check proof-omitted-proof-face is active at marker 3 (message "4: check proof-omitted-proof-face is active at marker 3") @@ -184,6 +196,7 @@ the normal `proof-locked-face'. The sources for the test contain a local attribute in form of '#[local]', which has been introduced only in Coq version 8.9." + (message "omit-proofs-never-omit-hints: Check omit proofs feature with Hint") (skip-unless coq--post-v809) (setq proof-omit-proofs-option t proof-three-window-enable nil) @@ -206,6 +219,7 @@ Test that proofs for Let local declarations are never omitted and that proofs of theorems following a Let definition are omitted. This test only checks the faces in the middle of the proof." + (message "omit-proofs-never-omit-lets: Check omit proofs feature with Let") (setq proof-omit-proofs-option t proof-three-window-enable nil) (reset-coq) diff --git a/coq/coq.el b/coq/coq.el index fa2063f72..a036acde3 100644 --- a/coq/coq.el +++ b/coq/coq.el @@ -145,8 +145,20 @@ Namely, goals that do not fit in the goals window." ;; "Add LoadPath \"%s\"." ;; fixes unadorned Require (if .vo exists). "*Command of the inferior process to change the directory.") -(defvar coq-shell-proof-completed-regexp "No\\s-+more\\s-+\\(?:sub\\)?goals\\.\\|Subtree\\s-proved!\\|Proof\\s-completed"; \\|This subproof is complete - "*Regular expression indicating that the proof has been completed.") +(defvar coq-shell-proof-completed-regexp + (concat "No\\s-+more\\s-+\\(?:sub\\)?goals\\.\\|Subtree\\s-proved!\\|" + "Proof\\s-completed\\|" + ;; if printing width is small, eg. when running in batch mode, + ;; there might be a line break after infomsg + "\n?.*\\s-is\\s-declared" + ;; \\|This subproof is complete + ) + "*Regular expression indicating that the proof has been completed. +Coq instance of `proof-shell-clear-goals-regexp'. Used in +`proof-shell-process-urgent-message' to determine if the goals +buffer shall be cleaned. Some of the messages recognized here are +not printed by Coq in silent mode, such that Proof General might +fail to delete the goals buffer.") (defvar coq-goal-regexp "\\(============================\\)\\|\\(\\(?:sub\\)?goal [0-9]+\\)\n") diff --git a/generic/proof-shell.el b/generic/proof-shell.el index a3f8ae39c..4de85ddf9 100644 --- a/generic/proof-shell.el +++ b/generic/proof-shell.el @@ -35,6 +35,7 @@ ;; proof-shell-filter-wrapper ;; -> proof-shell-filter ;; -> proof-shell-process-urgent-messages +;; -> proof-shell-process-urgent-message ;; -> proof-shell-filter-manage-output ;; -> proof-shell-handle-immediate-output ;; -> proof-shell-exec-loop