我正在编写一个模拟简单8位CPU的简单小部件。为此,我正在滥用Ace编辑器,正如你在图像的中心看到的那样,作为我的“ RAM ” - 视图。
我想突出显示与程序计数器值对应的行,我使用addMarker()
来执行此操作。
然而,一旦我设置它,我似乎无法摆脱那个标记。 _marker
是一个私有成员,它保存最后一个标记集的值。但由于某些原因removeMarker(_marker)
没有效果:
/**
*
*/
setMarker: function(position) {
//if(_marker != null) {
window.cpuRamView.session.removeMarker(_marker);
//}
_marker = new window.Range(position, 0, position, _content[position].length);
window.cpuRamView.session.addMarker(
_marker, "programCounterLocation", "fullLine"
);
}
我在这里做错了什么? :/
答案 0 :(得分:3)
添加标记会返回一个ID,而removeMarker需要该ID,因此您可以执行类似
的操作var Range = require("ace/range").Range // not the window Range!!
var _range
setMarker = function(position) {
if(_range != null) {
window.cpuRamView.session.removeMarker(_range.id);
}
_range = new Range(position, 0, position, _content[position].length);
_range.id = window.cpuRamView.session.addMarker(
_range, "programCounterLocation", "fullLine"
);
}
答案 1 :(得分:0)
if(this.marker) {
this.editor.getSession().removeMarker(this.marker);
}
this.marker = this.editor.getSession().addMarker(
new Range(prop('errorLine')(formulaError), prop('errorPosition')(formulaError), prop('errorLine')(formulaError), prop('errorPosition')(formulaError) + 5), style.errorMarker, 'text');
}