--- a/src/Tools/VSCode/extension/media/sledgehammer.js Sun Oct 26 19:22:05 2025 +0100
+++ b/src/Tools/VSCode/extension/media/sledgehammer.js Sun Oct 26 19:38:38 2025 +0100
@@ -224,7 +224,7 @@
else if (message.command === "provers" && message.provers) {
provers_input.value = message.provers;
}
- else if (message.command === "no_proof_context") {
+ else if (message.command === "no_proof") {
const div = document.createElement("div");
div.classList.add("interrupt");
div.textContent = "Unknown proof context";
--- a/src/Tools/VSCode/extension/src/extension.ts Sun Oct 26 19:22:05 2025 +0100
+++ b/src/Tools/VSCode/extension/src/extension.ts Sun Oct 26 19:38:38 2025 +0100
@@ -248,8 +248,8 @@
sledgehammer_provider.locate(msg.position))
language_client.onNotification(lsp.sledgehammer_provers_response, msg =>
sledgehammer_provider.update_provers(msg.provers))
- language_client.onNotification(lsp.sledgehammer_no_proof_context_type, () =>
- sledgehammer_provider.updateNoProofContext());
+ language_client.onNotification(lsp.sledgehammer_no_proof_response_type, () =>
+ sledgehammer_provider.update_no_proof());
})
--- a/src/Tools/VSCode/extension/src/lsp.ts Sun Oct 26 19:22:05 2025 +0100
+++ b/src/Tools/VSCode/extension/src/lsp.ts Sun Oct 26 19:38:38 2025 +0100
@@ -270,8 +270,8 @@
export const sledgehammer_insert_position_response_type =
new NotificationType<SledgehammerInsertPosition>("PIDE/sledgehammer_insert_position_response");
-export const sledgehammer_no_proof_context_type =
- new NotificationType<void>("PIDE/sledgehammer_no_proof_context");
+export const sledgehammer_no_proof_response_type =
+ new NotificationType<void>("PIDE/sledgehammer_no_proof_resonse");
/* spell checker */
--- a/src/Tools/VSCode/extension/src/sledgehammer_panel.ts Sun Oct 26 19:22:05 2025 +0100
+++ b/src/Tools/VSCode/extension/src/sledgehammer_panel.ts Sun Oct 26 19:38:38 2025 +0100
@@ -156,9 +156,9 @@
}
- public updateNoProofContext(): void {
+ public update_no_proof(): void {
if (this._view) {
- this._view.webview.postMessage({ command: "no_proof_context" });
+ this._view.webview.postMessage({ command: "no_proof" });
}
}
--- a/src/Tools/VSCode/src/lsp.scala Sun Oct 26 19:22:05 2025 +0100
+++ b/src/Tools/VSCode/src/lsp.scala Sun Oct 26 19:38:38 2025 +0100
@@ -861,8 +861,8 @@
Notification("PIDE/sledgehammer_insert_position_response", json)
}
- object Sledgehammer_NoProof_Response{
+ object Sledgehammer_No_Proof_Response {
def apply(): JSON.T =
- Notification("PIDE/sledgehammer_no_proof_context", None)
+ Notification("PIDE/sledgehammer_no_proof_response", None)
}
}
--- a/src/Tools/VSCode/src/vscode_sledgehammer.scala Sun Oct 26 19:22:05 2025 +0100
+++ b/src/Tools/VSCode/src/vscode_sledgehammer.scala Sun Oct 26 19:38:38 2025 +0100
@@ -21,7 +21,7 @@
class VSCode_Sledgehammer private(server: Language_Server) {
private val query_operation =
new Query_Operation(server.editor, (), "sledgehammer", consume_status, consume_result)
- var current_purpose: Int = 1
+
private var last_sendback_id: Option[Int] = None
def send_provers(): Unit = {
@@ -30,14 +30,21 @@
}
def handle_request(provers: String, isar: Boolean, try0: Boolean, purpose: Int): Unit = {
- val available_provers = Word.explode(server.options.string("sledgehammer_provers")).toSet
- val user_provers = Word.explode(provers).toSet
- val invalid = user_provers.diff(available_provers)
- if (invalid.nonEmpty) {
- server.channel.write(LSP.Sledgehammer_NoProver_Response.apply(invalid.toList))
- return
+ purpose match {
+ case 1 =>
+ server.resources.get_caret() match {
+ case Some(caret) =>
+ val snapshot = server.resources.snapshot(caret.model)
+ val uri = Url.print_file(caret.file)
+ server.editor.send_dispatcher {
+ query_operation.apply_query(List(provers, isar.toString, try0.toString))
+ }
+ case None => server.channel.write(LSP.Sledgehammer_No_Proof_Response())
+ }
+ case 2 => locate()
+ case 3 => insert_query()
+ case _ =>
}
- choose_purpose(List(provers, isar.toString, try0.toString), purpose)
}
private def consume_status(status: Query_Operation.Status): Unit = {
@@ -145,29 +152,6 @@
}
}
- def choose_purpose(args: List[String], purpose: Int): Unit = {
- current_purpose = purpose
- purpose match {
- case 1 =>
- server.resources.get_caret() match {
- case Some(caret) =>
- val snapshot = server.resources.snapshot(caret.model)
- val uri = Url.print_file(caret.file)
- server.editor.send_dispatcher { query_operation.apply_query(args) }
- case None =>
- server.channel.write(LSP.Sledgehammer_NoProof_Response())
- }
-
- case 2 =>
- locate()
-
- case 3 =>
- insert_query()
-
- case _ =>
- }
- }
-
def locate(): Unit = {
for {
sendback_id <- last_sendback_id