diff --git a/app/src/protyle/toolbar/index.ts b/app/src/protyle/toolbar/index.ts index e3a580a89..337bd64cd 100644 --- a/app/src/protyle/toolbar/index.ts +++ b/app/src/protyle/toolbar/index.ts @@ -563,7 +563,8 @@ export class Toolbar { this.range.insertNode(currentNewNode); // https://github.com/siyuan-note/siyuan/issues/6155 if (currentNewNode.nodeType !== 3 && ["code", "tag", "kbd"].includes(type)) { - if (!hasPreviousSibling(currentNewNode)) { + const previousSibling = hasPreviousSibling(currentNewNode) + if (!previousSibling || previousSibling.textContent.endsWith("\n")) { currentNewNode.before(document.createTextNode(Constants.ZWSP)); } if (!currentNewNode.textContent.startsWith(Constants.ZWSP)) { diff --git a/app/src/protyle/wysiwyg/keydown.ts b/app/src/protyle/wysiwyg/keydown.ts index d95c4457f..a7d4e4460 100644 --- a/app/src/protyle/wysiwyg/keydown.ts +++ b/app/src/protyle/wysiwyg/keydown.ts @@ -686,8 +686,18 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => { event.preventDefault(); return; } - // https://github.com/siyuan-note/siyuan/issues/5547 + // https://github.com/siyuan-note/siyuan/issues/6796 const previousSibling = hasPreviousSibling(range.startContainer) as HTMLElement; + if (range.toString() === "" && event.key === "Backspace" && + range.startOffset === range.startContainer.textContent.length && + range.startContainer.textContent.endsWith("\n"+Constants.ZWSP)) { + range.setStart(range.startContainer, range.startOffset - 1); + range.collapse(true); + event.stopPropagation(); + event.preventDefault(); + return; + } + // https://github.com/siyuan-note/siyuan/issues/5547 if (range.startOffset === 1 && range.startContainer.textContent === Constants.ZWSP && previousSibling && previousSibling.nodeType !== 3 && event.key === "Backspace" // https://github.com/siyuan-note/siyuan/issues/6786