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

View File

@ -27,7 +27,7 @@ interface
uses
Classes, SysUtils, LCLProc, LCLType, StdCtrls, Controls, ExtCtrls, Graphics,
EditorOptions, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf,
SynEdit, SynBeautifier, DividerBevel;
SynEdit, SynBeautifier, SynHighlighterPas, DividerBevel;
type
TPreviewEditor = TSynEdit;
@ -97,12 +97,17 @@ type
private
FDefaultBookmarkImages: TImageList;
FDialog: TAbstractOptionsEditorDialog;
FPasExtendedKeywordsMode: Boolean;
FPasStringKeywordMode: TSynPasStringMode;
function DefaultBookmarkImages: TImageList;
procedure SetExtendedKeywordsMode(const AValue: Boolean);
procedure SetStringKeywordMode(const AValue: TSynPasStringMode);
public
PreviewEdits: array of TPreviewEditor;
procedure AddPreviewEdit(AEditor: TPreviewEditor);
procedure SetPreviewOption(AValue: Boolean; AnOption: TSynEditorOption); overload;
procedure SetPreviewOption(AValue: Boolean; AnOption: TSynEditorOption2); overload;
procedure UpdatePrevieEdits;
constructor Create(AOwner: TComponent); override;
function GetTitle: String; override;
@ -110,6 +115,11 @@ type
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
procedure WriteSettings(AOptions: TAbstractIDEOptions); 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;
implementation
@ -328,6 +338,17 @@ begin
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);
var
ComboBox: TComboBox absolute Sender;
@ -499,6 +520,20 @@ begin
Result := FDefaultBookmarkImages;
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);
begin
SetLength(PreviewEdits, Length(PreviewEdits) + 1);
@ -511,6 +546,10 @@ constructor TEditorGeneralOptionsFrame.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
PreviewEdits := nil;
if EditorOpts <> nil then begin
FPasExtendedKeywordsMode := EditorOpts.PasExtendedKeywordsMode;
FPasStringKeywordMode := EditorOpts.PasStringKeywordMode;
end;
end;
initialization

View File

@ -202,13 +202,71 @@ inherited EditorMarkupOptionsFrame: TEditorMarkupOptionsFrame
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Left = -721
Height = 17
Top = 157
Width = 634
Width = 1355
Caption = 'divMatchingBrackets'
Anchors = [akTop, akLeft, akRight]
Font.Style = [fsBold]
ParentFont = False
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

View File

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