From 17ad745ba4e2ba4d7ba060aad4c45e67fa6767f7 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sat, 19 Aug 2023 19:15:31 -0700 Subject: [PATCH 01/30] Add repl output ns --- shadow-cljs.edn | 3 ++- src/cljs-lib/src/calva/repl/output.cljs | 7 +++++++ src/extension.ts | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 src/cljs-lib/src/calva/repl/output.cljs diff --git a/shadow-cljs.edn b/shadow-cljs.edn index e977707a9..5617a7d57 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -22,7 +22,8 @@ :js2cljs calva.js2cljs.converter/convert-bridge :dart2clj calva.dartclojure/convert-bridge :readConfigEdn calva.read-config/config-edn->js-bridge - :html2hiccup calva.html2hiccup/html->hiccup-convert-bridge} + :html2hiccup calva.html2hiccup/html->hiccup-convert-bridge + :activateReplOutput calva.repl.output/activate} :output-to "out/cljs-lib/cljs-lib.js"} :test {:target :node-test diff --git a/src/cljs-lib/src/calva/repl/output.cljs b/src/cljs-lib/src/calva/repl/output.cljs new file mode 100644 index 000000000..2052e9e1a --- /dev/null +++ b/src/cljs-lib/src/calva/repl/output.cljs @@ -0,0 +1,7 @@ +(ns calva.repl.output) + +(defonce vscode (atom nil)) + +(defn activate [^js vsc] + (reset! vscode vsc) + (.. ^js @vscode -window (showInformationMessage "hello output world"))) diff --git a/src/extension.ts b/src/extension.ts index b49e8ede6..70a4516cd 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -31,7 +31,7 @@ import * as replHistory from './results-output/repl-history'; import * as config from './config'; import * as snippets from './custom-snippets'; import * as whenContexts from './when-contexts'; -import { setStateValue } from '../out/cljs-lib/cljs-lib'; +import { setStateValue, activateReplOutput } from '../out/cljs-lib/cljs-lib'; import * as edit from './edit'; import * as nreplLogging from './nrepl/logging'; import * as converters from './converters'; @@ -74,6 +74,8 @@ function initializeState() { async function activate(context: vscode.ExtensionContext) { console.info('Calva activate START'); + activateReplOutput(vscode); + const testController = vscode.tests.createTestController('calvaTestController', 'Calva'); const clientProvider = lsp.createClientProvider({ context, From 514f9df2ab44ba242028c77d8b91769bb6811f90 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 3 Sep 2023 15:07:05 -0700 Subject: [PATCH 02/30] Add dev code --- src/cljs-lib/src/calva/repl/output.cljs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cljs-lib/src/calva/repl/output.cljs b/src/cljs-lib/src/calva/repl/output.cljs index 2052e9e1a..fff406702 100644 --- a/src/cljs-lib/src/calva/repl/output.cljs +++ b/src/cljs-lib/src/calva/repl/output.cljs @@ -1,7 +1,18 @@ -(ns calva.repl.output) +(ns calva.repl.output + (:require ["fs" :as fs])) (defonce vscode (atom nil)) (defn activate [^js vsc] (reset! vscode vsc) (.. ^js @vscode -window (showInformationMessage "hello output world"))) + +(defn create-repl-output-file []) + +(comment + (run! + #(.. fs (appendFileSync + "/Users/brandon/development/crescent-api/.calva/output-window/repl-output.md" + "\nhello world")) + (range 1000)) + :rcf) From 5871dfa09c0376d44b1edd35b98e6670a6357f7a Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 3 Sep 2023 15:33:34 -0700 Subject: [PATCH 03/30] Add cljs code to get project root uri --- src/cljs-lib/src/calva/repl/output.cljs | 23 ++++++++++++++++++++++- src/cljs-lib/src/calva/state.cljs | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/cljs-lib/src/calva/repl/output.cljs b/src/cljs-lib/src/calva/repl/output.cljs index fff406702..e6de6088a 100644 --- a/src/cljs-lib/src/calva/repl/output.cljs +++ b/src/cljs-lib/src/calva/repl/output.cljs @@ -1,8 +1,26 @@ (ns calva.repl.output - (:require ["fs" :as fs])) + (:require ["fs" :as fs] + [calva.state :as state])) (defonce vscode (atom nil)) +(def project-root-uri-key "connect.projectDirNew") + +(defn get-first-workspace-folder-uri [] + (-> (.. @vscode -workspace -workspaceFolders) + first ;; Handle nil here? + (.. -uri))) + +(defn get-project-root-uri + ([] + (get-project-root-uri true)) + ([use-cache] + (if use-cache + (if-let [project-directory-uri (state/get-state-value project-root-uri-key)] + project-directory-uri + (get-first-workspace-folder-uri)) + (get-first-workspace-folder-uri)))) + (defn activate [^js vsc] (reset! vscode vsc) (.. ^js @vscode -window (showInformationMessage "hello output world"))) @@ -10,6 +28,9 @@ (defn create-repl-output-file []) (comment + (get-project-root-uri) + @state/state + (or true false false) (run! #(.. fs (appendFileSync "/Users/brandon/development/crescent-api/.calva/output-window/repl-output.md" diff --git a/src/cljs-lib/src/calva/state.cljs b/src/cljs-lib/src/calva/state.cljs index cee0a2caf..fcc4b8e2e 100644 --- a/src/cljs-lib/src/calva/state.cljs +++ b/src/cljs-lib/src/calva/state.cljs @@ -17,4 +17,4 @@ (comment (set-state-value! "hello" "world") (get-state) - (remove-state-value! "hello")) \ No newline at end of file + (remove-state-value! "hello")) From 6ec215dc15b8c6e4f10c5b6e90de823626378121 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 3 Sep 2023 16:28:18 -0700 Subject: [PATCH 04/30] Add function for creating repl output file (markdown) --- src/cljs-lib/src/calva/repl/output.cljs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/cljs-lib/src/calva/repl/output.cljs b/src/cljs-lib/src/calva/repl/output.cljs index e6de6088a..8e8c082e9 100644 --- a/src/cljs-lib/src/calva/repl/output.cljs +++ b/src/cljs-lib/src/calva/repl/output.cljs @@ -7,7 +7,7 @@ (def project-root-uri-key "connect.projectDirNew") (defn get-first-workspace-folder-uri [] - (-> (.. @vscode -workspace -workspaceFolders) + (-> (.. ^js @vscode -workspace -workspaceFolders) first ;; Handle nil here? (.. -uri))) @@ -25,12 +25,21 @@ (reset! vscode vsc) (.. ^js @vscode -window (showInformationMessage "hello output world"))) -(defn create-repl-output-file []) +(defn create-repl-output-file [] + (.. fs (writeFileSync + (.. ^js @vscode -Uri (joinPath (get-project-root-uri) ".calva" "repl-output.md") -fsPath) + ""))) (comment + (create-repl-output-file) + (.. fs (writeFileSync + "/Users/brandon/development/crescent-api/.calva/output-window/repl-output.md" + "")) + (.. ^js @vscode -Uri (joinPath (get-project-root-uri) ".calva" "repl-output.md") -fsPath) + "/Users/brandon/development/crescent-api/.calva/output-window/repl-output.md" + (get-project-root-uri) + (get-project-root-uri) - @state/state - (or true false false) (run! #(.. fs (appendFileSync "/Users/brandon/development/crescent-api/.calva/output-window/repl-output.md" From 3af8dfd75417c0d1e03a8fc91787efab1904951d Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:05:06 -0800 Subject: [PATCH 05/30] Add more markdown experimentation code --- deps-clj-version | 2 +- deps.clj.jar | Bin 4730692 -> 4731682 bytes src/cljs-lib/src/calva/repl/output.cljs | 57 +++++++++++++++++------- 3 files changed, 41 insertions(+), 18 deletions(-) diff --git a/deps-clj-version b/deps-clj-version index b578381bf..da62650d2 100644 --- a/deps-clj-version +++ b/deps-clj-version @@ -1 +1 @@ -v1.11.1.1403 \ No newline at end of file +v1.11.1.1413 \ No newline at end of file diff --git a/deps.clj.jar b/deps.clj.jar index f7c0da6584152d9e6e7c63ac784bc3b08fc7694a..56938b5f34ab24cb427416d273c3bb2f24891809 100644 GIT binary patch delta 128248 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 delta 127503 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%0AXU*tI>A9yHUn17jwT0CTjo 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

X>JMkj?Xd;y>i5f8oKm~v$^tqj<^IwN{VkSJ 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 Date: Mon, 20 Nov 2023 16:08:03 -0800 Subject: [PATCH 06/30] Create webview-output ns - WIP --- shadow-cljs.edn | 2 +- .../src/calva/repl/markdown_output.cljs | 50 +++++++++++++ src/cljs-lib/src/calva/repl/output.cljs | 71 ------------------- .../src/calva/repl/webview_output.cljs | 29 ++++++++ src/cljs-lib/src/calva/util.cljs | 32 +++++++++ src/extension.ts | 7 +- 6 files changed, 117 insertions(+), 74 deletions(-) create mode 100644 src/cljs-lib/src/calva/repl/markdown_output.cljs delete mode 100644 src/cljs-lib/src/calva/repl/output.cljs create mode 100644 src/cljs-lib/src/calva/repl/webview_output.cljs create mode 100644 src/cljs-lib/src/calva/util.cljs diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 5617a7d57..c58ed2ee6 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -23,7 +23,7 @@ :dart2clj calva.dartclojure/convert-bridge :readConfigEdn calva.read-config/config-edn->js-bridge :html2hiccup calva.html2hiccup/html->hiccup-convert-bridge - :activateReplOutput calva.repl.output/activate} + :storeVsCodeApiReference calva.util/store-vscode-api-reference} :output-to "out/cljs-lib/cljs-lib.js"} :test {:target :node-test diff --git a/src/cljs-lib/src/calva/repl/markdown_output.cljs b/src/cljs-lib/src/calva/repl/markdown_output.cljs new file mode 100644 index 000000000..b4e2c81d1 --- /dev/null +++ b/src/cljs-lib/src/calva/repl/markdown_output.cljs @@ -0,0 +1,50 @@ +(ns calva.repl.markdown-output + (:require ["fs" :as fs] + [calva.util :as util] + [cljs.pprint :as pprint])) + +(defn get-repl-output-file-uri [] + (.. ^js @util/vscode + -Uri + (joinPath (util/get-project-root-uri) ".calva" "output-window" "repl-output.md"))) + +(defn get-repl-output-file-fs-path [] + (.. (get-repl-output-file-uri) -fsPath)) + +;; This would be called when a repl is connected, or sooner +(defn create-repl-output-file [] + (.. fs (writeFileSync (get-repl-output-file-fs-path) ""))) + +(defn write-to-repl-output-file [text] + (.. fs (appendFileSync (get-repl-output-file-fs-path) text))) + +(defn clear-repl-output-file [] + (.. fs (writeFileSync (get-repl-output-file-fs-path) ""))) + +(defn show-repl-output-file-preview-to-side [] + (.. ^js @util/vscode + -commands + (executeCommand "markdown.showPreviewToSide" (get-repl-output-file-uri)))) + +(defn print-clojure-code-block [code] + (write-to-repl-output-file (str "```clojure\n" code "\n```\n"))) + +(comment + (create-repl-output-file) + + (show-repl-output-file-preview-to-side) + + (print-clojure-code-block "(+ 1 2)") + + (run! + #(print-clojure-code-block "(+ 1 2)") + (range 1000)) + + (print-clojure-code-block (with-out-str (pprint/pprint (zipmap + [:a :b :c :d :e] + (repeat + (zipmap [:a :b :c :d :e] + (take 5 (range)))))))) + + (clear-repl-output-file) + :rcf) diff --git a/src/cljs-lib/src/calva/repl/output.cljs b/src/cljs-lib/src/calva/repl/output.cljs deleted file mode 100644 index 930d29e2f..000000000 --- a/src/cljs-lib/src/calva/repl/output.cljs +++ /dev/null @@ -1,71 +0,0 @@ -(ns calva.repl.output - (:require ["fs" :as fs] - [calva.state :as state] - [cljs.pprint :as pprint])) - -(defonce vscode (atom nil)) - -(def project-root-uri-key "connect.projectDirNew") - -(defn get-first-workspace-folder-uri [] - (-> (.. ^js @vscode -workspace -workspaceFolders) - first ;; Handle nil here? - (.. -uri))) - -(defn get-project-root-uri - ([] - (get-project-root-uri true)) - ([use-cache] - (if use-cache - (if-let [project-directory-uri (state/get-state-value project-root-uri-key)] - project-directory-uri - (get-first-workspace-folder-uri)) - (get-first-workspace-folder-uri)))) - -(def repl-output-file-uri (.. ^js @vscode - -Uri - (joinPath (get-project-root-uri) ".calva" "output-window" "repl-output.md"))) - -(def repl-output-file-fs-path (.. repl-output-file-uri -fsPath)) - -;; This would be called when a repl is connected, or sooner -(defn create-repl-output-file [] - (.. fs (writeFileSync repl-output-file-fs-path ""))) - -(defn write-to-repl-output-file [text] - (.. fs (appendFileSync repl-output-file-fs-path text))) - -(defn clear-repl-output-file [] - (.. fs (writeFileSync repl-output-file-fs-path ""))) - -(defn show-repl-output-file-preview-to-side [] - (.. ^js @vscode - -commands - (executeCommand "markdown.showPreviewToSide" repl-output-file-uri))) - -(defn print-clojure-code-block [code] - (write-to-repl-output-file (str "```clojure\n" code "\n```\n"))) - -(defn activate [^js vsc] - (reset! vscode vsc) - (.. ^js @vscode -window (showInformationMessage "hello output world"))) - -(comment - (create-repl-output-file) - - (show-repl-output-file-preview-to-side) - - (print-clojure-code-block "(+ 1 2)") - - (run! - #(print-clojure-code-block "(+ 1 2)") - (range 1000)) - - (print-clojure-code-block (with-out-str (pprint/pprint (zipmap - [:a :b :c :d :e] - (repeat - (zipmap [:a :b :c :d :e] - (take 5 (range)))))))) - - (clear-repl-output-file) - :rcf) diff --git a/src/cljs-lib/src/calva/repl/webview_output.cljs b/src/cljs-lib/src/calva/repl/webview_output.cljs new file mode 100644 index 000000000..dda9c2648 --- /dev/null +++ b/src/cljs-lib/src/calva/repl/webview_output.cljs @@ -0,0 +1,29 @@ +(ns calva.repl.webview-output + (:require [calva.util :as util])) + +(defn create-repl-output-webview-panel [] + (.. @util/vscode -window (createWebviewPanel "calva:repl-output" + "REPL Output" + 2 + (clj->js {#_#_:enableScripts true})))) + +(defn get-webview-content [] + " + + + + + Cat Coding + + + + +") + +(comment + (def repl-output-panel (create-repl-output-webview-panel)) + + (set! (.. repl-output-panel -webview -html) (get-webview-content)) + + (get-webview-content) + :rcf) diff --git a/src/cljs-lib/src/calva/util.cljs b/src/cljs-lib/src/calva/util.cljs new file mode 100644 index 000000000..08fb58a84 --- /dev/null +++ b/src/cljs-lib/src/calva/util.cljs @@ -0,0 +1,32 @@ +(ns calva.util + (:require [calva.state :as state])) + +(defonce vscode (atom nil)) + +(def project-root-uri-key " connect.projectDirNew ") + +(defn get-first-workspace-folder-uri [] + (-> (.. ^js @vscode -workspace -workspaceFolders) + first ;; Handle nil here? + (.. -uri))) + +(defn get-project-root-uri + ([] + (get-project-root-uri true)) + ([use-cache] + (if use-cache + (if-let [project-directory-uri (state/get-state-value project-root-uri-key)] + project-directory-uri + (get-first-workspace-folder-uri)) + (get-first-workspace-folder-uri)))) + +(defn store-vscode-api-reference + "This is meant to be called upon extension activation, and will store the vscode api reference in an atom. + + This allows the cljs code to access the vscode API, without having to require it, which can cause testing issues. + + We cannot run unit tests on code that imports the vscode API, because it's only available at runtime. + All cljs code is bundled into a single file and required by the TypeScript code, which means we cannot + write unit tests for any TypeScript code that imports the cljs code, if any of the cljs code requires the VS Code API." + [vsc] + (reset! vscode vsc)) diff --git a/src/extension.ts b/src/extension.ts index 70a4516cd..b1c6c61c5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -31,7 +31,7 @@ import * as replHistory from './results-output/repl-history'; import * as config from './config'; import * as snippets from './custom-snippets'; import * as whenContexts from './when-contexts'; -import { setStateValue, activateReplOutput } from '../out/cljs-lib/cljs-lib'; +import { setStateValue, storeVsCodeApiReference } from '../out/cljs-lib/cljs-lib'; import * as edit from './edit'; import * as nreplLogging from './nrepl/logging'; import * as converters from './converters'; @@ -74,7 +74,10 @@ function initializeState() { async function activate(context: vscode.ExtensionContext) { console.info('Calva activate START'); - activateReplOutput(vscode); + // Store a reference to the vscode API in the cljs so it can all the API using that reference, + // because requiring the vscode API poses issues with being able to test the cljs lib. + // We cannot run unit tests on code that imports the vscode API, because it's only available at runtime. + storeVsCodeApiReference(vscode); const testController = vscode.tests.createTestController('calvaTestController', 'Calva'); const clientProvider = lsp.createClientProvider({ From a193bcc3b2397a86918b924690aec11ad5354f1d Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Mon, 20 Nov 2023 18:05:16 -0800 Subject: [PATCH 07/30] Use html file for webview html --- assets/repl-output-webview.html | 11 +++++ shadow-cljs.edn | 2 +- .../src/calva/repl/webview_output.cljs | 47 +++++++++++-------- src/cljs-lib/src/calva/util.cljs | 10 ++-- src/extension.ts | 4 +- 5 files changed, 48 insertions(+), 26 deletions(-) create mode 100644 assets/repl-output-webview.html diff --git a/assets/repl-output-webview.html b/assets/repl-output-webview.html new file mode 100644 index 000000000..d518c277a --- /dev/null +++ b/assets/repl-output-webview.html @@ -0,0 +1,11 @@ + + + + + + Cat Coding + + + + + diff --git a/shadow-cljs.edn b/shadow-cljs.edn index c58ed2ee6..29250a740 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -23,7 +23,7 @@ :dart2clj calva.dartclojure/convert-bridge :readConfigEdn calva.read-config/config-edn->js-bridge :html2hiccup calva.html2hiccup/html->hiccup-convert-bridge - :storeVsCodeApiReference calva.util/store-vscode-api-reference} + :initializeCljs calva.util/initialize-cljs} :output-to "out/cljs-lib/cljs-lib.js"} :test {:target :node-test diff --git a/src/cljs-lib/src/calva/repl/webview_output.cljs b/src/cljs-lib/src/calva/repl/webview_output.cljs index dda9c2648..5bb684369 100644 --- a/src/cljs-lib/src/calva/repl/webview_output.cljs +++ b/src/cljs-lib/src/calva/repl/webview_output.cljs @@ -1,29 +1,38 @@ (ns calva.repl.webview-output - (:require [calva.util :as util])) + (:require [calva.util :as util] + ["fs" :as fs] + ["path" :as path])) + +(def repl-output-webview-panel (atom nil)) + +(defn dispose-repl-output-webview-panel [] + (println "Disposing repl-output-webview-panel") + (reset! repl-output-webview-panel nil)) (defn create-repl-output-webview-panel [] - (.. @util/vscode -window (createWebviewPanel "calva:repl-output" - "REPL Output" - 2 - (clj->js {#_#_:enableScripts true})))) + (or @repl-output-webview-panel + (let [webview-panel (.. @util/vscode -window (createWebviewPanel "calva:repl-output" + "REPL Output" + 2))] + (.. webview-panel (onDidDispose dispose-repl-output-webview-panel)) + (reset! repl-output-webview-panel webview-panel)))) + +(defn get-webview-html-path [] + (.. path (join (.. @util/context -extensionPath) "assets" "repl-output-webview.html"))) (defn get-webview-content [] - " - - - - - Cat Coding - - - - -") + (.. fs (readFileSync (get-webview-html-path) + "utf-8"))) + +;; TODO: See if can send repl output to webview when it's hidden and see it once unhidden +;; "You cannot send messages to a hidden webview, even when retainContextWhenHidden is enabled." +;; https://code.visualstudio.com/api/extension-guides/webview#theming-webview-content (comment - (def repl-output-panel (create-repl-output-webview-panel)) + (create-repl-output-webview-panel) + + (set! (.. @repl-output-webview-panel -webview -html) (get-webview-content)) - (set! (.. repl-output-panel -webview -html) (get-webview-content)) + @repl-output-webview-panel - (get-webview-content) :rcf) diff --git a/src/cljs-lib/src/calva/util.cljs b/src/cljs-lib/src/calva/util.cljs index 08fb58a84..e5aefde9a 100644 --- a/src/cljs-lib/src/calva/util.cljs +++ b/src/cljs-lib/src/calva/util.cljs @@ -2,6 +2,7 @@ (:require [calva.state :as state])) (defonce vscode (atom nil)) +(defonce context (atom nil)) (def project-root-uri-key " connect.projectDirNew ") @@ -20,13 +21,14 @@ (get-first-workspace-folder-uri)) (get-first-workspace-folder-uri)))) -(defn store-vscode-api-reference - "This is meant to be called upon extension activation, and will store the vscode api reference in an atom. +(defn initialize-cljs + "This is meant to be called upon extension activation, and will store the vscode api reference and the context in atoms. This allows the cljs code to access the vscode API, without having to require it, which can cause testing issues. We cannot run unit tests on code that imports the vscode API, because it's only available at runtime. All cljs code is bundled into a single file and required by the TypeScript code, which means we cannot write unit tests for any TypeScript code that imports the cljs code, if any of the cljs code requires the VS Code API." - [vsc] - (reset! vscode vsc)) + [vsc ctx] + (reset! vscode vsc) + (reset! context ctx)) diff --git a/src/extension.ts b/src/extension.ts index b1c6c61c5..e27c456b4 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -31,7 +31,7 @@ import * as replHistory from './results-output/repl-history'; import * as config from './config'; import * as snippets from './custom-snippets'; import * as whenContexts from './when-contexts'; -import { setStateValue, storeVsCodeApiReference } from '../out/cljs-lib/cljs-lib'; +import { setStateValue, initializeCljs } from '../out/cljs-lib/cljs-lib'; import * as edit from './edit'; import * as nreplLogging from './nrepl/logging'; import * as converters from './converters'; @@ -77,7 +77,7 @@ async function activate(context: vscode.ExtensionContext) { // Store a reference to the vscode API in the cljs so it can all the API using that reference, // because requiring the vscode API poses issues with being able to test the cljs lib. // We cannot run unit tests on code that imports the vscode API, because it's only available at runtime. - storeVsCodeApiReference(vscode); + initializeCljs(vscode, context); const testController = vscode.tests.createTestController('calvaTestController', 'Calva'); const clientProvider = lsp.createClientProvider({ From 756d366b96db490b6a7d03aad9571631959ee2b5 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Mon, 20 Nov 2023 19:31:43 -0800 Subject: [PATCH 08/30] Add highlight.js --- assets/repl-output-webview.html | 47 ++++++++++++++++--- .../src/calva/repl/webview_output.cljs | 20 +++++++- 2 files changed, 60 insertions(+), 7 deletions(-) diff --git a/assets/repl-output-webview.html b/assets/repl-output-webview.html index d518c277a..39859dc38 100644 --- a/assets/repl-output-webview.html +++ b/assets/repl-output-webview.html @@ -1,11 +1,46 @@ - - - + + + Cat Coding - - + + + + + + - + +


+      (defn hello-world [] (println "hello world"))
+    
+ + +
+ + + diff --git a/src/cljs-lib/src/calva/repl/webview_output.cljs b/src/cljs-lib/src/calva/repl/webview_output.cljs index 5bb684369..a8d8a9e11 100644 --- a/src/cljs-lib/src/calva/repl/webview_output.cljs +++ b/src/cljs-lib/src/calva/repl/webview_output.cljs @@ -13,7 +13,8 @@ (or @repl-output-webview-panel (let [webview-panel (.. @util/vscode -window (createWebviewPanel "calva:repl-output" "REPL Output" - 2))] + (.. @util/vscode -ViewColumn -Two) + #js {:enableScripts true}))] (.. webview-panel (onDidDispose dispose-repl-output-webview-panel)) (reset! repl-output-webview-panel webview-panel)))) @@ -24,6 +25,11 @@ (.. fs (readFileSync (get-webview-html-path) "utf-8"))) +(defn post-message-to-webview [message] + (.. @repl-output-webview-panel + -webview + (postMessage (clj->js message)))) + ;; TODO: See if can send repl output to webview when it's hidden and see it once unhidden ;; "You cannot send messages to a hidden webview, even when retainContextWhenHidden is enabled." ;; https://code.visualstudio.com/api/extension-guides/webview#theming-webview-content @@ -33,6 +39,18 @@ (set! (.. @repl-output-webview-panel -webview -html) (get-webview-content)) + (.. @repl-output-webview-panel + -webview + (postMessage #js {:command "print-result" + :result "Hello world!!!"})) + + (post-message-to-webview {:command "print-result" + :result "Hello world!!!"}) + + (post-message-to-webview {:command "clear-results"}) + @repl-output-webview-panel + ;; TODO: Don't worry about scrolling yet. We know we can do that. Explore other important unknowns first. + :rcf) From 56087e9d1746cef8ace510afa6014e84d8daa878 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Wed, 22 Nov 2023 14:23:21 -0800 Subject: [PATCH 09/30] Begin setup for using reagent in output webview - WIP --- assets/js/repl-output-webview.js | 1 + assets/repl-output-webview.html | 9 ++- deps.edn | 3 +- shadow-cljs.edn | 10 ++- .../src/calva/repl/webview_output.cljs | 68 +++++++++++++++++-- 5 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 assets/js/repl-output-webview.js diff --git a/assets/js/repl-output-webview.js b/assets/js/repl-output-webview.js new file mode 100644 index 000000000..f96b2f353 --- /dev/null +++ b/assets/js/repl-output-webview.js @@ -0,0 +1 @@ +console.log('Hello from repl-output-webview.js'); diff --git a/assets/repl-output-webview.html b/assets/repl-output-webview.html index 39859dc38..f03b29262 100644 --- a/assets/repl-output-webview.html +++ b/assets/repl-output-webview.html @@ -18,9 +18,15 @@

-      (defn hello-world [] (println "hello world"))
+(defn hello-world [] (println "highlightjs code block"))
     
+
+      
+(defn hello-world [] (println "highlightjs code block"))
+      
+    
+
@@ -42,5 +48,6 @@ } }); + diff --git a/deps.edn b/deps.edn index 449bbef0d..fd990db9f 100644 --- a/deps.edn +++ b/deps.edn @@ -4,6 +4,7 @@ org.clojars.liverm0r/dartclojure {:mvn/version "0.2.22-SNAPSHOT"} vvvvalvalval/supdate {:mvn/version "0.2.3"} camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.3"} + reagent/reagent {:mvn/version "1.2.0"} #_#_org.clojars.liverm0r/dartclojure {:local/root "../DartClojure"}} :paths ["src/cljs-lib/src" - "src/cljs-lib/test"]} \ No newline at end of file + "src/cljs-lib/test"]} diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 29250a740..cba40b6dd 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -29,4 +29,12 @@ {:target :node-test :output-to "out/cljs-lib/test/cljs-lib-tests.js" :ns-regexp "-test$" - :autorun true}}} + :autorun true} + :repl-output-webview + {:target :browser + ;; TODO: Do the asset-path and output-dir values make sense? + :asset-path "js" + :output-dir "repl-output-window/js" + :modules {:main {:init-fn calva.repl.webview-output/main}} + :devtools {:loader-mode :eval + :devtools-url "http://localhost:9630"}}}} diff --git a/src/cljs-lib/src/calva/repl/webview_output.cljs b/src/cljs-lib/src/calva/repl/webview_output.cljs index a8d8a9e11..4eb55bfc1 100644 --- a/src/cljs-lib/src/calva/repl/webview_output.cljs +++ b/src/cljs-lib/src/calva/repl/webview_output.cljs @@ -21,6 +21,63 @@ (defn get-webview-html-path [] (.. path (join (.. @util/context -extensionPath) "assets" "repl-output-webview.html"))) +(defn get-webview-html + [js-src] + (str " + + + + + + REPL Output + + + + + + + + +

+(defn hello-world [] (println \"highlightjs code block\"))
+    
+ +
+      
+(defn hello-world [] (println \"highlightjs code block\"))
+      
+    
+ + +
+ + + + +")) + (defn get-webview-content [] (.. fs (readFileSync (get-webview-html-path) "utf-8"))) @@ -30,6 +87,8 @@ -webview (postMessage (clj->js message)))) +(defn main []) + ;; TODO: See if can send repl output to webview when it's hidden and see it once unhidden ;; "You cannot send messages to a hidden webview, even when retainContextWhenHidden is enabled." ;; https://code.visualstudio.com/api/extension-guides/webview#theming-webview-content @@ -37,12 +96,11 @@ (comment (create-repl-output-webview-panel) - (set! (.. @repl-output-webview-panel -webview -html) (get-webview-content)) + @(def js-path (.. @util/vscode -Uri (joinPath (.. @util/context -extensionUri) "assets" "js" "repl-output-webview.js"))) - (.. @repl-output-webview-panel - -webview - (postMessage #js {:command "print-result" - :result "Hello world!!!"})) + @(def js-src (.. @repl-output-webview-panel -webview (asWebviewUri js-path))) + + (set! (.. @repl-output-webview-panel -webview -html) (get-webview-html js-src)) (post-message-to-webview {:command "print-result" :result "Hello world!!!"}) From 94d73dcf59344ae8465d9d301ccf35f7fe2419e2 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Fri, 24 Nov 2023 11:41:11 -0800 Subject: [PATCH 10/30] Add reagent UI for repl output - WIP --- .gitignore | 1 + .prettierignore | 1 + assets/js/repl-output-webview.js | 1 - assets/repl-output-webview.html | 53 ------------ package-lock.json | 84 ++++++++++++++++++- package.json | 1 + shadow-cljs.edn | 6 +- .../core.cljs} | 16 +--- src/cljs-lib/src/calva/repl/webview/ui.cljs | 8 ++ 9 files changed, 97 insertions(+), 74 deletions(-) delete mode 100644 assets/js/repl-output-webview.js delete mode 100644 assets/repl-output-webview.html rename src/cljs-lib/src/calva/repl/{webview_output.cljs => webview/core.cljs} (90%) create mode 100644 src/cljs-lib/src/calva/repl/webview/ui.cljs diff --git a/.gitignore b/.gitignore index 26bcb0194..632f89e02 100644 --- a/.gitignore +++ b/.gitignore @@ -50,6 +50,7 @@ jspm_packages lib/ cljs-out/ test-out/ +repl-output-ui/ # This and that .nrepl-port diff --git a/.prettierignore b/.prettierignore index 0c9ccac56..a2d094dc5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,3 +9,4 @@ **/.shadow-cljs/ **/out/ clojure.tmLanguage.json +/repl-output-ui diff --git a/assets/js/repl-output-webview.js b/assets/js/repl-output-webview.js deleted file mode 100644 index f96b2f353..000000000 --- a/assets/js/repl-output-webview.js +++ /dev/null @@ -1 +0,0 @@ -console.log('Hello from repl-output-webview.js'); diff --git a/assets/repl-output-webview.html b/assets/repl-output-webview.html deleted file mode 100644 index f03b29262..000000000 --- a/assets/repl-output-webview.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - Cat Coding - - - - - - - - -

-(defn hello-world [] (println "highlightjs code block"))
-    
- -
-      
-(defn hello-world [] (println "highlightjs code block"))
-      
-    
- - -
- - - - - diff --git a/package-lock.json b/package-lock.json index db13e3c80..8cf00f08d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "open": "^6.3.0", "parinfer": "^3.12.0", "posthtml-parser": "^0.11.0", + "react-dom": "^18.2.0", "semver": "^7.3.7", "tree-kill": "^1.2.2", "universal-analytics": "^0.5.3", @@ -6865,8 +6866,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -7187,6 +7187,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -9036,6 +9047,30 @@ "node": ">=0.10.0" } }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -9291,6 +9326,14 @@ "node": ">=10" } }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -16852,8 +16895,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "4.1.0", @@ -17109,6 +17151,14 @@ "is-unicode-supported": "^0.1.0" } }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -18583,6 +18633,24 @@ } } }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -18776,6 +18844,14 @@ "xmlchars": "^2.2.0" } }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", diff --git a/package.json b/package.json index 0bedc75a8..7709b6843 100644 --- a/package.json +++ b/package.json @@ -3121,6 +3121,7 @@ "open": "^6.3.0", "parinfer": "^3.12.0", "posthtml-parser": "^0.11.0", + "react-dom": "^18.2.0", "semver": "^7.3.7", "tree-kill": "^1.2.2", "universal-analytics": "^0.5.3", diff --git a/shadow-cljs.edn b/shadow-cljs.edn index cba40b6dd..b5d9d92ae 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -30,11 +30,11 @@ :output-to "out/cljs-lib/test/cljs-lib-tests.js" :ns-regexp "-test$" :autorun true} - :repl-output-webview + :repl-output-ui {:target :browser ;; TODO: Do the asset-path and output-dir values make sense? :asset-path "js" - :output-dir "repl-output-window/js" - :modules {:main {:init-fn calva.repl.webview-output/main}} + :output-dir "repl-output-ui/js" + :modules {:main {:init-fn calva.repl.webview.ui/main}} :devtools {:loader-mode :eval :devtools-url "http://localhost:9630"}}}} diff --git a/src/cljs-lib/src/calva/repl/webview_output.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs similarity index 90% rename from src/cljs-lib/src/calva/repl/webview_output.cljs rename to src/cljs-lib/src/calva/repl/webview/core.cljs index 4eb55bfc1..bb8e35b4c 100644 --- a/src/cljs-lib/src/calva/repl/webview_output.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -1,7 +1,6 @@ -(ns calva.repl.webview-output - (:require [calva.util :as util] - ["fs" :as fs] - ["path" :as path])) +(ns calva.repl.webview.core + (:require + [calva.util :as util])) (def repl-output-webview-panel (atom nil)) @@ -18,9 +17,6 @@ (.. webview-panel (onDidDispose dispose-repl-output-webview-panel)) (reset! repl-output-webview-panel webview-panel)))) -(defn get-webview-html-path [] - (.. path (join (.. @util/context -extensionPath) "assets" "repl-output-webview.html"))) - (defn get-webview-html [js-src] (str " @@ -78,17 +74,11 @@ ")) -(defn get-webview-content [] - (.. fs (readFileSync (get-webview-html-path) - "utf-8"))) - (defn post-message-to-webview [message] (.. @repl-output-webview-panel -webview (postMessage (clj->js message)))) -(defn main []) - ;; TODO: See if can send repl output to webview when it's hidden and see it once unhidden ;; "You cannot send messages to a hidden webview, even when retainContextWhenHidden is enabled." ;; https://code.visualstudio.com/api/extension-guides/webview#theming-webview-content diff --git a/src/cljs-lib/src/calva/repl/webview/ui.cljs b/src/cljs-lib/src/calva/repl/webview/ui.cljs new file mode 100644 index 000000000..14aa3a10c --- /dev/null +++ b/src/cljs-lib/src/calva/repl/webview/ui.cljs @@ -0,0 +1,8 @@ +(ns calva.repl.webview.ui + (:require [reagent.dom :as rdom])) + +(defn repl-output [] + [:div "hello world"]) + +(defn render-ui [] + (rdom/render [repl-output] (js/getElementById "results"))) From f97c4783d2db7b790efab86fab9cad6583e613c7 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Fri, 24 Nov 2023 19:42:26 -0800 Subject: [PATCH 11/30] Make reagent UI work --- .eslintignore | 1 + shadow-cljs.edn | 2 +- src/cljs-lib/src/calva/repl/webview/core.cljs | 42 +++++++------------ src/cljs-lib/src/calva/repl/webview/ui.cljs | 2 +- 4 files changed, 19 insertions(+), 28 deletions(-) diff --git a/.eslintignore b/.eslintignore index c42749513..1c96db0f4 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,3 +7,4 @@ /.clj-kondo /site /test-data +/repl-output-ui diff --git a/shadow-cljs.edn b/shadow-cljs.edn index b5d9d92ae..d808a31e2 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -35,6 +35,6 @@ ;; TODO: Do the asset-path and output-dir values make sense? :asset-path "js" :output-dir "repl-output-ui/js" - :modules {:main {:init-fn calva.repl.webview.ui/main}} + :modules {:main {:init-fn calva.repl.webview.ui/render-ui}} :devtools {:loader-mode :eval :devtools-url "http://localhost:9630"}}}} diff --git a/src/cljs-lib/src/calva/repl/webview/core.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs index bb8e35b4c..dfdbf7a3a 100644 --- a/src/cljs-lib/src/calva/repl/webview/core.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -8,7 +8,7 @@ (println "Disposing repl-output-webview-panel") (reset! repl-output-webview-panel nil)) -(defn create-repl-output-webview-panel [] +(defn create-or-get-repl-output-webview-panel [] (or @repl-output-webview-panel (let [webview-panel (.. @util/vscode -window (createWebviewPanel "calva:repl-output" "REPL Output" @@ -37,35 +37,23 @@ - - -

-(defn hello-world [] (println \"highlightjs code block\"))
-    
- -
-      
-(defn hello-world [] (println \"highlightjs code block\"))
-      
-    
- -
+
")) @@ -82,7 +64,7 @@ (comment (show-repl-output-webview-panel) - (post-message-to-webview {:command "print-result" + (post-message-to-webview {:command "show-result" :result "Hello world!!!"}) (post-message-to-webview {:command "clear-output"}) diff --git a/src/cljs-lib/src/calva/repl/webview/ui.cljs b/src/cljs-lib/src/calva/repl/webview/ui.cljs index f35d34618..3404aa3a1 100644 --- a/src/cljs-lib/src/calva/repl/webview/ui.cljs +++ b/src/cljs-lib/src/calva/repl/webview/ui.cljs @@ -1,8 +1,53 @@ (ns calva.repl.webview.ui - (:require [reagent.dom :as rdom])) + (:require [reagent.dom :as rdom] + [reagent.core :as r])) + +(defonce output-elements + (r/atom [{:output-element/type :output-element.type/eval-result + :output-element/content "{:a 1}"} + {:output-element/type :output-element.type/stdout + :output-element/content "Hello world"}])) + +(defn add-eval-result + [content] + (swap! output-elements + conj + {:output-element/type :output-element.type/eval-result + :output-element/content content})) + +(defn add-stdout + [content] + (swap! output-elements + conj + {:output-element/type :output-element.type/stdout + :output-element/content content})) (defn repl-output [] - [:div "hello world"]) + (let [elements @output-elements] + [:div + (for [{:output-element/keys [content]} elements] + [:p content])])) -(defn render-ui [] +(defn main [] + (.. js/window + (addEventListener "message" + (fn [^js message] + (let [command (.. message -command) + data (.. message -data)] + (case command + "show-result" (add-eval-result data) + "show-stdout" (add-stdout data)))))) (rdom/render [repl-output] (js/document.getElementById "output"))) + +(comment + + (reset! output-elements []) + + @output-elements + + ;; For some reason this is not causing the UI to update... + ;; Reason: It was because I was connected to the calva-lib (node) build and not the repl-output-ui (browser) build + (swap! output-elements conj {:output-element/type :output-element.type/eval-result + :output-element/content "{:a 1}"}) + + :rcf) From 45a629ae53ed84a2742a2eb44c6cfd9c146235c2 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 3 Dec 2023 18:22:18 -0800 Subject: [PATCH 13/30] Add build to watch-cljs script Refactor --- package.json | 2 +- shadow-cljs.edn | 3 +- src/cljs-lib/src/calva/repl/webview/core.cljs | 39 ++++++++++++------- src/cljs-lib/src/calva/repl/webview/ui.cljs | 9 ++++- src/cljs-lib/src/calva/util.cljs | 6 ++- 5 files changed, 41 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 4a2dbd8d8..7a3359dd1 100644 --- a/package.json +++ b/package.json @@ -3079,7 +3079,7 @@ "compile-ts": "npx tsc --project ./tsconfig.json", "compile": "npm run compile-cljs && npm run compile-ts", "watch-ts": "npx tsc --watch --project ./tsconfig.json", - "watch-cljs": "npx shadow-cljs -d cider/cider-nrepl:0.28.5 watch :calva-lib :test", + "watch-cljs": "npx shadow-cljs -d cider/cider-nrepl:0.28.5 watch :calva-lib :test :repl-output-ui", "watch-ts-with-strict-nulls": "npx tsc --watch --project ./tsconfig.json --strictNullChecks", "release-cljs": "npx shadow-cljs release :calva-lib :test", "release": "webpack --mode production", diff --git a/shadow-cljs.edn b/shadow-cljs.edn index b5d9d92ae..63a5df038 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -23,7 +23,8 @@ :dart2clj calva.dartclojure/convert-bridge :readConfigEdn calva.read-config/config-edn->js-bridge :html2hiccup calva.html2hiccup/html->hiccup-convert-bridge - :initializeCljs calva.util/initialize-cljs} + :initializeCljs calva.util/initialize-cljs + :showReplOutputWebviewPanel calva.repl.webview.core/show-repl-output-webview-panel} :output-to "out/cljs-lib/cljs-lib.js"} :test {:target :node-test diff --git a/src/cljs-lib/src/calva/repl/webview/core.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs index 881ef1157..9ac9ffbfe 100644 --- a/src/cljs-lib/src/calva/repl/webview/core.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -2,19 +2,20 @@ (:require [calva.util :as util])) -(def repl-output-webview-panel (atom nil)) +(defonce repl-output-webview-panel (atom nil)) (defn dispose-repl-output-webview-panel [] (println "Disposing repl-output-webview-panel") (reset! repl-output-webview-panel nil)) +;; TODO: See if there's a way to not have to use ^js in so many places without shadow-cljs warnings (defn create-or-get-repl-output-webview-panel [] (or @repl-output-webview-panel - (let [webview-panel (.. @util/vscode -window (createWebviewPanel "calva:repl-output" - "REPL Output" - (.. @util/vscode -ViewColumn -Two) - #js {:enableScripts true}))] - (.. webview-panel (onDidDispose dispose-repl-output-webview-panel)) + (let [webview-panel (.. ^js @util/vscode -window (createWebviewPanel "calva:repl-output" + "REPL Output" + (.. ^js @util/vscode -ViewColumn -Two) + #js {:enableScripts true}))] + (.. ^js webview-panel (onDidDispose dispose-repl-output-webview-panel)) (reset! repl-output-webview-panel webview-panel)))) (defn get-webview-html @@ -45,17 +46,19 @@ ")) (defn post-message-to-webview [message] - (.. @repl-output-webview-panel + (.. ^js @repl-output-webview-panel -webview - (postMessage (clj->js message)))) + (postMessage (clj->js (merge + {:id (str (random-uuid))} ;; Provide an id if one wasn't provided by the caller + message))))) (defn show-repl-output-webview-panel [] - (let [repl-output-webview-panel (create-or-get-repl-output-webview-panel) - js-path (.. @util/vscode + (let [^js repl-output-webview-panel (create-or-get-repl-output-webview-panel) + js-path (.. ^js @util/vscode -Uri - (joinPath (.. @util/context -extensionUri) "repl-output-ui" "js" "main.js")) + (joinPath (.. ^js @util/context -extensionUri) "repl-output-ui" "js" "main.js")) js-src (.. repl-output-webview-panel -webview (asWebviewUri js-path))] - (set! (.. repl-output-webview-panel -webview -html) (get-webview-html js-src)))) + (set! (.. ^js repl-output-webview-panel -webview -html) (get-webview-html js-src)))) ;; TODO: See if can send repl output to webview when it's hidden and see it once unhidden ;; "You cannot send messages to a hidden webview, even when retainContextWhenHidden is enabled." @@ -64,7 +67,17 @@ (comment (show-repl-output-webview-panel) - (post-message-to-webview {:command "show-result" + ;; TODO: Implement this interface for communicating with the webview + ;; Message + {;; This message contains a command + :command {;; Command name + :name "show-result" + ;; Command args + :args {:result "Hello world"}} + ;; Message id + :id "1234"} + + (post-message-to-webview {:command-name "show-result" :result "Hello world!!!"}) (post-message-to-webview {:command "clear-output"}) diff --git a/src/cljs-lib/src/calva/repl/webview/ui.cljs b/src/cljs-lib/src/calva/repl/webview/ui.cljs index 3404aa3a1..8bb7a22d2 100644 --- a/src/cljs-lib/src/calva/repl/webview/ui.cljs +++ b/src/cljs-lib/src/calva/repl/webview/ui.cljs @@ -32,8 +32,13 @@ (.. js/window (addEventListener "message" (fn [^js message] - (let [command (.. message -command) - data (.. message -data)] + (js/console.log "message" message) + ;; TODO: Convert message data to CLJ before accessing its properties + (let [id (.. message -data -id) + command (aget message "data" "command-name") + data (.. message -data -result)] + (js/console.log "id" id) + (js/console.log "command" command) (case command "show-result" (add-eval-result data) "show-stdout" (add-stdout data)))))) diff --git a/src/cljs-lib/src/calva/util.cljs b/src/cljs-lib/src/calva/util.cljs index e5aefde9a..ff2ea001e 100644 --- a/src/cljs-lib/src/calva/util.cljs +++ b/src/cljs-lib/src/calva/util.cljs @@ -4,6 +4,10 @@ (defonce vscode (atom nil)) (defonce context (atom nil)) +(comment + (+ 1 2) + :rcf) + (def project-root-uri-key " connect.projectDirNew ") (defn get-first-workspace-folder-uri [] @@ -29,6 +33,6 @@ We cannot run unit tests on code that imports the vscode API, because it's only available at runtime. All cljs code is bundled into a single file and required by the TypeScript code, which means we cannot write unit tests for any TypeScript code that imports the cljs code, if any of the cljs code requires the VS Code API." - [vsc ctx] + [^js vsc ^js ctx] (reset! vscode vsc) (reset! context ctx)) From 695afde90d0d7199adc73d83d8eda128b1c03d43 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 3 Dec 2023 18:39:30 -0800 Subject: [PATCH 14/30] Open webview output on activation and print 10 messages --- src/cljs-lib/src/calva/repl/webview/core.cljs | 8 +++++++- src/extension.ts | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/cljs-lib/src/calva/repl/webview/core.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs index 9ac9ffbfe..a4497c6bc 100644 --- a/src/cljs-lib/src/calva/repl/webview/core.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -58,7 +58,13 @@ -Uri (joinPath (.. ^js @util/context -extensionUri) "repl-output-ui" "js" "main.js")) js-src (.. repl-output-webview-panel -webview (asWebviewUri js-path))] - (set! (.. ^js repl-output-webview-panel -webview -html) (get-webview-html js-src)))) + (set! (.. ^js repl-output-webview-panel -webview -html) (get-webview-html js-src)) + (let [interval-id (js/setInterval post-message-to-webview + 1000 + {:command-name "show-result" + :result "Hello world!!!"})] + (js/setTimeout #(js/clearInterval interval-id) + 11000)))) ;; TODO: See if can send repl output to webview when it's hidden and see it once unhidden ;; "You cannot send messages to a hidden webview, even when retainContextWhenHidden is enabled." diff --git a/src/extension.ts b/src/extension.ts index e27c456b4..b85be1f09 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -31,7 +31,11 @@ import * as replHistory from './results-output/repl-history'; import * as config from './config'; import * as snippets from './custom-snippets'; import * as whenContexts from './when-contexts'; -import { setStateValue, initializeCljs } from '../out/cljs-lib/cljs-lib'; +import { + setStateValue, + initializeCljs, + showReplOutputWebviewPanel, +} from '../out/cljs-lib/cljs-lib'; import * as edit from './edit'; import * as nreplLogging from './nrepl/logging'; import * as converters from './converters'; @@ -78,6 +82,7 @@ async function activate(context: vscode.ExtensionContext) { // because requiring the vscode API poses issues with being able to test the cljs lib. // We cannot run unit tests on code that imports the vscode API, because it's only available at runtime. initializeCljs(vscode, context); + showReplOutputWebviewPanel(); const testController = vscode.tests.createTestController('calvaTestController', 'Calva'); const clientProvider = lsp.createClientProvider({ From 65f42299536e17edf70c257d046ac5dcc57bd9a8 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 25 Feb 2024 19:42:52 -0800 Subject: [PATCH 15/30] Fix comment typo --- src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index b85be1f09..bbe28e7e5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -78,7 +78,7 @@ function initializeState() { async function activate(context: vscode.ExtensionContext) { console.info('Calva activate START'); - // Store a reference to the vscode API in the cljs so it can all the API using that reference, + // Store a reference to the vscode API in the cljs so it can call the API using that reference, // because requiring the vscode API poses issues with being able to test the cljs lib. // We cannot run unit tests on code that imports the vscode API, because it's only available at runtime. initializeCljs(vscode, context); From e005870c44b98727b15d26bd2440d7a0dd55b624 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 25 Feb 2024 19:52:18 -0800 Subject: [PATCH 16/30] Update package-lock.json --- package-lock.json | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d594dce3..8fdcff01e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9138,20 +9138,6 @@ "loose-envify": "^1.1.0" } }, - "node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -18129,17 +18115,6 @@ "loose-envify": "^1.1.0" } }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, "semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", From d50b123d1bc9a4fce0d5c98643d3172014be6e77 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 25 Feb 2024 19:53:53 -0800 Subject: [PATCH 17/30] Remove comment form --- src/cljs-lib/src/calva/util.cljs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/cljs-lib/src/calva/util.cljs b/src/cljs-lib/src/calva/util.cljs index ff2ea001e..c46a67dd7 100644 --- a/src/cljs-lib/src/calva/util.cljs +++ b/src/cljs-lib/src/calva/util.cljs @@ -4,10 +4,6 @@ (defonce vscode (atom nil)) (defonce context (atom nil)) -(comment - (+ 1 2) - :rcf) - (def project-root-uri-key " connect.projectDirNew ") (defn get-first-workspace-folder-uri [] From 11dfb429e09a28d46357df5f73a3df28ebdecd48 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 31 Mar 2024 11:20:17 -0700 Subject: [PATCH 18/30] Remove markdown output file --- .../src/calva/repl/markdown_output.cljs | 50 ------------------- 1 file changed, 50 deletions(-) delete mode 100644 src/cljs-lib/src/calva/repl/markdown_output.cljs diff --git a/src/cljs-lib/src/calva/repl/markdown_output.cljs b/src/cljs-lib/src/calva/repl/markdown_output.cljs deleted file mode 100644 index b4e2c81d1..000000000 --- a/src/cljs-lib/src/calva/repl/markdown_output.cljs +++ /dev/null @@ -1,50 +0,0 @@ -(ns calva.repl.markdown-output - (:require ["fs" :as fs] - [calva.util :as util] - [cljs.pprint :as pprint])) - -(defn get-repl-output-file-uri [] - (.. ^js @util/vscode - -Uri - (joinPath (util/get-project-root-uri) ".calva" "output-window" "repl-output.md"))) - -(defn get-repl-output-file-fs-path [] - (.. (get-repl-output-file-uri) -fsPath)) - -;; This would be called when a repl is connected, or sooner -(defn create-repl-output-file [] - (.. fs (writeFileSync (get-repl-output-file-fs-path) ""))) - -(defn write-to-repl-output-file [text] - (.. fs (appendFileSync (get-repl-output-file-fs-path) text))) - -(defn clear-repl-output-file [] - (.. fs (writeFileSync (get-repl-output-file-fs-path) ""))) - -(defn show-repl-output-file-preview-to-side [] - (.. ^js @util/vscode - -commands - (executeCommand "markdown.showPreviewToSide" (get-repl-output-file-uri)))) - -(defn print-clojure-code-block [code] - (write-to-repl-output-file (str "```clojure\n" code "\n```\n"))) - -(comment - (create-repl-output-file) - - (show-repl-output-file-preview-to-side) - - (print-clojure-code-block "(+ 1 2)") - - (run! - #(print-clojure-code-block "(+ 1 2)") - (range 1000)) - - (print-clojure-code-block (with-out-str (pprint/pprint (zipmap - [:a :b :c :d :e] - (repeat - (zipmap [:a :b :c :d :e] - (take 5 (range)))))))) - - (clear-repl-output-file) - :rcf) From 202329fbb1ddf9f640c1fabc6b284dae7466d0b7 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 31 Mar 2024 11:37:20 -0700 Subject: [PATCH 19/30] Fix project-root-uri-key --- src/cljs-lib/src/calva/util.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cljs-lib/src/calva/util.cljs b/src/cljs-lib/src/calva/util.cljs index c46a67dd7..483888410 100644 --- a/src/cljs-lib/src/calva/util.cljs +++ b/src/cljs-lib/src/calva/util.cljs @@ -4,7 +4,7 @@ (defonce vscode (atom nil)) (defonce context (atom nil)) -(def project-root-uri-key " connect.projectDirNew ") +(def project-root-uri-key "connect.projectDirNew") (defn get-first-workspace-folder-uri [] (-> (.. ^js @vscode -workspace -workspaceFolders) From abe1a17513c28f06b294d2986b39590a8d9c9a15 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 31 Mar 2024 13:01:33 -0700 Subject: [PATCH 20/30] Get rid of react warning about every element needing a key --- src/cljs-lib/src/calva/repl/webview/core.cljs | 2 +- src/cljs-lib/src/calva/repl/webview/ui.cljs | 41 ++++++++++++------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/cljs-lib/src/calva/repl/webview/core.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs index a4497c6bc..19fe9300d 100644 --- a/src/cljs-lib/src/calva/repl/webview/core.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -84,7 +84,7 @@ :id "1234"} (post-message-to-webview {:command-name "show-result" - :result "Hello world!!!"}) + :result "send while hidden"}) (post-message-to-webview {:command "clear-output"}) diff --git a/src/cljs-lib/src/calva/repl/webview/ui.cljs b/src/cljs-lib/src/calva/repl/webview/ui.cljs index 8bb7a22d2..2e89445c9 100644 --- a/src/cljs-lib/src/calva/repl/webview/ui.cljs +++ b/src/cljs-lib/src/calva/repl/webview/ui.cljs @@ -2,31 +2,36 @@ (:require [reagent.dom :as rdom] [reagent.core :as r])) +(defn output-element + [element-data] + (merge element-data + {:output-element/id (random-uuid)})) + (defonce output-elements - (r/atom [{:output-element/type :output-element.type/eval-result - :output-element/content "{:a 1}"} - {:output-element/type :output-element.type/stdout - :output-element/content "Hello world"}])) + (r/atom [(output-element {:output-element/type :output-element.type/eval-result + :output-element/content "{:a 1}"}) + (output-element {:output-element/type :output-element.type/stdout + :output-element/content "Hello world"})])) + +(defn add-output-element + [element] + (swap! output-elements conj element)) (defn add-eval-result [content] - (swap! output-elements - conj - {:output-element/type :output-element.type/eval-result - :output-element/content content})) + (add-output-element (output-element {:output-element/type :output-element.type/eval-result + :output-element/content content}))) (defn add-stdout [content] - (swap! output-elements - conj - {:output-element/type :output-element.type/stdout - :output-element/content content})) + (add-output-element (output-element {:output-element/type :output-element.type/stdout + :output-element/content content}))) (defn repl-output [] (let [elements @output-elements] [:div - (for [{:output-element/keys [content]} elements] - [:p content])])) + (for [{:output-element/keys [content id]} elements] + [:p {:key id} content])])) (defn main [] (.. js/window @@ -45,9 +50,17 @@ (rdom/render [repl-output] (js/document.getElementById "output"))) (comment + (set! *print-namespace-maps* false) + + (binding [*print-namespace-maps* false] + @output-elements) + + (println {:user/a 1, :user/b 2}) (reset! output-elements []) + (print) + @output-elements ;; For some reason this is not causing the UI to update... From 53a37180fcfbcf44eb9566f94e80eb945eeb626f Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 31 Mar 2024 14:09:21 -0700 Subject: [PATCH 21/30] Use create-root so that react 18 is used --- src/cljs-lib/src/calva/repl/webview/core.cljs | 14 ++++++++------ src/cljs-lib/src/calva/repl/webview/ui.cljs | 7 ++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/cljs-lib/src/calva/repl/webview/core.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs index 19fe9300d..2f0468f1b 100644 --- a/src/cljs-lib/src/calva/repl/webview/core.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -11,10 +11,11 @@ ;; TODO: See if there's a way to not have to use ^js in so many places without shadow-cljs warnings (defn create-or-get-repl-output-webview-panel [] (or @repl-output-webview-panel - (let [webview-panel (.. ^js @util/vscode -window (createWebviewPanel "calva:repl-output" - "REPL Output" - (.. ^js @util/vscode -ViewColumn -Two) - #js {:enableScripts true}))] + (let [webview-panel (.. ^js @util/vscode -window + (createWebviewPanel "calva:repl-output" + "REPL Output" + (.. ^js @util/vscode -ViewColumn -Two) + #js {:enableScripts true}))] (.. ^js webview-panel (onDidDispose dispose-repl-output-webview-panel)) (reset! repl-output-webview-panel webview-panel)))) @@ -57,8 +58,9 @@ js-path (.. ^js @util/vscode -Uri (joinPath (.. ^js @util/context -extensionUri) "repl-output-ui" "js" "main.js")) - js-src (.. repl-output-webview-panel -webview (asWebviewUri js-path))] - (set! (.. ^js repl-output-webview-panel -webview -html) (get-webview-html js-src)) + js-src (.. repl-output-webview-panel -webview (asWebviewUri js-path)) + webview-html (get-webview-html js-src)] + (set! (.. ^js repl-output-webview-panel -webview -html) webview-html) (let [interval-id (js/setInterval post-message-to-webview 1000 {:command-name "show-result" diff --git a/src/cljs-lib/src/calva/repl/webview/ui.cljs b/src/cljs-lib/src/calva/repl/webview/ui.cljs index 2e89445c9..9f903c196 100644 --- a/src/cljs-lib/src/calva/repl/webview/ui.cljs +++ b/src/cljs-lib/src/calva/repl/webview/ui.cljs @@ -1,6 +1,7 @@ (ns calva.repl.webview.ui - (:require [reagent.dom :as rdom] - [reagent.core :as r])) + (:require + [reagent.dom.client :as rdom.client] + [reagent.core :as r])) (defn output-element [element-data] @@ -47,7 +48,7 @@ (case command "show-result" (add-eval-result data) "show-stdout" (add-stdout data)))))) - (rdom/render [repl-output] (js/document.getElementById "output"))) + (rdom.client/render (rdom.client/create-root (js/document.getElementById "output")) [repl-output])) (comment (set! *print-namespace-maps* false) From f71343ff0c672a5dcffa937abc97a34da9bb4b46 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sat, 6 Apr 2024 12:13:21 -0700 Subject: [PATCH 22/30] WIP: Update webview CSP --- src/cljs-lib/src/calva/repl/webview/core.cljs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/cljs-lib/src/calva/repl/webview/core.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs index 2f0468f1b..172466b51 100644 --- a/src/cljs-lib/src/calva/repl/webview/core.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -26,23 +26,34 @@ + + + + REPL Output + + - --> +
- + ")) From 3d00c9a8dbb15c12d6a24c8263fc55eaab6d5d10 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sat, 6 Apr 2024 14:15:31 -0700 Subject: [PATCH 23/30] Move hightlightAll call to cljs --- src/cljs-lib/src/calva/repl/webview/core.cljs | 13 ++++++------- src/cljs-lib/src/calva/repl/webview/ui.cljs | 15 ++++++++++----- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/cljs-lib/src/calva/repl/webview/core.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs index 172466b51..033463d71 100644 --- a/src/cljs-lib/src/calva/repl/webview/core.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -29,10 +29,11 @@ - + REPL Output @@ -44,16 +45,14 @@ - - +
:hello-world
+
- + ")) diff --git a/src/cljs-lib/src/calva/repl/webview/ui.cljs b/src/cljs-lib/src/calva/repl/webview/ui.cljs index 9f903c196..13cfa87e7 100644 --- a/src/cljs-lib/src/calva/repl/webview/ui.cljs +++ b/src/cljs-lib/src/calva/repl/webview/ui.cljs @@ -1,7 +1,8 @@ (ns calva.repl.webview.ui (:require [reagent.dom.client :as rdom.client] - [reagent.core :as r])) + [reagent.core :as r] + ["react" :as react])) (defn output-element [element-data] @@ -29,10 +30,14 @@ :output-element/content content}))) (defn repl-output [] + (react/useEffect (fn [] + (prn "highlighting code blocks") + (.. js/window -hljs (highlightAll)))) (let [elements @output-elements] - [:div - (for [{:output-element/keys [content id]} elements] - [:p {:key id} content])])) + [:pre [:code {:class "language-clojure"} ":hello"]] + #_[:div + (for [{:output-element/keys [content id]} elements] + [:p {:key id} content])])) (defn main [] (.. js/window @@ -48,7 +53,7 @@ (case command "show-result" (add-eval-result data) "show-stdout" (add-stdout data)))))) - (rdom.client/render (rdom.client/create-root (js/document.getElementById "output")) [repl-output])) + (rdom.client/render (rdom.client/create-root (js/document.getElementById "output")) [:f> repl-output])) (comment (set! *print-namespace-maps* false) From 4eb39750724791073c00983cb4fb4b7e4612837c Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sat, 6 Apr 2024 14:20:19 -0700 Subject: [PATCH 24/30] Add comment --- src/cljs-lib/src/calva/repl/webview/ui.cljs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/cljs-lib/src/calva/repl/webview/ui.cljs b/src/cljs-lib/src/calva/repl/webview/ui.cljs index 13cfa87e7..07fc5dc33 100644 --- a/src/cljs-lib/src/calva/repl/webview/ui.cljs +++ b/src/cljs-lib/src/calva/repl/webview/ui.cljs @@ -30,9 +30,12 @@ :output-element/content content}))) (defn repl-output [] - (react/useEffect (fn [] - (prn "highlighting code blocks") - (.. js/window -hljs (highlightAll)))) + ;; If doing this after every render isn't performant, consider using highlightjs from node, + ;; rendering the output to html then sending it to this webview as a message and adding the html to the DOM + ;; as it is. It would already be in the form hightlightjs needs it to be in for its CSS to apply to it. + ;; + ;; TODO: Test if this is performance when printing a large number of results and a large number of large results + (react/useEffect (fn [] (.. js/window -hljs (highlightAll)))) (let [elements @output-elements] [:pre [:code {:class "language-clojure"} ":hello"]] #_[:div From 2c60af5fd152884304d36d0ff0dfb814e0c1aaf4 Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sat, 20 Apr 2024 11:49:44 -0700 Subject: [PATCH 25/30] Add replicant --- deps.edn | 1 + src/cljs-lib/src/calva/repl/webview/ui.cljs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/deps.edn b/deps.edn index c7b56a79b..a763c56a6 100644 --- a/deps.edn +++ b/deps.edn @@ -5,6 +5,7 @@ vvvvalvalval/supdate {:mvn/version "0.2.3"} camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.3"} reagent/reagent {:mvn/version "1.2.0"} + no.cjohansen/replicant {:mvn/version "0.2024.03.25.1"} #_#_org.clojars.liverm0r/dartclojure {:local/root "../DartClojure"}} :paths ["src/cljs-lib/src" "src/cljs-lib/test"]} diff --git a/src/cljs-lib/src/calva/repl/webview/ui.cljs b/src/cljs-lib/src/calva/repl/webview/ui.cljs index 07fc5dc33..0bc9ae4cd 100644 --- a/src/cljs-lib/src/calva/repl/webview/ui.cljs +++ b/src/cljs-lib/src/calva/repl/webview/ui.cljs @@ -2,7 +2,8 @@ (:require [reagent.dom.client :as rdom.client] [reagent.core :as r] - ["react" :as react])) + ["react" :as react] + [replicant.dom :as d])) (defn output-element [element-data] From 8f9eca953436113498193ff83231f38f25893acb Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 5 May 2024 13:08:11 -0700 Subject: [PATCH 26/30] Add replicant and set up a simple multimethod command system --- deps.edn | 4 +- src/cljs-lib/src/calva/repl/webview/core.cljs | 14 +++---- src/cljs-lib/src/calva/repl/webview/ui.cljs | 42 +++++++++++++++---- 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/deps.edn b/deps.edn index a763c56a6..a7012fe12 100644 --- a/deps.edn +++ b/deps.edn @@ -5,7 +5,9 @@ vvvvalvalval/supdate {:mvn/version "0.2.3"} camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.3"} reagent/reagent {:mvn/version "1.2.0"} - no.cjohansen/replicant {:mvn/version "0.2024.03.25.1"} + no.cjohansen/replicant {:git/url "https://github.com/cjohansen/replicant.git" + :git/sha "ef2fecbe301cafa8449b74a1e2cbe4fc3ddc18ac"} + org.clojars.abhinav/snitch {:mvn/version "0.1.14"} #_#_org.clojars.liverm0r/dartclojure {:local/root "../DartClojure"}} :paths ["src/cljs-lib/src" "src/cljs-lib/test"]} diff --git a/src/cljs-lib/src/calva/repl/webview/core.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs index 033463d71..0d6da6e99 100644 --- a/src/cljs-lib/src/calva/repl/webview/core.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -47,8 +47,6 @@ -
:hello-world
-
@@ -71,12 +69,12 @@ js-src (.. repl-output-webview-panel -webview (asWebviewUri js-path)) webview-html (get-webview-html js-src)] (set! (.. ^js repl-output-webview-panel -webview -html) webview-html) - (let [interval-id (js/setInterval post-message-to-webview - 1000 - {:command-name "show-result" - :result "Hello world!!!"})] - (js/setTimeout #(js/clearInterval interval-id) - 11000)))) + #_(let [interval-id (js/setInterval post-message-to-webview + 1000 + {:command-name "show-result" + :result "Hello world!!!"})] + (js/setTimeout #(js/clearInterval interval-id) + 11000)))) ;; TODO: See if can send repl output to webview when it's hidden and see it once unhidden ;; "You cannot send messages to a hidden webview, even when retainContextWhenHidden is enabled." diff --git a/src/cljs-lib/src/calva/repl/webview/ui.cljs b/src/cljs-lib/src/calva/repl/webview/ui.cljs index 0bc9ae4cd..953f4b270 100644 --- a/src/cljs-lib/src/calva/repl/webview/ui.cljs +++ b/src/cljs-lib/src/calva/repl/webview/ui.cljs @@ -1,9 +1,28 @@ (ns calva.repl.webview.ui (:require [reagent.dom.client :as rdom.client] + [snitch.core :refer [defn*]] [reagent.core :as r] ["react" :as react] - [replicant.dom :as d])) + [replicant.dom :as replicant])) + +(def el (js/document.getElementById "output")) + +(defmulti run-command + "Runs a given command with the given args." + (fn [_replicant-data command & _args] + command)) + +(defmethod run-command :repl-output/highlight-code + [_replicant-data _command _args] + (.. js/window -hljs (highlightAll))) + +(defn dispatch + [replicant-data hook-data] + (doseq [[command-name & args] hook-data] + (apply run-command replicant-data command-name args))) + +(replicant/set-dispatch! dispatch) (defn output-element [element-data] @@ -30,18 +49,22 @@ (add-output-element (output-element {:output-element/type :output-element.type/stdout :output-element/content content}))) -(defn repl-output [] +#_(defn repl-output [] ;; If doing this after every render isn't performant, consider using highlightjs from node, ;; rendering the output to html then sending it to this webview as a message and adding the html to the DOM ;; as it is. It would already be in the form hightlightjs needs it to be in for its CSS to apply to it. ;; ;; TODO: Test if this is performance when printing a large number of results and a large number of large results - (react/useEffect (fn [] (.. js/window -hljs (highlightAll)))) - (let [elements @output-elements] - [:pre [:code {:class "language-clojure"} ":hello"]] - #_[:div - (for [{:output-element/keys [content id]} elements] - [:p {:key id} content])])) + (react/useEffect (fn [] (.. js/window -hljs (highlightAll)))) + (let [elements @output-elements] + [:pre [:code {:class "language-clojure"} ":hello"]] + #_[:div + (for [{:output-element/keys [content id]} elements] + [:p {:key id} content])])) + +(def repl-output + [:div {:replicant/on-render [[:repl-output/highlight-code]]} + [:pre [:code {:class "language-clojure"} ":hello"]]]) (defn main [] (.. js/window @@ -57,7 +80,8 @@ (case command "show-result" (add-eval-result data) "show-stdout" (add-stdout data)))))) - (rdom.client/render (rdom.client/create-root (js/document.getElementById "output")) [:f> repl-output])) + (replicant/render el repl-output) + #_(rdom.client/render (rdom.client/create-root (js/document.getElementById "output")) [:f> repl-output])) (comment (set! *print-namespace-maps* false) From 77e87f8b1c76b1a0db197d6f452d312364c28cda Mon Sep 17 00:00:00 2001 From: Brandon Ringe <12722744+bpringe@users.noreply.github.com> Date: Sun, 5 May 2024 13:18:19 -0700 Subject: [PATCH 27/30] Fix typo --- src/cljs-lib/src/calva/repl/webview/core.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cljs-lib/src/calva/repl/webview/core.cljs b/src/cljs-lib/src/calva/repl/webview/core.cljs index 0d6da6e99..64079ab06 100644 --- a/src/cljs-lib/src/calva/repl/webview/core.cljs +++ b/src/cljs-lib/src/calva/repl/webview/core.cljs @@ -29,7 +29,7 @@ - +