Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Coq: run silently and explicitly Show when necessary - second attempt #762

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

hendriktews
Copy link
Collaborator

This is another attempt towards fixing #568.

@hendriktews
Copy link
Collaborator Author

@Matafou , @erikmd , @cpitclaudel : With the option coq-run-completely-silent to switch back to old behavior, I believe the risk of breaking a use case of some user is manageable. Therefore I suggest to merge this in about a week.

@erikmd
Copy link
Member

erikmd commented May 12, 2024

Hi @hendriktews!

(I just quickly skimmed the PR code but) LGTM, thanks.

With the option ..., I believe the risk of breaking a use case of some user is manageable. Therefore I suggest to merge this in about a week.

Agree

@Matafou
Copy link
Contributor

Matafou commented May 13, 2024

Maybe I need to test how it interacts with debug mode. I don't have much time this week though.

@Matafou
Copy link
Contributor

Matafou commented Sep 10, 2024

@hendriktews can you tell us what remains to be tested/adapted pls? I think this PR should not rot.
You said elsewhere that the prefix arg C-u for queries like coq-Print wouldn't work. What else?

@hendriktews
Copy link
Collaborator Author

I use this code on a daily basis, so it is working for me. Remaining things that I know:

  • coq-Print with prefix arg
  • prooftree - I have local fixes on top of the commits in this PR to get prooftree working, but they need to be polished before uploading
  • I have never tried diff or debug mode, it would be nice, if somebody who knows what to expect could try this
  • Not sure if this is a problem: When you issue a search command (either via C-c C-a C-a or by typing Search into the buffer) inside a proof in two-pane mode (i.e., no response buffer visible), then the search results pop up in the response buffer only if there are results. That is, if you search for (3 + 4) you will be shown the current proof state. This might make the impression, search does not work at all. Outside a proof you will see an empty response buffer, making it obvious, that the search did not yield results.

@Matafou
Copy link
Contributor

Matafou commented Sep 12, 2024

I use this code on a daily basis, so it is working for me. Remaining things that I know:

* coq-Print with prefix arg

* prooftree - I have local fixes on top of the commits in this PR to get prooftree working, but they need to be polished before uploading

* I have never tried diff or debug mode, it would be nice, if somebody who knows what to expect could try this

I can test this.

* Not sure if this is a problem: [...] This might make the impression, search does not work at all.

I think this is a problem. I must admit I am always in 3 windows mode.

@hendriktews
Copy link
Collaborator Author

  • Not sure if this is a problem: [...] This might make the impression, search does not work at all.

I think this is a problem. I must admit I am always in 3 windows mode.

So it is not a problem for you. It is only a problem when there is no window showing the response buffer when you issue the command. Note that any nonempty response from the search command is correctly shown.

Meanwhile I discovered another problem:

  • When you are in proof mode without goals, i.e., just before you type QED, then no response from a search or locate command is visible, even in case these commands yield results.

@Matafou
Copy link
Contributor

Matafou commented Sep 19, 2024

  • Not sure if this is a problem: [...] This might make the impression, search does not work at all.

I think this is a problem. I must admit I am always in 3 windows mode.

So it is not a problem for you. It is only a problem when there is no window showing the response buffer when you issue the command. Note that any nonempty response from the search command is correctly shown.

No it is not a problem for me, but the lack of user feedback in this case is a (small) problem.

Meanwhile I discovered another problem:

* When you are in proof mode without goals, i.e., just before you type QED, then no response from a search or locate command is visible, even in case these commands yield results.

Indeed. It also happens after other messages like "This subproof is complete, ...".

The reason is that the search command is now followed by a Show. In this case the Show command triggers a response "No more goals.", which is detected as another response message instead of a goal message. Hence it immediately overwrites the response to the query.

I tested and adding "No more goals." to proof-shell-start-goals-regexp solves this problem, but it seems to trigger other problems, e.g. the message "No more goals." is not displayed in goals as expected. I think it is because "No more goals." is already in proof-shell-clear-goals-regexp and proof-shell-proof-completed-regexp. Understanding the interaction between these 3 variables is needed I guess.

This is a step towards fixing ProofGeneral#568. It fixes the cases after Proof,
comments, auto, errors, Search and Check, leaving now 2 instead of 8
failing tests in ci/simple-tests/test-goals-present.el. Admitted is
not handled correctly any more, which is a regression.

Using proof-shell-handle-delayed-output-hook and
proof-shell-handle-error-or-interrupt-hook we issue a Show command as
a priority action item when the last (normal) action item has been
processed.

The new action item flag 'keep-response tells the generic machinery to
not clear the response buffer and to keep it present in two-pane mode
in case an error was detected or the last command was a Search or
Check that produced a response.

The new action item flag 'dont-show-when-silent is used to distinguish
the additional Show commands and to avoid an endless loop of Show
commands.

Set proof-shell-last-output-kind now in
proof-shell-handle-delayed-output such that it correctly reflects the
cases of goals and response (which has not been the case since commit
037dc9b from 2009.

This commit breaks coq-show-proof-stepwise to some extend. Expect
080_coq-test-regression-show-proof-stepwise to fail.

Additionally:
- update manuals
- expect errors in tests 020_coq-test-definition,
  090_coq-test-regression-Fail and 091_coq-test-regression-Fail
  because messages are not printed in silent mode
Add user option coq-run-completely-silent, which, when disabled,
switches Coq to old behavior where Coq is dynamically switched to
silent on longer action item lists.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants