2015-10-24 5 views
2

Я пишу простой виджет, который имитирует простой 8-битный процессор. Для этого я злоупотребляю редактором Ace, как вы можете видеть в центре изображения, как мой «RAM».Ace Editor: Не могу избавиться от Marker

enter image description here

Я хочу, чтобы выделить строку, которая соответствует значению счетчика программы, и я использую 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

закончил ли вы этот проект? Звучит как интересный. –

+1

@AdrianMoisa Ну, да, я закончил, но я не думаю, что найду проект - это было просто упражнение в университете. Тем не менее, довольно просто получить что-то вроде этого, предполагая, что вы знаете, как перевести код на байт-код и получить некоторые базовые знания об сборке или о том, как работает процессор. – displayname

ответ

3

добавить маркер возвращает идентификатор, и removeMarker требует, чтобы идентификатор, так что вы можете сделать что-то вроде

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" 
    ); 
} 
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'); 
    } 
+1

Просьба представить краткое текстовое описание, которое позволит нам понять ваш ответ сам по себе, не возвращаясь к вопросу. –

Смежные вопросы