diff --git a/app/src/menus/protyle.ts b/app/src/menus/protyle.ts index 01b9994c9..2ed8216d6 100644 --- a/app/src/menus/protyle.ts +++ b/app/src/menus/protyle.ts @@ -374,8 +374,30 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { // https://github.com/siyuan-note/siyuan/issues/5446 // A\B\C\D\ // E - // task-blog-2~default~baiduj https://github.com/siyuan-note/siyuan/issues/5523 - clipText = clipText.replace(/\\/g, "\\\\").replace(/\*/g, "\\*").replace(/\_/g, "\\_").replace(/\[/g, "\\[").replace(/\]/g, "\\]").replace(/\!/g, "\\!").replace(/\`/g, "\\`").replace(/\/g, "\\>").replace(/\&/g, "\\&").replace(/\~/g, "\\~").replace(/\{/g, "\\{").replace(/\}/g, "\\}").replace(/\(/g, "\\(").replace(/\)/g, "\\)").replace(/\=/g, "\\=").replace(/\#/g, "\\#").replace(/\$/g, "\\$").replace(/\^/g, "\\^").replace(/\|/g, "\\|"); + // task-blog-2~default~baiduj 无法原义粘贴含有 `~foo~` 的文本 https://github.com/siyuan-note/siyuan/issues/5523 + + // 这里必须多加一个反斜杆,因为 Lute 在进行 Markdown 嵌套节点转换平铺标记节点时会剔除 Backslash 节点, + // 多加入的一个反斜杆会作为文本节点保留下来,后续 Spin 时刚好用于转义标记符 https://github.com/siyuan-note/siyuan/issues/6341 + clipText = clipText.replace(/\\/g, "\\\\\\\\") + .replace(/\*/g, "\\\\\\*") + .replace(/\_/g, "\\\\\\_") + .replace(/\[/g, "\\\\\\[") + .replace(/\]/g, "\\\\\\]") + .replace(/\!/g, "\\\\\\!") + .replace(/\`/g, "\\\\\\`") + .replace(/\/g, "\\\\\\>") + .replace(/\&/g, "\\\\\\&") + .replace(/\~/g, "\\\\\\~") + .replace(/\{/g, "\\\\\\{") + .replace(/\}/g, "\\\\\\}") + .replace(/\(/g, "\\\\\\(") + .replace(/\)/g, "\\\\\\)") + .replace(/\=/g, "\\\\\\=") + .replace(/\#/g, "\\\\\\#") + .replace(/\$/g, "\\\\\\$") + .replace(/\^/g, "\\\\\\^") + .replace(/\|/g, "\\\\\\|"); pasteText(protyle, clipText, nodeElement); } catch (e) { console.log(e);