Ace: Hinzufügen von '.' Zeichen-Präfix-Übereinstimmung für Vervollständiger Ref- 'ace/autocomplete/util'

Erstellt am 31. Okt. 2013  ·  10Kommentare  ·  Quelle: ajaxorg/ace

Zur Überlegung,

Das Modul „ace/autocomplete/util“ in der Datei „ext-language_Tools.js“ definiert eine RegEx, die verwendet wird, um Präfixübereinstimmungen für definierte Vervollständiger zu ermitteln.

var ID_REGEX = /[a-zA-Z_0-9$-]/;
verwendet in , exports.retrievePrecedingIdentifier

Da wir einen benutzerdefinierten Vervollständiger zur Unterstützung unserer Objektstrukturen (Person.Name.First usw.) definiert haben, verursachte dies ein Problem, da ID_REGEX nicht mit dem Punktzeichen übereinstimmt. Dies kann in unserem benutzerdefinierten Vervollständiger überschrieben werden, führt jedoch dazu, dass die in ace/ext/language_tools definierten Vervollständiger unsere Übereinstimmungen mit dem gesamten Umfang des Dokuments verunreinigen.

Die Modifikation scheint trivial ...
var ID_REGEX = /[a-zA-Z_0-9$-.]/;

language_tools

Hilfreichster Kommentar

@nightwing irgendwelche Updates dazu?

Alle 10 Kommentare

Oder könnte ID_REGEX eine Option für das Modul ace/autocomplete/util sein?

Ja, es ist besser, es zu einer Option zu machen

Ich stoße auf das gleiche Problem. Ich habe versucht, einen ordentlichen Weg zu finden, um den Präfixabgleich anzupassen, aber nichts brauchbares gefunden. Gibt es eine Lösung?

Ich nahm an, dass der Tokenizer des aktuellen Modus verwendet werden würde, um das aktuelle Präfix zu bestimmen ... was dynamische Präfix-Suchregeln ermöglichen würde ... sauber? oder übersehe ich etwas? Auf diese Weise könnte ich meinen eigenen Modus erstellen (vielleicht nicht so trivial wie ich hoffe, aber es würde passen ... oder?)

Experimentelle Unterstützung dafür wurde vor einiger Zeit hinzugefügt https://github.com/ajaxorg/ace/blob/badade8f4e9d10194b1f802c57cc368e5fe90688/lib/ace/autocomplete.js#L220 , aber ich bin mir nicht sicher, ob es gut funktioniert und sich noch ändern könnte.
Die Verwendung von Tokenizer würde funktionieren, wenn Tokenizer unter diesem Gesichtspunkt geschrieben wurde, aber viele Modi funktionieren nicht, da sie allem, was nicht hervorgehoben ist, eine Textklasse zuweisen.

Dies wird hilfreich sein, ich kann nicht glauben, dass die automatische Vervollständigung ohne dies funktioniert.

@nightwing es funktioniert (unter Verwendung des ersten Elements im Ergebnisarray, um die Regex zu übergeben)

@antonpod Kannst du beschreiben, was du getan hast, damit es funktioniert? Ich habe dieses Thema vor ein paar Monaten eröffnet.

@ rsmith31415 In meinem Fall musste ich das Präfix nicht kennen, bevor ich die Ajax-Anfrage sendete. Ich musste nur die Regex so anpassen, dass sie auch mit Punkten übereinstimmt, nachdem die Schlüsselwörter abgerufen wurden.
Wie auch immer, es funktioniert nicht wie erwartet und es werden einige seltsame Übereinstimmungen angezeigt, die absolut zufällig aussehen.

@antonpod Vielen Dank für Ihre Antwort. Vielleicht kann @nightwing ein Update zur Unterstützung dieser Funktion mitteilen.

@nightwing irgendwelche Updates dazu?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen