2016-09-10 6 views
0

Ich bin auf der Suche nach einer Möglichkeit zu erkennen, in welchem ​​Block meine Änderung aufgetreten ist.ACE-Editor: Wie erkennt man, welcher Block geändert wurde

Ich schreibe einen kleinen Markdown-Parser und möchte eine einfache Benutzeroberfläche, um Positionen und Leistung zu halten Ich möchte nur die Live-Vorschau aktualisieren den Teil, den ich tatsächlich ändern. Damit dies funktioniert, muss ich wissen, welchen Teil des Ass-Editors ich modifiziere.

Wenn ich das Ereignis onchange verwende, geben die Ereignisdaten genau an, wo meine Änderung stattgefunden hat, welche Linie und Position. Bevor ich Code schreibe, der nach Zeilenumbrüchen sucht, wollte ich fragen, ob es einen Standardweg in der API gibt, der den geänderten Block zurückgibt. so etwas wie dieses

Sie erhalten:

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); 
}); 

Antwort

0

Es gibt kein Konzept von Blöcken in As. ace change Ereignisse geben Zeile und Spalte der Änderung, Sie müssen die Positionen im Parser verfolgen

+0

Vielen Dank für die Antwort. Würden Sie die Änderung nur an den Parser schicken? Oder würden Sie den gesamten Text senden, analysieren und Ihre AST zusammenführen? Oder vielleicht gibt es einen besseren Weg? –

Verwandte Themen