added grey colorization to asm ranges

This commit is contained in:
Basile Burg 2014-08-10 05:34:10 +02:00
parent 1d6322cb9e
commit e7328535b6
2 changed files with 29 additions and 8 deletions

View File

@ -482,7 +482,7 @@ var
procedure tryAdd; procedure tryAdd;
begin begin
if sr.Attr and faDirectory <> faDirectory then if sr.Attr and faDirectory <> faDirectory then
aList.Add(aPath + sr.Name); aList.Add(aPath+ directorySeparator + sr.Name);
end; end;
begin begin
if findFirst(aPath + directorySeparator + '*', faAnyFile, sr) = 0 then if findFirst(aPath + directorySeparator + '*', faAnyFile, sr) = 0 then

View File

@ -81,7 +81,7 @@ type
{$ENDIF} {$ENDIF}
{$ENDIF} {$ENDIF}
TTokenKind = (tkCommt, tkIdent, tkKeywd, tkStrng, tkBlank, tkSymbl, tkNumbr, tkCurrI, tkDDocs); TTokenKind = (tkCommt, tkIdent, tkKeywd, tkStrng, tkBlank, tkSymbl, tkNumbr, tkCurrI, tkDDocs, tkAsblr);
TRangeKind = (rkNone, rkString1, rkString2, rkTokString, rkBlockCom1, rkBlockCom2, rkBlockDoc1, rkBlockDoc2, rkAsm); TRangeKind = (rkNone, rkString1, rkString2, rkTokString, rkBlockCom1, rkBlockCom2, rkBlockDoc1, rkBlockDoc2, rkAsm);
@ -99,6 +99,7 @@ type
fKeywdAttrib: TSynHighlighterAttributes; fKeywdAttrib: TSynHighlighterAttributes;
fCurrIAttrib: TSynHighlighterAttributes; fCurrIAttrib: TSynHighlighterAttributes;
fDDocsAttrib: TSynHighlighterAttributes; fDDocsAttrib: TSynHighlighterAttributes;
fAsblrAttrib: TSynHighlighterAttributes;
fKeyWords: TD2Dictionary; fKeyWords: TD2Dictionary;
fCurrIdent: string; fCurrIdent: string;
fLineBuf: string; fLineBuf: string;
@ -122,6 +123,7 @@ type
procedure setKeywdAttrib(aValue: TSynHighlighterAttributes); procedure setKeywdAttrib(aValue: TSynHighlighterAttributes);
procedure setCurrIAttrib(aValue: TSynHighlighterAttributes); procedure setCurrIAttrib(aValue: TSynHighlighterAttributes);
procedure setDDocsAttrib(aValue: TSynHighlighterAttributes); procedure setDDocsAttrib(aValue: TSynHighlighterAttributes);
procedure setAsblrAttrib(aValue: TSynHighlighterAttributes);
procedure doAttribChange(sender: TObject); procedure doAttribChange(sender: TObject);
procedure setCurrIdent(const aValue: string); procedure setCurrIdent(const aValue: string);
procedure doChanged; procedure doChanged;
@ -137,6 +139,7 @@ type
property KeywdAttrib: TSynHighlighterAttributes read fKeywdAttrib write setKeywdAttrib; property KeywdAttrib: TSynHighlighterAttributes read fKeywdAttrib write setKeywdAttrib;
property CurrIAttrib: TSynHighlighterAttributes read fCurrIAttrib write setCurrIAttrib; property CurrIAttrib: TSynHighlighterAttributes read fCurrIAttrib write setCurrIAttrib;
property DDocsAttrib: TSynHighlighterAttributes read fDDocsAttrib write setDDocsAttrib; property DDocsAttrib: TSynHighlighterAttributes read fDDocsAttrib write setDDocsAttrib;
property AsblrAttrib: TSynHighlighterAttributes read fAsblrAttrib write setAsblrAttrib;
public public
constructor create(aOwner: TComponent); override; constructor create(aOwner: TComponent); override;
destructor destroy; override; destructor destroy; override;
@ -291,6 +294,7 @@ begin
fKeywdAttrib := TSynHighlighterAttributes.Create('Keyword','Keyword'); fKeywdAttrib := TSynHighlighterAttributes.Create('Keyword','Keyword');
fCurrIAttrib := TSynHighlighterAttributes.Create('CurrentIdentifier','CurrentIdentifier'); fCurrIAttrib := TSynHighlighterAttributes.Create('CurrentIdentifier','CurrentIdentifier');
fDDocsAttrib := TSynHighlighterAttributes.Create('DDoc','DDoc'); fDDocsAttrib := TSynHighlighterAttributes.Create('DDoc','DDoc');
fAsblrAttrib := TSynHighlighterAttributes.Create('Asm','Asm');
fNumbrAttrib.Foreground := $000079F2; fNumbrAttrib.Foreground := $000079F2;
fSymblAttrib.Foreground := clMaroon; fSymblAttrib.Foreground := clMaroon;
@ -298,6 +302,7 @@ begin
fCommtAttrib.Foreground := clGreen; fCommtAttrib.Foreground := clGreen;
fStrngAttrib.Foreground := clBlue; fStrngAttrib.Foreground := clBlue;
fKeywdAttrib.Foreground := clNavy; fKeywdAttrib.Foreground := clNavy;
fAsblrAttrib.Foreground := clGray;
fCurrIAttrib.Foreground := clBlack; fCurrIAttrib.Foreground := clBlack;
fCurrIAttrib.FrameEdges := sfeAround; fCurrIAttrib.FrameEdges := sfeAround;
@ -308,6 +313,7 @@ begin
fCommtAttrib.Style := [fsItalic]; fCommtAttrib.Style := [fsItalic];
fKeywdAttrib.Style := [fsBold]; fKeywdAttrib.Style := [fsBold];
fAsblrAttrib.Style := [fsBold];
AddAttribute(fWhiteAttrib); AddAttribute(fWhiteAttrib);
AddAttribute(fNumbrAttrib); AddAttribute(fNumbrAttrib);
@ -318,6 +324,7 @@ begin
AddAttribute(fKeywdAttrib); AddAttribute(fKeywdAttrib);
AddAttribute(fCurrIAttrib); AddAttribute(fCurrIAttrib);
AddAttribute(fDDocsAttrib); AddAttribute(fDDocsAttrib);
AddAttribute(fAsblrAttrib);
fAttribLut[TTokenKind.tkident] := fIdentAttrib; fAttribLut[TTokenKind.tkident] := fIdentAttrib;
fAttribLut[TTokenKind.tkBlank] := fWhiteAttrib; fAttribLut[TTokenKind.tkBlank] := fWhiteAttrib;
@ -328,6 +335,7 @@ begin
fAttribLut[TTokenKind.tksymbl] := fSymblAttrib; fAttribLut[TTokenKind.tksymbl] := fSymblAttrib;
fAttribLut[TTokenKind.tkCurrI] := fCurrIAttrib; fAttribLut[TTokenKind.tkCurrI] := fCurrIAttrib;
fAttribLut[TTokenKind.tkDDocs] := fDDocsAttrib; fAttribLut[TTokenKind.tkDDocs] := fDDocsAttrib;
fAttribLut[TTokenKind.tkAsblr] := fAsblrAttrib;
SetAttributesOnChange(@doAttribChange); SetAttributesOnChange(@doAttribChange);
fTokStop := 1; fTokStop := 1;
@ -406,6 +414,12 @@ begin
fDDocsAttrib.Assign(aValue); fDDocsAttrib.Assign(aValue);
end; end;
procedure TSynD2Syn.setAsblrAttrib(aValue: TSynHighlighterAttributes);
begin
fAsblrAttrib.Assign(aValue);
end;
procedure TSynD2Syn.setCurrIdent(const aValue: string); procedure TSynD2Syn.setCurrIdent(const aValue: string);
begin begin
if aValue = '' then exit; if aValue = '' then exit;
@ -447,11 +461,9 @@ begin
end; end;
//TODO-crange: asm range. //TODO-cnumber literals: stricter, separate parser for each form (bin,dec,hex,float,etc)
//TODO-cnumber literals: stricter.
//TODO-cnumber literals: binary.
//TODO-cstring literals: delimited strings. //TODO-cstring literals: delimited strings.
//TODO-ccomments: correct nested comments handling. //TODO-ccomments: correct nested comments handling (inc/dec)
//TODO-cfeature: something like pascal {$region} : /*folder blabla*/ /*endfolder*/ //TODO-cfeature: something like pascal {$region} : /*folder blabla*/ /*endfolder*/
{$BOOLEVAL ON} {$BOOLEVAL ON}
@ -758,7 +770,7 @@ begin
fTokKind := tkSymbl; fTokKind := tkSymbl;
if (fkBrackets in fFoldKinds) then case readCurr of if (fkBrackets in fFoldKinds) then case readCurr of
'{': StartCodeFoldBlock(nil); '{': StartCodeFoldBlock(nil);
'}': EndCodeFoldBlock; '}': begin EndCodeFoldBlock; if (readCurr = '}')and (fRange = rkAsm) then fRange := rkNone;end;
end; end;
readNext; readNext;
exit; exit;
@ -811,6 +823,12 @@ begin
else else
if fLineBuf[FTokStart..fTokStop-1] = fCurrIdent then if fLineBuf[FTokStart..fTokStop-1] = fCurrIdent then
fTokKind := tkCurrI; fTokKind := tkCurrI;
//check asm range
if fLineBuf[FTokStart..fTokStop-1] = 'asm' then
fRange := rkAsm;
exit; exit;
end; end;
@ -828,7 +846,10 @@ end;
function TSynD2Syn.GetTokenAttribute: TSynHighlighterAttributes; function TSynD2Syn.GetTokenAttribute: TSynHighlighterAttributes;
begin begin
result := fAttribLut[fTokKind]; if (fRange = rkAsm) and (fTokKind <> tkSymbl) and (fTokKind <> tkKeywd) then
result := fAttribLut[tkAsblr]
else
result := fAttribLut[fTokKind];
end; end;
{$WARNINGS OFF} {$HINTS OFF} {$WARNINGS OFF} {$HINTS OFF}