dismantle redundant sledgehammer history in Isabelle/Scala, which does not quite work --- and is already done via vscode.setState / vscode.getState;
authorwenzelm
Sun, 26 Oct 2025 19:14:08 +0100
changeset 83401 1d9b1ca7977e
parent 83400 448f13c3efc3
child 83402 3de9cda419e4
dismantle redundant sledgehammer history in Isabelle/Scala, which does not quite work --- and is already done via vscode.setState / vscode.getState; proper message name for Sledgehammer_Provers; discontinue pointless "init" flag;
src/Tools/VSCode/extension/media/sledgehammer.js
src/Tools/VSCode/extension/src/extension.ts
src/Tools/VSCode/extension/src/lsp.ts
src/Tools/VSCode/extension/src/sledgehammer_panel.ts
src/Tools/VSCode/src/language_server.scala
src/Tools/VSCode/src/lsp.scala
src/Tools/VSCode/src/vscode_sledgehammer.scala
--- a/src/Tools/VSCode/extension/media/sledgehammer.js	Sun Oct 26 18:38:22 2025 +0100
+++ b/src/Tools/VSCode/extension/media/sledgehammer.js	Sun Oct 26 19:14:08 2025 +0100
@@ -73,7 +73,6 @@
           history = history.filter(h => h !== item);
           render_dropdown(false);
           show_dropdown();
-          vscode.postMessage({ command: "delete_prover_history", entry: item });
         });
 
         row.appendChild(delete_button);
@@ -120,12 +119,6 @@
     }
   });
 
-  function set_history(new_history) {
-    history = Array.isArray(new_history) ? new_history : [];
-    save_state();
-    render_dropdown(false);
-  }
-
   function save_state() {
     vscode.setState({
       history,
@@ -228,14 +221,8 @@
     if (message.command === "status") {
       spinner.classList.toggle("loading", message.message !== "Finished");
     }
-    else if (message.command === "provers") {
-      set_history(message.history);
-      if (message.provers) {
-        provers_input.value = message.provers;
-      }
-      else if (message.history && message.history.length > 0) {
-        provers_input.value = message.history[0];
-      }
+    else if (message.command === "provers" && message.provers) {
+      provers_input.value = message.provers;
     }
     else if (message.command === "no_proof_context") {
       const div = document.createElement("div");
--- a/src/Tools/VSCode/extension/src/extension.ts	Sun Oct 26 18:38:22 2025 +0100
+++ b/src/Tools/VSCode/extension/src/extension.ts	Sun Oct 26 19:14:08 2025 +0100
@@ -246,9 +246,8 @@
         sledgehammer_provider.insert(msg.position))
       language_client.onNotification(lsp.sledgehammer_locate_response_type, msg =>
         sledgehammer_provider.locate(msg.position))
-      language_client.onNotification(lsp.sledgehammer_provers_response, msg => {
-        sledgehammer_provider.update_provers(msg.provers, msg.history)
-      })
+      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());
     })
--- a/src/Tools/VSCode/extension/src/lsp.ts	Sun Oct 26 18:38:22 2025 +0100
+++ b/src/Tools/VSCode/extension/src/lsp.ts	Sun Oct 26 19:14:08 2025 +0100
@@ -237,11 +237,6 @@
 
 export interface Sledgehammer_Provers {
   provers: string;
-  history: string[];
-}
-
-export interface Sledgehammer_Provers_Delete {
-  entry: string;
 }
 
 export interface SledgehammerNoSuchProver {
@@ -251,14 +246,11 @@
 export const sledgehammer_request_type =
   new NotificationType<SledgehammerApplyRequest>("PIDE/sledgehammer_request");
 
-export const sledgehammer_provers_delete =
-  new NotificationType<Sledgehammer_Provers_Delete>("PIDE/sledgehammer_deleteProvers_request");
-
 export const sledgehammer_cancel_type =
   new NotificationType<void>("PIDE/sledgehammer_cancel_request");
 
 export const sledgehammer_provers =
-  new NotificationType<InitRequest>("PIDE/sledgehammer_provers_request");
+  new NotificationType<void>("PIDE/sledgehammer_provers_request");
 
 export const sledgehammer_provers_response =
   new NotificationType<Sledgehammer_Provers>("PIDE/sledgehammer_provers_response");
--- a/src/Tools/VSCode/extension/src/sledgehammer_panel.ts	Sun Oct 26 18:38:22 2025 +0100
+++ b/src/Tools/VSCode/extension/src/sledgehammer_panel.ts	Sun Oct 26 19:14:08 2025 +0100
@@ -35,7 +35,7 @@
 
   request_provers(language_client: LanguageClient) {
     if (language_client) {
-      this._language_client.sendNotification(lsp.sledgehammer_provers, { init: true });
+      this._language_client.sendNotification(lsp.sledgehammer_provers);
     }
   }
 
@@ -83,13 +83,6 @@
           });
           this.text_to_insert = message.text;
           break;
-
-        case 'delete_prover_history':
-          this._language_client.sendNotification(lsp.sledgehammer_provers_delete, {
-            entry: message.entry
-          });
-          break;
-
       }
     });
   }
@@ -100,9 +93,9 @@
     }
   }
 
-  public update_provers(provers: string, history: string[]): void {
+  public update_provers(provers: string): void {
     if (this._view) {
-      this._view.webview.postMessage({ command: 'provers', provers, history });
+      this._view.webview.postMessage({ command: 'provers', provers });
     }
   }
 
--- a/src/Tools/VSCode/src/language_server.scala	Sun Oct 26 18:38:22 2025 +0100
+++ b/src/Tools/VSCode/src/language_server.scala	Sun Oct 26 19:14:08 2025 +0100
@@ -98,7 +98,7 @@
 
 class Language_Server(
   val channel: Channel,
-  options: Options,
+  val options: Options,
   session_name: String = Language_Server.default_logic,
   include_sessions: List[String] = Nil,
   session_dirs: List[Path] = Nil,
@@ -552,9 +552,7 @@
           case LSP.Sledgehammer_Request(provers, isar, try0, purpose) =>
             sledgehammer.handle_request(provers, isar, try0, purpose)
           case LSP.Sledgehammer_Cancel => sledgehammer.cancel_query()
-          case LSP.Sledgehammer_Provers(init) => sledgehammer.send_provers_and_history(init)
-          case LSP.Sledgehammer_Delete_Prover(entry) =>
-            sledgehammer.handle_sledgehammer_delete(entry)
+          case LSP.Sledgehammer_Provers => sledgehammer.send_provers()
           case _ => if (!LSP.ResponseMessage.is_empty(json)) log("### IGNORED")
         }
       }
--- a/src/Tools/VSCode/src/lsp.scala	Sun Oct 26 18:38:22 2025 +0100
+++ b/src/Tools/VSCode/src/lsp.scala	Sun Oct 26 19:14:08 2025 +0100
@@ -811,14 +811,8 @@
 
   /* sledgehammer */
 
-  object Sledgehammer_Provers {
-    def unapply(json: JSON.T): Option[Boolean] =
-      json match {
-        case Notification("PIDE/documentation_request", Some(params)) =>
-          JSON.bool(params, "init")
-        case _ => None
-      }
-  }
+  object Sledgehammer_Provers
+    extends Notification0("PIDE/sledgehammer_provers_request")
 
   object Sledgehammer_Request {
     def unapply(json: JSON.T): Option[(String, Boolean, Boolean, Int)] =
@@ -834,23 +828,12 @@
       }
   }
 
-  object Sledgehammer_Delete_Prover {
-    def unapply(json: JSON.T): Option[String] =
-      json match {
-        case Notification("PIDE/sledgehammer_deleteProvers_request", Some(params)) =>
-          JSON.string(params, "entry")
-        case _ => None
-      }
-  }
-
   object Sledgehammer_Cancel
     extends Notification0("PIDE/sledgehammer_cancel_request")
 
   object Sledgehammer_Provers_Response {
-    def apply(provers: String, history: List[String]): JSON.T =
-      Notification(
-        "PIDE/sledgehammer_provers_response",
-        JSON.Object("provers" -> provers, "history" -> history))
+    def apply(provers: String): JSON.T =
+      Notification("PIDE/sledgehammer_provers_response", JSON.Object("provers" -> provers))
   }
 
   object Sledgehammer_NoProver_Response {
--- a/src/Tools/VSCode/src/vscode_sledgehammer.scala	Sun Oct 26 18:38:22 2025 +0100
+++ b/src/Tools/VSCode/src/vscode_sledgehammer.scala	Sun Oct 26 19:14:08 2025 +0100
@@ -24,34 +24,13 @@
   var current_purpose: Int = 1
   private var last_sendback_id: Option[Int] = None
 
-  private val provers_history_option: String = "vscode_sledgehammer_history"
-  private val provers_history_delim: Char = ','
-
-  private var persistent_options: Options = Options.init()
-
-  private def get_provers_history(): List[String] =
-    Library.space_explode(provers_history_delim, persistent_options.string(provers_history_option)).filterNot(_.isEmpty)
-
-  private def set_provers_history(new_history: String): Unit = {
-    persistent_options = persistent_options.string.update(provers_history_option, new_history)
-    persistent_options.save_prefs()
-  }
-
-  def send_provers_and_history(init: Boolean): Unit = {
-    val provers = persistent_options.check_name("sledgehammer_provers").value
-    val history = get_provers_history()
-    server.channel.write(LSP.Sledgehammer_Provers_Response.apply(provers, history))
-  }
-
-  def add_provers_history(entry: String): Unit = {
-    val current = get_provers_history()
-    val history = (entry :: current.filter(_ != entry)).take(10)
-    val history_str = history.mkString(provers_history_delim.toString)
-    set_provers_history(history_str)
+  def send_provers(): Unit = {
+    val provers = server.options.string("sledgehammer_provers")
+    server.channel.write(LSP.Sledgehammer_Provers_Response.apply(provers))
   }
 
   def handle_request(provers: String, isar: Boolean, try0: Boolean, purpose: Int): Unit = {
-    val available_provers = Word.explode(persistent_options.string("sledgehammer_provers")).toSet
+    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) {
@@ -59,17 +38,6 @@
       return
     }
     choose_purpose(List(provers, isar.toString, try0.toString), purpose)
-    add_provers_history(provers)
-  }
-
-  def handle_sledgehammer_delete(entry: String): Unit = {
-    val history = get_provers_history().filter(_ != entry)
-    val history_str = history.mkString(provers_history_delim.toString)
-    set_provers_history(history_str)
-  }
-
-  private def reload_persistent_options(): Unit = {
-    persistent_options = Options.init()
   }
 
   private def consume_status(status: Query_Operation.Status): Unit = {