Javascript 如何从定制的ACE编辑器模式强制软包装?

Javascript 如何从定制的ACE编辑器模式强制软包装?,javascript,ace-editor,Javascript,Ace Editor,我正在为编写一个自定义模式,以支持我的玩具模板语言 在该语言中,有一个用于嵌入换行符的构造: foo{\n}bar 它将以换行符呈现,如下所示: foo bar 我想在编辑器中模仿这一点,并在{\n}之后强制进行软包装: 1 | foo{\n} | bar 在我的模式下有没有办法做到这一点 更新:FWIW,这是我的模式文件的一个链接。没有代码,复制[编辑:见下文]有点困难,但根据,您需要与交互以改变显示方式 代码需要一个样式。(您可以在主题-菜单中选择这些选项)。主题是css(++js

我正在为编写一个自定义模式,以支持我的玩具模板语言

在该语言中,有一个用于嵌入换行符的构造:

foo{\n}bar
它将以换行符呈现,如下所示:

foo
bar
我想在编辑器中模仿这一点,并在
{\n}
之后强制进行软包装:

1 | foo{\n}
  | bar
在我的模式下有没有办法做到这一点


更新:FWIW,这是我的模式文件的一个链接。

没有代码,复制[编辑:见下文]有点困难,但根据,您需要与交互以改变显示方式

代码需要一个样式。(您可以在
主题
-菜单中选择这些选项)。主题是
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;
}

在您的自定义主题中。

谢谢您的回答。您的类图链接似乎已断开。我考虑过CSS方法,但我不确定它是否会破坏ACE的其他逻辑。不过我得试试。注:另请参见: