From adcbc37929e18f5508d84f01623ce95f724adc09 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 4 Nov 2024 23:54:08 +0800 Subject: [PATCH] :bug: Improve pasting text https://github.com/siyuan-note/siyuan/issues/13015 --- app/src/protyle/util/paste.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/protyle/util/paste.ts b/app/src/protyle/util/paste.ts index 0b0669633..d6700eefb 100644 --- a/app/src/protyle/util/paste.ts +++ b/app/src/protyle/util/paste.ts @@ -97,6 +97,9 @@ export const pasteEscaped = async (protyle: IProtyle, nodeElement: Element) => { try { // * _ [ ] ! \ ` < > & ~ { } ( ) = # $ ^ | . let clipText = await readText(); + // 删掉 text 标签,只保留文本 + clipText = clipText.replace(/(.*?)<\/span>/g, "$1"); + // https://github.com/siyuan-note/siyuan/issues/5446 // A\B\C\D\ // E @@ -175,6 +178,9 @@ export const pasteAsPlainText = async (protyle: IProtyle) => { textPlain = textPlain.replace(//g, "__@kbd@__").replace(/<\/kbd>/g, "__@/kbd@__"); textPlain = textPlain.replace(//g, "__@u@__").replace(/<\/u>/g, "__@/u@__"); + // 删掉 text 标签,只保留文本 + textPlain = textPlain.replace(/(.*?)<\/span>/g, "$1"); + // 对 HTML 标签进行内部转义,避免被 Lute 解析以后变为小写 https://github.com/siyuan-note/siyuan/issues/10620 textPlain = textPlain.replace(//g, ";;;gt;;;"); @@ -184,7 +190,22 @@ export const pasteAsPlainText = async (protyle: IProtyle) => { textPlain = textPlain.replace(/__@kbd@__/g, "").replace(/__@\/kbd@__/g, ""); textPlain = textPlain.replace(/__@u@__/g, "").replace(/__@\/u@__/g, ""); + protyle.lute.SetInlineAsterisk(true); + protyle.lute.SetGFMStrikethrough(true); + protyle.lute.SetInlineMath(true); + protyle.lute.SetSub(true); + protyle.lute.SetSup(true); + protyle.lute.SetTag(true); + protyle.lute.SetInlineUnderscore(true); const content = protyle.lute.BlockDOM2EscapeMarkerContent(protyle.lute.Md2BlockDOM(textPlain)); + protyle.lute.SetInlineAsterisk(window.siyuan.config.editor.markdown.inlineAsterisk); + protyle.lute.SetGFMStrikethrough(window.siyuan.config.editor.markdown.inlineStrikethrough); + protyle.lute.SetInlineMath(window.siyuan.config.editor.markdown.inlineMath); + protyle.lute.SetSub(window.siyuan.config.editor.markdown.inlineSub); + protyle.lute.SetSup(window.siyuan.config.editor.markdown.inlineSup); + protyle.lute.SetTag(window.siyuan.config.editor.markdown.inlineTag); + protyle.lute.SetInlineUnderscore(window.siyuan.config.editor.markdown.inlineUnderscore); + // insertHTML 会进行内部反转义 insertHTML(content, protyle, false, false, true); filterClipboardHint(protyle, textPlain);