完全是ace編輯器的新手,動態添加額外的規則到模式文件中進行語法高亮我正在做一個ajax調用,它設置了模式中可用的全局變量文件來處理。動態更新Ace編輯器的語法高亮模式規則
這裏是設置和初始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");
});
模式文件修補下列要求:
// 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);
當頁面加載initallly王牌編輯器獲取所有的關鍵字語法高亮。這很好。
問題是我們有規則在發生某些事件時發生變化,並希望ace編輯器刷新它的語法規則。
再次執行ajax調用並調用setMode什麼也不做 - 這是因爲要求js不重新加載文件。
我已經發布在GitHub上的問題沒有解決尚未:
https://github.com/ajaxorg/ace/issues/1835
「如果你真的想保持全局變量,你可以在一個功能包的一切 ,調用該函數獲取更新模式的構造函數,然後調用setMode(new Mode)。「 」
我不知道該怎麼做,任何幫助,將不勝感激。
任何人都有關於如何動態更新ace編輯器語法高亮規則的技巧?
謝謝。我會盡快檢查兩種方法並報告。 – zaf
在日期中添加選項。當我有更多時間時,我會檢查另一種方法。乾杯。 – zaf
是否有可能使用此來更改ace/mode/javascript中的關鍵字? – techdog