Как заставить мягкую переноску из режима редактора ACE?
Я пишу собственный режим для редактора ACE, чтобы он поддерживал мой шаблонный язык.
В языке есть конструкция для вставки новой строки:
foo{\n}bar
Он будет отображен с новой строкой, как показано ниже:
foo
bar
Я хотел бы подражать этому в редакторе и заставить мягкую обертку после {\n}
:
1 | foo{\n}
| bar
Есть ли способ сделать это в моем режиме?
Обновление: FWIW, вот ссылка на мой файл режима.
1 ответ
Без кода довольно сложно воспроизвести [РЕДАКТИРОВАТЬ: см. Ниже], но в соответствии с диаграммой классов вам нужно взаимодействовать с VirtualRenderer, чтобы изменить способ отображения вещей.
Требуется тема для стиля кода. (Вы можете выбрать их в редакторе на Theme
-меню). Темы css
(+js
) файлов, что открывает возможность использования этого трюка для вставки новой строки после вашего {\n}
Элемент класса.
РЕДАКТИРОВАТЬ: код был добавлен
В зависимости от положения \n
(несколько частей регулярного выражения могут совпадать), вы можете использовать
{
token: function(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
return [
"constant",
"keyword.operator",
(arg3 === '\n') ? "newline" : "variable.parameter",
"keyword.operator",
"string",
"keyword.operator",
"variable"
],
regex: /([%]?)([=]?)([^|>}]*)([|]?)([^>}]*)([>]?)([^}]*)/
}
а затем есть
.ace_newline:after {
content:"\a";
white-space: pre;
}
в вашей пользовательской теме.