突出显示已更改的行

时间:2012-03-19 15:19:45

标签: ace-editor

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

发现

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

应该突出显示行,但是在创建Range对象时会出现illigal构造函数错误。有什么想法吗?

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

由于

3 个答案:

答案 0 :(得分:6)

问题在于Range指向浏览器本机范围功能而不指向Ace。所以你可能没有导入它。尝试做类似的事情:

// taken from kitchen-sink.js
var Range = require("./range").Range;

答案 1 :(得分:2)

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

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。

答案 2 :(得分: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