是否可以混合使用CodeMirror:Velocity模式和CodeMirror:HTML混合模式?

时间:2012-06-06 07:22:25

标签: javascript editor codemirror

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

3 个答案:

答案 0 :(得分:2)

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

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

然后在编辑器中将mode选项设置为" velocityOverlay"你完成了。

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

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

var isOperatorChar = /[+\*&%=?:|]/;

答案 1 :(得分:1)

如果您要使用特定字符串来切换模式,则可以使用mode-multiplexer获取某个位置。但看起来Velocity需要更先进的东西。所以你必须编写自己的超级模式,类似于htmlmixed模式所做的,它可以在模式之间智能切换。

答案 2 :(得分:0)

我认为你不能混合CodeMirror: Velocity modeCodeMirror: HTML mixed mode. 模式是以特定方式执行操作的方式。你怎么能混淆两种模式?我不认为有可能。