10

有没有人为 codemirror 制作了“htmlmixed”+“Velocity”模式?或者任何人都可以建议如何实现这一目标?

4

3 回答 3

3

我可以使用 overlay.js 插件轻松实现这一点:

CodeMirror.defineMode("velocityOverlay", function(config, parserConfig) {
  return CodeMirror.overlayMode(CodeMirror.getMode(config, "htmlmixed"), CodeMirror.getMode(config, "velocity"));
});

然后在编辑器中将模式选项设置为“velocityOverlay”,你就完成了。

但是,速度模式会将 <、> 等字符突出显示为您可能不想要的速度运算符,因为它会使您的 html 高亮看起来难看。为了解决这个问题,我更改了velocity.js 中的以下代码行:

var isOperatorChar = /[+\-*&%=<>!?:\/|]/;

var isOperatorChar = /[+\*&%=?:|]/;
于 2014-10-13T09:01:14.673 回答
1

如果您想使用特定的字符串来打开模式,您可能可以使用mode-multiplexer到达某个地方。但看起来 Velocity 需要更高级的东西。所以你必须编写自己的超级模式,类似于 htmlmixed 模式所做的,它可以智能地在模式之间切换。

于 2012-12-11T09:05:53.913 回答
0

我认为您不能同时使用CodeMirror: Velocity 模式CodeMirror: HTML 混合模式。 模式是以特定方式做事的方式。你怎么能把两种模式混在一起?我不认为有可能。

于 2012-12-08T06:36:41.130 回答