IDE: color settings for "plain text" and "none"

This commit is contained in:
Martin 2023-06-18 10:24:32 +02:00
parent 77365e62a1
commit ac18b36c00
3 changed files with 138 additions and 18 deletions

View File

@ -399,6 +399,28 @@ type
property ColorSchemeGroupAtPos[Index: Integer]: TColorScheme read GetColorSchemeGroupAtPos; property ColorSchemeGroupAtPos[Index: Integer]: TColorScheme read GetColorSchemeGroupAtPos;
end; end;
{ TIDESynTextSyn }
TIDESynTextSyn = class(TSynCustomHighlighter)
private
FLineText: String;
// fTextAttri: TSynHighlighterAttributes;
FPos: Integer;
protected
procedure SetLine(const NewValue: String; LineNumber: Integer); override;
function GetDefaultAttribute(Index: integer): TSynHighlighterAttributes; override;
public
class function GetLanguageName: string; override;
constructor Create(AOwner: TComponent); override;
function GetEol: Boolean; override;
function GetToken: string; override;
procedure GetTokenEx(out TokenStart: PChar; out TokenLength: integer); override;
function GetTokenAttribute: TSynHighlighterAttributes; override;
function GetTokenPos: Integer; override;
procedure Next; override;
end;
type type
TEditorOptionsDividerInfo = record TEditorOptionsDividerInfo = record
@ -695,7 +717,7 @@ const
LazSyntaxHighlighterClasses: array[TLazSyntaxHighlighter] of LazSyntaxHighlighterClasses: array[TLazSyntaxHighlighter] of
TCustomSynClass = TCustomSynClass =
(nil, nil, TIDESynFreePasSyn, TIDESynPasSyn, TSynLFMSyn, TSynXMLSyn, (nil, TIDESynTextSyn, TIDESynFreePasSyn, TIDESynPasSyn, TSynLFMSyn, TSynXMLSyn,
TSynHTMLSyn, TSynCPPSyn, TSynPerlSyn, TSynJavaSyn, TSynUNIXShellScriptSyn, TSynHTMLSyn, TSynCPPSyn, TSynPerlSyn, TSynJavaSyn, TSynUNIXShellScriptSyn,
TSynPythonSyn, TSynPHPSyn, TSynSQLSyn,TSynCssSyn, TSynJScriptSyn, TSynDiffSyn, TSynPythonSyn, TSynPHPSyn, TSynSQLSyn,TSynCssSyn, TSynJScriptSyn, TSynDiffSyn,
TSynBatSyn, TSynIniSyn, TSynPoSyn, TSynPikeSyn); TSynBatSyn, TSynIniSyn, TSynPoSyn, TSynPikeSyn);
@ -3405,6 +3427,23 @@ begin
end; end;
Add(NewInfo); Add(NewInfo);
// create info for text
NewInfo := TEditOptLanguageInfo.Create;
NewInfo.TheType := lshText;
NewInfo.DefaultCommentType := DefaultCommentTypes[NewInfo.TheType];
NewInfo.SynClass := LazSyntaxHighlighterClasses[NewInfo.TheType];
NewInfo.SetBothFilextensions('txt');
NewInfo.SampleSource := 'Text in the source editor.'+#13#10+
'Example line 2'+#13#10+
'Example line 3'+#13#10+
'Example line 4'+#13#10;
with NewInfo do
begin
AddAttrSampleLines[ahaTextBlock] := 12;
MappedAttributes := TStringList.Create;
CaretXY := Point(1,1);
end;
Add(NewInfo);
end; end;
destructor TEditOptLangList.Destroy; destructor TEditOptLangList.Destroy;
@ -5804,11 +5843,20 @@ end;
procedure TEditorOptions.SetMarkupColors(aSynEd: TSynEdit); procedure TEditorOptions.SetMarkupColors(aSynEd: TSynEdit);
var var
Scheme: TColorSchemeLanguage; Scheme: TColorSchemeLanguage;
TmpHl: TIDESynTextSyn;
begin begin
// Find current color scheme for default colors // Find current color scheme for default colors
if (aSynEd.Highlighter = nil) then begin if (aSynEd.Highlighter = nil) then begin
TmpHl := TIDESynTextSyn.Create(nil);
Scheme := GetColorSchemeLanguage(TmpHl);
if Assigned(Scheme) then begin
Scheme.ApplyTo(aSynEd);
end
else begin
aSynEd.Color := clWhite; aSynEd.Color := clWhite;
aSynEd.Font.Color := clBlack; aSynEd.Font.Color := clBlack;
end;
TmpHl.Free;
exit; exit;
end; end;
// get current colorscheme: // get current colorscheme:
@ -6113,7 +6161,9 @@ end;
function TEditorOptions.CreateSyn(LazSynHilighter: TLazSyntaxHighlighter): TSrcIDEHighlighter; function TEditorOptions.CreateSyn(LazSynHilighter: TLazSyntaxHighlighter): TSrcIDEHighlighter;
begin begin
if LazSyntaxHighlighterClasses[LazSynHilighter] <> Nil then if (LazSyntaxHighlighterClasses[LazSynHilighter] <> Nil) and
not (LazSyntaxHighlighterClasses[LazSynHilighter] = TIDESynTextSyn)
then
begin begin
Result := LazSyntaxHighlighterClasses[LazSynHilighter].Create(Nil); Result := LazSyntaxHighlighterClasses[LazSynHilighter].Create(Nil);
GetHighlighterSettings(Result); GetHighlighterSettings(Result);
@ -7192,6 +7242,64 @@ begin
end; end;
end; end;
{ TIDESynTextSyn }
procedure TIDESynTextSyn.SetLine(const NewValue: String; LineNumber: Integer);
begin
inherited SetLine(NewValue, LineNumber);
FLineText := NewValue;
FPos := 0;
end;
function TIDESynTextSyn.GetDefaultAttribute(Index: integer
): TSynHighlighterAttributes;
begin
Result := nil;
end;
class function TIDESynTextSyn.GetLanguageName: string;
begin
Result := 'Plain Text';
end;
constructor TIDESynTextSyn.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
fDefaultFilter := '';
end;
function TIDESynTextSyn.GetEol: Boolean;
begin
Result := FPos > 0;
end;
function TIDESynTextSyn.GetToken: string;
begin
Result := FLineText;
end;
procedure TIDESynTextSyn.GetTokenEx(out TokenStart: PChar; out
TokenLength: integer);
begin
TokenStart := PChar(FLineText);
TokenLength := Length(FLineText);
end;
function TIDESynTextSyn.GetTokenAttribute: TSynHighlighterAttributes;
begin
Result := nil;
end;
function TIDESynTextSyn.GetTokenPos: Integer;
begin
Result := 0;
end;
procedure TIDESynTextSyn.Next;
begin
inc(FPos);
end;
{ TQuickStringlist } { TQuickStringlist }
function TQuickStringlist.DoCompareText(const s1, s2: string): PtrInt; function TQuickStringlist.DoCompareText(const s1, s2: string): PtrInt;

View File

@ -60,7 +60,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object ToolButton3: TToolButton object ToolButton3: TToolButton
Left = 107 Left = 107
Height = 22 Height = 8
Top = 0 Top = 0
Caption = 'ToolButton3' Caption = 'ToolButton3'
Style = tbsSeparator Style = tbsSeparator
@ -125,6 +125,10 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
inherited MarkupFoldColorUseDefaultCheckBox: TCheckBox inherited MarkupFoldColorUseDefaultCheckBox: TCheckBox
AnchorSideLeft.Control = SynColorAttrEditor1 AnchorSideLeft.Control = SynColorAttrEditor1
end end
inherited lblInfo: TLabel
AnchorSideLeft.Control = SynColorAttrEditor1
AnchorSideRight.Control = SynColorAttrEditor1
end
end end
object PriorityEditor: TPanel object PriorityEditor: TPanel
AnchorSideLeft.Control = pnlElementAttributes AnchorSideLeft.Control = pnlElementAttributes
@ -173,6 +177,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
ShowButtons = False ShowButtons = False
ShowLines = False ShowLines = False
ShowRoot = False ShowRoot = False
ShowSeparators = False
SortType = stData SortType = stData
TabOrder = 0 TabOrder = 0
OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem
@ -255,6 +260,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
ShowButtons = False ShowButtons = False
ShowLines = False ShowLines = False
ShowRoot = False ShowRoot = False
ShowSeparators = False
SortType = stData SortType = stData
TabOrder = 0 TabOrder = 0
OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem
@ -337,6 +343,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
ShowButtons = False ShowButtons = False
ShowLines = False ShowLines = False
ShowRoot = False ShowRoot = False
ShowSeparators = False
SortType = stData SortType = stData
TabOrder = 0 TabOrder = 0
OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem
@ -419,6 +426,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
ShowButtons = False ShowButtons = False
ShowLines = False ShowLines = False
ShowRoot = False ShowRoot = False
ShowSeparators = False
SortType = stData SortType = stData
TabOrder = 0 TabOrder = 0
OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem
@ -569,6 +577,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
ScrollBars = ssAutoBoth ScrollBars = ssAutoBoth
ShowButtons = False ShowButtons = False
ShowRoot = False ShowRoot = False
ShowSeparators = False
TabOrder = 0 TabOrder = 0
OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem OnAdvancedCustomDrawItem = ColorElementTreeAdvancedCustomDrawItem
OnChange = ColorElementTreeChange OnChange = ColorElementTreeChange
@ -601,7 +610,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
TabStop = False TabStop = False
OnMouseUp = ColorPreviewMouseUp OnMouseUp = ColorPreviewMouseUp
BookMarkOptions.Xoffset = 30 BookMarkOptions.Xoffset = 30
Gutter.Width = 59 Gutter.Width = 61
Gutter.MouseActions = < Gutter.MouseActions = <
item item
ClickCount = ccAny ClickCount = ccAny
@ -1041,7 +1050,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
MouseActions = <> MouseActions = <>
end end
object TSynGutterLineNumber object TSynGutterLineNumber
Width = 19 Width = 21
MouseActions = <> MouseActions = <>
MarkupInfo.Background = clBtnFace MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone MarkupInfo.Foreground = clNone
@ -1143,7 +1152,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object ToolButton2: TToolButton object ToolButton2: TToolButton
Left = 24 Left = 24
Height = 22 Height = 5
Top = 0 Top = 0
Caption = 'ToolButton2' Caption = 'ToolButton2'
Style = tbsDivider Style = tbsDivider
@ -1182,7 +1191,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object ToolButton5: TToolButton object ToolButton5: TToolButton
Left = 234 Left = 234
Height = 22 Height = 5
Top = 0 Top = 0
Caption = 'ToolButton5' Caption = 'ToolButton5'
Style = tbsDivider Style = tbsDivider
@ -1202,15 +1211,15 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
DefaultExt = '.xml' DefaultExt = '.xml'
Filter = 'xml|*.xml' Filter = 'xml|*.xml'
Options = [ofOverwritePrompt, ofPathMustExist, ofEnableSizing, ofViewDetail] Options = [ofOverwritePrompt, ofPathMustExist, ofEnableSizing, ofViewDetail]
left = 568 Left = 568
top = 56 Top = 56
end end
object LanguageMenu: TPopupMenu object LanguageMenu: TPopupMenu
left = 568 Left = 568
top = 104 Top = 104
end end
object ColorSchemeMenu: TPopupMenu object ColorSchemeMenu: TPopupMenu
left = 568 Left = 568
top = 160 Top = 160
end end
end end

View File

@ -1155,7 +1155,7 @@ begin
// Create Groups // Create Groups
if not FIsEditingDefaults then if not FIsEditingDefaults then
ColorElementTree.Items.Add(nil, FCurrentHighlighter.LanguageName) ColorElementTree.Items.Add(nil, FCurrentHighlighter.LanguageName + ' ')
else else
ColorElementTree.Items.Add(nil, AdditionalHighlightGroupNames[agnDefault]); ColorElementTree.Items.Add(nil, AdditionalHighlightGroupNames[agnDefault]);
for j := low(TAhaGroupName) to high(TAhaGroupName) do for j := low(TAhaGroupName) to high(TAhaGroupName) do
@ -1175,11 +1175,14 @@ begin
ParentName := AdditionalHighlightGroupNames[agnDefault] ParentName := AdditionalHighlightGroupNames[agnDefault]
else else
ParentName := FCurrentHighlighter.LanguageName; ParentName := FCurrentHighlighter.LanguageName;
ParentNode := ColorElementTree.Items.GetFirstNode;
end; end;
else else
begin
ParentName := AdditionalHighlightGroupNames[Attr.Group]; ParentName := AdditionalHighlightGroupNames[Attr.Group];
end;
ParentNode := ColorElementTree.Items.FindTopLvlNode(ParentName); ParentNode := ColorElementTree.Items.FindTopLvlNode(ParentName);
end;
end;
if ParentNode = nil then if ParentNode = nil then
ParentNode := ColorElementTree.Items.Add(nil, ParentName); ParentNode := ColorElementTree.Items.Add(nil, ParentName);
NewNode := ColorElementTree.Items.AddChild(ParentNode, COLOR_NODE_PREFIX + Attr.Caption^); NewNode := ColorElementTree.Items.AddChild(ParentNode, COLOR_NODE_PREFIX + Attr.Caption^);