【发布时间】:2012-06-06 07:22:25
【问题描述】:
有没有人为 codemirror 制作了 'htmlmixed' + 'Velocity' 模式?或者任何人都可以建议如何实现这一目标?
【问题讨论】:
标签: javascript editor codemirror
有没有人为 codemirror 制作了 'htmlmixed' + 'Velocity' 模式?或者任何人都可以建议如何实现这一目标?
【问题讨论】:
标签: javascript editor codemirror
我可以通过 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 = /[+\*&%=?:|]/;
【讨论】:
import 'codemirror/mode/velocity/velocity'; import 'codemirror/mode/htmlmixed/htmlmixed'; import 'codemirror/addon/mode/overlay';.
如果您想使用特定的字符串来打开模式,您可以使用mode-multiplexer 到达某个地方。但看起来 Velocity 需要更高级的东西。所以你必须编写自己的超级模式,类似于 htmlmixed 模式所做的,它可以智能地在模式之间切换。
【讨论】:
我认为你不能同时使用CodeMirror: Velocity mode 和CodeMirror: HTML mixed mode. 模式是以特定方式做事的方式。你怎么能把两种模式混在一起?我不认为有可能。
【讨论】: