IDE, EditorOptions: added config for different modes to highlight "string", "Ansistring", "exit", "break",

git-svn-id: trunk@27963 -
This commit is contained in:
martin 2010-10-30 00:54:27 +00:00
parent 16196b2246
commit c8a6d0a3d9
4 changed files with 148 additions and 4 deletions

View File

@ -930,7 +930,9 @@ type
private private
FCompletionLongLineHintInMSec: Integer; FCompletionLongLineHintInMSec: Integer;
FCompletionLongLineHintType: TSynCompletionLongHintType; FCompletionLongLineHintType: TSynCompletionLongHintType;
FPasExtendedKeywordsMode: Boolean;
FHideSingleTabInWindow: Boolean; FHideSingleTabInWindow: Boolean;
FPasStringKeywordMode: TSynPasStringMode;
xmlconfig: TRttiXMLConfig; xmlconfig: TRttiXMLConfig;
// general options // general options
@ -1172,6 +1174,12 @@ type
read FReverseFoldPopUpOrder write FReverseFoldPopUpOrder default True; read FReverseFoldPopUpOrder write FReverseFoldPopUpOrder default True;
property UseTabHistory: Boolean read fUseTabHistory write fUseTabHistory; property UseTabHistory: Boolean read fUseTabHistory write fUseTabHistory;
// Highlighter Pas
property PasExtendedKeywordsMode: Boolean
read FPasExtendedKeywordsMode write FPasExtendedKeywordsMode default False;
property PasStringKeywordMode: TSynPasStringMode
read FPasStringKeywordMode write FPasStringKeywordMode default spsmDefault;
end; end;
const const
@ -3282,6 +3290,11 @@ begin
// Code folding // Code folding
FReverseFoldPopUpOrder := True; FReverseFoldPopUpOrder := True;
// pas highlighter
FPasExtendedKeywordsMode := False;
FPasStringKeywordMode := spsmDefault;
end; end;
procedure TEditorOptions.Load; procedure TEditorOptions.Load;
@ -4054,6 +4067,10 @@ begin
ReadHighlighterSettings(Syn, ''); ReadHighlighterSettings(Syn, '');
ReadHighlighterFoldSettings(Syn); ReadHighlighterFoldSettings(Syn);
ReadHighlighterDivDrawSettings(Syn); ReadHighlighterDivDrawSettings(Syn);
if Syn is TSynPasSyn then begin
TSynPasSyn(Syn).ExtendedKeywordsMode := PasExtendedKeywordsMode;
TSynPasSyn(Syn).StringKeywordMode := PasStringKeywordMode;
end;;
end; end;
procedure TEditorOptions.SetMarkupColors(aSynEd: TSynEdit); procedure TEditorOptions.SetMarkupColors(aSynEd: TSynEdit);

View File

@ -27,7 +27,7 @@ interface
uses uses
Classes, SysUtils, LCLProc, LCLType, StdCtrls, Controls, ExtCtrls, Graphics, Classes, SysUtils, LCLProc, LCLType, StdCtrls, Controls, ExtCtrls, Graphics,
EditorOptions, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf, EditorOptions, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf,
SynEdit, SynBeautifier, DividerBevel; SynEdit, SynBeautifier, SynHighlighterPas, DividerBevel;
type type
TPreviewEditor = TSynEdit; TPreviewEditor = TSynEdit;
@ -97,12 +97,17 @@ type
private private
FDefaultBookmarkImages: TImageList; FDefaultBookmarkImages: TImageList;
FDialog: TAbstractOptionsEditorDialog; FDialog: TAbstractOptionsEditorDialog;
FPasExtendedKeywordsMode: Boolean;
FPasStringKeywordMode: TSynPasStringMode;
function DefaultBookmarkImages: TImageList; function DefaultBookmarkImages: TImageList;
procedure SetExtendedKeywordsMode(const AValue: Boolean);
procedure SetStringKeywordMode(const AValue: TSynPasStringMode);
public public
PreviewEdits: array of TPreviewEditor; PreviewEdits: array of TPreviewEditor;
procedure AddPreviewEdit(AEditor: TPreviewEditor); procedure AddPreviewEdit(AEditor: TPreviewEditor);
procedure SetPreviewOption(AValue: Boolean; AnOption: TSynEditorOption); overload; procedure SetPreviewOption(AValue: Boolean; AnOption: TSynEditorOption); overload;
procedure SetPreviewOption(AValue: Boolean; AnOption: TSynEditorOption2); overload; procedure SetPreviewOption(AValue: Boolean; AnOption: TSynEditorOption2); overload;
procedure UpdatePrevieEdits;
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
function GetTitle: String; override; function GetTitle: String; override;
@ -110,6 +115,11 @@ type
procedure ReadSettings(AOptions: TAbstractIDEOptions); override; procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); override; procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override; class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
// current previewmode
property PasExtendedKeywordsMode: Boolean
read FPasExtendedKeywordsMode write SetExtendedKeywordsMode default False;
property PasStringKeywordMode: TSynPasStringMode
read FPasStringKeywordMode write SetStringKeywordMode default spsmDefault;
end; end;
implementation implementation
@ -328,6 +338,17 @@ begin
end; end;
end; end;
procedure TEditorGeneralOptionsFrame.UpdatePrevieEdits;
var
a: Integer;
begin
for a := Low(PreviewEdits) to High(PreviewEdits) do
if PreviewEdits[a].Highlighter is TSynPasSyn then begin
TSynPasSyn(PreviewEdits[a].Highlighter).ExtendedKeywordsMode := PasExtendedKeywordsMode;
TSynPasSyn(PreviewEdits[a].Highlighter).StringKeywordMode := PasStringKeywordMode;
end;
end;
procedure TEditorGeneralOptionsFrame.ComboboxOnChange(Sender: TObject); procedure TEditorGeneralOptionsFrame.ComboboxOnChange(Sender: TObject);
var var
ComboBox: TComboBox absolute Sender; ComboBox: TComboBox absolute Sender;
@ -499,6 +520,20 @@ begin
Result := FDefaultBookmarkImages; Result := FDefaultBookmarkImages;
end; end;
procedure TEditorGeneralOptionsFrame.SetExtendedKeywordsMode(const AValue: Boolean);
begin
if FPasExtendedKeywordsMode = AValue then exit;
FPasExtendedKeywordsMode := AValue;
UpdatePrevieEdits;
end;
procedure TEditorGeneralOptionsFrame.SetStringKeywordMode(const AValue: TSynPasStringMode);
begin
if FPasStringKeywordMode = AValue then exit;
FPasStringKeywordMode := AValue;
UpdatePrevieEdits;
end;
procedure TEditorGeneralOptionsFrame.AddPreviewEdit(AEditor: TPreviewEditor); procedure TEditorGeneralOptionsFrame.AddPreviewEdit(AEditor: TPreviewEditor);
begin begin
SetLength(PreviewEdits, Length(PreviewEdits) + 1); SetLength(PreviewEdits, Length(PreviewEdits) + 1);
@ -511,6 +546,10 @@ constructor TEditorGeneralOptionsFrame.Create(AOwner: TComponent);
begin begin
inherited Create(AOwner); inherited Create(AOwner);
PreviewEdits := nil; PreviewEdits := nil;
if EditorOpts <> nil then begin
FPasExtendedKeywordsMode := EditorOpts.PasExtendedKeywordsMode;
FPasStringKeywordMode := EditorOpts.PasStringKeywordMode;
end;
end; end;
initialization initialization

View File

@ -202,13 +202,71 @@ inherited EditorMarkupOptionsFrame: TEditorMarkupOptionsFrame
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 0 Left = -721
Height = 17 Height = 17
Top = 157 Top = 157
Width = 634 Width = 1355
Caption = 'divMatchingBrackets' Caption = 'divMatchingBrackets'
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
Font.Style = [fsBold] Font.Style = [fsBold]
ParentFont = False ParentFont = False
end end
object divKeywords: TDividerBevel[13]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = BracketCombo
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 17
Top = 209
Width = 634
Caption = 'divKeywords'
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
Font.Style = [fsBold]
ParentFont = False
end
object chkExtPasKeywords: TCheckBox[14]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = divKeywords
AnchorSideTop.Side = asrBottom
Left = 6
Height = 19
Top = 232
Width = 123
BorderSpacing.Left = 6
BorderSpacing.Top = 6
Caption = 'chkExtPasKeywords'
OnChange = chkExtPasKeywordsChange
TabOrder = 6
end
object lblPasStringKeywords: TLabel[15]
AnchorSideLeft.Control = dropPasStringKeywords
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = dropPasStringKeywords
AnchorSideTop.Side = asrCenter
Left = 232
Height = 16
Top = 260
Width = 114
BorderSpacing.Left = 6
Caption = 'lblPasStringKeywords'
ParentColor = False
end
object dropPasStringKeywords: TComboBox[16]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = chkExtPasKeywords
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23
Top = 257
Width = 220
BorderSpacing.Left = 6
BorderSpacing.Top = 6
ItemHeight = 15
OnChange = dropPasStringKeywordsChange
Style = csDropDownList
TabOrder = 7
end
end end

View File

@ -28,7 +28,7 @@ uses
Classes, StdCtrls, ComCtrls, Graphics, sysutils, Classes, StdCtrls, ComCtrls, Graphics, sysutils,
EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, Spin, ExtCtrls, EditorOptions, LazarusIDEStrConsts, IDEOptionsIntf, Spin, ExtCtrls,
SynEditMarkupBracket, editor_color_options, editor_general_options, SynEditMarkupBracket, editor_color_options, editor_general_options,
SynEdit, SynCompletion, DividerBevel, LCLType; SynEdit, SynCompletion, SynHighlighterPas, DividerBevel, LCLType;
type type
{ TEditorMarkupOptionsFrame } { TEditorMarkupOptionsFrame }
@ -37,8 +37,12 @@ type
BracketCombo: TComboBox; BracketCombo: TComboBox;
BracketLabel: TLabel; BracketLabel: TLabel;
BracketLink: TLabel; BracketLink: TLabel;
chkExtPasKeywords: TCheckBox;
dropPasStringKeywords: TComboBox;
divKeywords: TDividerBevel;
divMatchingBrackets: TDividerBevel; divMatchingBrackets: TDividerBevel;
divWordGroup: TDividerBevel; divWordGroup: TDividerBevel;
lblPasStringKeywords: TLabel;
MarkupColorLink: TLabel; MarkupColorLink: TLabel;
MarkupWordDelayLabel: TLabel; MarkupWordDelayLabel: TLabel;
MarkupWordNoTimerCheckBox: TCheckBox; MarkupWordNoTimerCheckBox: TCheckBox;
@ -54,6 +58,8 @@ type
procedure BracketLinkClick(Sender: TObject); procedure BracketLinkClick(Sender: TObject);
procedure BracketLinkMouseEnter(Sender: TObject); procedure BracketLinkMouseEnter(Sender: TObject);
procedure BracketLinkMouseLeave(Sender: TObject); procedure BracketLinkMouseLeave(Sender: TObject);
procedure chkExtPasKeywordsChange(Sender: TObject);
procedure dropPasStringKeywordsChange(Sender: TObject);
function GeneralPage: TEditorGeneralOptionsFrame; inline; function GeneralPage: TEditorGeneralOptionsFrame; inline;
procedure MarkupColorLinkClick(Sender: TObject); procedure MarkupColorLinkClick(Sender: TObject);
private private
@ -132,6 +138,18 @@ begin
(Sender as TLabel).Font.Color := clBlue; (Sender as TLabel).Font.Color := clBlue;
end; end;
procedure TEditorMarkupOptionsFrame.chkExtPasKeywordsChange(Sender: TObject);
begin
GeneralPage.PasExtendedKeywordsMode := chkExtPasKeywords.Checked;
GeneralPage.UpdatePrevieEdits;
end;
procedure TEditorMarkupOptionsFrame.dropPasStringKeywordsChange(Sender: TObject);
begin
GeneralPage.PasStringKeywordMode := TSynPasStringMode(dropPasStringKeywords.ItemIndex);
GeneralPage.UpdatePrevieEdits;
end;
function TEditorMarkupOptionsFrame.GeneralPage: TEditorGeneralOptionsFrame; inline; function TEditorMarkupOptionsFrame.GeneralPage: TEditorGeneralOptionsFrame; inline;
begin begin
Result := TEditorGeneralOptionsFrame(FDialog.FindEditor(TEditorGeneralOptionsFrame)); Result := TEditorGeneralOptionsFrame(FDialog.FindEditor(TEditorGeneralOptionsFrame));
@ -170,6 +188,13 @@ begin
BracketCombo.Items.Add(dlgHighlightLeftOfCursor); BracketCombo.Items.Add(dlgHighlightLeftOfCursor);
BracketCombo.Items.Add(dlgHighlightRightOfCursor); BracketCombo.Items.Add(dlgHighlightRightOfCursor);
BracketCombo.Items.Add(gldHighlightBothSidesOfCursor); BracketCombo.Items.Add(gldHighlightBothSidesOfCursor);
divKeywords.Caption := dlgPasExtKeywordsGroup;
chkExtPasKeywords.Caption := dlgPasExtKeywords;
lblPasStringKeywords.Caption := dlgPasStringKeywords;
dropPasStringKeywords.Items.Add(dlgPasStringKeywordsOptDefault);
dropPasStringKeywords.Items.Add(dlgPasStringKeywordsOptString);
dropPasStringKeywords.Items.Add(dlgPasStringKeywordsOptNone);
end; end;
procedure TEditorMarkupOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); procedure TEditorMarkupOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
@ -186,6 +211,9 @@ begin
BracketCombo.ItemIndex := Ord(BracketHighlightStyle) + 1 BracketCombo.ItemIndex := Ord(BracketHighlightStyle) + 1
else else
BracketCombo.ItemIndex := 0; BracketCombo.ItemIndex := 0;
chkExtPasKeywords.Checked := PasExtendedKeywordsMode;
dropPasStringKeywords.ItemIndex := ord(PasStringKeywordMode);
end; end;
AutoDelayTrackBarChange(nil); AutoDelayTrackBarChange(nil);
end; end;
@ -208,6 +236,8 @@ begin
BracketHighlightStyle := TSynEditBracketHighlightStyle(BracketCombo.ItemIndex - 1); BracketHighlightStyle := TSynEditBracketHighlightStyle(BracketCombo.ItemIndex - 1);
end; end;
PasExtendedKeywordsMode := chkExtPasKeywords.Checked;
PasStringKeywordMode := TSynPasStringMode(dropPasStringKeywords.ItemIndex);
end; end;
end; end;