SynEdit: Improved highlight current word

git-svn-id: trunk@18144 -
This commit is contained in:
martin 2009-01-05 21:33:49 +00:00
parent 0ed0c4a098
commit 5117148943
9 changed files with 264 additions and 102 deletions

View File

@ -6137,6 +6137,7 @@ begin
Value.FreeNotification(Self);
end;
fHighlighter := Value;
fMarkupHighCaret.Highlighter := Value;
{$IFDEF SYN_LAZARUS}
if fHighlighter<>nil then begin
fHighlighter.ResetRange;

View File

@ -46,8 +46,10 @@ type
fSynEdit : TCustomControl;
fInvalidateLinesMethod : TInvalidateLines;
FEnabled: Boolean;
FTempEnable: Integer;
function GetBGColor : TColor;
function GetEnabled: Boolean;
function GetFGColor : TColor;
function GetFrameColor: TColor;
function GetStyle : TFontStyles;
@ -89,13 +91,15 @@ type
// Notifications about Changes to the text
Procedure TextChanged(aFirstCodeLine, aLastCodeLine: Integer); virtual;
Procedure TempDisable;
Procedure TempEnable;
property MarkupInfo : TSynSelectedColor read fMarkupInfo;
property FGColor : TColor read GetFGColor;
property BGColor : TColor read GetBGColor;
property FrameColor: TColor read GetFrameColor;
property Style : TFontStyles read GetStyle;
property Enabled: Boolean read FEnabled write SetEnabled;
property Enabled: Boolean read GetEnabled write SetEnabled;
property Lines : TSynEditStrings read fLines write SetLines;
property Caret : TPoint read fCaret write SetCaret;
property TopLine : Integer read fTopLine write SetTopLine;
@ -151,6 +155,11 @@ begin
result := fMarkupInfo.Background;
end;
function TSynEditMarkup.GetEnabled: Boolean;
begin
Result := FEnabled and (FTempEnable = 0);
end;
function TSynEditMarkup.GetFGColor : TColor;
begin
result := fMarkupInfo.Foreground;
@ -294,6 +303,7 @@ begin
inherited Create();
fSynEdit := ASynEdit;
FEnabled := true;
FTempEnable := 0;
fMarkupInfo := TSynSelectedColor.Create;
fMarkupInfo.OnChange := @MarkupChanged;
end;
@ -317,6 +327,17 @@ begin
DoTextChanged(aFirstCodeLine, aLastCodeLine);
end;
procedure TSynEditMarkup.TempDisable;
begin
inc(FTempEnable);
end;
procedure TSynEditMarkup.TempEnable;
begin
if FTempEnable > 0 then
dec(FTempEnable);
end;
procedure TSynEditMarkup.PrepareMarkupForRow(aRow : Integer);
begin
end;

View File

@ -27,7 +27,7 @@ interface
uses
Classes, SysUtils, ExtCtrls, SynEditMarkup, SynEditTypes, SynEditSearch,
SynEditMiscClasses, Controls, LCLProc;
SynEditMiscClasses, Controls, LCLProc, SynEditHighlighter;
type
@ -133,7 +133,13 @@ type
FTimer: TTimer;
FWaitTime: Integer;
FFullWord: Boolean;
FFullWordMaxLen: Integer;
FIgnoreKeywords: Boolean;
FHighlighter: TSynCustomHighlighter;
procedure SetFullWord(const AValue: Boolean);
procedure SetFullWordMaxLen(const AValue: Integer);
procedure SetHighlighter(const AValue: TSynCustomHighlighter);
procedure SetIgnoreKeywords(const AValue: Boolean);
procedure SetWaitTime(const AValue: Integer);
protected
procedure DoCaretChanged(OldCaret : TPoint); override;
@ -148,6 +154,10 @@ type
destructor Destroy; override;
property WaitTime: Integer read FWaitTime write SetWaitTime;
property FullWord: Boolean read FFullWord write SetFullWord;
property FullWordMaxLen: Integer read FFullWordMaxLen write SetFullWordMaxLen;
property IgnoreKeywords: Boolean read FIgnoreKeywords write SetIgnoreKeywords;
property Highlighter: TSynCustomHighlighter
read FHighlighter write SetHighlighter;
end;
implementation
@ -543,6 +553,27 @@ begin
SearchOptions := GetCurrentOption;
end;
procedure TSynEditMarkupHighlightAllCaret.SetFullWordMaxLen(const AValue: Integer);
begin
if FFullWordMaxLen = AValue then exit;
FFullWordMaxLen := AValue;
SearchOptions := GetCurrentOption;
end;
procedure TSynEditMarkupHighlightAllCaret.SetHighlighter(const AValue: TSynCustomHighlighter);
begin
if FHighlighter = AValue then exit;
FHighlighter := AValue;
ScrollTimerHandler(self);
end;
procedure TSynEditMarkupHighlightAllCaret.SetIgnoreKeywords(const AValue: Boolean);
begin
if FIgnoreKeywords = AValue then exit;
FIgnoreKeywords := AValue;
ScrollTimerHandler(self);
end;
procedure TSynEditMarkupHighlightAllCaret.DoCaretChanged(OldCaret: TPoint);
begin
if (SearchString = GetCurrentText) and (SearchOptions = GetCurrentOption) then
@ -583,9 +614,13 @@ function TSynEditMarkupHighlightAllCaret.GetCurrentText: String;
begin
If TCustomSynEdit(SynEdit).SelAvail then
Result := TCustomSynEdit(SynEdit).SelText
else
else begin
Result := TCustomSynEdit(SynEdit).GetWordAtRowCol
(TCustomSynEdit(SynEdit).PhysicalToLogicalPos(TCustomSynEdit(SynEdit).CaretXY));
if FIgnoreKeywords and assigned(FHighlighter)
and FHighlighter.IsKeyword(Result) then
Result := '';
end;
end;
function TSynEditMarkupHighlightAllCaret.GetCurrentOption: TSynSearchOptions;
@ -593,7 +628,10 @@ begin
If TCustomSynEdit(SynEdit).SelAvail or not(FFullWord) then
Result := []
else
Result := [ssoWholeWord];
if (FFullWordMaxLen >0) and (UTF8Length(GetCurrentText) > FFullWordMaxLen) then
Result := []
else
Result := [ssoWholeWord];
end;
constructor TSynEditMarkupHighlightAllCaret.Create(ASynEdit: TCustomControl);

View File

@ -458,8 +458,10 @@ type
// Markup Current Word
FMarkupCurWordEnabled: Boolean;
FMarkupCurWordFull: Boolean;
FMarkupCurWordTime: Integer;
FMarkupCurWordFull: Boolean;
FMarkupCurWordFullLen: Integer;
FMarkupCurWordNoKeyword: Boolean;
// Code tools options (MG: these will move to an unit of their own)
fAutoIdentifierCompletion: Boolean;
@ -578,10 +580,15 @@ type
// Markup Current Word
property MarkupCurWordEnabled: Boolean
read FMarkupCurWordEnabled write FMarkupCurWordEnabled default True;
property MarkupCurWordFull: Boolean
read FMarkupCurWordFull write FMarkupCurWordFull default False;
property MarkupCurWordTime: Integer
read FMarkupCurWordTime write FMarkupCurWordTime default 1500;
property MarkupCurWordFull: Boolean
read FMarkupCurWordFull write FMarkupCurWordFull default False;
property MarkupCurWordFullLen: Integer
read FMarkupCurWordFullLen write FMarkupCurWordFullLen default 3;
property MarkupCurWordNoKeyword: Boolean
read FMarkupCurWordNoKeyword write FMarkupCurWordNoKeyword default False;
// Code Tools options
property AutoIdentifierCompletion: Boolean
@ -1386,8 +1393,10 @@ begin
fHighlighterList := TEditOptLangList.Create;
FMarkupCurWordEnabled := True;
FMarkupCurWordFull := False;
FMarkupCurWordTime := 1500;
FMarkupCurWordFull := False;
FMarkupCurWordFullLen := 3;
FMarkupCurWordNoKeyword := False;
// Code Tools options
fCodeTemplateFileName := SetDirSeparators(GetPrimaryConfigPath + '/lazarus.dci');
@ -1549,13 +1558,19 @@ begin
FMarkupCurWordEnabled :=
XMLConfig.GetValue(
'EditorOptions/Display/MarkupCurrentWordEnabled', True);
FMarkupCurWordFull :=
XMLConfig.GetValue(
'EditorOptions/Display/MarkupCurrentWordFull', False);
'EditorOptions/Display/MarkupCurrentWord/Enabled', True);
FMarkupCurWordTime :=
XMLConfig.GetValue(
'EditorOptions/Display/MarkupCurrentWordTime', 1500);
'EditorOptions/Display/MarkupCurrentWord/Time', 1500);
FMarkupCurWordFull :=
XMLConfig.GetValue(
'EditorOptions/Display/MarkupCurrentWord/FullWord', False);
FMarkupCurWordFullLen :=
XMLConfig.GetValue(
'EditorOptions/Display/MarkupCurrentWord/FullLen', 3);
FMarkupCurWordNoKeyword :=
XMLConfig.GetValue(
'EditorOptions/Display/MarkupCurrentWord/NoKeyword', False);
// Code Tools options
fAutoIdentifierCompletion :=
@ -1698,12 +1713,16 @@ begin
;
XMLConfig.SetDeleteValue('EditorOptions/Display/MarkupCurrentWordEnabled',
XMLConfig.SetDeleteValue('EditorOptions/Display/MarkupCurrentWord/Enabled',
FMarkupCurWordEnabled, True);
XMLConfig.SetDeleteValue('EditorOptions/Display/MarkupCurrentWordFull',
FMarkupCurWordFull, True);
XMLConfig.SetDeleteValue('EditorOptions/Display/MarkupCurrentWordTime',
XMLConfig.SetDeleteValue('EditorOptions/Display/MarkupCurrentWord/Time',
FMarkupCurWordTime, 1500);
XMLConfig.SetDeleteValue('EditorOptions/Display/MarkupCurrentWord/FullWord',
FMarkupCurWordFull, False);
XMLConfig.SetDeleteValue('EditorOptions/Display/MarkupCurrentWord/FullLen',
FMarkupCurWordFullLen, 3);
XMLConfig.SetDeleteValue('EditorOptions/Display/MarkupCurrentWord/NoKeyword',
FMarkupCurWordNoKeyword, False);
// Code Tools options
XMLConfig.SetDeleteValue('EditorOptions/CodeTools/AutoIdentifierCompletion'
@ -2299,8 +2318,10 @@ begin
MarkCaret := TSynEditMarkupHighlightAllCaret(ASynEdit.MarkupByClass[TSynEditMarkupHighlightAllCaret]);
if assigned(MarkCaret) then begin
MarkCaret.Enabled := FMarkupCurWordEnabled;
MarkCaret.FullWord := FMarkupCurWordFull;
MarkCaret.WaitTime := FMarkupCurWordTime;
MarkCaret.FullWord := FMarkupCurWordFull;
MarkCaret.FullWordMaxLen := FMarkupCurWordFullLen;
MarkCaret.IgnoreKeywords := FMarkupCurWordNoKeyword;
end;
// Code Folding
@ -2343,8 +2364,10 @@ begin
MarkCaret := TSynEditMarkupHighlightAllCaret(ASynEdit.MarkupByClass[TSynEditMarkupHighlightAllCaret]);
if assigned(MarkCaret) then begin
FMarkupCurWordEnabled := MarkCaret.Enabled;
FMarkupCurWordFull := MarkCaret.FullWord;
FMarkupCurWordTime := MarkCaret.WaitTime;
FMarkupCurWordFull := MarkCaret.FullWord;
FMarkupCurWordFullLen := MarkCaret.FullWordMaxLen;
FMarkupCurWordNoKeyword := MarkCaret.IgnoreKeywords;
end;
end;

View File

@ -5,8 +5,8 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
ClientWidth = 496
TabOrder = 0
Visible = False
DesignLeft = 161
DesignTop = 161
DesignLeft = 46
DesignTop = 46
object AutoDelayMaxLabel: TLabel[0]
AnchorSideTop.Control = AutoDelayTrackBar
AnchorSideTop.Side = asrBottom
@ -52,7 +52,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
AnchorSideTop.Side = asrBottom
Left = 0
Height = 16
Top = 303
Top = 328
Width = 149
BorderSpacing.Top = 2
Caption = 'MarkupWordDelayMinLabel'
@ -65,7 +65,7 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 346
Height = 16
Top = 303
Top = 328
Width = 150
Alignment = taRightJustify
Anchors = [akTop, akRight]
@ -79,72 +79,87 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
AnchorSideTop.Side = asrBottom
Left = 0
Height = 16
Top = 325
Top = 350
Width = 128
BorderSpacing.Top = 24
Caption = 'MarkupWordDelayLabel'
ParentColor = False
end
object AutoIdentifierCompletionCheckBox: TCheckBox[6]
object MarkupWordFullLenLabel: TLabel[6]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MarkupWordEnabledCheckBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = MarkupWordFullLenSpin
Left = 307
Height = 16
Top = 236
Width = 137
Anchors = [akTop, akRight]
BorderSpacing.Top = 6
BorderSpacing.Right = 4
Caption = 'MarkupWordFullLenLabel'
ParentColor = False
end
object AutoIdentifierCompletionCheckBox: TCheckBox[7]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 0
Height = 19
Top = 0
Width = 208
Width = 183
Caption = 'AutoIdentifierCompletionCheckBox'
TabOrder = 0
end
object AutoRemoveEmptyMethodsOnSave: TCheckBox[7]
object AutoRemoveEmptyMethodsOnSave: TCheckBox[8]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = AutoIdentifierCompletionCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 25
Width = 210
Width = 191
BorderSpacing.Top = 6
Caption = 'AutoRemoveEmptyMethodsOnSave'
TabOrder = 1
end
object AutoToolTipSymbToolsCheckBox: TCheckBox[8]
object AutoToolTipSymbToolsCheckBox: TCheckBox[9]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = AutoRemoveEmptyMethodsOnSave
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 50
Width = 198
Width = 179
BorderSpacing.Top = 6
Caption = 'AutoToolTipSymbToolsCheckBox'
TabOrder = 2
end
object AutoCodeParametersCheckBox: TCheckBox[9]
object AutoCodeParametersCheckBox: TCheckBox[10]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = AutoToolTipSymbToolsCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 75
Width = 185
Width = 169
BorderSpacing.Top = 6
Caption = 'AutoCodeParametersCheckBox'
Enabled = False
TabOrder = 3
end
object AutoToolTipExprEvalCheckBox: TCheckBox[10]
object AutoToolTipExprEvalCheckBox: TCheckBox[11]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = AutoCodeParametersCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 100
Width = 182
Width = 169
BorderSpacing.Top = 6
Caption = 'AutoToolTipExprEvalCheckBox'
TabOrder = 4
end
object AutoDelayTrackBar: TTrackBar[11]
object AutoDelayTrackBar: TTrackBar[12]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = AutoToolTipExprEvalCheckBox
AnchorSideTop.Side = asrBottom
@ -163,27 +178,27 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
Ctl3D = False
TabOrder = 5
end
object MarkupWordEnabledCheckBox: TCheckBox[12]
object MarkupWordEnabledCheckBox: TCheckBox[13]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = AutoDelayLabel
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 211
Width = 184
Width = 170
BorderSpacing.Top = 6
Caption = 'MarkupWordEnabledCheckBox'
TabOrder = 6
end
object MarkupWordTimeTrackBar: TTrackBar[13]
object MarkupWordTimeTrackBar: TTrackBar[14]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MarkupWordFullCheckBox
AnchorSideTop.Control = MarkupWordNoKeyword
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 40
Top = 261
Top = 286
Width = 496
Frequency = 250
Max = 4000
@ -194,16 +209,42 @@ inherited EditorCodetoolsOptionsFrame: TEditorCodetoolsOptionsFrame
Ctl3D = False
TabOrder = 7
end
object MarkupWordFullCheckBox: TCheckBox[14]
object MarkupWordFullCheckBox: TCheckBox[15]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MarkupWordEnabledCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 236
Width = 161
Width = 147
BorderSpacing.Top = 6
Caption = 'MarkupWordFullCheckBox'
TabOrder = 8
end
object MarkupWordNoKeyword: TCheckBox[16]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MarkupWordFullCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 19
Top = 261
Width = 137
BorderSpacing.Top = 6
Caption = 'MarkupWordNoKeyword'
TabOrder = 9
end
object MarkupWordFullLenSpin: TSpinEdit[17]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = MarkupWordEnabledCheckBox
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 448
Height = 19
Top = 236
Width = 48
Anchors = [akTop, akRight]
BorderSpacing.Top = 6
TabOrder = 10
end
end

View File

@ -1,14 +1,16 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TEditorCodetoolsOptionsFrame','FORMDATA',[
'TPF0'#241#28'TEditorCodetoolsOptionsFrame'#27'EditorCodetoolsOptionsFrame'#6
+'Height'#3#184#1#5'Width'#3#240#1#12'ClientHeight'#3#184#1#11'ClientWidth'#3
+#240#1#8'TabOrder'#2#0#7'Visible'#8#10'DesignLeft'#3#161#0#9'DesignTop'#3#161
+#0#0#242#2#0#6'TLabel'#17'AutoDelayMaxLabel'#21'AnchorSideTop.Control'#7#17
+'AutoDelayTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight'
+'.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#134#1
+#6'Height'#2#16#3'Top'#3#167#0#5'Width'#2'j'#9'Alignment'#7#14'taRightJustif'
+'y'#7'Anchors'#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2#2#7'Caption'
+#6#17'AutoDelayMaxLabel'#11'ParentColor'#8#0#0#242#2#1#6'TLabel'#17'AutoDela'
+'yMinLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7
+#240#1#8'TabOrder'#2#0#7'Visible'#8#10'DesignLeft'#2'.'#9'DesignTop'#2'.'#0
+#242#2#0#6'TLabel'#17'AutoDelayMaxLabel'#21'AnchorSideTop.Control'#7#17'Auto'
+'DelayTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Con'
+'trol'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#134#1#6
+'Height'#2#16#3'Top'#3#167#0#5'Width'#2'j'#9'Alignment'#7#14'taRightJustify'
+#7'Anchors'#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2#2#7'Caption'#6
+#17'AutoDelayMaxLabel'#11'ParentColor'#8#0#0#242#2#1#6'TLabel'#17'AutoDelayM'
+'inLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7
+#17'AutoDelayTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'H'
+'eight'#2#16#3'Top'#3#167#0#5'Width'#2'i'#17'BorderSpacing.Top'#2#2#7'Captio'
+'n'#6#17'AutoDelayMinLabel'#11'ParentColor'#8#0#0#242#2#2#6'TLabel'#14'AutoD'
@ -18,59 +20,75 @@ LazarusResources.Add('TEditorCodetoolsOptionsFrame','FORMDATA',[
+'on'#6#14'AutoDelayLabel'#11'ParentColor'#8#0#0#242#2#3#6'TLabel'#18'MarkupW'
+'ordMinLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'
+#7#22'MarkupWordTimeTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2
+#0#6'Height'#2#16#3'Top'#3'/'#1#5'Width'#3#149#0#17'BorderSpacing.Top'#2#2#7
+#0#6'Height'#2#16#3'Top'#3'H'#1#5'Width'#3#149#0#17'BorderSpacing.Top'#2#2#7
+'Caption'#6#23'MarkupWordDelayMinLabel'#11'ParentColor'#8#0#0#242#2#4#6'TLab'
+'el'#18'MarkupWordMaxLabel'#21'AnchorSideTop.Control'#7#22'MarkupWordTimeTra'
+'ckBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5
+'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'Z'#1#6'Height'#2#16
+#3'Top'#3'/'#1#5'Width'#3#150#0#9'Alignment'#7#14'taRightJustify'#7'Anchors'
+#3'Top'#3'H'#1#5'Width'#3#150#0#9'Alignment'#7#14'taRightJustify'#7'Anchors'
+#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2#2#7'Caption'#6#23'MarkupWo'
+'rdDelayMaxLabel'#11'ParentColor'#8#0#0#242#2#5#6'TLabel'#20'MarkupWordDelay'
+'Label'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#22
+'MarkupWordTimeTrackBar'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6
+'Height'#2#16#3'Top'#3'E'#1#5'Width'#3#128#0#17'BorderSpacing.Top'#2#24#7'Ca'
+'ption'#6#20'MarkupWordDelayLabel'#11'ParentColor'#8#0#0#242#2#6#9'TCheckBox'
+' AutoIdentifierCompletionCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21
+'AnchorSideTop.Control'#7#5'Owner'#4'Left'#2#0#6'Height'#2#19#3'Top'#2#0#5'W'
+'idth'#3#208#0#7'Caption'#6' AutoIdentifierCompletionCheckBox'#8'TabOrder'#2
+#0#0#0#242#2#7#9'TCheckBox'#28'AutoRemoveEmptyMethodsOnSave'#22'AnchorSideLe'
+'ft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7' AutoIdentifierCompletio'
+'nCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#19
+#3'Top'#2#25#5'Width'#3#210#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#28'Auto'
+'RemoveEmptyMethodsOnSave'#8'TabOrder'#2#1#0#0#242#2#8#9'TCheckBox'#28'AutoT'
+'oolTipSymbToolsCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSid'
+'eTop.Control'#7#28'AutoRemoveEmptyMethodsOnSave'#18'AnchorSideTop.Side'#7#9
+'asrBottom'#4'Left'#2#0#6'Height'#2#19#3'Top'#2'2'#5'Width'#3#198#0#17'Borde'
+'rSpacing.Top'#2#6#7'Caption'#6#28'AutoToolTipSymbToolsCheckBox'#8'TabOrder'
+#2#2#0#0#242#2#9#9'TCheckBox'#26'AutoCodeParametersCheckBox'#22'AnchorSideLe'
+'ft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#28'AutoToolTipSymbToolsC'
+'heckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#19#3
+'Top'#2'K'#5'Width'#3#185#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#26'AutoCo'
+'deParametersCheckBox'#7'Enabled'#8#8'TabOrder'#2#3#0#0#242#2#10#9'TCheckBox'
+#27'AutoToolTipExprEvalCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'An'
+'chorSideTop.Control'#7#26'AutoCodeParametersCheckBox'#18'AnchorSideTop.Side'
+#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#19#3'Top'#2'd'#5'Width'#3#182#0#17'B'
+'orderSpacing.Top'#2#6#7'Caption'#6#27'AutoToolTipExprEvalCheckBox'#8'TabOrd'
+'er'#2#4#0#0#242#2#11#9'TTrackBar'#17'AutoDelayTrackBar'#22'AnchorSideLeft.C'
+'ontrol'#7#5'Owner'#21'AnchorSideTop.Control'#7#27'AutoToolTipExprEvalCheckB'
+'ox'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'O'
+'wner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'('#3
+'Top'#2'}'#5'Width'#3#240#1#9'Frequency'#3#250#0#3'Max'#3#160#15#3'Min'#3#244
+#1#8'Position'#3#244#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'Bord'
+'erSpacing.Top'#2#6#5'Ctl3D'#8#8'TabOrder'#2#5#0#0#242#2#12#9'TCheckBox'#25
+'MarkupWordEnabledCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorS'
+'ideTop.Control'#7#14'AutoDelayLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4
+'Left'#2#0#6'Height'#2#19#3'Top'#3#211#0#5'Width'#3#184#0#17'BorderSpacing.T'
+'op'#2#6#7'Caption'#6#25'MarkupWordEnabledCheckBox'#8'TabOrder'#2#6#0#0#242#2
+#13#9'TTrackBar'#22'MarkupWordTimeTrackBar'#22'AnchorSideLeft.Control'#7#5'O'
,'wner'#21'AnchorSideTop.Control'#7#22'MarkupWordFullCheckBox'#18'AnchorSideT'
+'op.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSid'
+'eRight.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'('#3'Top'#3#5#1#5'Width'
+#3#240#1#9'Frequency'#3#250#0#3'Max'#3#160#15#3'Min'#3#244#1#8'Position'#3
+#244#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2
+#6#5'Ctl3D'#8#8'TabOrder'#2#7#0#0#242#2#14#9'TCheckBox'#22'MarkupWordFullChe'
+'ckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#25
+'MarkupWordEnabledCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0
+#6'Height'#2#19#3'Top'#3#236#0#5'Width'#3#161#0#17'BorderSpacing.Top'#2#6#7
+'Caption'#6#22'MarkupWordFullCheckBox'#8'TabOrder'#2#8#0#0#0
+'Height'#2#16#3'Top'#3'^'#1#5'Width'#3#128#0#17'BorderSpacing.Top'#2#24#7'Ca'
+'ption'#6#20'MarkupWordDelayLabel'#11'ParentColor'#8#0#0#242#2#6#6'TLabel'#22
+'MarkupWordFullLenLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSide'
+'Top.Control'#7#25'MarkupWordEnabledCheckBox'#18'AnchorSideTop.Side'#7#9'asr'
+'Bottom'#23'AnchorSideRight.Control'#7#21'MarkupWordFullLenSpin'#4'Left'#3'3'
+#1#6'Height'#2#16#3'Top'#3#236#0#5'Width'#3#137#0#7'Anchors'#11#5'akTop'#7'a'
+'kRight'#0#17'BorderSpacing.Top'#2#6#19'BorderSpacing.Right'#2#4#7'Caption'#6
+#22'MarkupWordFullLenLabel'#11'ParentColor'#8#0#0#242#2#7#9'TCheckBox AutoId'
+'entifierCompletionCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Anchor'
+'SideTop.Control'#7#5'Owner'#4'Left'#2#0#6'Height'#2#19#3'Top'#2#0#5'Width'#3
+#183#0#7'Caption'#6' AutoIdentifierCompletionCheckBox'#8'TabOrder'#2#0#0#0
+#242#2#8#9'TCheckBox'#28'AutoRemoveEmptyMethodsOnSave'#22'AnchorSideLeft.Con'
+'trol'#7#5'Owner'#21'AnchorSideTop.Control'#7' AutoIdentifierCompletionCheck'
+'Box'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#19#3'Top'
+#2#25#5'Width'#3#191#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#28'AutoRemoveE'
+'mptyMethodsOnSave'#8'TabOrder'#2#1#0#0#242#2#9#9'TCheckBox'#28'AutoToolTipS'
+'ymbToolsCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Co'
+'ntrol'#7#28'AutoRemoveEmptyMethodsOnSave'#18'AnchorSideTop.Side'#7#9'asrBot'
+'tom'#4'Left'#2#0#6'Height'#2#19#3'Top'#2'2'#5'Width'#3#179#0#17'BorderSpaci'
+'ng.Top'#2#6#7'Caption'#6#28'AutoToolTipSymbToolsCheckBox'#8'TabOrder'#2#2#0
+#0#242#2#10#9'TCheckBox'#26'AutoCodeParametersCheckBox'#22'AnchorSideLeft.Co'
+'ntrol'#7#5'Owner'#21'AnchorSideTop.Control'#7#28'AutoToolTipSymbToolsCheckB'
+'ox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#19#3'Top'
+#2'K'#5'Width'#3#169#0#17'BorderSpacing.Top'#2#6#7'Caption'#6#26'AutoCodePar'
+'ametersCheckBox'#7'Enabled'#8#8'TabOrder'#2#3#0#0#242#2#11#9'TCheckBox'#27
+'AutoToolTipExprEvalCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Ancho'
+'rSideTop.Control'#7#26'AutoCodeParametersCheckBox'#18'AnchorSideTop.Side'#7
+#9'asrBottom'#4'Left'#2#0#6'Height'#2#19#3'Top'#2'd'#5'Width'#3#169#0#17'Bor'
+'derSpacing.Top'#2#6#7'Caption'#6#27'AutoToolTipExprEvalCheckBox'#8'TabOrder'
+#2#4#0#0#242#2#12#9'TTrackBar'#17'AutoDelayTrackBar'#22'AnchorSideLeft.Contr'
+'ol'#7#5'Owner'#21'AnchorSideTop.Control'#7#27'AutoToolTipExprEvalCheckBox'
+#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'
+#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'('#3'Top'#2
+'}'#5'Width'#3#240#1#9'Frequency'#3#250#0#3'Max'#3#160#15#3'Min'#3#244#1#8'P'
+'osition'#3#244#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpa'
,'cing.Top'#2#6#5'Ctl3D'#8#8'TabOrder'#2#5#0#0#242#2#13#9'TCheckBox'#25'Marku'
+'pWordEnabledCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTo'
+'p.Control'#7#14'AutoDelayLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Lef'
+'t'#2#0#6'Height'#2#19#3'Top'#3#211#0#5'Width'#3#170#0#17'BorderSpacing.Top'
+#2#6#7'Caption'#6#25'MarkupWordEnabledCheckBox'#8'TabOrder'#2#6#0#0#242#2#14
+#9'TTrackBar'#22'MarkupWordTimeTrackBar'#22'AnchorSideLeft.Control'#7#5'Owne'
+'r'#21'AnchorSideTop.Control'#7#19'MarkupWordNoKeyword'#18'AnchorSideTop.Sid'
+'e'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight'
+'.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'('#3'Top'#3#30#1#5'Width'#3
+#240#1#9'Frequency'#3#250#0#3'Max'#3#160#15#3'Min'#3#244#1#8'Position'#3#244
+#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#5
+'Ctl3D'#8#8'TabOrder'#2#7#0#0#242#2#15#9'TCheckBox'#22'MarkupWordFullCheckBo'
+'x'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#25'Mar'
+'kupWordEnabledCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#0#6
+'Height'#2#19#3'Top'#3#236#0#5'Width'#3#147#0#17'BorderSpacing.Top'#2#6#7'Ca'
+'ption'#6#22'MarkupWordFullCheckBox'#8'TabOrder'#2#8#0#0#242#2#16#9'TCheckBo'
+'x'#19'MarkupWordNoKeyword'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorS'
+'ideTop.Control'#7#22'MarkupWordFullCheckBox'#18'AnchorSideTop.Side'#7#9'asr'
+'Bottom'#4'Left'#2#0#6'Height'#2#19#3'Top'#3#5#1#5'Width'#3#137#0#17'BorderS'
+'pacing.Top'#2#6#7'Caption'#6#19'MarkupWordNoKeyword'#8'TabOrder'#2#9#0#0#242
+#2#17#9'TSpinEdit'#21'MarkupWordFullLenSpin'#22'AnchorSideLeft.Control'#7#5
+'Owner'#21'AnchorSideTop.Control'#7#25'MarkupWordEnabledCheckBox'#18'AnchorS'
+'ideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#5'Owner'#20'Ancho'
+'rSideRight.Side'#7#9'asrBottom'#4'Left'#3#192#1#6'Height'#2#19#3'Top'#3#236
+#0#5'Width'#2'0'#7'Anchors'#11#5'akTop'#7'akRight'#0#17'BorderSpacing.Top'#2
+#6#8'TabOrder'#2#10#0#0#0
]);

View File

@ -26,7 +26,7 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, StdCtrls, ComCtrls,
EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf;
EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, Spin;
type
{ TEditorCodetoolsOptionsFrame }
@ -41,6 +41,9 @@ type
AutoToolTipExprEvalCheckBox: TCheckBox;
MarkupWordDelayLabel: TLabel;
MarkupWordFullCheckBox: TCheckBox;
MarkupWordFullLenSpin: TSpinEdit;
MarkupWordFullLenLabel: TLabel;
MarkupWordNoKeyword: TCheckBox;
MarkupWordMaxLabel: TLabel;
MarkupWordMinLabel: TLabel;
MarkupWordEnabledCheckBox: TCheckBox;
@ -83,6 +86,8 @@ begin
MarkupWordDelayLabel.Caption := dlgEdDelay;
MarkupWordMinLabel.Caption := '0.5 ' + DlgTimeSecondUnit;;
MarkupWordMaxLabel.Caption := '4.0 ' + DlgTimeSecondUnit;;
MarkupWordFullLenLabel.Caption := dlgMarkupWordFullLen;
MarkupWordNoKeyword.Caption := dlgMarkupWordNoKeyword;
end;
procedure TEditorCodetoolsOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
@ -98,6 +103,8 @@ begin
MarkupWordEnabledCheckBox.Checked := MarkupCurWordEnabled;
MarkupWordFullCheckBox.Checked := MarkupCurWordFull;
MarkupWordTimeTrackBar.Position := MarkupCurWordTime;
MarkupWordFullLenSpin. Value := MarkupCurWordFullLen;
MarkupWordNoKeyword.Checked := MarkupCurWordNoKeyword;
end;
end;
@ -114,6 +121,8 @@ begin
MarkupCurWordEnabled := MarkupWordEnabledCheckBox.Checked;
MarkupCurWordFull := MarkupWordFullCheckBox.Checked;
MarkupCurWordTime := MarkupWordTimeTrackBar.Position;
MarkupCurWordFullLen := MarkupWordFullLenSpin.Value;
MarkupCurWordNoKeyword := MarkupWordNoKeyword.Checked;
end;
end;

View File

@ -1190,6 +1190,8 @@ resourcestring
dlgTooltipTools = 'Tooltip symbol Tools';
dlgMarkupWordEnabled = 'Highlight Current Word/Block';
dlgMarkupWordFull = 'Highlight Current Word match word boundaries';
dlgMarkupWordFullLen = 'Only if shorter than';
dlgMarkupWordNoKeyword = 'Ignore Keywords';
dlgAutoRemoveEmptyMethods = 'Auto remove empty methods';
dlgEdDelay = 'Delay';
dlgTimeSecondUnit = 'sec';

View File

@ -50,6 +50,7 @@ uses
// synedit
SynEditStrConst, SynEditTypes, SynEdit, SynRegExpr, SynEditHighlighter,
SynEditAutoComplete, SynEditKeyCmds, SynCompletion, SynEditMiscClasses,
SynEditMarkupHighAll,
// IDE interface
MacroIntf, ProjectIntf, SrcEditorIntf, MenuIntf, LazIDEIntf, PackageIntf,
IDEDialogs, IDEHelpIntf, IDEWindowIntf, IDEImagesIntf,
@ -4607,8 +4608,12 @@ begin
fIncrementalSearchStartPos:=TempEditor.EditorComponent.LogicalCaretXY;
FIncrementalSearchPos:=fIncrementalSearchStartPos;
FIncrementalSearchEditor := TempEditor;
if assigned(FIncrementalSearchEditor.EditorComponent)
then FIncrementalSearchEditor.EditorComponent.UseIncrementalColor:= true;
if assigned(FIncrementalSearchEditor.EditorComponent) then
with FIncrementalSearchEditor.EditorComponent do begin
UseIncrementalColor:= true;
if assigned(MarkupByClass[TSynEditMarkupHighlightAll]) then
MarkupByClass[TSynEditMarkupHighlightAll].TempEnable;
end;
IncrementalSearchStr:='';
@ -4623,8 +4628,12 @@ begin
if FIncrementalSearchEditor <> nil
then begin
if assigned(FIncrementalSearchEditor.EditorComponent)
then FIncrementalSearchEditor.EditorComponent.UseIncrementalColor:= false;
if assigned(FIncrementalSearchEditor.EditorComponent) then
with FIncrementalSearchEditor.EditorComponent do begin
UseIncrementalColor:= False;
if assigned(MarkupByClass[TSynEditMarkupHighlightAll]) then
MarkupByClass[TSynEditMarkupHighlightAll].TempEnable;
end;
FIncrementalSearchEditor.EditorComponent.SetHighlightSearch('', []);
FIncrementalSearchEditor := nil;
end;