Markdown Syntax Highlighting in GtkTextBuffer

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
senft
User
Beiträge: 25
Registriert: Montag 31. März 2008, 14:47

Hallo.
Ich poste das mal hier im Allgemeinen weil es nicht direkt was mit dem GtkTextBuffer zu tun hat.
Ich versuche zur Zeit ein Markdown Syntax Highlighting zu implementieren. Es läuft soweit auch wunderbar, nur nicht sehr performant. Genauer: An sich ist es (denke ich) performant genug, nur mache ich es derzeit so, dass wenn der Text geändert wird, der gesamte Buffer neu "gehiglightet" wird.
Meine Frage ist jetzt, ob ich mich bei dem Re-Highlighten irgendwie auf einen bestimmten Textabschnitt, ausgehend vom Änderungsort, beschränken kann.
Meine Klasse zum Highlighten sieht so aus: http://paste.pocoo.org/show/7T3sPJQ7UO9vqRO0eySB/
Was ich gerne ändern würde, wären die `_on_insert_text` undn die `_on_delete_range`. In den beiden Methoden rufe ich die _update_markdown() (ohne Argument, d.h. Re-Highlighte den ganzen Buffer) auf. Ich würde aber gerne _update_markdown() mit start und end Parametern aufrufen.
Das große Problem hierbei sind verschachtelte Tags. Folgendes ist z.b. erlaubt:


Lorem ipsum dolor sit **amet, consetetur sadipscing elitr, *sed diam nonumy** eirmod tempor* invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.


Wenn ich also z.b. zunächst folgendes habe:


Lorem ipsum dolor sit **amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.


Im nächsten "Schritt" habe ich


Lorem ipsum dolor sit **amet, consetetur sadipscing elitr, *sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.


Dann:
Lorem ipsum dolor sit **amet, consetetur sadipscing elitr, *sed diam nonumy** eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.


Da ich eben u.U. teilweise Tags entfernen muss, weiß ich nicht so recht, ob ich mich überhaupt auf bestimmte Textstellen beschränken kann.

Ich hoffe es ist einigermaßen rübergekommen worum es mir geht.
Grüße

edit: Bitte auch Kritik am Code. Mache noch nicht so lange *ernsthaft* Python.
senft
User
Beiträge: 25
Registriert: Montag 31. März 2008, 14:47

niemand?
Antworten