Liyuan Li 5 years ago
parent
commit
916366faaa
3 changed files with 12 additions and 2 deletions
  1. 1 0
      CHANGELOG.md
  2. 6 1
      src/ts/markdown/outlineRender.ts
  3. 5 1
      src/ts/util/fixBrowserBehavior.ts

+ 1 - 0
CHANGELOG.md

@@ -68,6 +68,7 @@
 
 ### v3.3.12 / 2020-07-xx
 
+* [587](https://github.com/Vanessa219/vditor/issues/587) IR & SV 保留 Setext 风格标题 `改进功能`
 * [626](https://github.com/Vanessa219/vditor/issues/626) 去除 Setext 标题解析开关 `开发重构`
 * [451](https://github.com/Vanessa219/vditor/issues/451) IR 模式保留 Emoji 原始输入 `改进功能`
 * 移除 `options.preview.markdown.setext`

+ 6 - 1
src/ts/markdown/outlineRender.ts

@@ -8,7 +8,12 @@ export const outlineRender = (contentElement: HTMLElement, targetElement: Elemen
             const space = new Array((headingNo - 1) * 2).fill(" ").join("");
             let text = "";
             if (vditor && vditor.currentMode === "ir") {
-                text = item.textContent.substring(headingNo + 1).trim();
+                const markerElement = item.querySelector('[data-type="heading-marker"]');
+                if (markerElement.getAttribute("data-render") === "2") {
+                    text = item.textContent.replace(markerElement.textContent, "").trim();
+                } else {
+                    text = item.textContent.substring(headingNo + 1).trim();
+                }
             } else {
                 text = item.textContent.trim();
             }

+ 5 - 1
src/ts/util/fixBrowserBehavior.ts

@@ -563,7 +563,11 @@ export const fixMarkdown = (event: KeyboardEvent, vditor: IVditor, pElement: HTM
 
         if (isHeadingMD(pElement.innerHTML)) {
             // heading 渲染
-            pElement.outerHTML = vditor.lute.SpinVditorDOM(pElement.innerHTML + '<p data-block="0"><wbr>\n</p>');
+            if (vditor.currentMode === "wysiwyg") {
+                pElement.outerHTML = vditor.lute.SpinVditorDOM(pElement.innerHTML + '<p data-block="0"><wbr>\n</p>');
+            } else {
+                pElement.outerHTML = vditor.lute.SpinVditorIRDOM(pElement.innerHTML + '<p data-block="0"><wbr>\n</p>');
+            }
             setRangeByWbr(vditor[vditor.currentMode].element, range);
             execAfterRender(vditor);
             scrollCenter(vditor);