Ace 编辑器:无法摆脱 Marker
Ace Editor: Can't get rid of Marker
我正在编写一个模拟简单 8 位的简单小部件 CPU。为此,我滥用了 Ace Editor,正如您在图像中心看到的那样,作为我的“RAM”-view。
我想突出显示对应于程序计数器值的行,我正在使用 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"
);
}
我在这里做错了什么? :/
添加标记 returns 一个 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"
);
}
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');
}
设置一个变量marker
来接收return值,就像这样:
marker=editor.session.addMarker(range, "myMarker", "fullLine");
然后删除这个标记,像这样:
editor.session.removeMarker(marker);
我正在编写一个模拟简单 8 位的简单小部件 CPU。为此,我滥用了 Ace Editor,正如您在图像中心看到的那样,作为我的“RAM”-view。
我想突出显示对应于程序计数器值的行,我正在使用 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"
);
}
我在这里做错了什么? :/
添加标记 returns 一个 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"
);
}
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');
}
设置一个变量marker
来接收return值,就像这样:
marker=editor.session.addMarker(range, "myMarker", "fullLine");
然后删除这个标记,像这样:
editor.session.removeMarker(marker);