我正在为ACE editor编写自定义模式以支持我的玩具模板语言。
在语言中有一个嵌入换行符的构造:
foo{\n}bar
它将使用换行符呈现,如下所示:
foo
bar
我想在编辑器中模仿这个并在{\n}
之后强制换行:
1 | foo{\n}
| bar
有没有办法在我的模式下执行此操作?
更新:FWIW,这是我模式文件的link。
答案 0 :(得分:0)
没有代码,重现 [编辑:见下文] 有点困难,但根据the class diagram,您需要与VirtualRenderer进行互动以改变事物的方式显示。
代码样式需要theme。 (您可以在Theme
- 菜单中的the editor中选择这些内容。主题为css
(+ js
)个文件,可以使用this trick在{\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;
}
在自定义主题中。