fix eval results clearing

This commit is contained in:
Bobby Towers 2023-04-15 17:22:17 -07:00
parent c9f78008e2
commit c01a55bedd
2 changed files with 89 additions and 12 deletions

View file

@ -417,3 +417,74 @@ cljuser> 
#object[sci.impl.fns$fun$arity_0__7874 0xa7f89b1 "sci.impl.fns$fun$arity_0__7874@a7f89b1"]> #object[sci.impl.fns$fun$arity_0__7874 0xa7f89b1 "sci.impl.fns$fun$arity_0__7874@a7f89b1"]>
cljuser>  cljuser> 
; : java.lang.String cannot be cast to java.util.regex.Pattern user
cljuser> 
["(def u 7)" "#'user/u\n\n(defn t []\n (map in" "c (range 8)))"]
cljuser> 
"[\"(def u 7)\" \"\\n\\n(defn t []\\n (map in\" \"c (range 8)))\"]"
cljuser> 
["(def u 7)" "#'user/u\n\n(defn t []\n (map in" "c (range 8)))"]
cljuser> 
"(def u 7) => #'user/u\n\n(defn t []\n (map in => c (range 8)))"
cljuser> 
["(def u 7)" "#'user/u\n\n(defn t []\n (map in" "c (range 8)))"]
cljuser> 
("(def u 7)" "#'user/u\n\n(defn t []\n (map in" "c (range 8)))")
cljuser> 
"#'user/u\n\n(defn t []\n (map in"
cljuser> 
["(def u 7)" "#'user/u\n\n(defn t []\n (map inc (range 8)))"]
cljuser> 
("(def u 7)" "#'user/u\n\n(defn t []\n (map inc (range 8)))")
cljuser> 
"#'user/u\n\n(defn t []\n (map inc (range 8)))"
cljuser> 
["(def u 7)" "#'user/u\n\n(defn t []\n (map inc (range 8)))"]
cljuser> 
"[\"(def u 7)\" \"\\n\\n(defn t []\\n (map inc (range 8)))\"]"
cljuser> 
["(def u 7)" "#'user/u\n\n(defn t []\n (map inc (range 8)))"]
cljuser> 
"\n\n(defn t []\n (map inc (range 8)))"
cljuser> 
" => "
cljuser> 
"\n\n(defn t []\n (map inc (range 8)))"
cljuser> 
"[\"(def u 7)\" \"\\n\\n(defn t []\\n (map inc (range 8)))\"]"
cljuser> 
["(def u 7)" "#'user/u\n\n(defn t []\n (map inc (range 8)))"]
cljuser> 
["(def u 7)" "#'user/u\n\n(defn t []\n (map inc (range 8)))"]
cljuser> 
["(def u 7)" "#'user/u\n\n(defn t []\n (map inc (range 8)))"]
cljuser> 
"\n\n(defn t []\n (map inc (range 8)))"
cljuser> 
"(def u 7)\n\n(defn t []\n (map inc (range 8)))"
cljuser> 
"(def u 7)\n\n(defn t []\n (map inc (range 8)))"
cljuser> 

View file

@ -61,16 +61,15 @@
true) true)
(defn clear-eval [] (defn clear-eval []
(when (not= "" @last-result) (let [code (some-> cm .-state .-doc str)
(reset! last-result "") cursor-pos (some-> cm .-state .-selection .-main .-head)
(let [code (-> cm result @last-result
(some-> .-state .-doc str) splits (str/split code #" => ")]
str (when (not= "" @last-result)
(str/split #" => ") (update-editor! (str (first splits) (subs (last splits) (count (str (:result result)))))
first cursor-pos)
(str @eval-tail)) (reset! last-result "")
cursor-pos (some-> cm .-state .-selection .-main .-head)] (reset! eval-tail ""))))
(update-editor! code (min cursor-pos (count code))))))
(def extension (def extension
(.of js/cv.keymap (.of js/cv.keymap
@ -85,7 +84,10 @@
{:key "ArrowRight" :run clear-eval}]))) {:key "ArrowRight" :run clear-eval}])))
(def cm (def cm
(let [doc "(map inc (range 8))"] (let [doc "(def n 7)
(defn t []
(map inc (range n)))"]
(js/cm.EditorView. #js {:doc doc (js/cm.EditorView. #js {:doc doc
:extensions #js [js/cm.basicSetup, (js/lc.clojure), (.highest js/cs.Prec extension)] :extensions #js [js/cm.basicSetup, (js/lc.clojure), (.highest js/cs.Prec extension)]
:parent (js/document.querySelector "#app")}))) :parent (js/document.querySelector "#app")})))
@ -94,6 +96,8 @@
;; what is top-level, anyway? ;; what is top-level, anyway?
(def u 7)
(defn t [] (defn t []
(map inc (range 8))) (map inc (range 8)))
@ -106,4 +110,6 @@
;; we parse until we are not enclosed in a form. ;; we parse until we are not enclosed in a form.
;; pretty simple, actually. ;; pretty simple, actually.
;; the contents of the cell are a series of forms. ;; the contents of the cell are a series of forms.
;; evaluate the last one!
;; that is, before the cursor