diff --git a/app/src/protyle/util/insertHTML.ts b/app/src/protyle/util/insertHTML.ts index 69b703226..adc1f1c80 100644 --- a/app/src/protyle/util/insertHTML.ts +++ b/app/src/protyle/util/insertHTML.ts @@ -34,7 +34,8 @@ export const insertHTML = (html: string, protyle: IProtyle, isBlock = false, let id = blockElement.getAttribute("data-node-id"); range.insertNode(document.createElement("wbr")); let oldHTML = blockElement.outerHTML; - if (!isBlock && blockElement.getAttribute("data-type") === "NodeCodeBlock") { + if (!isBlock && + (blockElement.getAttribute("data-type") === "NodeCodeBlock" || protyle.toolbar.getCurrentType(range).includes("code"))) { range.deleteContents(); range.insertNode(document.createTextNode(html.replace(/\r\n|\r|\u2028|\u2029/g, "\n"))); range.collapse(false); diff --git a/app/src/protyle/util/paste.ts b/app/src/protyle/util/paste.ts index 183756406..84bda1c33 100644 --- a/app/src/protyle/util/paste.ts +++ b/app/src/protyle/util/paste.ts @@ -169,7 +169,8 @@ export const paste = async (protyle: IProtyle, event: (ClipboardEvent | DragEven }); const code = processPasteCode(textHTML, textPlain); const range = getEditorRange(protyle.wysiwyg.element); - if (nodeElement.getAttribute("data-type") === "NodeCodeBlock") { + if (nodeElement.getAttribute("data-type") === "NodeCodeBlock" || + protyle.toolbar.getCurrentType(range).includes("code")) { // 粘贴在代码位置 insertHTML(textPlain, protyle); return; @@ -201,25 +202,8 @@ export const paste = async (protyle: IProtyle, event: (ClipboardEvent | DragEven highlightRender(protyle.wysiwyg.element); } else if (code) { if (!code.startsWith('
"); - } else { - tempElement.insertAdjacentHTML("afterend", Constants.ZWSP + ""); - } - updateTransaction(protyle, nodeElement.getAttribute("data-node-id"), nodeElement.outerHTML, html); - focusByWbr(protyle.wysiwyg.element, range); + // 原有代码在行内元素中粘贴会嵌套 + insertHTML(code, protyle); } else { insertHTML(code, protyle, true); highlightRender(protyle.wysiwyg.element); diff --git a/app/src/protyle/util/processCode.ts b/app/src/protyle/util/processCode.ts index b78bc7442..3c2622535 100644 --- a/app/src/protyle/util/processCode.ts +++ b/app/src/protyle/util/processCode.ts @@ -33,7 +33,7 @@ export const processPasteCode = (html: string, text: string) => { if (/\n/.test(code)) { return `
${window.siyuan.storage[Constants.LOCAL_CODELANG]}
${code.replace(/&/g, "&").replace(/
${Constants.ZWSP}
`; } else { - return code; + return "`" + code + "`"; } } return false;