Während die Emoji-Vervollständigung nicht funktioniert, wenn Sie einen Doppelpunkt hinter einen Buchstaben setzen, werden Emojis angeboten, wenn Sie dasselbe nach einem Satzzeichen tun (wie _ - : ; . , ). Aber wenn Sie die Vervollständigung verwenden, wird das Emoji am Anfang eingefügt, ersetzt den ersten Buchstaben und nicht an der Stelle, an der Sie gerade tippen.
Ich habe es zuerst im Chat bemerkt, aber der Themenkomponist verhält sich genauso.
Ich weiß nicht, ob das ein iOS-Problem ist. Es ist definitiv nicht auf iOS beschränkt, da ich kein iOS-Gerät besitze.
Die neueste Reproduktion ist auf meinem Android-Tablet mit Firefox. (Ich habe gerade überprüft, es ist dasselbe in Chrome)
Basierend auf dem Dateinamen, der Uhrzeit des Berichts und der Tatsache, dass im OP keine Bildschirmtastatur vorhanden ist, war dies wahrscheinlich Edge unter Windows 10.
Ich bin nur hier, um dieses Problem zu melden @Moin
mit iPadOS 18.7.1 und Safari, falls das hilft @sam
Ich sehe auch ein weiteres Problem: Wenn ich Text markiere, um ihn auf dem iPad zu zitieren, wird das Discourse-„Zitat“-Popup jetzt hinter dem iOS-„Kopieren/Einfügen“-Menü versteckt, sodass man nie darauf klicken kann. Ich werde versuchen, die Schritte zur Reproduktion herauszufinden und sie später in der Woche separat zu melden (es sei denn, jemand ist schneller). Ich erwähne es hier, da es möglicherweise zusammenhängt, da beide Probleme erst diese Woche aufgetreten sind.
Dann bin ich mir nicht sicher, ob Ihr Problem dasselbe ist wie meines. Das Verrutschen des Emojis nach einem Satzzeichen tritt nun seit 1,5 Jahren auf.
diff --git a/frontend/discourse/app/modifiers/d-autocomplete.js b/frontend/discourse/app/modifiers/d-autocomplete.js
index e49fc0ec53..33fb51a1f4 100644
--- a/frontend/discourse/app/modifiers/d-autocomplete.js
+++ b/frontend/discourse/app/modifiers/d-autocomplete.js
@@ -599,10 +599,19 @@ export default class DAutocompleteModifier extends Modifier {
prev = this.getValue()[caretPos - 1];
const shouldTrigger = await this.shouldTrigger({ backSpace });
- if (
- shouldTrigger &&
- (prev === undefined || this.ALLOWED_LETTERS_REGEXP.test(prev))
- ) {
+ // Für Emoji-Autocomplete (key === ':') verwenden wir eine permissivere Prüfung, die gängige Satzzeichen wie Komma, Punkt usw. einschließt, die vor Emojis stehen können.
+ let isAllowed;
+ if (this.options.key === ":") {
+ // Übereinstimmung mit denselben Zeichen, die im onKeyUp-Regex des Emoji-Autocompletes zulässig sind
+ isAllowed =
+ prev === undefined || /[\\s.?,@/#!%\u0026*;:\\[\\]{}=\\-_()+]/.test(prev);
+ } else {
+ isAllowed =
+ prev === undefined || this.ALLOWED_LETTERS_REGEXP.test(prev);
+ }
+
+ if (shouldTrigger && isAllowed) {
start = caretPos;
term = this.getValue().substring(caretPos + 1, initialCaretPos);
end = caretPos + term.length;
@kelv Ich bin nicht sehr vertraut damit, wie sich dieser Code entwickelt hat, vielleicht kommt Ihnen etwas davon bekannt vor, was Sie kürzlich portiert haben?
Es hat nichts mit dem Portieren zu tun, ich habe es auf einer älteren Instanz (3.5.0.beta8-dev) mit deaktivierter neuer floatkit-basierter Autovervollständigung reproduziert. Es scheint ein Fehler bei der Positionierung des Cursors zu sein, der schon seit einiger Zeit besteht. Ich werde trotzdem nach einer richtigen Lösung suchen, aber es sollte kein Hindernis für die vollständige Entfernung der alten Autovervollständigungsbibliothek sein.
Ich habe gerade eine ganze Chatnachricht verloren, nachdem ich ein Emoji hinzugefügt habe.
Ich habe die Nachricht getippt, den Doppelpunkt und zwei Buchstaben getippt, um Vorschläge zu erhalten, auf “Mehr” und ein Emoji geklickt, und dann war die gesamte Nachricht weg. Ist das ein anderer Fehler oder damit zusammenhängend? Bisher konnte ich es im Composer nicht reproduzieren, nur im Chat. Und nur auf meinem Laptop, nicht auf meinem Tablet.
Ja, es ist der Fehler bei der Grenzenerkennung. Wir sind uns nicht sicher, wo Emojis beginnen und enden können.
Das knifflige hierbei ist, dass die gesamte Logik falsch sein könnte. Ich frage mich, warum sie diese Art von Entscheidung überhaupt treffen muss, da sie genau weiß, wo sich der Cursor befindet und wie viele Buchstaben wir an die Emoji-Autovervollständigung übergeben haben. Vielleicht einfach N Zeichen zurückgehen und dann ersetzen… bin mir nicht sicher.