Browse Source

fix(diff-merge): org mode handling

Andelf 2 years ago
parent
commit
f5c95dee6d
1 changed files with 11 additions and 6 deletions
  1. 11 6
      src/main/frontend/fs/diff_merge.cljs

+ 11 - 6
src/main/frontend/fs/diff_merge.cljs

@@ -119,9 +119,11 @@
          ops-fn (fn [ops]
                   (map (fn [[op {:keys [body level]}]]
                          (when (or (= op 0) (= op 1)) ;; equal or insert
-                           (prepend-block-lines (heading-prefix-fn level)
-                                                (level-prefix-fn level)
-                                                body)))
+                           (if (= format :org)
+                             (str (apply str (repeat level "*")) " " body)
+                             (prepend-block-lines (heading-prefix-fn level)
+                                                  (level-prefix-fn level)
+                                                  body))))
                        ops))]
     (->> diffs
          (mapcat ops-fn)
@@ -133,13 +135,16 @@
   (let [->ast (fn [text] (if (= format :org)
                            (gp-mldoc/->edn text (gp-mldoc/default-config :org))
                            (gp-mldoc/->edn text (gp-mldoc/default-config :markdown))))
+        options (if (= format :org)
+                  {:block-pattern "*"}
+                  {:block-pattern "-"})
         merger (Merger.)
         base-ast (->ast base)
-        base-diffblocks (ast->diff-blocks base-ast base format {:block-pattern "-"})
+        base-diffblocks (ast->diff-blocks base-ast base format options)
         income-ast (->ast income)
-        income-diffblocks (ast->diff-blocks income-ast income format {:block-pattern "-"})
+        income-diffblocks (ast->diff-blocks income-ast income format options)
         current-ast (->ast current)
-        current-diffblocks (ast->diff-blocks current-ast current format {:block-pattern "-"})
+        current-diffblocks (ast->diff-blocks current-ast current format options)
         branch-diffblocks [income-diffblocks current-diffblocks]
         merged (.mergeBlocks merger (bean/->js base-diffblocks) (bean/->js branch-diffblocks))
         merged-diff (bean/->clj merged)