enhance(ux): escape to exit the code type block

This commit is contained in:
charlie
2024-09-30 17:25:05 +08:00
parent 9e88068a3a
commit 5745701ef9
3 changed files with 24 additions and 9 deletions

View File

@@ -154,6 +154,11 @@
;; export CodeMirror to global scope
(set! js/window -CodeMirror CodeMirror)
(defn- block-render-type-is-code?
[block]
(some-> block :logseq.property.node/display-type
(= :code)))
(defn- all-tokens-by-cursor
"All tokens from the beginning of the document to the cursor(inclusive)."
[cm]
@@ -387,12 +392,17 @@
mode)))))
(defn- save-editor!
[config]
[^js cm config]
(p/do!
(code-handler/save-code-editor!)
(when-let [block-id (:block/uuid config)]
(let [block (db/entity [:block/uuid block-id])]
(editor-handler/edit-block! block :max)))))
(if (block-render-type-is-code? block)
(let [block-node (some-> cm (.getTextArea) (.closest ".ls-block"))]
;; select block
(util/schedule #(.focus (aget js/window "root-container")))
(state/exit-editing-and-set-selected-blocks! [block-node]))
(editor-handler/edit-block! block :max))))))
(defn ^:large-vars/cleanup-todo render!
[state]
@@ -428,7 +438,7 @@
:extraKeys (merge {"Esc" (fn [cm]
;; Avoid reentrancy
(gobj/set cm "escPressed" true)
(save-editor! config))}
(save-editor! cm config))}
(when config-edit?
{"':'" complete-after
"Ctrl-Space" "autocomplete"}))}
@@ -503,15 +513,15 @@
nil)
shifted?
(case key-code
;; create new block
"Enter"
(do
(util/stop e)
(when-let [blockid (some-> (.-target e) (.closest "[blockid]") (.getAttribute "blockid"))]
(code-handler/save-code-editor!)
(js/setTimeout
#(editor-handler/api-insert-new-block! ""
{:block-uuid (uuid blockid)
:sibling? true}) 32)))
(util/schedule #(editor-handler/api-insert-new-block! ""
{:block-uuid (uuid blockid)
:sibling? true}))))
nil)))))
(.addEventListener element "pointerdown"
(fn [e]