我的网站中集成了ace编辑器。 我有一些代码,我想突出显示某些行的更改。
发现
var range = new Range(rowStart, columnStart, rowEnd, columnEnd);
var marker = editor.getSession().addMarker(range,"ace_active_line","background");
应该突出显示行,但是在创建Range对象时会出现illigal构造函数错误。有什么想法吗?
有没有办法将黄色背景添加到特定行?
由于
答案 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