# Eigenes Syntaxhighlighting selber programmieren



## Orbit (13. Januar 2008)

Moin,
was würdet ihr vorschlagen wäre der beste Weg um eine eigenes Syntaxhighlighting zu programmieren?
Das Gerät müsste eben so wie eclipse sobald ein Wort geschrieben wurde testen, welche Farbe es bekommen soll.

Eigentlich müsste man dazu fast nen EditorPane nehmen oder?
Der jedesmal wenn ein Wort fertig wurde den text der da steht einmal durch nen Parser schiebt der dann per html-codes einfach Tags zur Farbe etc setzt....
Oder würdet ihr das noch anders machen...
Es würde eben in einer Textfile stehen welche wörter welche farbe haben sollen...

Würde das mit dem HTML- Parser soweit funktioopnieren?
Würde das Reaktionszeit brauchen, bis der nen text von ca. 50 zeilen geparst und erstezt hat?
mfg,
Orbit


----------



## Chimaira (15. Januar 2008)

Hi,

um den Text farbig zu gestallten brauchst du JEditorPane. Dieser bietet sich bestens an.

An deiner Stelle würde ich bis zu einem Zeilenumbruch ( \n oder \r) oder (da ja auch der ganze Quelltext in einer Reihe stehen kann) immer jeden Tag einzeln. 

Beispiel:
- Du hast 2 Tags:

```
<head> <title> Überschrift </title> </head>
```

Hier musst du natürlich gucken. Steht was zwischen den Tags. Erst guckst du nach Head. Wenn etwas in Head steht, hier title, dann guckst du was in Title steht bis der Tag beendet wurde. Etc ....

Bei Hochsprachen hat man ja keine wie in HTML gekennzeichneten Tags (also kein <>). Hier musst du immer gucken was nach einem Punkt kommt. 


Beispiel:
- Du hast einen Klassennamen und eine Methode: 

```
Klassenname.getUserList();
```

Hier musst du gucken was hinterm Punkt ist. Hier ist dies getUserList();. Dies kannst du nach dem Parsen meinetwegen blau färben.

Es gibt sau viele Sachen zu beachten. Was sind die gerade geschrieben Texte? Sind es Methode, Variablen, Klassennamen, Import, Includes, Geschriebenes (Texte zwischen den Tags) und und und. Wenn du das weißt kannst du dies auch Highlighten.

Ich will mich aber eigentlich nicht damit beschäftigen. Parsen von Dokumenten war noch nie mein Ding. Hoffe trotzdem das ich dir helfen konnte.

Mfg Chimaira


----------



## Orbit (15. Januar 2008)

Hallo,
danke für deine Antwort!
Ich habe es inzwischen soweit, dass ich jedesmal wenn eine Taste gedrückt wird untersuche, was ich wie taggen muss, füe also einfach tags ein und setze den text neu.
Leider passiert dabei folgendes:
Der Cursor wandert immer ganz nach hinten. Mit setCaretPosition kann ich das zwar verhindern, nur wenn ich den ganz am anfang auf 0 setze, ist er außerhaölb des Textfeldes(?), und zwar 4 stellen davor. Man muss also 4 buchstaben schreiben um ins textfeld zu kommen (Blödsinn? ich speichere den vorm parsen ab und setze ihn dann neu...)
das mit dem Highlighting läuft schon ganz gut, ich hab eben nen textdokument dass mir sagt welche wörter wie geschireben werden... ist ja ne relativ simple "Sprache" bei der es eben versch. Typen von Wörtern gibt...

Hat wer ne Idee zu dem Cursor-Problem?
Mfg,
Orbit


----------

