SynEdit Highlight Full Line

Rund um die LCL und andere Komponenten
Antworten
Knittel
Beiträge: 12
Registriert: Sa 26. Mär 2016, 14:43

SynEdit Highlight Full Line

Beitrag von Knittel »

Hallo zusammen,

ich habe mir einen Syntax Highlighter (TSynCustomHighlighter) für die SynEdit Komponente geschrieben. Das funktioniert auch alles super, dank den
examples die Lazarus selbst dafür mitliefert. Ich hätte momentan nur noch gerne ein extra feature, wo ich noch nicht rausgefunden habe, ob das
funktioniert.
Ich würde gerne, wenn ein Token in einer Zeile existiert, dass dann die ganze Zeile einen besonderen (z.B. grau) Hintergrund bekommt, oder zumindestens die
Leerzeichen am Ende der Zeile.
Grund: Ein Skript was ich highlighten möchte sieht ungefähr so aus:

Code: Alles auswählen

bla bla
\wait()
text text
\wait()
\anycommand()
blub blub

Die Waits trennen effektiv Abschnitte in dem Skript. Daher hätte ich gerne die komplette Zeile mit dem \wait() grau hinterlegt, damit man auf einen Blick sieht aus
wie viel Blöcken das Script besteht und wo diese anfangen/aufhören.

Ist das möglich und wenn ja wie?

Vielen Dank schonmal im Vorraus! :)

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: SynEdit Highlight Full Line

Beitrag von martin_frb »

Was genau ist die Frage?

1) Den Bereich hinter der Zeile highlighten?
2) Die Token fuer \, wait, () modifizieren?

1:
HL.GetEol() // return true, and then
HL.GetEndOfLineAttribute()

Siehe auch TLazSynDisplayBuffer.GetNextHighlighterToken in synedittextbuffer.pp

2: Siehe Pascal Highlighter TSynPasSyn.GetTokenAttribute

Code: Alles auswählen

  if FTokenIsCaseLabel and (GetTokenID in [tkIdentifier, tkKey, tkNumber, tkString])
  then begin
    FCurCaseLabelAttri.Assign(Result);
    FCurCaseLabelAttri.Merge(FCaseLabelAttri);
    Result := FCurCaseLabelAttri;
  end;
 

Beachte welche variable welche Klasse hat.

Knittel
Beiträge: 12
Registriert: Sa 26. Mär 2016, 14:43

Re: SynEdit Highlight Full Line

Beitrag von Knittel »

Was genau ist die Frage?

Die Frage 1. Es geht um die gesamte Zeile, also Zeichen + unsichtbare Leerzeichen bis nach ganz rechts.

1:
HL.GetEol() // return true, and then
HL.GetEndOfLineAttribute()
Siehe auch TLazSynDisplayBuffer.GetNextHighlighterToken in synedittextbuffer.pp


Das ist das was ich gesucht habe. Danke! Funktioniert bei mir zwar noch nicht, aber das sollte ich selber noch hinbekommen. 8)

Antworten