فهرست منبع

fix: code block highlights not working

Resolved #920
Tienson Qin 5 سال پیش
والد
کامیت
fcb4a8752e
2فایلهای تغییر یافته به همراه28 افزوده شده و 23 حذف شده
  1. 22 18
      src/main/frontend/extensions/code.cljs
  2. 6 5
      src/main/frontend/handler/draw.cljs

+ 22 - 18
src/main/frontend/extensions/code.cljs

@@ -89,23 +89,25 @@
         lisp? (or clojure?
                   (contains? #{"scheme" "racket" "lisp"} mode))
         textarea (gdom/getElement id)
-        editor (when textarea
-                 (from-textarea textarea
-                                #js {:mode mode
-                                     :matchBrackets lisp?
-                                     :autoCloseBrackets true
-                                     :lineNumbers true
-                                     :extraKeys #js {"Esc" (fn [cm]
-                                                             (let [save! #(save-file-or-block-when-blur-or-esc! cm textarea config state)]
-                                                               (if-let [block-id (:block/uuid config)]
-                                                                 (let [block (db/pull [:block/uuid block-id])
-                                                                       value (.getValue cm)
-                                                                       textarea-value (gobj/get textarea "value")
-                                                                       changed? (not= value textarea-value)]
-                                                                   (if changed?
-                                                                     (save!)
-                                                                     (editor-handler/edit-block! block :max (:block/format block) block-id)))
-                                                                 (save!))))}}))]
+        editor (or
+                @(:editor-atom state)
+                (when textarea
+                  (from-textarea textarea
+                                 #js {:mode mode
+                                      :matchBrackets lisp?
+                                      :autoCloseBrackets true
+                                      :lineNumbers true
+                                      :extraKeys #js {"Esc" (fn [cm]
+                                                              (let [save! #(save-file-or-block-when-blur-or-esc! cm textarea config state)]
+                                                                (if-let [block-id (:block/uuid config)]
+                                                                  (let [block (db/pull [:block/uuid block-id])
+                                                                        value (.getValue cm)
+                                                                        textarea-value (gobj/get textarea "value")
+                                                                        changed? (not= value textarea-value)]
+                                                                    (if changed?
+                                                                      (save!)
+                                                                      (editor-handler/edit-block! block :max (:block/format block) block-id)))
+                                                                  (save!))))}})))]
     (when editor
       (let [element (.getWrapperElement editor)]
         (.on editor "blur" (fn []
@@ -139,7 +141,9 @@
                      (when editor
                        (.setValue (.getDoc editor) code))))
                  (when-let [pos-meta (:pos-meta state)]
-                   (reset! pos-meta (last (:rum/args state)))))}
+                   (reset! pos-meta (last (:rum/args state))))
+                 (load-and-render! state)
+                 state)}
   [state config id attr code pos_meta]
   [:div.extensions__code
    [:div.extensions__code-lang

+ 6 - 5
src/main/frontend/handler/draw.cljs

@@ -47,11 +47,12 @@
 ;; excalidraw
 (defn create-draws-directory!
   [repo]
-  (let [repo-dir (util/get-repo-dir repo)]
-    (util/p-handle
-     (fs/mkdir (str repo-dir (str "/" config/default-draw-directory)))
-     (fn [_result] nil)
-     (fn [_error] nil))))
+  (when repo
+    (let [repo-dir (util/get-repo-dir repo)]
+     (util/p-handle
+      (fs/mkdir (str repo-dir (str "/" config/default-draw-directory)))
+      (fn [_result] nil)
+      (fn [_error] nil)))))
 
 (defn save-excalidraw!
   [file data ok-handler]