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

New hook for early prompt/output analyzis. #495

Merged
merged 1 commit into from
Jun 4, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion coq/coq.el
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,7 @@ If locked span already has a state number, then do nothing. Also updates
;; This hook seems the one we want.
;; WARNING! It is applied once after each command PLUS once before a group of
;; commands is started
(add-hook 'proof-state-change-hook #'coq-set-state-infos)
(add-hook 'proof-state-change-pre-hook #'coq-set-state-infos)


(defun count-not-intersection (l notin)
Expand Down
8 changes: 5 additions & 3 deletions doc/PG-adapting.texi
Original file line number Diff line number Diff line change
Expand Up @@ -3107,7 +3107,8 @@ before and after sending the command.
In case @var{cmd} is (or yields) nil, do nothing.

@var{invisiblecallback} will be invoked after the command has finished,
if it is set. It should probably run the hook variables
if it is set. It should probably run the hook variables
@samp{@code{proof-state-change-pre-hook}} and
@samp{@code{proof-state-change-hook}}.

@var{flags} are additional flags to put onto the @samp{@code{proof-action-list}}.
Expand Down Expand Up @@ -4056,8 +4057,9 @@ not need to use these directly.
@c TEXI DOCSTRING MAGIC: proof-grab-lock
@defun proof-grab-lock &optional queuemode
Grab the proof shell lock, starting the proof assistant if need be.@*
Runs @samp{@code{proof-state-change-hook}} to notify state change.
If @var{queuemode} is supplied, set the lock to that value.
Runs @samp{@code{proof-state-change-pre-hook}} and
@samp{@code{proof-state-change-hook}} to notify state change. If
@var{queuemode} is supplied, set the lock to that value.
@end defun

@c TEXI DOCSTRING MAGIC: proof-release-lock
Expand Down
2 changes: 1 addition & 1 deletion easycrypt/easycrypt-hooks.el
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
(setq easycrypt-proof-weak-mode (car (cdr infos)))
)))

(add-hook 'proof-state-change-hook 'easycrypt-set-state-infos)
(add-hook 'proof-state-change-pre-hook 'easycrypt-set-state-infos)

(defun easycrypt-find-and-forget (span)
(let ((span-staten (easycrypt-get-span-statenum span)))
Expand Down
22 changes: 20 additions & 2 deletions generic/proof-config.el
Original file line number Diff line number Diff line change
Expand Up @@ -1761,16 +1761,35 @@ symbol is 'systemspecific."
:type '(repeat function)
:group 'proof-shell)


(defcustom proof-state-change-pre-hook nil
"This hook is called when a scripting state change may have occurred.
Specifically, this hook is called after a region has been asserted or
retracted, or after a command has been sent to the prover with
`proof-shell-invisible-command'.

It is run *before* the generic processing of the command span is
done (see function `prof-done-advancing'). See
`proof-state-change-hook' to insert actions after it."
:type '(repeat function)
:group 'proof-shell)

(defcustom proof-state-change-hook nil
"This hook is called when a scripting state change may have occurred.
Specifically, this hook is called after a region has been asserted or
retracted, or after a command has been sent to the prover with
`proof-shell-invisible-command'.

This hook is used within Proof General to refresh the toolbar."
It is run *after* the generic processing of the command span is
done (see function `prof-done-advancing'). See
`proof-state-change-pre-hook' to insert actions before it.

This hook may be used to refresh the toolbar."
:type '(repeat function)
:group 'proof-shell)



;;;;;;
(defcustom proof-dependencies-system-specific nil
"Set this variable to handle system specific dependency output.
Expand All @@ -1787,7 +1806,6 @@ same type as `proof-dependency-in-span-context-menu' returns."
:type '(repeat function)
:group 'proof-shell)
;;;;;

(defcustom proof-shell-syntax-table-entries nil
"List of syntax table entries for proof script mode.
A flat list of the form
Expand Down
3 changes: 3 additions & 0 deletions generic/proof-script.el
Original file line number Diff line number Diff line change
Expand Up @@ -1382,6 +1382,8 @@ Argument SPAN has just been processed."
(if (span-live-p proof-queue-span)
(proof-set-queue-start end))

(run-hooks 'proof-state-change-pre-hook)

(cond
;; CASE 1: Comments just get highlighted
((eq (span-property span 'type) 'comment)
Expand Down Expand Up @@ -2120,6 +2122,7 @@ which is true for some proof assistants (but probably not others)."
(span-delete span)
(if killfn (funcall killfn start end))))
;; State of scripting may have changed now
(run-hooks 'proof-state-change-pre-hook)
(run-hooks 'proof-state-change-hook))

(defun proof-setup-retract-action (start end proof-commands remove-action &optional
Expand Down
2 changes: 2 additions & 0 deletions generic/proof-shell.el
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,7 @@ If QUEUEMODE is supplied, set the lock to that value."
(setq proof-shell-interrupt-pending nil
proof-shell-busy (or queuemode t)
proof-shell-last-queuemode proof-shell-busy)
(run-hooks 'proof-state-change-pre-hook)
(run-hooks 'proof-state-change-hook))

(defun proof-release-lock ()
Expand Down Expand Up @@ -1833,6 +1834,7 @@ If TIMEOUTSECS is a number, time out after that many seconds."
(defun proof-done-invisible (span)
"Callback for ‘proof-shell-invisible-command’.
Call ‘proof-state-change-hook’."
(run-hooks 'proof-state-change-pre-hook)
(run-hooks 'proof-state-change-hook))

;;;###autoload
Expand Down
1 change: 1 addition & 0 deletions generic/proof-tree.el
Original file line number Diff line number Diff line change
Expand Up @@ -814,6 +814,7 @@ call `proof-tree-make-show-goal-callback', which evaluates to a
lambda expressions that you can put into `proof-action-list'."
;;(message "PTSGC %s" state)
(proof-tree-update-sequent state)
(run-hooks 'proof-state-change-pre-hook)
(run-hooks 'proof-state-change-hook))

(defun proof-tree-make-show-goal-callback (state)
Expand Down