From 9f61999ac98e72b66effd4307f3138aaa67fc9a0 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Mon, 13 Nov 2023 16:11:42 +0100 Subject: [PATCH 1/3] eval-region [skip ci] --- package.json | 9 +- .../clojure_mode/extensions/eval_region.cljc | 9 +- test/nextjournal/clojure_mode_tests.cljc | 1 + yarn.lock | 236 +----------------- 4 files changed, 15 insertions(+), 240 deletions(-) rename src/nextjournal/clojure_mode/extensions/eval_region.cljs => src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc (95%) diff --git a/package.json b/package.json index 07649032..464f35b9 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,8 @@ -{ "name": "@nextjournal/clojure-mode", - "files": ["dist"], +{ + "name": "@nextjournal/clojure-mode", + "files": [ + "dist" + ], "version": "0.2.0", "license": "EPL-2.0", "repository": { @@ -20,7 +23,7 @@ "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0", "@nextjournal/lezer-clojure": "1.0.0", - "squint-cljs": "0.3.36", + "squint-cljs": "link:../squint", "w3c-keyname": "^2.2.4" }, "comments": { diff --git a/src/nextjournal/clojure_mode/extensions/eval_region.cljs b/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc similarity index 95% rename from src/nextjournal/clojure_mode/extensions/eval_region.cljs rename to src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc index a952ae7c..2ac3815a 100644 --- a/src/nextjournal/clojure_mode/extensions/eval_region.cljs +++ b/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc @@ -3,10 +3,11 @@ ["@codemirror/state" :as state :refer [StateEffect StateField]] ["@codemirror/view" :as view :refer [EditorView Decoration keymap]] ["w3c-keyname" :refer [keyName]] - [applied-science.js-interop :as j] + #?@(:squint [] :cljs [[applied-science.js-interop :as j]]) [nextjournal.clojure-mode.util :as u] [nextjournal.clojure-mode.node :as n] - [clojure.string :as str])) + [clojure.string :as str]) + #?(:squint (:require-macros [applied-science.js-interop :as j]))) (defn uppermost-edge-here "Returns node or its highest ancestor that starts or ends at the cursor position." @@ -55,7 +56,7 @@ (defn get-modifier-field [^js state] (.field state modifier-field)) -(j/defn set-modifier-field! [^:js {:as view :keys [dispatch state]} value] +(j/defn set-modifier-field! [^:js {:as _view :keys [dispatch]} value] (dispatch #js{:effects (.of modifier-effect value) :userEvent "evalregion"})) @@ -118,7 +119,7 @@ (when (not= prev next) (set-modifier-field! view next)) false)) - handle-backspace (j/fn [^:js {:as view :keys [state dispatch]}] + handle-backspace (j/fn [^:js {:as _view :keys [state dispatch]}] (j/let [^:js {:keys [from to]} (current-range state)] (when (not= from to) (dispatch (j/lit {:changes {:from from :to to :insert ""} diff --git a/test/nextjournal/clojure_mode_tests.cljc b/test/nextjournal/clojure_mode_tests.cljc index b5ad414b..a35c1257 100644 --- a/test/nextjournal/clojure_mode_tests.cljc +++ b/test/nextjournal/clojure_mode_tests.cljc @@ -4,6 +4,7 @@ [nextjournal.clojure-mode :as cm-clojure] [nextjournal.clojure-mode.test-utils :as test-utils] [nextjournal.clojure-mode.extensions.close-brackets :as close-brackets] + [nextjournal.clojure-mode.extensions.eval-region :as eval-region] [nextjournal.clojure-mode.commands :as commands] [nextjournal.clojure-mode.extensions.formatting :as format] #?@(:squint [] diff --git a/yarn.lock b/yarn.lock index 3c2627ca..7358fd92 100644 --- a/yarn.lock +++ b/yarn.lock @@ -246,18 +246,6 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - "@lezer/common@^1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@lezer/common/-/common-1.0.0.tgz" @@ -328,33 +316,6 @@ dependencies: "@lezer/lr" "^1.0.0" -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -385,11 +346,6 @@ assert@^1.1.1: object-assign "^4.1.1" util "0.10.3" -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - base64-js@^1.0.2: version "1.3.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz" @@ -410,13 +366,6 @@ bn.js@^5.1.1: resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz" integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -532,18 +481,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - commander@^2.19.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" @@ -600,15 +537,6 @@ crelt@^1.0.5: resolved "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz" integrity sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA== -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" @@ -653,11 +581,6 @@ domain-browser@^1.1.1: resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - elliptic@^6.0.0, elliptic@^6.5.2: version "6.5.4" resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" @@ -676,16 +599,6 @@ emoji-regex@^10.0.0: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.1.0.tgz" integrity sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg== -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - entities@~2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz" @@ -739,14 +652,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - framer-motion@^6.2.8: version "6.3.16" resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-6.3.16.tgz" @@ -779,17 +684,6 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@^10.3.10: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - hash-base@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" @@ -858,11 +752,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -885,15 +774,6 @@ isexe@^2.0.0: resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -920,11 +800,6 @@ loose-envify@^1.1.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" - integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== - markdown-it-block-image@0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/markdown-it-block-image/-/markdown-it-block-image-0.0.3.tgz" @@ -987,18 +862,6 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - nanoid@^3.3.6: version "3.3.6" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" @@ -1070,19 +933,6 @@ path-browserify@0.0.1: resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - pbkdf2@^3.0.3: version "3.1.1" resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz" @@ -1304,23 +1154,6 @@ shadow-cljs@2.19.5: which "^1.3.1" ws "^7.4.6" -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" @@ -1338,13 +1171,9 @@ source-map@^0.5.6: resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -squint-cljs@0.3.36: - version "0.3.36" - resolved "https://registry.yarnpkg.com/squint-cljs/-/squint-cljs-0.3.36.tgz#ac319675963f8fecc04d3e8708c1dee53ef3f96d" - integrity sha512-z9nJY3aGlWZdUwT7VP+6c4rbtVjOBzVaDhPeIiGQ7bhhfb4I/z1KCN43DZvIFos8AGVN2v9FC8jL8NiBLlDJnw== - dependencies: - chokidar "^3.5.3" - glob "^10.3.10" +"squint-cljs@link:../squint": + version "0.0.0" + uid "" stream-browserify@^2.0.1: version "2.0.2" @@ -1365,25 +1194,6 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: - name string-width-cjs - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" @@ -1398,21 +1208,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - style-mod@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz" @@ -1515,31 +1310,6 @@ which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - ws@^7.4.6: version "7.5.8" resolved "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz" From ff4dcde936dc1f987bc1e1082db40fdd088972cd Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Wed, 15 Nov 2023 10:48:55 +0100 Subject: [PATCH 2/3] wip [skip ci] --- .gitignore | 1 + .../clojure_mode/extensions/eval_region.cljc | 2 ++ .../nextjournal/clojure_mode/test_utils.cljc | 5 ++++ src-squint/applied_science/js_interop.cljc | 2 +- test/nextjournal/clojure_mode_tests.cljc | 24 +++++++++++++++---- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 6050c1fa..3403d0a8 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ public/test out dist **/.DS_Store +.nrepl-port diff --git a/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc b/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc index 2ac3815a..ac1bf038 100644 --- a/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc +++ b/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc @@ -26,6 +26,7 @@ (defn node-at-cursor ([state] (node-at-cursor state (j/get (main-selection state) :from))) ([^js state from] + (prn :?state (some? state)) (some->> (n/nearest-touching state from -1) (#(when (or (n/terminal-type? (n/type %)) (<= (n/start %) from) @@ -46,6 +47,7 @@ ;; Modifier field (defonce modifier-effect (.define StateEffect)) + (defonce modifier-field (.define StateField (j/lit {:create (constantly {}) diff --git a/src-shared/nextjournal/clojure_mode/test_utils.cljc b/src-shared/nextjournal/clojure_mode/test_utils.cljc index 554842cb..629e9260 100644 --- a/src-shared/nextjournal/clojure_mode/test_utils.cljc +++ b/src-shared/nextjournal/clojure_mode/test_utils.cljc @@ -31,6 +31,7 @@ (j/push! extensions))}))) (defn state-str [^js state] + (js/console.log "state!!" (some? state)) (let [doc (str (.-doc state))] (->> (.. state -selection -ranges) reverse @@ -58,6 +59,10 @@ {:pre [(array? extensions) (fn? cmd) (string? doc)]} + (js/console.log "cmd" cmd) (let [state (make-state extensions doc) tr (cmd state)] + (js/console.log "tr" tr) + (js/console.log "sSTTTTTTTT" (.-state tr)) + (js/console.log "!!!!!!!" (if tr (.-state tr) state)) (state-str (if tr (.-state tr) state)))) diff --git a/src-squint/applied_science/js_interop.cljc b/src-squint/applied_science/js_interop.cljc index f5dd8e26..a01c8bbd 100644 --- a/src-squint/applied_science/js_interop.cljc +++ b/src-squint/applied_science/js_interop.cljc @@ -16,7 +16,7 @@ `(clojure.core/let ~@body)) (defmacro call-in [obj path & fs] - `(.. ~obj ~@(map #(symbol (str "-" %)) path) ~@(map list fs))) + `(.. ~obj ~@(map #(symbol (str "-" (name %))) path) ~@(map list fs))) (defmacro call [obj f] (list (symbol (str "." f)) obj)) diff --git a/test/nextjournal/clojure_mode_tests.cljc b/test/nextjournal/clojure_mode_tests.cljc index a35c1257..1ad0929b 100644 --- a/test/nextjournal/clojure_mode_tests.cljc +++ b/test/nextjournal/clojure_mode_tests.cljc @@ -13,15 +13,28 @@ #?(:squint (:require-macros [nextjournal.clojure-mode-tests.macros :refer [deftest are testing]]))) (def extensions - cm-clojure/default-extensions + (.concat cm-clojure/default-extensions #js [(eval-region/extension {:modified "Meta"})]) ;; optionally test with live grammar - #_ - #js[(cm-clojure/syntax live-grammar/parser) + #_#js[(cm-clojure/syntax live-grammar/parser) (.slice cm-clojure/default-extensions 1)]) (def apply-f (partial test-utils/apply-f extensions)) (def apply-cmd (partial test-utils/apply-cmd extensions)) +(js/console.log (test-utils/apply-f (.concat cm-clojure/default-extensions + #js [(eval-region/extension {:modified "Meta"})]) + (commands/nav 1) "[[|]]")) + +(js/console.log :ffff eval-region/cursor-node-string) + +(js/console.log (test-utils/apply-f + (.concat cm-clojure/default-extensions + #js [(eval-region/extension {:modified "Meta"})]) + eval-region/cursor-node-string + "[(+ 1 2 3)|]")) + +(js/process.exit 0) + #?(:squint nil :cljs (def apply-embedded-f (partial test-utils/apply-f #js [livedoc/markdown-language-support]))) @@ -323,4 +336,7 @@ "(()|)" "(()\n |)" "(a |b)" "(a\n |b)" "(a b|c)" "(a b\n |c)" - ))) + )) + + (deftest eval-region-test + )) From be48bbb8f2871e0cb96d3dc37edcb420a9e08a82 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Mon, 20 Nov 2023 14:28:43 +0100 Subject: [PATCH 3/3] wip [skip ci] --- .../nextjournal/clojure_mode/extensions/eval_region.cljc | 2 +- src-shared/nextjournal/clojure_mode/test_utils.cljc | 6 +++--- test/nextjournal/clojure_mode_tests.cljc | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc b/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc index ac1bf038..c765114c 100644 --- a/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc +++ b/src-shared/nextjournal/clojure_mode/extensions/eval_region.cljc @@ -26,7 +26,7 @@ (defn node-at-cursor ([state] (node-at-cursor state (j/get (main-selection state) :from))) ([^js state from] - (prn :?state (some? state)) + #_(prn :?state (some? state)) (some->> (n/nearest-touching state from -1) (#(when (or (n/terminal-type? (n/type %)) (<= (n/start %) from) diff --git a/src-shared/nextjournal/clojure_mode/test_utils.cljc b/src-shared/nextjournal/clojure_mode/test_utils.cljc index 629e9260..feadf7d4 100644 --- a/src-shared/nextjournal/clojure_mode/test_utils.cljc +++ b/src-shared/nextjournal/clojure_mode/test_utils.cljc @@ -31,7 +31,7 @@ (j/push! extensions))}))) (defn state-str [^js state] - (js/console.log "state!!" (some? state)) + #_(js/console.log "state!!" (some? state)) (let [doc (str (.-doc state))] (->> (.. state -selection -ranges) reverse @@ -59,10 +59,10 @@ {:pre [(array? extensions) (fn? cmd) (string? doc)]} - (js/console.log "cmd" cmd) + #_(js/console.log "cmd" cmd) (let [state (make-state extensions doc) tr (cmd state)] - (js/console.log "tr" tr) + #_#_#_(js/console.log "tr" tr) (js/console.log "sSTTTTTTTT" (.-state tr)) (js/console.log "!!!!!!!" (if tr (.-state tr) state)) (state-str (if tr (.-state tr) state)))) diff --git a/test/nextjournal/clojure_mode_tests.cljc b/test/nextjournal/clojure_mode_tests.cljc index 1ad0929b..4bf60931 100644 --- a/test/nextjournal/clojure_mode_tests.cljc +++ b/test/nextjournal/clojure_mode_tests.cljc @@ -21,7 +21,7 @@ (def apply-f (partial test-utils/apply-f extensions)) (def apply-cmd (partial test-utils/apply-cmd extensions)) -(js/console.log (test-utils/apply-f (.concat cm-clojure/default-extensions +#_#_#_#_(js/console.log (test-utils/apply-f (.concat cm-clojure/default-extensions #js [(eval-region/extension {:modified "Meta"})]) (commands/nav 1) "[[|]]")) @@ -340,3 +340,4 @@ (deftest eval-region-test )) +(prn :fini)