0

我刚刚将 CodeMirror 升级到最新版本,现在以下代码中断:

        // clear previous errors from editor window
        for (var i = 0; i < layoutCodeEditor.lineCount(); i++) {
            layoutCodeEditor.clearMarker(i);
            layoutCodeEditor.setLineClass(i, null, null);
        }

        var valid = JSLINT(code);
        var jsLintError = "";
        if (!valid) {
            jsLintError = JSLINT.error_report(JSLINT.data());
            _.chain(JSLINT.errors).compact().each(function(e){
                // show markers in the code edit window against lines with Jslint errors
                layoutCodeEditor.setMarker((+e.line) - 1, "●", "errors");
                layoutCodeEditor.setLineClass(+(e.line) - 1, null, "errorLine");                    
            })
        }

似乎 setMarker/clearMarker 和 setLineClass 函数已被删除。他们现在的等价物是什么?

4

1 回答 1

5

CodeMirror 站点上的升级到版本 3页面中介绍了这些更改以及其他许多更改。

由于移动到多个装订线,标记功能发生了变化:

天沟模型

在 CodeMirror 2.x 中,只有一个装订线,使用创建的行标记setMarker必须以某种方式与行号共存(如果存在)。版本 3 允许您通过类名指定一个装订线数组,setGutterMarker用于添加或删除单个装订线中的标记,并使用 清除整个装订线clearGutter。装订线标记现在指定为 DOM 节点,而不是 HTML 片段。

装订线不再与内容一起水平滚动。删除了 fixedGutter 选项(因为它现在是唯一的行为)。

线类更改更直接:

行 CSS 类

setLineClass方法已被替换为 addLineClassand removeLineClass,它允许对附加到一行的类进行更多的模块化控制。

于 2012-12-22T23:47:22.307 回答