Total neu für Ace-Editor dev, um einer Modendatei für Syntax-Highlighting dynamisch zusätzliche Regeln hinzuzufügen Ich mache einen Ajax-Aufruf, der eine globale Variable festlegt, die im Modus verfügbar ist Datei zu verarbeiten. HierDynamische Aktualisierung der Syntax-Hervorhebungsmodus-Regeln für den Ace-Editor
ist die Einrichtung und erste Ajax-Aufruf:
var editor = ace.edit("editor");
$.ajax({
url: "json-mode-rules.php",
dataType: "json"
}).done(function(data) {
window.myModeRules=data; // ("foo","bar","etc")
editor.getSession().setMode("ace/mode/python");
});
Die Modus-Datei gepatcht wird mit den folgenden:
// keywords has already been initialised as an array
// e.g. var keywords = ("and|as|assert...etc")
var extraRules=window.codebenderModeLibrary["myModeRules"].join("|");
keywords=(keywords[0]+"|"+ extraRules);
Wenn die Seite geladen wird initallly das Ass-Editor erhält alle Schlüsselwörter Syntax-Highlight. Das funktioniert großartig.
Das Problem ist, dass wir die Regeln ändern, wenn bestimmte Ereignisse auftreten und möchten, dass der Ace-Editor seine Syntaxregeln aktualisiert.
Das erneute Ausführen des Ajax-Aufrufs und das Aufrufen von setMode tun nichts - dies erfordert, dass js die Datei nicht erneut lädt.
Ich habe ein Problem auf GitHub ohne Beschluss noch geschrieben:
https://github.com/ajaxorg/ace/issues/1835
„Wenn Sie wirklich globale Variable behalten möchten, können Sie alles in einer Funktion wickeln können, rufen Sie diese Funktion auf Holen Sie sich den Moduskonstruktor und rufen Sie dann setMode (neuer Modus). "
Ich weiß nicht, wie man das macht und jede Hilfe würde geschätzt werden.
Jeder mit Techniken zur dynamischen Aktualisierung von Ace-Editor Syntaxhervorhebungsregeln?
Danke. Ich werde beide Methoden so schnell wie möglich überprüfen und melden. – zaf
Hinzufügen der Option mit dem Datum funktioniert. Ich werde die andere Methode überprüfen, wenn ich mehr Zeit habe. Prost. – zaf
Ist es möglich, die Schlüsselwörter in ace/mode/javascript zu ändern? – techdog