IDE: Identifier completion window: implement customizable colors, issue #29282

git-svn-id: trunk@57117 -
This commit is contained in:
ondrej 2018-01-19 07:09:42 +00:00
parent 3e12ed3bdc
commit 86baae8769
8 changed files with 376 additions and 109 deletions

View File

@ -120,7 +120,8 @@ const
'', // ahaSpecialVisibleChars '', // ahaSpecialVisibleChars
'', // ahaTopInfoHint '', // ahaTopInfoHint
'', '', '', // ahaIfDefBlockInactive, ahaIfDefBlockActive, ahaIfDefBlockTmpActive '', '', '', // ahaIfDefBlockInactive, ahaIfDefBlockActive, ahaIfDefBlockTmpActive
'', '', '' // ahaIfDefNodeInactive, ahaIfDefNodeActive, ahaIfDefNodeTmpActive '', '', '', // ahaIfDefNodeInactive, ahaIfDefNodeActive, ahaIfDefNodeTmpActive
'', '', '', '' // ahaIdentComplWindow, ahaIdentComplWindowBorder, ahaIdentComplWindowSelection, ahaIdentComplWindowHighlight
); );
ahaGroupMap: array[TAdditionalHilightAttribute] of TAhaGroupName = ( ahaGroupMap: array[TAdditionalHilightAttribute] of TAhaGroupName = (
@ -162,7 +163,12 @@ const
{ ahaIfDefBlockTmpActive } agnIfDef, { ahaIfDefBlockTmpActive } agnIfDef,
{ ahaIfDefNodeInactive } agnIfDef, { ahaIfDefNodeInactive } agnIfDef,
{ ahaIfDefNodeActive } agnIfDef, { ahaIfDefNodeActive } agnIfDef,
{ ahaIfDefNodeTmpActive } agnIfDef { ahaIfDefNodeTmpActive } agnIfDef,
{ ahaIdentComplWindow } agnIdentComplWindow,
{ ahaIdentComplWindowBorder } agnIdentComplWindow,
{ ahaIdentComplWindowSelection } agnIdentComplWindow,
{ ahaIdentComplWindowHighlight } agnIdentComplWindow
); );
ahaSupportedFeatures: array[TAdditionalHilightAttribute] of TColorSchemeAttributeFeatures = ahaSupportedFeatures: array[TAdditionalHilightAttribute] of TColorSchemeAttributeFeatures =
( (
@ -204,7 +210,11 @@ const
{ ahaIfDefBlockTmpActive }[hafBackColor, hafForeColor, hafFrameColor, hafAlpha, hafPrior, hafFrameStyle, hafFrameEdges, hafStyle, hafStyleMask], { ahaIfDefBlockTmpActive }[hafBackColor, hafForeColor, hafFrameColor, hafAlpha, hafPrior, hafFrameStyle, hafFrameEdges, hafStyle, hafStyleMask],
{ ahaIfDefNodeInactive } [hafBackColor, hafForeColor, hafFrameColor, hafAlpha, hafPrior, hafFrameStyle, hafFrameEdges, hafStyle, hafStyleMask], { ahaIfDefNodeInactive } [hafBackColor, hafForeColor, hafFrameColor, hafAlpha, hafPrior, hafFrameStyle, hafFrameEdges, hafStyle, hafStyleMask],
{ ahaIfDefNodeActive } [hafBackColor, hafForeColor, hafFrameColor, hafAlpha, hafPrior, hafFrameStyle, hafFrameEdges, hafStyle, hafStyleMask], { ahaIfDefNodeActive } [hafBackColor, hafForeColor, hafFrameColor, hafAlpha, hafPrior, hafFrameStyle, hafFrameEdges, hafStyle, hafStyleMask],
{ ahaIfDefNodeTmpActive } [hafBackColor, hafForeColor, hafFrameColor, hafAlpha, hafPrior, hafFrameStyle, hafFrameEdges, hafStyle, hafStyleMask] { ahaIfDefNodeTmpActive } [hafBackColor, hafForeColor, hafFrameColor, hafAlpha, hafPrior, hafFrameStyle, hafFrameEdges, hafStyle, hafStyleMask],
{ ahaIdentComplWindow } [hafBackColor, hafForeColor],
{ ahaIdentComplWindowBorder } [hafForeColor],
{ ahaIdentComplWindowSelection } [hafBackColor, hafForeColor],
{ ahaIdentComplWindowHighlight } [hafForeColor]
); );
@ -2462,6 +2472,12 @@ begin
AdditionalHighlightAttributes[ahaIfDefNodeTmpActive] := dlgIfDefNodeTmpActive; AdditionalHighlightAttributes[ahaIfDefNodeTmpActive] := dlgIfDefNodeTmpActive;
AdditionalHighlightGroupNames[agnIfDef] := dlgAddHiAttrGroupIfDef; AdditionalHighlightGroupNames[agnIfDef] := dlgAddHiAttrGroupIfDef;
AdditionalHighlightAttributes[ahaIdentComplWindow] := dlgAddHiAttrDefaultWindow;
AdditionalHighlightAttributes[ahaIdentComplWindowBorder] := dlgAddHiAttrWindowBorder;
AdditionalHighlightAttributes[ahaIdentComplWindowSelection] := dlgBlockGroupOptions;
AdditionalHighlightAttributes[ahaIdentComplWindowHighlight] := dlgAddHiAttrHighlightPrefix;
AdditionalHighlightGroupNames[agnIdentComplWindow] := dlgIdentifierCompletion;
AdditionalHighlightGroupNames[agnDefault] := dlgAddHiAttrGroupDefault; AdditionalHighlightGroupNames[agnDefault] := dlgAddHiAttrGroupDefault;
AdditionalHighlightGroupNames[agnText] := dlgAddHiAttrGroupText; AdditionalHighlightGroupNames[agnText] := dlgAddHiAttrGroupText;
AdditionalHighlightGroupNames[agnLine] := dlgAddHiAttrGroupLine; AdditionalHighlightGroupNames[agnLine] := dlgAddHiAttrGroupLine;
@ -6392,9 +6408,16 @@ procedure TColorSchemeLanguage.ApplyTo(ASynEdit: TSynEdit);
if assigned(ASynEdit.Gutter.Parts.ByClass[aClass, 0]) then if assigned(ASynEdit.Gutter.Parts.ByClass[aClass, 0]) then
SetMarkupColor(aha, ASynEdit.Gutter.Parts.ByClass[aClass, 0].MarkupInfo); SetMarkupColor(aha, ASynEdit.Gutter.Parts.ByClass[aClass, 0].MarkupInfo);
end; end;
function GetUsedAttr(aha: TAdditionalHilightAttribute): TColorSchemeAttribute;
begin
Result := AttributeByEnum[aha];
if Assigned(Result) and Result.IsUsingSchemeGlobals then
Result := Result.GetSchemeGlobal;
end;
var var
Attri: TColorSchemeAttribute; Attri: TColorSchemeAttribute;
i: Integer; i: Integer;
IDESynEdit: TIDESynEditor;
begin begin
ASynEdit.BeginUpdate; ASynEdit.BeginUpdate;
try try
@ -6413,19 +6436,13 @@ begin
aSynEdit.Font.Color := clBlack; aSynEdit.Font.Color := clBlack;
end; end;
Attri := Attribute[AhaToStoredName(ahaGutter)]; Attri := GetUsedAttr(ahaGutter);
if Attri <> nil then begin if Attri <> nil then
if Attri.IsUsingSchemeGlobals then
Attri := Attri.GetSchemeGlobal;
aSynEdit.Gutter.Color := Attri.Background; aSynEdit.Gutter.Color := Attri.Background;
end;
Attri := Attribute[AhaToStoredName(ahaRightMargin)]; Attri := GetUsedAttr(ahaRightMargin);
if Attri <> nil then begin if Attri <> nil then
if Attri.IsUsingSchemeGlobals then
Attri := Attri.GetSchemeGlobal;
aSynEdit.RightEdgeColor := Attri.Foreground; aSynEdit.RightEdgeColor := Attri.Foreground;
end;
SetMarkupColor(ahaTextBlock, aSynEdit.SelectedColor); SetMarkupColor(ahaTextBlock, aSynEdit.SelectedColor);
SetMarkupColor(ahaIncrementalSearch, aSynEdit.IncrementColor); SetMarkupColor(ahaIncrementalSearch, aSynEdit.IncrementColor);
@ -6468,6 +6485,44 @@ begin
SetGutterColorByClass(ahaCodeFoldingTree, TSynGutterCodeFolding); SetGutterColorByClass(ahaCodeFoldingTree, TSynGutterCodeFolding);
SetGutterColorByClass(ahaGutterSeparator, TSynGutterSeparator); SetGutterColorByClass(ahaGutterSeparator, TSynGutterSeparator);
if ASynEdit is TIDESynEditor then
begin
IDESynEdit := TIDESynEditor(ASynEdit);
Attri := GetUsedAttr(ahaIdentComplWindow);
if Attri<>nil then
begin
IDESynEdit.MarkupIdentComplWindow.TextColor := Attri.Foreground;
IDESynEdit.MarkupIdentComplWindow.WindowColor:= Attri.Background;
end else
begin
IDESynEdit.MarkupIdentComplWindow.TextColor := clNone;
IDESynEdit.MarkupIdentComplWindow.WindowColor:= clNone;
end;
Attri := GetUsedAttr(ahaIdentComplWindowBorder);
if Attri<>nil then
IDESynEdit.MarkupIdentComplWindow.BorderColor:= Attri.Foreground
else
IDESynEdit.MarkupIdentComplWindow.BorderColor:= clNone;
Attri := GetUsedAttr(ahaIdentComplWindowHighlight);
if Attri<>nil then
IDESynEdit.MarkupIdentComplWindow.HighlightColor:= Attri.Foreground
else
IDESynEdit.MarkupIdentComplWindow.HighlightColor:= clNone;
Attri := GetUsedAttr(ahaIdentComplWindowSelection);
if Attri<>nil then
begin
IDESynEdit.MarkupIdentComplWindow.TextSelectedColor:= Attri.Foreground;
IDESynEdit.MarkupIdentComplWindow.BackgroundSelectedColor:= Attri.Background;
end else
begin
IDESynEdit.MarkupIdentComplWindow.TextSelectedColor := clNone;
IDESynEdit.MarkupIdentComplWindow.BackgroundSelectedColor:= clNone;
end;
end;
i := aSynEdit.PluginCount - 1; i := aSynEdit.PluginCount - 1;
while (i >= 0) and not(aSynEdit.Plugin[i] is TSynPluginTemplateEdit) do while (i >= 0) and not(aSynEdit.Plugin[i] is TSynPluginTemplateEdit) do

View File

@ -30,7 +30,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
TabOrder = 1 TabOrder = 1
object bvlAttributeSection: TDividerBevel object bvlAttributeSection: TDividerBevel
Left = 0 Left = 0
Height = 17 Height = 15
Top = 0 Top = 0
Width = 640 Width = 640
Caption = 'bvlAttributeSection' Caption = 'bvlAttributeSection'
@ -41,7 +41,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
object ToolBar1: TToolBar object ToolBar1: TToolBar
Left = 3 Left = 3
Height = 24 Height = 24
Top = 17 Top = 15
Width = 634 Width = 634
AutoSize = True AutoSize = True
BorderSpacing.Left = 3 BorderSpacing.Left = 3
@ -74,27 +74,27 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
Style = tbsCheck Style = tbsCheck
end end
object SetAttributeToDefaultButton: TToolButton object SetAttributeToDefaultButton: TToolButton
Left = 249 Left = 245
Top = 0 Top = 0
OnClick = SetAttributeToDefaultButtonClick OnClick = SetAttributeToDefaultButtonClick
ShowCaption = False ShowCaption = False
end end
object ToolButton3: TToolButton object ToolButton3: TToolButton
Left = 239 Left = 237
Height = 22
Top = 0 Top = 0
Width = 10
Caption = 'ToolButton3' Caption = 'ToolButton3'
Style = tbsSeparator Style = tbsSeparator
end end
object ToolButton1: TToolButton object ToolButton1: TToolButton
Left = 123 Left = 123
Height = 22
Top = 0 Top = 0
Width = 10
Caption = 'ToolButton1' Caption = 'ToolButton1'
Style = tbsSeparator Style = tbsSeparator
end end
object tbnColor: TToolButton object tbnColor: TToolButton
Left = 133 Left = 131
Top = 0 Top = 0
AutoSize = True AutoSize = True
Caption = 'tbnColor' Caption = 'tbnColor'
@ -104,7 +104,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
Style = tbsCheck Style = tbsCheck
end end
object tbnPrior: TToolButton object tbnPrior: TToolButton
Left = 188 Left = 186
Top = 0 Top = 0
AutoSize = True AutoSize = True
Caption = 'tbnPrior' Caption = 'tbnPrior'
@ -121,73 +121,231 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = pnlElementAttributes AnchorSideBottom.Control = pnlElementAttributes
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Height = 151 Height = 153
Top = 41 Top = 39
Width = 640 Width = 640
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
ClientHeight = 151 ClientHeight = 153
ClientWidth = 640 ClientWidth = 640
TabOrder = 1 TabOrder = 1
inherited ForeGroundLabel: TLabel
Top = 7
Width = 91
end
inherited BackGroundLabel: TLabel
Top = 32
Width = 93
end
inherited ForeGroundUseDefaultCheckBox: TCheckBox inherited ForeGroundUseDefaultCheckBox: TCheckBox
AnchorSideLeft.Control = SynColorAttrEditor1 AnchorSideLeft.Control = SynColorAttrEditor1
Height = 19
Width = 192
end end
inherited ForegroundColorBox: TColorBox inherited ForegroundColorBox: TColorBox
AnchorSideTop.Control = SynColorAttrEditor1 AnchorSideTop.Control = SynColorAttrEditor1
AnchorSideRight.Control = SynColorAttrEditor1 AnchorSideRight.Control = SynColorAttrEditor1
Left = 204
Height = 22
Width = 200 Width = 200
end end
inherited BackGroundColorBox: TColorBox inherited BackGroundColorBox: TColorBox
AnchorSideRight.Control = SynColorAttrEditor1 AnchorSideRight.Control = SynColorAttrEditor1
Left = 204
Height = 22
Top = 28
Width = 200 Width = 200
end end
inherited BackGroundUseDefaultCheckBox: TCheckBox inherited BackGroundUseDefaultCheckBox: TCheckBox
AnchorSideLeft.Control = SynColorAttrEditor1 AnchorSideLeft.Control = SynColorAttrEditor1
Height = 19
Top = 30
Width = 194
end end
inherited FrameColorBox: TColorBox inherited FrameColorBox: TColorBox
AnchorSideRight.Control = SynColorAttrEditor1 AnchorSideRight.Control = SynColorAttrEditor1
Left = 204
Height = 22
Top = 53
Width = 200 Width = 200
end end
inherited FrameColorUseDefaultCheckBox: TCheckBox inherited FrameColorUseDefaultCheckBox: TCheckBox
AnchorSideLeft.Control = SynColorAttrEditor1 AnchorSideLeft.Control = SynColorAttrEditor1
Height = 19
Top = 55
Width = 191
end end
inherited pnlUnderline: TPanel inherited pnlUnderline: TPanel
AnchorSideLeft.Control = SynColorAttrEditor1 AnchorSideLeft.Control = SynColorAttrEditor1
Height = 40
Top = 102
Width = 145
ClientHeight = 40
ClientWidth = 145
inherited TextUnderlineRadioPanel: TPanel
Height = 21
Top = 19
Width = 134
ClientHeight = 21
ClientWidth = 134
inherited TextUnderlineRadioOn: TRadioButton
Height = 19
Width = 36
end
inherited TextUnderlineRadioOff: TRadioButton
Left = 43
Height = 19
Width = 37
end
inherited TextUnderlineRadioInvert: TRadioButton
Left = 83
Height = 19
Width = 50
end
end
inherited TextUnderlineCheckBox: TCheckBox
Height = 19
Width = 145
end
end
inherited pnlBold: TPanel
Left = 157
Height = 40
Top = 102
Width = 134
ClientHeight = 40
ClientWidth = 134
inherited TextBoldRadioPanel: TPanel
Height = 21
Top = 19
Width = 134
ClientHeight = 21
ClientWidth = 134
inherited TextBoldRadioInvert: TRadioButton
Left = 83
Height = 19
Width = 50
end
inherited TextBoldRadioOn: TRadioButton
Height = 19
Width = 36
end
inherited TextBoldRadioOff: TRadioButton
Left = 43
Height = 19
Width = 37
end
end
inherited TextBoldCheckBox: TCheckBox
Height = 19
Width = 118
end
end
inherited pnlItalic: TPanel
Left = 297
Height = 40
Top = 102
Width = 134
ClientHeight = 40
ClientWidth = 134
inherited TextItalicRadioPanel: TPanel
Height = 21
Top = 19
Width = 134
ClientHeight = 21
ClientWidth = 134
inherited TextItalicRadioInvert: TRadioButton
Left = 83
Height = 19
Width = 50
end
inherited TextItalicRadioOn: TRadioButton
Height = 19
Width = 36
end
inherited TextItalicRadioOff: TRadioButton
Left = 43
Height = 19
Width = 37
end
end
inherited TextItalicCheckBox: TCheckBox
Height = 19
Width = 119
end
end
inherited FrameStyleBox: TComboBox
Left = 307
Height = 21
Top = 78
end
inherited FrameEdgesBox: TComboBox
Left = 204
Height = 21
Top = 78
end
inherited ColumnPosBevel: TPanel
Left = 204
Top = 145
end end
inherited ForeAlphaLabel: TLabel inherited ForeAlphaLabel: TLabel
Left = 414 Left = 414
Top = 7
Width = 82
end end
inherited BackAlphaLabel: TLabel inherited BackAlphaLabel: TLabel
Left = 414 Left = 414
Top = 32
Width = 84
end end
inherited FrameAlphaLabel: TLabel inherited FrameAlphaLabel: TLabel
Left = 414 Left = 414
Top = 57
Width = 92
end end
inherited ForeAlphaSpin: TSpinEdit inherited ForeAlphaSpin: TSpinEdit
Left = 502 Left = 502
Height = 23
Top = 3
end end
inherited BackAlphaSpin: TSpinEdit inherited BackAlphaSpin: TSpinEdit
Left = 504 Left = 504
Height = 23
Top = 28
end end
inherited FrameAlphaSpin: TSpinEdit inherited FrameAlphaSpin: TSpinEdit
Left = 512 Left = 512
Height = 23
Top = 53
end end
inherited ForePriorLabel: TLabel inherited ForePriorLabel: TLabel
Left = 567 Left = 567
Top = 7
Width = 76
end end
inherited BackPriorLabel: TLabel inherited BackPriorLabel: TLabel
Left = 569 Left = 569
Top = 32
Width = 78
end end
inherited FramePriorLabel: TLabel inherited FramePriorLabel: TLabel
Left = 577 Left = 577
Top = 57
Width = 86
end end
inherited ForePriorSpin: TSpinEdit inherited ForePriorSpin: TSpinEdit
Left = 649 Left = 649
Height = 23
Top = 3
end end
inherited BackPriorSpin: TSpinEdit inherited BackPriorSpin: TSpinEdit
Left = 653 Left = 653
Height = 23
Top = 28
end end
inherited FramePriorSpin: TSpinEdit inherited FramePriorSpin: TSpinEdit
Left = 669 Left = 669
Height = 23
Top = 53
end end
end end
object PriorityEditor: TPanel object PriorityEditor: TPanel
@ -199,21 +357,21 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
AnchorSideBottom.Control = pnlElementAttributes AnchorSideBottom.Control = pnlElementAttributes
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 0 Left = 0
Height = 151 Height = 153
Top = 41 Top = 39
Width = 640 Width = 640
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
ClientHeight = 151 ClientHeight = 153
ClientWidth = 640 ClientWidth = 640
Constraints.MinHeight = 140 Constraints.MinHeight = 140
TabOrder = 2 TabOrder = 2
object ForePriorPanel: TPanel object ForePriorPanel: TPanel
Left = 1 Left = 1
Height = 149 Height = 151
Top = 1 Top = 1
Width = 170 Width = 170
Align = alLeft Align = alLeft
ClientHeight = 149 ClientHeight = 151
ClientWidth = 170 ClientWidth = 170
TabOrder = 0 TabOrder = 0
object ForePriorLabel: TLabel object ForePriorLabel: TLabel
@ -227,12 +385,11 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object ForePriorList: TTreeView object ForePriorList: TTreeView
Left = 1 Left = 1
Height = 108 Height = 102
Top = 16 Top = 16
Width = 168 Width = 168
Align = alClient Align = alClient
AutoExpand = True AutoExpand = True
DefaultItemHeight = 18
ReadOnly = True ReadOnly = True
ScrollBars = ssAutoVertical ScrollBars = ssAutoVertical
ShowButtons = False ShowButtons = False
@ -248,21 +405,21 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object ForePriorValPanel: TPanel object ForePriorValPanel: TPanel
Left = 1 Left = 1
Height = 23 Height = 31
Top = 125 Top = 119
Width = 168 Width = 168
Align = alBottom Align = alBottom
AutoSize = True AutoSize = True
BorderSpacing.Top = 1 BorderSpacing.Top = 1
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 23 ClientHeight = 31
ClientWidth = 168 ClientWidth = 168
TabOrder = 1 TabOrder = 1
object ForePriorEdit: TEdit object ForePriorEdit: TEdit
AnchorSideRight.Control = ForePriorUpDown AnchorSideRight.Control = ForePriorUpDown
Left = 1 Left = 1
Height = 23 Height = 23
Top = 1 Top = 0
Width = 147 Width = 147
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Right = 3 BorderSpacing.Right = 3
@ -278,26 +435,26 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
AnchorSideBottom.Control = ForePriorValPanel AnchorSideBottom.Control = ForePriorValPanel
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 151 Left = 151
Height = 23 Height = 31
Top = 0 Top = 0
Width = 17 Width = 17
Anchors = [akTop, akRight, akBottom] Anchors = [akTop, akRight, akBottom]
Min = 0 Min = 0
OnClick = ForePriorUpDownClick
Position = 0 Position = 0
TabOrder = 1 TabOrder = 1
Wrap = False Wrap = False
OnClick = ForePriorUpDownClick
end end
end end
end end
object BackPriorPanel: TPanel object BackPriorPanel: TPanel
Left = 177 Left = 177
Height = 149 Height = 151
Top = 1 Top = 1
Width = 170 Width = 170
Align = alLeft Align = alLeft
BorderSpacing.Left = 6 BorderSpacing.Left = 6
ClientHeight = 149 ClientHeight = 151
ClientWidth = 170 ClientWidth = 170
TabOrder = 1 TabOrder = 1
object BackPriorLabel: TLabel object BackPriorLabel: TLabel
@ -311,12 +468,11 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object BackPriorList: TTreeView object BackPriorList: TTreeView
Left = 1 Left = 1
Height = 108 Height = 102
Top = 16 Top = 16
Width = 168 Width = 168
Align = alClient Align = alClient
AutoExpand = True AutoExpand = True
DefaultItemHeight = 18
ReadOnly = True ReadOnly = True
ScrollBars = ssAutoVertical ScrollBars = ssAutoVertical
ShowButtons = False ShowButtons = False
@ -332,14 +488,14 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object BackPriorValPanel: TPanel object BackPriorValPanel: TPanel
Left = 1 Left = 1
Height = 23 Height = 31
Top = 125 Top = 119
Width = 168 Width = 168
Align = alBottom Align = alBottom
AutoSize = True AutoSize = True
BorderSpacing.Top = 1 BorderSpacing.Top = 1
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 23 ClientHeight = 31
ClientWidth = 168 ClientWidth = 168
TabOrder = 1 TabOrder = 1
object BackPriorEdit: TEdit object BackPriorEdit: TEdit
@ -362,26 +518,26 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
AnchorSideBottom.Control = BackPriorValPanel AnchorSideBottom.Control = BackPriorValPanel
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 151 Left = 151
Height = 23 Height = 31
Top = 0 Top = 0
Width = 17 Width = 17
Anchors = [akTop, akRight, akBottom] Anchors = [akTop, akRight, akBottom]
Min = 0 Min = 0
OnClick = ForePriorUpDownClick
Position = 0 Position = 0
TabOrder = 1 TabOrder = 1
Wrap = False Wrap = False
OnClick = ForePriorUpDownClick
end end
end end
end end
object FramePriorPanel: TPanel object FramePriorPanel: TPanel
Left = 353 Left = 353
Height = 149 Height = 151
Top = 1 Top = 1
Width = 170 Width = 170
Align = alLeft Align = alLeft
BorderSpacing.Left = 6 BorderSpacing.Left = 6
ClientHeight = 149 ClientHeight = 151
ClientWidth = 170 ClientWidth = 170
TabOrder = 2 TabOrder = 2
object FramePriorLabel: TLabel object FramePriorLabel: TLabel
@ -395,12 +551,11 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object FramePriorList: TTreeView object FramePriorList: TTreeView
Left = 1 Left = 1
Height = 108 Height = 102
Top = 16 Top = 16
Width = 168 Width = 168
Align = alClient Align = alClient
AutoExpand = True AutoExpand = True
DefaultItemHeight = 18
ReadOnly = True ReadOnly = True
ScrollBars = ssAutoVertical ScrollBars = ssAutoVertical
ShowButtons = False ShowButtons = False
@ -416,14 +571,14 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object FramePriorValPanel: TPanel object FramePriorValPanel: TPanel
Left = 1 Left = 1
Height = 23 Height = 31
Top = 125 Top = 119
Width = 168 Width = 168
Align = alBottom Align = alBottom
AutoSize = True AutoSize = True
BorderSpacing.Top = 1 BorderSpacing.Top = 1
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 23 ClientHeight = 31
ClientWidth = 168 ClientWidth = 168
TabOrder = 1 TabOrder = 1
object FramePriorEdit: TEdit object FramePriorEdit: TEdit
@ -446,15 +601,15 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
AnchorSideBottom.Control = FramePriorValPanel AnchorSideBottom.Control = FramePriorValPanel
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 151 Left = 151
Height = 23 Height = 31
Top = 0 Top = 0
Width = 17 Width = 17
Anchors = [akTop, akRight, akBottom] Anchors = [akTop, akRight, akBottom]
Min = 0 Min = 0
OnClick = ForePriorUpDownClick
Position = 0 Position = 0
TabOrder = 1 TabOrder = 1
Wrap = False Wrap = False
OnClick = ForePriorUpDownClick
end end
end end
end end
@ -504,7 +659,6 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
BorderSpacing.Top = 6 BorderSpacing.Top = 6
BorderSpacing.Right = 1 BorderSpacing.Right = 1
Constraints.MinWidth = 150 Constraints.MinWidth = 150
DefaultItemHeight = 18
ReadOnly = True ReadOnly = True
ScrollBars = ssAutoBoth ScrollBars = ssAutoBoth
ShowButtons = False ShowButtons = False
@ -947,6 +1101,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
ShiftMask = [ssShift, ssAlt, ssCtrl] ShiftMask = [ssShift, ssAlt, ssCtrl]
Command = emcMouseLink Command = emcMouseLink
end> end>
MouseTextActions = <>
MouseSelActions = < MouseSelActions = <
item item
ClickDir = cdDown ClickDir = cdDown
@ -956,7 +1111,6 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
'ColorPreview' 'ColorPreview'
) )
VisibleSpecialChars = [vscSpace, vscTabAtLast] VisibleSpecialChars = [vscSpace, vscTabAtLast]
SelectedColor.FrameEdges = sfeAround
SelectedColor.BackPriority = 50 SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50 SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50 SelectedColor.FramePriority = 50
@ -964,23 +1118,17 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
SelectedColor.ItalicPriority = 50 SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50 SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50 SelectedColor.StrikeOutPriority = 50
IncrementColor.FrameEdges = sfeAround
HighlightAllColor.FrameEdges = sfeAround
BracketHighlightStyle = sbhsBoth BracketHighlightStyle = sbhsBoth
BracketMatchColor.Background = clNone BracketMatchColor.Background = clNone
BracketMatchColor.Foreground = clNone BracketMatchColor.Foreground = clNone
BracketMatchColor.FrameEdges = sfeAround
BracketMatchColor.Style = [fsBold] BracketMatchColor.Style = [fsBold]
FoldedCodeColor.Background = clNone FoldedCodeColor.Background = clNone
FoldedCodeColor.Foreground = clGray FoldedCodeColor.Foreground = clGray
FoldedCodeColor.FrameColor = clGray FoldedCodeColor.FrameColor = clGray
FoldedCodeColor.FrameEdges = sfeAround
MouseLinkColor.Background = clNone MouseLinkColor.Background = clNone
MouseLinkColor.Foreground = clBlue MouseLinkColor.Foreground = clBlue
MouseLinkColor.FrameEdges = sfeAround
LineHighlightColor.Background = clNone LineHighlightColor.Background = clNone
LineHighlightColor.Foreground = clNone LineHighlightColor.Foreground = clNone
LineHighlightColor.FrameEdges = sfeAround
inline TSynGutterPartList inline TSynGutterPartList
object TSynGutterMarks object TSynGutterMarks
Width = 24 Width = 24
@ -991,7 +1139,6 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
MouseActions = <> MouseActions = <>
MarkupInfo.Background = clBtnFace MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone MarkupInfo.Foreground = clNone
MarkupInfo.FrameEdges = sfeAround
DigitCount = 2 DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1 ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False ZeroStart = False
@ -1008,7 +1155,6 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
MouseActions = <> MouseActions = <>
MarkupInfo.Background = clWhite MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray MarkupInfo.Foreground = clGray
MarkupInfo.FrameEdges = sfeAround
end end
object TSynGutterCodeFolding object TSynGutterCodeFolding
MouseActions = < MouseActions = <
@ -1039,7 +1185,6 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end> end>
MarkupInfo.Background = clNone MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray MarkupInfo.Foreground = clGray
MarkupInfo.FrameEdges = sfeAround
MouseActionsExpanded = < MouseActionsExpanded = <
item item
ClickCount = ccAny ClickCount = ccAny
@ -1092,8 +1237,8 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object ToolButton2: TToolButton object ToolButton2: TToolButton
Left = 24 Left = 24
Height = 22
Top = 0 Top = 0
Width = 5
Caption = 'ToolButton2' Caption = 'ToolButton2'
Style = tbsDivider Style = tbsDivider
end end
@ -1105,7 +1250,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
Style = tbsButtonDrop Style = tbsButtonDrop
end end
object ColorSchemeButton: TToolButton object ColorSchemeButton: TToolButton
Left = 64 Left = 62
Top = 0 Top = 0
DropdownMenu = ColorSchemeMenu DropdownMenu = ColorSchemeMenu
OnClick = ColorSchemeButtonClick OnClick = ColorSchemeButtonClick
@ -1113,7 +1258,7 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
end end
object FileExtensionsComboBox: TComboBox object FileExtensionsComboBox: TComboBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 99 Left = 95
Height = 23 Height = 23
Top = 0 Top = 0
Width = 139 Width = 139
@ -1130,20 +1275,20 @@ object EditorColorOptionsFrame: TEditorColorOptionsFrame
TabOrder = 0 TabOrder = 0
end end
object ToolButton5: TToolButton object ToolButton5: TToolButton
Left = 238 Left = 234
Height = 22
Top = 0 Top = 0
Width = 5
Caption = 'ToolButton5' Caption = 'ToolButton5'
Style = tbsDivider Style = tbsDivider
end end
object btnExport: TToolButton object btnExport: TToolButton
Left = 243 Left = 239
Top = 0 Top = 0
OnClick = btnExportClick OnClick = btnExportClick
ShowCaption = False ShowCaption = False
end end
object SetAllAttributesToDefaultButton: TToolButton object SetAllAttributesToDefaultButton: TToolButton
Left = 266 Left = 262
Top = 0 Top = 0
OnClick = SetAllAttributesToDefaultButtonClick OnClick = SetAllAttributesToDefaultButtonClick
ShowCaption = False ShowCaption = False

View File

@ -620,6 +620,7 @@
<Unit87> <Unit87>
<Filename Value="sourcesyneditor.pas"/> <Filename Value="sourcesyneditor.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="SourceSynEditor"/>
</Unit87> </Unit87>
<Unit88> <Unit88>
<Filename Value="editoroptions.pp"/> <Filename Value="editoroptions.pp"/>
@ -776,6 +777,7 @@
<Unit115> <Unit115>
<Filename Value="sourcemarks.pas"/> <Filename Value="sourcemarks.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="SourceMarks"/>
</Unit115> </Unit115>
<Unit116> <Unit116>
<Filename Value="checklfmdlg.pas"/> <Filename Value="checklfmdlg.pas"/>
@ -786,11 +788,15 @@
<Filename Value="sortselectiondlg.pas"/> <Filename Value="sortselectiondlg.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<HasResources Value="True"/> <HasResources Value="True"/>
<UnitName Value="SortSelectionDlg"/>
</Unit117> </Unit117>
<Unit118> <Unit118>
<Filename Value="syncolorattribeditor.pas"/> <Filename Value="syncolorattribeditor.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<ComponentName Value="SynColorAttrEditor"/>
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Frame"/>
<UnitName Value="SynColorAttribEditor"/>
</Unit118> </Unit118>
<Unit119> <Unit119>
<Filename Value="inputhistory.pas"/> <Filename Value="inputhistory.pas"/>
@ -1418,13 +1424,6 @@
<OtherUnitFiles Value="frames;../converter;../debugger;../debugger/frames;../packager;../designer;../packager/frames;../ide"/> <OtherUnitFiles Value="frames;../converter;../debugger;../debugger/frames;../packager;../designer;../packager/frames;../ide"/>
<UnitOutputDirectory Value="$(LazarusDir)/units/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)"/> <UnitOutputDirectory Value="$(LazarusDir)/units/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)"/>
</SearchPaths> </SearchPaths>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<CompileReasons Compile="False" Build="False" Run="False"/> <CompileReasons Compile="False" Build="False" Run="False"/>
</CompilerOptions> </CompilerOptions>
<Debugging> <Debugging>

View File

@ -2102,6 +2102,9 @@ resourcestring
dlgAddHiAttrSyncroEditOther = 'Other Cells'; dlgAddHiAttrSyncroEditOther = 'Other Cells';
dlgAddHiAttrSyncroEditArea = 'Selected Area'; dlgAddHiAttrSyncroEditArea = 'Selected Area';
dlgAddHiAttrGutterSeparator = 'Gutter Separator'; dlgAddHiAttrGutterSeparator = 'Gutter Separator';
dlgAddHiAttrDefaultWindow = 'Default Text / Window';
dlgAddHiAttrWindowBorder = 'Window border';
dlgAddHiAttrHighlightPrefix = 'Highlight prefix';
dlgAddHiSpecialVisibleChars = 'Visualized Special Chars'; dlgAddHiSpecialVisibleChars = 'Visualized Special Chars';
dlgTopInfoHint = 'Current Class/Proc Hint'; dlgTopInfoHint = 'Current Class/Proc Hint';
dlgIfDefBlockInactive = 'Inactive $IFDEF code'; dlgIfDefBlockInactive = 'Inactive $IFDEF code';

View File

@ -110,6 +110,13 @@ type
hcmSoftKeepEOL // Soft Center (distance to screen edge) Caret, but keep EOL at right border hcmSoftKeepEOL // Soft Center (distance to screen edge) Caret, but keep EOL at right border
); );
TSourceEditCompletionForm = class(TSynCompletionForm)
private
FTextHighLightColor: TColor;
public
property TextHighLightColor: TColor read FTextHighLightColor write FTextHighLightColor;
end;
{ TSourceEditCompletion } { TSourceEditCompletion }
TSourceEditCompletion=class(TSynCompletion) TSourceEditCompletion=class(TSynCompletion)
@ -117,10 +124,13 @@ type
FIdentCompletionJumpToError: boolean; FIdentCompletionJumpToError: boolean;
ccSelection: String; ccSelection: String;
// colors for the completion form (popup form, e.g. word completion) // colors for the completion form (popup form, e.g. word completion)
FActiveEditDefaultFGColor: TColor;
FActiveEditDefaultBGColor: TColor; FActiveEditBackgroundColor: TColor;
FActiveEditSelectedFGColor: TColor; FActiveEditBackgroundSelectedColor: TColor;
FActiveEditSelectedBGColor: TColor; FActiveEditBorderColor: TColor;
FActiveEditTextColor: TColor;
FActiveEditTextSelectedColor: TColor;
FActiveEditTextHighLightColor: TColor;
procedure ccExecute(Sender: TObject); procedure ccExecute(Sender: TObject);
procedure ccCancel(Sender: TObject); procedure ccCancel(Sender: TObject);
@ -145,6 +155,7 @@ type
protected protected
CurrentCompletionType: TCompletionType; CurrentCompletionType: TCompletionType;
function Manager: TSourceEditorManager; function Manager: TSourceEditorManager;
function GetCompletionFormClass: TSynBaseCompletionFormClass; override;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
property IdentCompletionJumpToError: Boolean property IdentCompletionJumpToError: Boolean
@ -2098,6 +2109,11 @@ begin
EnvironmentOptions.Desktop.CompletionWindowHeight := TheForm.NbLinesInWindow; EnvironmentOptions.Desktop.CompletionWindowHeight := TheForm.NbLinesInWindow;
end; end;
function TSourceEditCompletion.GetCompletionFormClass: TSynBaseCompletionFormClass;
begin
Result := TSourceEditCompletionForm;
end;
procedure TSourceEditCompletion.ccExecute(Sender: TObject); procedure TSourceEditCompletion.ccExecute(Sender: TObject);
// init completion form // init completion form
// called by OnExecute just before showing // called by OnExecute just before showing
@ -2106,15 +2122,19 @@ var
Prefix: String; Prefix: String;
I: Integer; I: Integer;
NewStr: String; NewStr: String;
SynEditor: TIDESynEditor;
Begin Begin
{$IFDEF VerboseIDECompletionBox} {$IFDEF VerboseIDECompletionBox}
debugln(['TSourceEditCompletion.ccExecute START']); debugln(['TSourceEditCompletion.ccExecute START']);
{$ENDIF} {$ENDIF}
TheForm.Font := Editor.Font; TheForm.Font := Editor.Font;
FActiveEditDefaultFGColor := Editor.Font.Color;
FActiveEditDefaultBGColor := Editor.Color; FActiveEditTextColor := Editor.Font.Color;
FActiveEditSelectedFGColor := TSynEdit(Editor).SelectedColor.Foreground; FActiveEditBorderColor := RGBToColor(100, 100, 100);
FActiveEditSelectedBGColor := TSynEdit(Editor).SelectedColor.Background; FActiveEditBackgroundColor := Editor.Color;
FActiveEditTextSelectedColor := TSynEdit(Editor).SelectedColor.Foreground;
FActiveEditBackgroundSelectedColor := TSynEdit(Editor).SelectedColor.Background;
FActiveEditTextHighLightColor := RGBToColor(200, 13, 13);
if Editor.Highlighter<>nil if Editor.Highlighter<>nil
then begin then begin
@ -2122,13 +2142,30 @@ Begin
if IdentifierAttribute<>nil if IdentifierAttribute<>nil
then begin then begin
if IdentifierAttribute.ForeGround<>clNone then if IdentifierAttribute.ForeGround<>clNone then
FActiveEditDefaultFGColor:=IdentifierAttribute.ForeGround; FActiveEditTextColor:=IdentifierAttribute.ForeGround;
if IdentifierAttribute.BackGround<>clNone then if IdentifierAttribute.BackGround<>clNone then
FActiveEditDefaultBGColor:=IdentifierAttribute.BackGround; FActiveEditBackgroundColor:=IdentifierAttribute.BackGround;
end; end;
end; end;
end; end;
if Editor is TIDESynEditor then
begin
SynEditor := TIDESynEditor(Editor);
if SynEditor.MarkupIdentComplWindow.TextColor<>clNone then
FActiveEditTextColor := SynEditor.MarkupIdentComplWindow.TextColor;
if SynEditor.MarkupIdentComplWindow.BorderColor<>clNone then
FActiveEditBorderColor := SynEditor.MarkupIdentComplWindow.BorderColor;
if SynEditor.MarkupIdentComplWindow.WindowColor<>clNone then
FActiveEditBackgroundColor := SynEditor.MarkupIdentComplWindow.WindowColor;
if SynEditor.MarkupIdentComplWindow.WindowColor<>clNone then
FActiveEditTextSelectedColor := SynEditor.MarkupIdentComplWindow.TextSelectedColor;
if SynEditor.MarkupIdentComplWindow.WindowColor<>clNone then
FActiveEditBackgroundSelectedColor := SynEditor.MarkupIdentComplWindow.BackgroundSelectedColor;
if SynEditor.MarkupIdentComplWindow.HighlightColor<>clNone then
FActiveEditTextHighLightColor := SynEditor.MarkupIdentComplWindow.HighlightColor;
end;
S := TStringList.Create; S := TStringList.Create;
try try
Prefix := CurrentString; Prefix := CurrentString;
@ -2170,11 +2207,13 @@ Begin
CurrentString:=Prefix; CurrentString:=Prefix;
// set colors // set colors
if (Editor<>nil) and (TheForm<>nil) then begin if (Editor<>nil) and (TheForm<>nil) then begin
with TheForm do begin with TheForm as TSourceEditCompletionForm do begin
BackgroundColor := FActiveEditDefaultBGColor; DrawBorderColor := FActiveEditBorderColor;
clSelect := FActiveEditSelectedBGColor; BackgroundColor := FActiveEditBackgroundColor;
TextColor := FActiveEditDefaultFGColor; clSelect := FActiveEditBackgroundSelectedColor;
TextSelectedColor := FActiveEditSelectedFGColor; TextColor := FActiveEditTextColor;
TextSelectedColor := FActiveEditTextSelectedColor;
TextHighLightColor:= FActiveEditTextHighLightColor;
//debugln('TSourceEditCompletion.ccExecute A Color=',DbgS(Color), //debugln('TSourceEditCompletion.ccExecute A Color=',DbgS(Color),
// ' clSelect=',DbgS(clSelect), // ' clSelect=',DbgS(clSelect),
// ' TextColor=',DbgS(TextColor), // ' TextColor=',DbgS(TextColor),
@ -2366,8 +2405,11 @@ begin
end; end;
Font.Style:=[]; Font.Style:=[];
end; end;
Colors.FontColor := FActiveEditDefaultFGColor; Colors.BackgroundColor := FActiveEditBackgroundColor;
Colors.SelectedFontColor := FActiveEditSelectedFGColor; Colors.BackgroundSelectedColor := FActiveEditBackgroundSelectedColor;
Colors.TextColor := FActiveEditTextColor;
Colors.TextSelectedColor := FActiveEditTextSelectedColor;
Colors.TextHighLightColor := FActiveEditTextHighLightColor;
MaxX:=TheForm.ClientWidth; MaxX:=TheForm.ClientWidth;
t:=CurrentCompletionType; t:=CurrentCompletionType;
if Manager.ActiveCompletionPlugin<>nil then if Manager.ActiveCompletionPlugin<>nil then
@ -2400,10 +2442,6 @@ begin
Font.Name:=EditorOpts.EditorFont; Font.Name:=EditorOpts.EditorFont;
end; end;
Font.Style:=[]; Font.Style:=[];
if not ItemSelected then
Font.Color := FActiveEditDefaultFGColor
else
Font.Color := FActiveEditSelectedFGColor;
end; end;
MaxX := Screen.Width-20; MaxX := Screen.Width-20;
t:=CurrentCompletionType; t:=CurrentCompletionType;

View File

@ -98,8 +98,11 @@ type
); );
TPaintCompletionItemColors = record TPaintCompletionItemColors = record
FontColor: TColor; BackgroundColor: TColor;
SelectedFontColor: TColor; BackgroundSelectedColor: TColor;
TextColor: TColor;
TextSelectedColor: TColor;
TextHighLightColor: TColor;
end; end;
PPaintCompletionItemColors = ^TPaintCompletionItemColors; PPaintCompletionItemColors = ^TPaintCompletionItemColors;
@ -273,13 +276,13 @@ begin
begin begin
if ItemSelected then if ItemSelected then
begin begin
ForegroundColor := Colors^.SelectedFontColor; ForegroundColor := Colors^.TextSelectedColor;
AllowFontColor := ForegroundColor=clNone; AllowFontColor := ForegroundColor=clNone;
if ForegroundColor=clNone then if ForegroundColor=clNone then
ForegroundColor := Colors^.FontColor; ForegroundColor := Colors^.TextColor;
end else end else
begin begin
ForegroundColor := Colors^.FontColor; ForegroundColor := Colors^.TextColor;
AllowFontColor := True; AllowFontColor := True;
end; end;
end else end else
@ -519,7 +522,8 @@ begin
Prefix := Copy(s, PrefixPosition, Length(aCompletion.CurrentString)); Prefix := Copy(s, PrefixPosition, Length(aCompletion.CurrentString));
if PrefixPosition > 0 then if PrefixPosition > 0 then
PrefixPosition := ACanvas.TextWidth(Copy(s, 1, PrefixPosition-1)); PrefixPosition := ACanvas.TextWidth(Copy(s, 1, PrefixPosition-1));
SetFontColor(RGBToColor(200, 13, 13)); if Colors<>nil then
SetFontColor(ColorToRGB(Colors^.TextHighLightColor));
ACanvas.TextOut(x+PrefixPosition+1,y,Prefix); ACanvas.TextOut(x+PrefixPosition+1,y,Prefix);
end; end;
inc(x,ACanvas.TextWidth(s)+1); inc(x,ACanvas.TextWidth(s)+1);

View File

@ -63,12 +63,13 @@ type
ahaGutter, ahaRightMargin, ahaSpecialVisibleChars, ahaGutter, ahaRightMargin, ahaSpecialVisibleChars,
ahaTopInfoHint, ahaTopInfoHint,
ahaIfDefBlockInactive, ahaIfDefBlockActive, ahaIfDefBlockTmpActive, ahaIfDefBlockInactive, ahaIfDefBlockActive, ahaIfDefBlockTmpActive,
ahaIfDefNodeInactive, ahaIfDefNodeActive, ahaIfDefNodeTmpActive ahaIfDefNodeInactive, ahaIfDefNodeActive, ahaIfDefNodeTmpActive,
ahaIdentComplWindow, ahaIdentComplWindowBorder, ahaIdentComplWindowSelection, ahaIdentComplWindowHighlight
); );
TAhaGroupName = ( TAhaGroupName = (
agnDefault, agnLanguage, agnText, agnLine, agnGutter, agnTemplateMode, agnSyncronMode, agnDefault, agnLanguage, agnText, agnLine, agnGutter, agnTemplateMode, agnSyncronMode,
agnIfDef agnIfDef, agnIdentComplWindow
); );
TSourceEditorBase = class; TSourceEditorBase = class;

View File

@ -212,11 +212,29 @@ type
property IfDefTree; property IfDefTree;
end; end;
TSynMarkupIdentComplWindow = class // don't inherit from TSynEditMarkup, no regular markup
private
FBackgroundSelectedColor: TColor;
FBorderColor: TColor;
FHighlightColor: TColor;
FTextColor: TColor;
FTextSelectedColor: TColor;
FWindowColor: TColor;
public
property WindowColor: TColor read FWindowColor write FWindowColor;
property TextColor: TColor read FTextColor write FTextColor;
property BorderColor: TColor read FBorderColor write FBorderColor;
property HighlightColor: TColor read FHighlightColor write FHighlightColor;
property TextSelectedColor: TColor read FTextSelectedColor write FTextSelectedColor;
property BackgroundSelectedColor: TColor read FBackgroundSelectedColor write FBackgroundSelectedColor;
end;
{ TIDESynEditor } { TIDESynEditor }
TIDESynEditor = class(TSynEdit) TIDESynEditor = class(TSynEdit)
private private
FCaretStamp: Int64; FCaretStamp: Int64;
FMarkupIdentComplWindow: TSynMarkupIdentComplWindow;
FShowTopInfo: boolean; FShowTopInfo: boolean;
FTopInfoNestList: TLazSynEditNestedFoldsList; FTopInfoNestList: TLazSynEditNestedFoldsList;
FSyncroEdit: TSynPluginSyncroEdit; FSyncroEdit: TSynPluginSyncroEdit;
@ -281,6 +299,7 @@ type
procedure SetIfdefNodeState(ALinePos, AstartPos: Integer; AState: TSynMarkupIfdefNodeState); procedure SetIfdefNodeState(ALinePos, AstartPos: Integer; AState: TSynMarkupIfdefNodeState);
property OnIfdefNodeStateRequest: TSynMarkupIfdefStateRequest read FOnIfdefNodeStateRequest write FOnIfdefNodeStateRequest; property OnIfdefNodeStateRequest: TSynMarkupIfdefStateRequest read FOnIfdefNodeStateRequest write FOnIfdefNodeStateRequest;
property MarkupIfDef: TSourceSynEditMarkupIfDef read FMarkupIfDef; property MarkupIfDef: TSourceSynEditMarkupIfDef read FMarkupIfDef;
property MarkupIdentComplWindow: TSynMarkupIdentComplWindow read FMarkupIdentComplWindow;
property IsInMultiCaretMainExecution: Boolean read GetIsInMultiCaretMainExecution; property IsInMultiCaretMainExecution: Boolean read GetIsInMultiCaretMainExecution;
property IsInMultiCaretRepeatExecution: Boolean read GetIsInMultiCaretRepeatExecution; property IsInMultiCaretRepeatExecution: Boolean read GetIsInMultiCaretRepeatExecution;
property OnMultiCaretBeforeCommand: TSynMultiCaretBeforeCommand read GetOnMultiCaretBeforeCommand write SetOnMultiCaretBeforeCommand; property OnMultiCaretBeforeCommand: TSynMultiCaretBeforeCommand read GetOnMultiCaretBeforeCommand write SetOnMultiCaretBeforeCommand;
@ -1683,6 +1702,8 @@ begin
//FMarkupIfDef.OnNodeStateRequest := @DoIfDefNodeStateRequest; //FMarkupIfDef.OnNodeStateRequest := @DoIfDefNodeStateRequest;
TSynEditMarkupManager(MarkupMgr).AddMarkUp(FMarkupIfDef); TSynEditMarkupManager(MarkupMgr).AddMarkUp(FMarkupIfDef);
FMarkupIdentComplWindow := TSynMarkupIdentComplWindow.Create;
FPaintArea := TSourceLazSynSurfaceManager.Create(Self, FPaintArea); FPaintArea := TSourceLazSynSurfaceManager.Create(Self, FPaintArea);
GetCaretObj.AddChangeHandler(@SrcSynCaretChanged); GetCaretObj.AddChangeHandler(@SrcSynCaretChanged);
@ -1729,6 +1750,7 @@ begin
FreeAndNil(FExtraMarkupMgr); FreeAndNil(FExtraMarkupMgr);
FreeAndNil(FTopInfoMarkup); FreeAndNil(FTopInfoMarkup);
FreeAndNil(FTopInfoNestList); FreeAndNil(FTopInfoNestList);
FreeAndNil(FMarkupIdentComplWindow);
inherited Destroy; inherited Destroy;
end; end;