Actualizar dinámicamente las reglas del modo de resaltado de sintaxis para Ace Editor

Totalmente nuevo para ace editor dev, para agregar dinámicamente reglas adicionales a un archivo de modo para resaltar la sintaxis Estoy haciendo una llamada ajax que establece una variable global que está disponible dentro del archivo de modo para procesar.

Aquí está la configuración y la llamada inicial ajax:

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");
});

El archivo de modo está parcheado con lo siguiente:

// 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);

Cuando la página se carga inicialmente, el editor as obtiene todas las palabras clave para resaltar la sintaxis. Esto funciona muy bien.

El problema es que las reglas cambian cuando ocurren ciertos eventos y nos gustaría que el editor as actualice sus reglas de sintaxis.

Hacer la llamada ajax nuevamente y llamar a setMode no hace nada; esto se debe a que js no vuelve a cargar el archivo.

Todavía publiqué un problema en GitHub sin una resolución:

https://github.com/ajaxorg/ace/issues/1835

"Si realmente desea mantener la variable global, puede ajustar todo en una función, llamar a esa función para obtener el constructor de modo actualizado y luego llamar a setMode (nuevo modo)".

No sé cómo hacer eso y cualquier ayuda sería apreciada.

¿Alguien con técnicas sobre cómo actualizar dinámicamente las reglas de resaltado de sintaxis del editor Ace?

Respuestas a la pregunta(1)

Su respuesta a la pregunta