2016-09-10 2 views
0

Я ищу способ обнаружения, в котором произошли изменения.Редактор ACE: как определить, какой блок был изменен

Я пишу небольшой парсер разметки и хочу простой пользовательский интерфейс, чтобы сохранить позиции и производительность. Мне нужен только предварительный просмотр в реальном времени, чтобы обновить часть, которую я фактически меняю. Для этого мне нужно знать, какую часть в редакторе туза я изменяю.

Когда я использую событие onchange, данные события аккуратно определяют, где произошло мое изменение, в какой строке и позиции. Прежде чем я начну писать код, который ищет вверх и вниз для разрывов строк, я хотел спросить, есть ли способ API по умолчанию для возврата, который изменил блок.

Вы получите что-то вроде этого:

fs.readFile(__dirname + '/example.md', 'utf8', function(err, text) { 
    session = ace.createEditSession(text); 
    session.on('change', function(e, f) { 
     // getChangedParagraph does not exist and needs to return the 
     // actual block which changed. 
     var changedText = getChangedParagraph(); 
     parseTheText(changedText); 
    }); 
    editor.setSession(session); 
}); 

ответ

0

Там нет понятия блоков в асе. ace change events дают строку и столбец изменения, вам нужно отслеживать позиции в синтаксическом анализаторе

+0

Благодарим за ответ. Вы только пошлите изменение в парсер? Или вы можете отправить весь текст, проанализировать его и объединить ваши АСТ? Или, может быть, есть лучший способ? –

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

  • Нет связанных вопросов^_^