diff --git a/src/main/frontend/db_schema.cljs b/src/main/frontend/db_schema.cljs index 77f16b8e32..51034f1548 100644 --- a/src/main/frontend/db_schema.cljs +++ b/src/main/frontend/db_schema.cljs @@ -130,5 +130,6 @@ :block/scheduled :block/deadline :block/repeated? + :block/pre-block? } ) diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 504a5b2d6f..cbc7cc7c89 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -275,17 +275,26 @@ block)) (defn- wrap-parse-block - [{:block/keys [content format] :as block}] + [{:block/keys [content format parent page] :as block}] (let [ast (mldoc/->edn (string/trim content) (mldoc/default-config format)) first-elem-type (first (ffirst ast)) properties? (= "Properties" first-elem-type) + top-level? (= parent page) markdown-heading? (and (= format :markdown) (= "Heading" first-elem-type)) heading? (= "Paragraph" first-elem-type) content (string/triml content) - content' (if (or properties? markdown-heading?) - content - (str (config/get-block-pattern format) (if heading? " " "\n") content)) + [content content'] (cond + (or properties? (and markdown-heading? top-level?)) + [content content] + + markdown-heading? + (let [content (string/replace content #"^#+\s+" "")] + [content (str (config/get-block-pattern format) " " content)]) + + :else + (let [content' (str (config/get-block-pattern format) (if heading? " " "\n") content)] + [content content'])) block (block/parse-block (assoc block :block/content content')) block (attach-page-properties-if-exists! block)] (-> block diff --git a/src/main/frontend/handler/web/nfs.cljs b/src/main/frontend/handler/web/nfs.cljs index dfe7734a0e..dfcaf28132 100644 --- a/src/main/frontend/handler/web/nfs.cljs +++ b/src/main/frontend/handler/web/nfs.cljs @@ -299,12 +299,12 @@ (defn refresh! [repo ok-handler] (if (refactored-version?) - (rebuild-index! repo ok-handler) (when repo (state/set-nfs-refreshing! true) (p/let [_ (reload-dir! repo) _ (ok-handler)] - (state/set-nfs-refreshing! false))))) + (state/set-nfs-refreshing! false))) + (rebuild-index! repo ok-handler))) (defn supported? [] diff --git a/src/main/frontend/modules/file/core.cljs b/src/main/frontend/modules/file/core.cljs index 527ec519a1..3b4bf85e04 100644 --- a/src/main/frontend/modules/file/core.cljs +++ b/src/main/frontend/modules/file/core.cljs @@ -23,10 +23,15 @@ (defn transform-content [{:block/keys [format pre-block? content unordered]} level] (let [content (or content "")] - (if (or pre-block? - (and (= format :markdown) - (re-find #"#+\s+" content))) + (cond + pre-block? + (str (string/trim content) "\n") + + (and (= format :markdown) + (re-find #"#+\s+" content)) (string/trim content) + + :else (let [[prefix spaces-tabs] (cond (= format :org) diff --git a/yarn.lock b/yarn.lock index 62582f6bfc..2b574e45d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3853,10 +3853,10 @@ mkdirp@^0.5.4, mkdirp@~0.5.1: dependencies: minimist "^1.2.5" -mldoc@0.6.13: - version "0.6.13" - resolved "https://registry.yarnpkg.com/mldoc/-/mldoc-0.6.13.tgz#bb8cba40ec512717e06e9dd4a668f4a05d479503" - integrity sha512-Vllx8zxUNB/M2FQJYHyuJ0096JOPhl1idAimp65Fk/vmMkG4DlMC/VWKCtaReHx8lOZ1uGFobkHMlvJOuyOsAA== +mldoc@0.6.14: + version "0.6.14" + resolved "https://registry.yarnpkg.com/mldoc/-/mldoc-0.6.14.tgz#de6728555ef0dd2a48e172e781ccc7c3a50e6954" + integrity sha512-w/diYIaI/oMBKmrH6/UkC4MXchQo/G+u02SQ1VvyqcDBtjsBcXi6nY0l0LTFDHn3Yaq3FbiNLgSq37RBD3MY6g== dependencies: yargs "^12.0.2"