From 9c77d6d7e4f56bf511ceb5b9e7f289fe3c624510 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Thu, 9 Jan 2025 08:19:32 +0100 Subject: [PATCH] Fix double-space-to-period supppression on macOS Chrome FIX: Make sure macOS double-space-to-period conversions are properly suppressed. See https://discuss.codemirror.net/t/dot-being-added-when-pressing-space-repeatedly/3899/13 --- src/domobserver.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/domobserver.ts b/src/domobserver.ts index b7a8557..1e917cf 100644 --- a/src/domobserver.ts +++ b/src/domobserver.ts @@ -553,7 +553,7 @@ class EditContextManager { selectionEnd: this.toContextPos(view.state.selection.main.head) }) this.handlers.textupdate = e => { - let {anchor} = view.state.selection.main + let {anchor, head} = view.state.selection.main let from = this.toEditorPos(e.updateRangeStart), to = this.toEditorPos(e.updateRangeEnd) if (view.inputState.composing >= 0 && !this.composing) this.composing = {contextBase: e.updateRangeStart, editorBase: from, drifted: false} @@ -565,6 +565,9 @@ class EditContextManager { // Edit contexts sometimes fire empty changes if (change.from == change.to && !change.insert.length) return + if ((browser.mac || browser.android) && change.from == head - 1 && + /^\. ?$/.test(e.text) && view.contentDOM.getAttribute("autocorrect") == "off") + change = {from, to, insert: Text.of([e.text.replace(".", " ")])} this.pendingContextChange = change if (!view.state.readOnly) {