🐛 Paste escaped text is not handled correctly Fix https://github.com/siyuan-note/siyuan/issues/9787

This commit is contained in:
Daniel 2023-11-30 10:51:27 +08:00
parent a1827d1f50
commit c5576284cb
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -26,27 +26,27 @@ export const pasteEscaped = async (protyle: IProtyle, nodeElement: Element) => {
// 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, "\\\\\\^")
.replace(/\|/g, "\\\\\\|");
// 多加入的一个反斜杆会作为文本节点保留下来,后续 Spin 时刚好用于转义标记符
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, "\\^")
.replace(/\|/g, "\\|");
pasteText(protyle, clipText, nodeElement);
} catch (e) {
console.log(e);