Code-Folding

Hallo Experten,

ich möchte mit D7 einen Skriptsprachen-Editor schreiben, der des code-folding mächtig ist. Einen Editor mit ziemlich viel Schnickschnak und Syntax-Highlightning habe ich schon. Mit dem folding bin ich am überlegen, wie ich das wohl am besten implementieren kann, so dass auch sehr große Dateien schnell bearbeitet werden können und der Editor nicht allsoviel unnötigen Speicher belegt. Ich habe hin und her überlegt, aber eine überzeugende Idee ist mir noch nicht gekommen. Ach ja, einen Parser hat das Teil natürlich schon. Der Text wird dabei zerlegt in Tokens, denen auch eine Bedeutung beigemessen wird (Funktionsdefinition, Variable, Funktionsaufruf, Struktur [wie IF, WHILE usw.], Zahl, Text, Kommentar, Block usw.). Ich kann also Blöcke erkennen, und es würde reichen, Blöcke, die über mehrere Zeilen gehen, zu „folden“. Ist es da zB. besser, ein Array of Pointer zu haben, welches Zeilenweise Informationen zum Folding speichert (also das Array hat immer so viele Elemente wie der Text Zeilen hat, wobei die meisten NIL sind) oder eine verkettete Liste mit diesen Informationen plus der Zeilennummer, auf die sich die Informationen zum folding beziehen, oder gibt es da ganz andere Herangehensweisen?

Habt ihr eine Idee, wie man das am geschicktesten anstellt? Vielleicht kennt ihr auch einen frei erhältlichen Editor (mit Source zum reingucken und abgucken natürlich!), der sowas kann.

LG
Jochen

PS: Ich weiß, es gibt solche Editoren schon, aber ich will ihn nicht als eigenständigen Editor, sondern als integralen Bestandteil eines selbstentwickelten IDE für eine Skriptsprache.

Hallo Experten,

ich möchte mit D7 einen Skriptsprachen-Editor schreiben, der
des code-folding mächtig ist. …

Hallo,

nur zur Klarstellung: Folding ist meiner Meinung nach eine reine Anzeigefunktion, der Sourcetext muss immer voll zur Verfügung stehen, z.B. zum Suchen. Es wird also nur ein Block von Zeilen am Bildschirm ausgeblendet.

Gruss Reinhard

Hallo,

nur zur Klarstellung: Folding ist meiner Meinung nach eine
reine Anzeigefunktion, der Sourcetext muss immer voll zur
Verfügung stehen, z.B. zum Suchen. Es wird also nur ein Block
von Zeilen am Bildschirm ausgeblendet.

Ja, klar. Mir ging es um eine geschickte Implementation (zB.: wie speichere ich die Informationen über faltbare Blöcke und darüber, welche Zeilen gerade sichtbar sind und welche nicht; das Verfahren soll möglichst wenig Speicher beanspruchen und sehr schnell sein). Ich hatte gehofft, hier treibt sich jemand rum, der etwas Erfahrung damit hat und mir gute Tipps geben kann, bevor ich lange in Sackgassen laufe.

LG
Jochen

wie speichere ich die Informationen über faltbare Blöcke

Hallo Jochen,

über „faltbar“ würde ich mir nicht so viele Gedanken machen, ich würde das dem User überlassen - wenn er Zeile 105 bis 221 wegfaltet, ok, ob das sinnvoll ist und z.B. der Body einer Routine, ist seine Sache. Also mit der Maus in die 1. Zeile klicken, nach unten fahren, loslassen - weg ist der Text.

Gruss Reinhard

Ich antworte jetzt mal als User, weil ich selbst kaum
Ratschläge bezüglich des Programmierens geben kann.
Auf jedenfall muss ich Reinhard recht geben, ich nutze Kate
(KDE - Editor), der eben das Zusammenschieben von Code
unterstütz, leider kommt dabei oftmals Unsinn raus, sodass statt
einer einzelnen Funktion der gesamte restliche Quelltext verschwindet.

Gruß Zorki

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]