【问题标题】:Is it possible to mix both the CodeMirror: Velocity mode and the CodeMirror: HTML mixed mode?是否可以同时使用 CodeMirror: Velocity 模式和 CodeMirror: HTML 混合模式?
【发布时间】:2012-06-06 07:22:25
【问题描述】:

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

【问题讨论】:

    标签: javascript editor codemirror


    【解决方案1】:

    我可以通过 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 = /[+\*&%=?:|]/;
    

    【讨论】:

    • 还有一点需要注意:所有使用模式的JS模块都应该被导入:import 'codemirror/mode/velocity/velocity'; import 'codemirror/mode/htmlmixed/htmlmixed'; import 'codemirror/addon/mode/overlay';.
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-22
        • 1970-01-01
        • 2016-01-04
        相关资源
        最近更新 更多