Пользовательское правило выделения в редакторе ACE

Я не могу найти, как создать собственное правило подсветки синтаксиса для редактора кода ACE.

Мой редактор настроен для режима PHP следующим образом (и работает отлично);

    var phpeditor = ace.edit("php_inc");
    phpeditor.setTheme("ace/theme/dreamweaver");
    phpeditor.getSession().setMode("ace/mode/php");
    phpeditor.setOptions({
        enableBasicAutocompletion: true,
        enableSnippets: true,
        enableLiveAutocompletion: false,
    });

Я хотел бы, чтобы редактор обрабатывал все экземпляры %%variable%% (с любым текстом между знаками процента), чтобы они были выделены с помощью специального правила и обрабатывались как переменная.

Например;

<?php echo %%my_variable_name%%; ?>

Есть ли способ расширить редактор, чтобы включить эту функциональность?


person Harri Bell-Thomas    schedule 30.05.2014    source источник


Ответы (1)


Самый простой способ — изменить файл php_highlight_rules и добавить https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/php_highlight_rules.js#L900 правило

{
    token: "variable",
    regex: "%%\\w+%%"
}

вместо этого делать это динамически немного сложнее, поскольку ace не предоставляет удобного способа подключиться к созданию режима, если вам нужно это сделать, возможно, вам следует открыть вопрос на сайте ace на github.

person a user    schedule 31.05.2014
comment
Спасибо за это - подсветчик теперь распознает их, но я все равно получаю предупреждение о синтаксической ошибке. Знаете ли вы, где еще мне нужно добавить код, чтобы ACE увидел их как действительный PHP? - person Harri Bell-Thomas; 01.06.2014
comment
Вы можете добавить value = value.replace(/%%(\w+)%%/g, "$$$1") в php worker github .com/ajaxorg/ace/blob/v1.1.3/lib/ace/mode/ - person a user; 01.06.2014
comment
Сейчас я пытаюсь расширить эту функциональность на режимы редактирования Javascript и CSS. Мне удалось обновить их файлы highlight_rules, но я не могу понять, как отредактировать их рабочие файлы, чтобы символы процента принимались как допустимый синтаксис. Знаете ли вы, как этого можно добиться? - person Harri Bell-Thomas; 22.06.2014
comment
Что вы пробовали? это можно сделать так же, как и для php, вам просто нужно выбрать допустимое имя переменной github.com/ajaxorg/ace/blob/v1.1.3/lib/ace/mode/ - person a user; 23.06.2014
comment
Я попытался использовать ту же форму кода, которую вы мне дали ранее, но рабочие файлы для JS и CSS, похоже, имеют другую структуру - что (и куда) необходимо включить? (Извините, если это вопрос новичка;)) - person Harri Bell-Thomas; 28.06.2014
comment
Я уже показал вам строку, где: github.com/ajaxorg/ace/blob/v1.1.3/lib/ace/mode/, что касается того, что строка, которую вы включили для php, должна работать и для js. - person a user; 28.06.2014
comment
Спасибо! Ты обалденный! Я допустил ошибку при редактировании части $$$1 - теперь все работает отлично. - person Harri Bell-Thomas; 01.07.2014