4

我的网站中集成了 ace 编辑器。我有一些代码,我想突出显示某些行中的更改。

发现

var range = new Range(rowStart, columnStart, rowEnd, columnEnd);
var marker = editor.getSession().addMarker(range,"ace_active_line","background");

应该突出显示行,但在创建 Range 对象时出现非法构造函数错误。有任何想法吗 ?

有没有办法将黄色背景添加到特定行?

谢谢

4

3 回答 3

6

问题在这里Range指向浏览器的原生范围功能,而不是 Ace 功能。所以你可能没有导入它。尝试做类似的事情:

// taken from kitchen-sink.js
var Range = require("./range").Range;
于 2012-03-26T12:48:53.493 回答
4

如果要显示更改的行,可以在装订线上做标记而不是突出显示。

var modified = 'ace-changed'; // css class
editor.on('change', function(e) {
    var activeLine = e.start.row;
    if (e.action == "insert") {
        while (activeLine < (e.end.row+1)) {
            editor.session.removeGutterDecoration(activeLine, modified);
            editor.session.addGutterDecoration(activeLine, modified);
            activeLine++;
        }
    } else if (e.action == "remove") {
        while (activeLine < (e.end.row+1)) {
            editor.session.removeGutterDecoration(activeLine, modified);
            activeLine++;
        }
        editor.session.addGutterDecoration(e.start.row, modified);
    }
});

JSFiddle:http: //jsfiddle.net/u9e31pdm/1/

截图:http ://rghost.ru/6h4kMBM5z/image.png

对不起,如果我的代码不太好 - 我两天前才开始学习 javascript。

于 2015-12-09T02:15:13.340 回答
1

如果你想用错误/警告标记行,你可以使用这个 API:

    editor.getSession().setAnnotations([{
      row: 1,
      column: 10,
      text: "Strange error"
      type: "error" // also warning and information
    }]);

详细信息在这里:https ://groups.google.com/d/msg/ace-discuss/joAFrXwWLX8/jejWFyGiMTwJ

于 2014-03-21T08:23:05.790 回答