highlighter, add token for the attributes

This commit is contained in:
Basile Burg 2016-04-15 02:44:17 +02:00
parent 7fd272608c
commit 24f612714d
1 changed files with 31 additions and 1 deletions

View File

@ -12,7 +12,7 @@ uses
type type
TTokenKind = (tkCommt, tkIdent, tkKeywd, tkStrng, tkBlank, tkSymbl, tkNumbr, TTokenKind = (tkCommt, tkIdent, tkKeywd, tkStrng, tkBlank, tkSymbl, tkNumbr,
tkDDocs, tkSpecK, tkError, tkAsmbl); tkDDocs, tkSpecK, tkError, tkAsmbl, tkAttri);
TRangeKind = (rkString1, rkString2, rkTokString, rkBlockCom1, rkBlockCom2, TRangeKind = (rkString1, rkString2, rkTokString, rkBlockCom1, rkBlockCom2,
rkBlockDoc1, rkBlockDoc2, rkAsm); rkBlockDoc1, rkBlockDoc2, rkAsm);
@ -54,6 +54,7 @@ type
fAsblrAttrib: TSynHighlighterAttributes; fAsblrAttrib: TSynHighlighterAttributes;
fSpeckAttrib: TSynHighlighterAttributes; fSpeckAttrib: TSynHighlighterAttributes;
fErrorAttrib: TSynHighlighterAttributes; fErrorAttrib: TSynHighlighterAttributes;
fAttriAttrib: TSynHighlighterAttributes;
fLineBuf: string; fLineBuf: string;
fTokStart, fTokStop: Integer; fTokStart, fTokStop: Integer;
fTokKind: TTokenKind; fTokKind: TTokenKind;
@ -72,6 +73,7 @@ type
procedure setAsblrAttrib(value: TSynHighlighterAttributes); procedure setAsblrAttrib(value: TSynHighlighterAttributes);
procedure setSpeckAttrib(value: TSynHighlighterAttributes); procedure setSpeckAttrib(value: TSynHighlighterAttributes);
procedure setErrorAttrib(value: TSynHighlighterAttributes); procedure setErrorAttrib(value: TSynHighlighterAttributes);
procedure setAttriAttrib(value: TSynHighlighterAttributes);
procedure doAttribChange(sender: TObject); procedure doAttribChange(sender: TObject);
procedure doChanged; procedure doChanged;
protected protected
@ -90,6 +92,7 @@ type
property inlineAsm: TSynHighlighterAttributes read fAsblrAttrib write setAsblrAttrib; property inlineAsm: TSynHighlighterAttributes read fAsblrAttrib write setAsblrAttrib;
property special: TSynHighlighterAttributes read fSpeckAttrib write setSpeckAttrib; property special: TSynHighlighterAttributes read fSpeckAttrib write setSpeckAttrib;
property errors: TSynHighlighterAttributes read fErrorAttrib write setErrorAttrib; property errors: TSynHighlighterAttributes read fErrorAttrib write setErrorAttrib;
property attributes: TSynHighlighterAttributes read fAttriAttrib write setAttriAttrib;
public public
constructor create(aOwner: TComponent); override; constructor create(aOwner: TComponent); override;
destructor destroy; override; destructor destroy; override;
@ -190,6 +193,7 @@ begin
fAsblrAttrib := TSynHighlighterAttributes.Create('Asblr','Asblr'); fAsblrAttrib := TSynHighlighterAttributes.Create('Asblr','Asblr');
fSpeckAttrib := TSynHighlighterAttributes.Create('Speck','Speck'); fSpeckAttrib := TSynHighlighterAttributes.Create('Speck','Speck');
fErrorAttrib := TSynHighlighterAttributes.Create('Error','Error'); fErrorAttrib := TSynHighlighterAttributes.Create('Error','Error');
fAttriAttrib := TSynHighlighterAttributes.Create('Attri','Attri');
fNumbrAttrib.Foreground := $000079F2; fNumbrAttrib.Foreground := $000079F2;
fSymblAttrib.Foreground := clMaroon; fSymblAttrib.Foreground := clMaroon;
@ -199,6 +203,7 @@ begin
fKeywdAttrib.Foreground := clNavy; fKeywdAttrib.Foreground := clNavy;
fAsblrAttrib.Foreground := clGray; fAsblrAttrib.Foreground := clGray;
fSpeckAttrib.Foreground := clNavy; fSpeckAttrib.Foreground := clNavy;
fAttriAttrib.Foreground := clNavy;
fDDocsAttrib.Foreground := clTeal; fDDocsAttrib.Foreground := clTeal;
@ -206,6 +211,7 @@ begin
fKeywdAttrib.Style := [fsBold]; fKeywdAttrib.Style := [fsBold];
fAsblrAttrib.Style := [fsBold]; fAsblrAttrib.Style := [fsBold];
fSpeckAttrib.Style := [fsBold]; fSpeckAttrib.Style := [fsBold];
fAttriAttrib.Style := [fsBold];
fErrorAttrib.Foreground:= fIdentAttrib.Foreground; fErrorAttrib.Foreground:= fIdentAttrib.Foreground;
fErrorAttrib.FrameStyle:= slsWaved; fErrorAttrib.FrameStyle:= slsWaved;
@ -223,6 +229,7 @@ begin
AddAttribute(fAsblrAttrib); AddAttribute(fAsblrAttrib);
AddAttribute(fSpeckAttrib); AddAttribute(fSpeckAttrib);
AddAttribute(fErrorAttrib); AddAttribute(fErrorAttrib);
AddAttribute(fAttriAttrib);
fAttribLut[TTokenKind.tkident] := fIdentAttrib; fAttribLut[TTokenKind.tkident] := fIdentAttrib;
fAttribLut[TTokenKind.tkBlank] := fWhiteAttrib; fAttribLut[TTokenKind.tkBlank] := fWhiteAttrib;
@ -235,6 +242,7 @@ begin
fAttribLut[TTokenKind.tkSpecK] := fSpeckAttrib; fAttribLut[TTokenKind.tkSpecK] := fSpeckAttrib;
fAttribLut[TTokenKind.tkError] := fErrorAttrib; fAttribLut[TTokenKind.tkError] := fErrorAttrib;
fAttribLut[TTokenKind.tkAsmbl] := fAsblrAttrib; fAttribLut[TTokenKind.tkAsmbl] := fAsblrAttrib;
fAttribLut[TTokenKind.tkAttri] := fAttriAttrib;
SetAttributesOnChange(@doAttribChange); SetAttributesOnChange(@doAttribChange);
fTokStop := 1; fTokStop := 1;
@ -343,6 +351,11 @@ begin
fErrorAttrib.Assign(value); fErrorAttrib.Assign(value);
end; end;
procedure TSynD2Syn.setAttriAttrib(value: TSynHighlighterAttributes);
begin
fAttriAttrib.Assign(value);
end;
procedure TSynD2Syn.setLine(const NewValue: string; LineNumber: Integer); procedure TSynD2Syn.setLine(const NewValue: string; LineNumber: Integer);
begin begin
inherited; inherited;
@ -881,6 +894,23 @@ begin
exit; exit;
end; end;
// attributes
if reader^ = '@' then
begin
if isAlpha(readerNext^) then
begin
fTokKind:=tkAttri;
while isAlNum(reader^) or (reader^ = '_') do
begin
if reader^= #10 then
exit;
readerNext;
end;
exit;
end else
readerPrev;
end;
// Keywords & identifiers // Keywords & identifiers
if isFirstIdentifier(reader^) then if isFirstIdentifier(reader^) then
begin begin