From 585bbf6ef1b67e77435bbe45249f482c17ab3f29 Mon Sep 17 00:00:00 2001 From: martin Date: Sat, 10 Jan 2009 21:11:37 +0000 Subject: [PATCH] SynEdit, Auto-Indent: Implement indent types git-svn-id: trunk@18241 - --- .gitattributes | 1 + components/synedit/synbeautifier.pas | 153 ++++++++++ components/synedit/synbeautifierpas.pas | 4 +- components/synedit/synedit.pp | 148 ++-------- components/synedit/syneditmiscclasses.pp | 11 +- ide/editoroptions.pp | 37 ++- ide/frames/editor_general_options.lfm | 129 ++++++--- ide/frames/editor_general_options.lrs | 345 ++++++++++++----------- ide/frames/editor_general_options.pas | 10 +- ide/lazarusidestrconsts.pas | 4 + 10 files changed, 510 insertions(+), 332 deletions(-) create mode 100644 components/synedit/synbeautifier.pas diff --git a/.gitattributes b/.gitattributes index e1f575f5df..df7dcafd10 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1402,6 +1402,7 @@ components/synedit/languages/synmacrorecorder.po svneol=native#text/plain components/synedit/languages/synmacrorecorder.ru.po svneol=native#text/plain components/synedit/languages/synmacrorecorder.ua.po svneol=native#text/plain components/synedit/languages/synmacrorecorder.zh-cn.po svneol=native#text/utf8 +components/synedit/synbeautifier.pas svneol=native#text/plain components/synedit/synbeautifierpas.pas svneol=native#text/plain components/synedit/syncompletion.pas svneol=native#text/pascal components/synedit/synedit.inc svneol=native#text/pascal diff --git a/components/synedit/synbeautifier.pas b/components/synedit/synbeautifier.pas new file mode 100644 index 0000000000..3cca445602 --- /dev/null +++ b/components/synedit/synbeautifier.pas @@ -0,0 +1,153 @@ +unit SynBeautifier; + +{$I synedit.inc} + +interface + +uses + Classes, SysUtils, SynEditMiscClasses; + +type + { TSynCustomBeautifier } + + TSynCustomBeautifier = class(TComponent) + public + function CanUnindent(const Editor: TSynEditBase; const Line: string; + const PhysCaretX: Integer): Boolean; virtual; abstract; + function UnIndentLine(const Editor: TSynEditBase; const Line: string; + const PhysCaret: TPoint; out DelChars, InsChars: String; + out CaretNewX: Integer): String; virtual; abstract; // Todo InsChar are not supprted for undo + function IndentLine(const Editor: TSynEditBase; Line: string; + const PhysCaret: TPoint; out DelChars, InsChars: String; + out CaretNewX: Integer; + RemoveCurrentIndent: Boolean = False): String; + virtual; abstract; // Todo DelChar are not supprted for undo + function GetIndentForLine(Editor: TSynEditBase; const Line: string; + const PhysCaret: TPoint): Integer; virtual; abstract; + end; + + TSynBeautifierIndentType = (sbitSpace, sbitCopySpaceTab, sbitPositionCaret); + + { TSynBeautifier } + + TSynBeautifier = class(TSynCustomBeautifier) + private + FIndentType: TSynBeautifierIndentType; + public + function LeftSpaces(Editor: TSynEditBase; const Line: string; + Physical: boolean): Integer; + function CanUnindent(const Editor: TSynEditBase; const Line: string; + const PhysCaretX: Integer): Boolean; override; + function UnIndentLine(const Editor: TSynEditBase; const Line: string; + const PhysCaret: TPoint; out DelChars, InsChars: String; + out CaretNewX: Integer): String; override; // Todo InsChar are not supprted for undo + function IndentLine(const Editor: TSynEditBase; Line: string; + const PhysCaret: TPoint; out DelChars, InsChars: String; + out CaretNewX: Integer; + RemoveCurrentIndent: Boolean = False): String; override; // Todo DelChar are not supprted for undo + function GetIndentForLine(Editor: TSynEditBase; const Line: string; + const PhysCaret: TPoint): Integer; override; + published + property IndentType: TSynBeautifierIndentType read FIndentType write FIndentType; + end; + +implementation +uses SynEdit; + +{ TSynBeautifier } + +function TSynBeautifier.LeftSpaces(Editor: TSynEditBase; const Line: string; Physical: boolean): Integer; +var + p: PChar; +begin + p := pointer(Line); + if Assigned(p) then begin + Result := 0; + while p^ in [#1..#32] do begin + Inc(p); + Inc(Result); + end; + if Physical and (Result>0) then + Result := TSynEdit(Editor).LogicalToPhysicalCol(Line, Result+1)-1; + end else + Result := 0; +end; + +function TSynBeautifier.CanUnindent(const Editor: TSynEditBase; const Line: string; const PhysCaretX: Integer): Boolean; +begin + Result := (LeftSpaces(Editor, Line, True) = PhysCaretX - 1); +end; + +function TSynBeautifier.UnIndentLine(const Editor: TSynEditBase; const Line: string; const PhysCaret: TPoint; out DelChars, InsChars: String; out + CaretNewX: Integer): String; +var + SpaceCount1, SpaceCount2: Integer; + BackCounter, LogSpacePos: Integer; +begin + SpaceCount1 := LeftSpaces(Editor, Line, true); + SpaceCount2 := 0; + if (SpaceCount1 > 0) then begin + BackCounter := PhysCaret.Y - 2; + while BackCounter >= 0 do begin + SpaceCount2 := LeftSpaces(Editor, Editor.RealLines[BackCounter], true); + if SpaceCount2 < SpaceCount1 then + break; + Dec(BackCounter); + end; + end; + if SpaceCount2 = SpaceCount1 then + SpaceCount2 := 0; + // remove visible spaces + LogSpacePos := TSynEdit(Editor).PhysicalToLogicalCol(Line, SpaceCount2 + 1); + CaretNewX := SpaceCount2 + 1; + DelChars := copy(Line, LogSpacePos, PhysCaret.X - LogSpacePos); + InsChars := ''; // TODO: if tabs were removed, maybe fill-up with spaces + Result :=copy(Line, 1, LogSpacePos-1) + copy(Line, PhysCaret.X, MaxInt); +end; + +function TSynBeautifier.IndentLine(const Editor: TSynEditBase; Line: string; const PhysCaret: TPoint; out DelChars, InsChars: String; out + CaretNewX: Integer; RemoveCurrentIndent: Boolean): String; +var + SpaceCount1, SpaceCount2: Integer; + BackCounter: Integer; + Temp: string; +begin + DelChars := ''; + If RemoveCurrentIndent then begin + SpaceCount1 := LeftSpaces(Editor, Line, False); + DelChars := copy(Line, 1, SpaceCount1); + Line := copy(Line, SpaceCount1 + 1, MaxInt); + end; + + SpaceCount2 := 0; + BackCounter := PhysCaret.Y - 1; + repeat + Dec(BackCounter); + Temp := Editor.RealLines[BackCounter]; + SpaceCount2 := LeftSpaces(Editor, Temp, True); + until (BackCounter = 0) or (Temp <> ''); + + case FIndentType of + sbitSpace: + InsChars := StringOfChar(' ', SpaceCount2); + sbitCopySpaceTab: + InsChars := copy(Temp, 1, TSynEdit(Editor).PhysicalToLogicalCol(Temp, SpaceCount2+1)-1); + sbitPositionCaret: + if Line <> '' then + InsChars := StringOfChar(' ', SpaceCount2) + else + InsChars := ''; + end; + CaretNewX := TSynEdit(Editor).LogicalToPhysicalCol(Result, SpaceCount2+1); + Result := InsChars + Line; +end; + +function TSynBeautifier.GetIndentForLine(Editor: TSynEditBase; const Line: string; const PhysCaret: TPoint): Integer; +var + s1, s2: string; +begin + IndentLine(Editor, Line, PhysCaret, s1, s2, Result, False); +end; + +end. + diff --git a/components/synedit/synbeautifierpas.pas b/components/synedit/synbeautifierpas.pas index 4bb50a6c35..794514bb41 100644 --- a/components/synedit/synbeautifierpas.pas +++ b/components/synedit/synbeautifierpas.pas @@ -44,14 +44,14 @@ unit SynBeautifierPas; interface uses - Math, Classes, SysUtils, LCLProc, SynEdit, SynEditTextBuffer, + Math, Classes, SysUtils, LCLProc, SynEdit, SynBeautifier, SynEditTextBuffer, SynEditHighlighter, SynHighlighterPas; type { TSynBeautifierPas } - TSynBeautifierPas = class(TSynCustomBeautifier) + TSynBeautifierPas = class(TSynBeautifier) public function TokenKindIsComment(Kind: integer): boolean; function InComment(Editor: TCustomSynEdit; XY: TPoint): boolean; diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index 1adea019a5..2982eb35d1 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -74,7 +74,7 @@ uses Imm, {$ENDIF} SynEditTypes, SynEditSearch, SynEditKeyCmds, SynEditMiscProcs, - SynEditPointClasses, + SynEditPointClasses, SynBeautifier, {$ifdef SYN_LAZARUS} SynEditMarkup, SynEditMarkupHighAll, SynEditMarkupBracket, SynEditMarkupCtrlMouseLink, SynEditMarkupSpecialLine, SynEditMarkupSelection, @@ -296,27 +296,6 @@ type destructor Destroy; override; end; - {$IFDEF SYN_LAZARUS} - { TSynCustomBeautifier } - - TSynCustomBeautifier = class(TComponent) - public - function LeftSpaces(Editor: TCustomSynEdit; const Line: string; - Physical: boolean): Integer; - function CanUnindent(const Editor: TCustomSynEdit; const Line: string; - const PhysCaretX: Integer): Boolean; virtual; - function UnIndentLine(const Editor: TCustomSynEdit; const Line: string; - const PhysCaret: TPoint; out DelChars, InsChars: String; - out CaretNewX: Integer): String; virtual; // Todo InsChar are not supprted for undo - function IndentLine(const Editor: TCustomSynEdit; Line: string; - const PhysCaret: TPoint; out DelChars, InsChars: String; - out CaretNewX: Integer; - RemoveCurrentIndent: Boolean = False): String; virtual; // Todo DelChar are not supprted for undo - function GetIndentForLine(Editor: TCustomSynEdit; const Line: string; - const PhysCaret: TPoint): Integer; virtual; - end; - {$ENDIF} - TSynMouseLinkEvent = procedure ( Sender: TObject; X, Y: Integer; var AllowMouseLink: Boolean) of object; @@ -479,6 +458,7 @@ type function GetCaretXY: TPoint; function GetFoldedCodeColor: TSynSelectedColor; function GetFont: TFont; + function GetLines: TStrings; override; function GetMarkup(Index: integer): TSynEditMarkup; function GetMarkupByClass(Index: TSynEditMarkupClass): TSynEditMarkup; {$IFDEF SYN_LAZARUS} @@ -494,10 +474,11 @@ type function GetSelectedColor : TSynSelectedColor; function GetBracketMatchColor : TSynSelectedColor; function GetMouseLinkColor : TSynSelectedColor; + function GetTheLinesView: TStrings; override; procedure SetBracketHighlightStyle( const AValue: TSynEditBracketHighlightStyle); procedure SetOnGutterClick(const AValue : TGutterClickEvent); - procedure SetRealLines(const AValue : TStrings); + procedure SetRealLines(const AValue : TStrings); override; procedure SetSelectedColor(const AValue : TSynSelectedColor); procedure SetSpecialLineColors(const AValue : TSpecialLineColorsEvent); procedure SetSpecialLineMarkup(const AValue : TSpecialLineMarkupEvent); @@ -568,7 +549,7 @@ type procedure SetLastMouseCaret(const AValue: TPoint); {$ENDIF} procedure SetLeftChar(Value: Integer); - procedure SetLines(Value: TStrings); + procedure SetLines(Value: TStrings); override; procedure SetLineText(Value: string); procedure SetMaxLeftChar(Value: integer); procedure SetMaxUndo(const Value: Integer); @@ -878,8 +859,6 @@ type property LineHeight: integer read fTextHeight; property LinesInWindow: Integer read fLinesInWindow; // MG: fully visible lines property LineText: string read GetLineText write SetLineText; - property RealLines: TStrings read FTheLinesView write SetRealLines; // As viewed internally (with uncommited spaces / TODO: expanded tabs, folds). This may change, use with care - property Lines: TStrings read FLines write SetLines; // No uncommited (trailing/trimmable) spaces property Text: string read SynGetText write SynSetText; // No uncommited (trailing/trimmable) spaces property Marks: TSynEditMarkList read fMarkList; property MaxLeftChar: integer read fMaxLeftChar write SetMaxLeftChar @@ -1729,6 +1708,11 @@ begin Result := inherited Font; end; +function TCustomSynEdit.GetLines: TStrings; +begin + Result := FLines; +end; + function TCustomSynEdit.GetLineText: string; begin Result := FCaret.LineText; @@ -1802,6 +1786,11 @@ begin Result := fMarkupCtrlMouse.MarkupInfo; end; +function TCustomSynEdit.GetTheLinesView: TStrings; +begin + Result := FTheLinesView; +end; + procedure TCustomSynEdit.SetBracketHighlightStyle( const AValue: TSynEditBracketHighlightStyle); begin @@ -5782,6 +5771,7 @@ begin begin // If there's no selection, we have to set // the Caret's position manualy. + Include(fOptions, eoScrollPastEol); // old state has been stored above CaretXY := PhysStartPos; fRedoList.AddChange(Item.fChangeReason, Item.fChangeStartPos, Item.fChangeEndPos, '', Item.fChangeSelMode); @@ -7010,8 +7000,13 @@ begin end else CX := 1; FTheLinesView.Insert(CaretY, Temp); - if Command = ecLineBreak then + if Command = ecLineBreak then begin + bChangeScroll := not (eoScrollPastEol in fOptions); + Include(fOptions, eoScrollPastEol); CaretXY := Point(CX, CaretY + 1); + if bChangeScroll then + Exclude(fOptions, eoScrollPastEol); + end; end; DoLinesInserted(CaretY - InsDelta, 1); EnsureCursorPosVisible; //JGF 2000-09-23 @@ -8368,9 +8363,10 @@ begin s:=LineText; PhysicalLineLen:=LogicalToPhysicalPos(Point(length(s)+1,CaretY)).X-1; if NewCaret.X>PhysicalLineLen+1 then begin - // move to start of next line + // move to start of next line (if it was a move to the right) NewCaret.X:=1; - NewCaret.Y:=FFoldedLinesView.TextPosAddLines(NewCaret.Y, +1); + if DX > 0 then + NewCaret.Y:=FFoldedLinesView.TextPosAddLines(NewCaret.Y, +1); end; end; @@ -9970,102 +9966,10 @@ begin inherited Destroy; end; -{$IFDEF SYN_LAZARUS} -{ TSynCustomBeautifier } - -function TSynCustomBeautifier.LeftSpaces(Editor: TCustomSynEdit; - const Line: string; Physical: boolean): Integer; -var - p: PChar; -begin - p := pointer(Line); - if Assigned(p) then begin - Result := 0; - while p^ in [#1..#32] do begin - Inc(p); - Inc(Result); - end; - if Physical and (Result>0) then - Result:=Editor.LogicalToPhysicalCol(Line,Result+1)-1; - end else - Result := 0; -end; - -function TSynCustomBeautifier.CanUnindent(const Editor: TCustomSynEdit; - const Line: string; const PhysCaretX: Integer): Boolean; -begin - Result := (LeftSpaces(Editor, Line, True) = PhysCaretX - 1); -end; - -function TSynCustomBeautifier.UnIndentLine(const Editor: TCustomSynEdit; - const Line: string; const PhysCaret: TPoint; out DelChars, InsChars: String; - out CaretNewX: Integer): String; -var - SpaceCount1, SpaceCount2: Integer; - BackCounter, LogSpacePos: Integer; -begin - SpaceCount1 := LeftSpaces(Editor, Line, true); - SpaceCount2 := 0; - if (SpaceCount1 > 0) then begin - BackCounter := PhysCaret.Y - 2; - while BackCounter >= 0 do begin - SpaceCount2 := LeftSpaces(Editor, Editor.RealLines[BackCounter], true); - if SpaceCount2 < SpaceCount1 then - break; - Dec(BackCounter); - end; - end; - if SpaceCount2 = SpaceCount1 then - SpaceCount2 := 0; - // remove visible spaces - LogSpacePos:=Editor.PhysicalToLogicalCol(Line, SpaceCount2 + 1); - CaretNewX := SpaceCount2 + 1; - DelChars := copy(Line, LogSpacePos, PhysCaret.X - LogSpacePos); - InsChars := ''; // TODO: if tabs were removed, maybe fill-up with spaces - Result :=copy(Line, 1, LogSpacePos-1) + copy(Line, PhysCaret.X, MaxInt); -end; - -function TSynCustomBeautifier.IndentLine(const Editor: TCustomSynEdit; - Line: string; const PhysCaret: TPoint; out DelChars, InsChars: String; - out CaretNewX: Integer; RemoveCurrentIndent: Boolean = False): String; -var - SpaceCount1, SpaceCount2: Integer; - BackCounter: Integer; - Temp: string; -begin - DelChars := ''; - If RemoveCurrentIndent then begin - SpaceCount1 := LeftSpaces(Editor, Line, False); - DelChars := copy(Line, 1, SpaceCount1); - Line := copy(Line, SpaceCount1 + 1, MaxInt); - end; - - SpaceCount2 := 0; - BackCounter := PhysCaret.Y - 1; - repeat - Dec(BackCounter); - Temp := Editor.RealLines[BackCounter]; - SpaceCount2 := LeftSpaces(Editor, Temp, True); - until (BackCounter = 0) or (Temp <> ''); - - InsChars := StringOfChar(' ', SpaceCount2); - CaretNewX := Length(InsChars) + 1; - Result := InsChars + Line; -end; - -function TSynCustomBeautifier.GetIndentForLine(Editor: TCustomSynEdit; - const Line: string; const PhysCaret: TPoint): integer; -var - s1, s2: string; -begin - IndentLine(Editor, Line, PhysCaret, s1, s2, Result, False); -end; -{$ENDIF} - initialization {$IFNDEF SYN_LAZARUS} SynEditClipboardFormat := RegisterClipboardFormat(SYNEDIT_CLIPBOARD_FORMAT); {$ENDIF} - SynDefaultBeautifier := TSynCustomBeautifier.Create(Application); + SynDefaultBeautifier := TSynBeautifier.Create(Application); end. diff --git a/components/synedit/syneditmiscclasses.pp b/components/synedit/syneditmiscclasses.pp index bfe093db09..851cb0d4ef 100644 --- a/components/synedit/syneditmiscclasses.pp +++ b/components/synedit/syneditmiscclasses.pp @@ -53,7 +53,16 @@ type // Empty - For type checking on function-arguments // in places where TCustomSynEdit can not be used due to circular unit refs - TSynEditBase = class(TCustomControl); + TSynEditBase = class(TCustomControl) + protected + function GetTheLinesView: TStrings; virtual; abstract; + procedure SetRealLines(const AValue : TStrings); virtual; abstract; + function GetLines: TStrings; virtual; abstract; + procedure SetLines(Value: TStrings); virtual; abstract; + public + property RealLines: TStrings read GetTheLinesView write SetRealLines; // As viewed internally (with uncommited spaces / TODO: expanded tabs, folds). This may change, use with care + property Lines: TStrings read GetLines write SetLines; // No uncommited (trailing/trimmable) spaces + end; { TSynSelectedColor } diff --git a/ide/editoroptions.pp b/ide/editoroptions.pp index 13b2c586bf..3e5be30a67 100644 --- a/ide/editoroptions.pp +++ b/ide/editoroptions.pp @@ -44,7 +44,7 @@ uses SynHighlighterCPP, SynHighlighterHTML, SynHighlighterJava, SynHighlighterLFM, SynHighlighterPas, SynHighlighterPerl, SynHighlighterPHP, SynHighlighterSQL, SynHighlighterPython, SynHighlighterUNIXShellScript, SynHighlighterXML, - SynHighlighterJScript, SynEditMiscClasses, + SynHighlighterJScript, SynEditMiscClasses, SynBeautifier, // codetools LinkScanner, CodeToolManager, Laz_XMLCfg, // IDEIntf @@ -434,6 +434,7 @@ type FCopyWordAtCursorOnCopyNone: Boolean; FShowGutterHints: Boolean; fBlockIndent: Integer; + fBlockIndentType: TSynBeautifierIndentType; fUndoLimit: Integer; fTabWidth: Integer; FBracketHighlightStyle: TSynEditBracketHighlightStyle; @@ -488,6 +489,8 @@ type procedure Load; procedure Save; function GetSynEditOptionName(SynOption: TSynEditorOption): string; + function GetSynBeautifierIndentName(IndentType: TSynBeautifierIndentType): string; + function GetSynBeautifierIndentType(IndentName: String): TSynBeautifierIndentType; procedure GetHighlighterSettings(Syn: TSrcIDEHighlighter); // read highlight settings from config file procedure SetHighlighterSettings(Syn: TSrcIDEHighlighter); // write highlight settings to config file @@ -539,6 +542,8 @@ type write FShowGutterHints; property BlockIndent: Integer read fBlockIndent write fBlockIndent default 2; + property BlockIndentType: TSynBeautifierIndentType + read fBlockIndentType write fBlockIndentType default sbitCopySpaceTab; property UndoLimit: Integer read fUndoLimit write fUndoLimit default 32767; property TabWidth: Integer read fTabWidth write fTabWidth default 8; property BracketHighlightStyle: TSynEditBracketHighlightStyle read FBracketHighlightStyle write FBracketHighlightStyle default sbhsBoth; @@ -1381,6 +1386,7 @@ begin FCopyWordAtCursorOnCopyNone := True; FShowGutterHints := True; fBlockIndent := 2; + fBlockIndentType := sbitSpace; fUndoLimit := 32767; fTabWidth := 8; FBracketHighlightStyle := sbhsBoth; @@ -1499,6 +1505,9 @@ begin 'EditorOptions/General/Editor/UseSyntaxHighlight', True); fBlockIndent := XMLConfig.GetValue('EditorOptions/General/Editor/BlockIndent', 2); + fBlockIndentType := GetSynBeautifierIndentType + (XMLConfig.GetValue('EditorOptions/General/Editor/BlockIndentType', + 'SpaceIndent')); fUndoLimit := XMLConfig.GetValue('EditorOptions/General/Editor/UndoLimit', 32767); fTabWidth := @@ -1668,6 +1677,8 @@ begin , fUseSyntaxHighlight, True); XMLConfig.SetDeleteValue('EditorOptions/General/Editor/BlockIndent' , fBlockIndent, 2); + XMLConfig.SetDeleteValue('EditorOptions/General/Editor/BlockIndentType' + , GetSynBeautifierIndentName(fBlockIndentType), 'SpaceIndent'); XMLConfig.SetDeleteValue('EditorOptions/General/Editor/UndoLimit' , fUndoLimit, 32767); XMLConfig.SetDeleteValue('EditorOptions/General/Editor/TabWidth' @@ -1817,6 +1828,28 @@ begin end; end; +function TEditorOptions.GetSynBeautifierIndentName(IndentType: TSynBeautifierIndentType): string; +begin + case IndentType of + sbitSpace: + Result := 'SpaceIndent'; + sbitCopySpaceTab: + Result := 'CopySpaceTabIndent'; + sbitPositionCaret: + Result := 'PositionIndent'; + end; +end; + +function TEditorOptions.GetSynBeautifierIndentType(IndentName: String): TSynBeautifierIndentType; +begin + if IndentName = 'SpaceIndent' then + Result := sbitSpace + else if IndentName = 'CopySpaceTabIndent' then + Result := sbitCopySpaceTab + else if IndentName = 'PositionIndent' then + Result := sbitPositionCaret; +end; + function TEditorOptions.CreateSyn(LazSynHilighter: TLazSyntaxHighlighter): TSrcIDEHighlighter; begin @@ -2289,6 +2322,7 @@ begin ASynEdit.Options := fSynEditOptions; ASynEdit.Options2 := fSynEditOptions2; ASynEdit.BlockIndent := fBlockIndent; + (ASynEdit.Beautifier as TSynBeautifier).IndentType := fBlockIndentType; ASynEdit.TabWidth := fTabWidth; ASynEdit.BracketHighlightStyle := FBracketHighlightStyle; @@ -2350,6 +2384,7 @@ begin fSynEditOptions := ASynEdit.Options; fSynEditOptions2 := ASynEdit.Options2; fBlockIndent := ASynEdit.BlockIndent; + fBlockIndentType := (ASynEdit.Beautifier as TSynBeautifier).IndentType; fTabWidth := ASynEdit.TabWidth; FBracketHighlightStyle := ASynEdit.BracketHighlightStyle; diff --git a/ide/frames/editor_general_options.lfm b/ide/frames/editor_general_options.lfm index 8433f7de07..ed0ec44972 100644 --- a/ide/frames/editor_general_options.lfm +++ b/ide/frames/editor_general_options.lfm @@ -51,7 +51,9 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame object UndoGroupLabel: TLabel[3] AnchorSideLeft.Control = Owner AnchorSideTop.Control = Owner + Left = 0 Height = 16 + Top = 0 Width = 91 Caption = 'UndoGroupLabel' ParentColor = False @@ -73,6 +75,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame AnchorSideLeft.Control = Owner AnchorSideTop.Control = GroupUndoCheckBox AnchorSideTop.Side = asrBottom + Left = 0 Height = 16 Top = 66 Width = 91 @@ -97,6 +100,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame AnchorSideLeft.Control = Owner AnchorSideTop.Control = ScrollPastEndLineCheckBox AnchorSideTop.Side = asrBottom + Left = 0 Height = 16 Top = 132 Width = 126 @@ -119,10 +123,11 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame end object MouseGroupLabel: TLabel[9] AnchorSideLeft.Control = Owner - AnchorSideTop.Control = BlockIndentComboBox + AnchorSideTop.Control = BlockIndentTypeComboBox AnchorSideTop.Side = asrBottom + Left = 0 Height = 16 - Top = 222 + Top = 246 Width = 98 BorderSpacing.Top = 6 Caption = 'MouseGroupLabel' @@ -136,7 +141,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame AnchorSideRight.Side = asrBottom Left = 180 Height = 3 - Top = 229 + Top = 253 Width = 279 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 180 @@ -145,8 +150,9 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame AnchorSideLeft.Control = Owner AnchorSideTop.Control = MouseLinksCheckBox AnchorSideTop.Side = asrBottom + Left = 0 Height = 16 - Top = 288 + Top = 312 Width = 97 BorderSpacing.Top = 6 Caption = 'CursorGroupLabel' @@ -160,12 +166,26 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame AnchorSideRight.Side = asrBottom Left = 180 Height = 3 - Top = 295 + Top = 319 Width = 279 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 180 end - object BlockIndentComboBox: TComboBox[13] + object BlockIndentTypeLabel: TLabel[13] + AnchorSideLeft.Control = BlockIndentTypeComboBox + AnchorSideLeft.Side = asrBottom + AnchorSideBottom.Control = BlockIndentTypeComboBox + AnchorSideBottom.Side = asrCenter + Left = 112 + Height = 16 + Top = 221 + Width = 118 + Anchors = [akLeft, akBottom] + BorderSpacing.Around = 6 + Caption = 'BlockIndentTypeLabel' + ParentColor = False + end + object BlockIndentComboBox: TComboBox[14] AnchorSideLeft.Control = Owner AnchorSideTop.Control = TabIndentBlocksCheckBox AnchorSideTop.Side = asrBottom @@ -174,8 +194,10 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame Height = 21 Top = 195 Width = 100 + AutoComplete = False BorderSpacing.Left = 6 BorderSpacing.Top = 3 + Ctl3D = False ItemHeight = 13 Items.Strings = ( '1' @@ -183,12 +205,13 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame '4' '8' ) + ItemWidth = 0 OnChange = ComboboxOnChange OnExit = ComboBoxOnExit OnKeyDown = ComboboxOnKeyDown TabOrder = 0 end - object TabWidthsComboBox: TComboBox[14] + object TabWidthsComboBox: TComboBox[15] AnchorSideLeft.Control = SmartTabsCheckBox AnchorSideTop.Control = BlockIndentComboBox AnchorSideBottom.Control = Owner @@ -197,6 +220,8 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame Height = 21 Top = 195 Width = 100 + AutoComplete = False + Ctl3D = False ItemHeight = 13 Items.Strings = ( '1' @@ -204,12 +229,13 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame '4' '8' ) + ItemWidth = 0 OnChange = ComboboxOnChange OnExit = ComboBoxOnExit OnKeyDown = ComboboxOnKeyDown TabOrder = 1 end - object UndoLimitComboBox: TComboBox[15] + object UndoLimitComboBox: TComboBox[16] AnchorSideLeft.Control = Owner AnchorSideTop.Control = UndoGroupLabel AnchorSideTop.Side = asrBottom @@ -217,20 +243,23 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame Height = 21 Top = 22 Width = 100 + AutoComplete = False BorderSpacing.Left = 230 BorderSpacing.Around = 6 + Ctl3D = False ItemHeight = 13 Items.Strings = ( '32767' '4096' '512' ) + ItemWidth = 0 OnChange = ComboboxOnChange OnExit = ComboBoxOnExit OnKeyDown = ComboboxOnKeyDown TabOrder = 2 end - object GroupUndoCheckBox: TCheckBox[16] + object GroupUndoCheckBox: TCheckBox[17] AnchorSideLeft.Control = Owner AnchorSideTop.Control = UndoAfterSaveCheckBox AnchorSideTop.Side = asrBottom @@ -243,7 +272,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = GroupUndoCheckBoxChange TabOrder = 3 end - object UndoAfterSaveCheckBox: TCheckBox[17] + object UndoAfterSaveCheckBox: TCheckBox[18] AnchorSideLeft.Control = Owner AnchorSideTop.Control = UndoGroupLabel AnchorSideTop.Side = asrBottom @@ -256,7 +285,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame Caption = 'UndoAfterSaveCheckBox' TabOrder = 4 end - object ScrollPastEndFileCheckBox: TCheckBox[18] + object ScrollPastEndFileCheckBox: TCheckBox[19] AnchorSideLeft.Control = Owner AnchorSideTop.Control = ScrollGroupLabel AnchorSideTop.Side = asrBottom @@ -270,7 +299,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = ScrollPastEndFileCheckBoxChange TabOrder = 5 end - object ScrollPastEndLineCheckBox: TCheckBox[19] + object ScrollPastEndLineCheckBox: TCheckBox[20] AnchorSideLeft.Control = Owner AnchorSideTop.Control = ScrollPastEndFileCheckBox AnchorSideTop.Side = asrBottom @@ -283,7 +312,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = ScrollPastEndLineCheckBoxChange TabOrder = 6 end - object ScrollByOneLessCheckBox: TCheckBox[20] + object ScrollByOneLessCheckBox: TCheckBox[21] AnchorSideLeft.Control = Owner AnchorSideTop.Control = ScrollGroupLabel AnchorSideTop.Side = asrBottom @@ -297,7 +326,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = ScrollByOneLessCheckBoxChange TabOrder = 7 end - object HalfPageScrollCheckBox: TCheckBox[21] + object HalfPageScrollCheckBox: TCheckBox[22] AnchorSideLeft.Control = ScrollByOneLessCheckBox AnchorSideTop.Control = ScrollPastEndLineCheckBox Left = 236 @@ -308,7 +337,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = HalfPageScrollCheckBoxChange TabOrder = 8 end - object AutoIndentCheckBox: TCheckBox[22] + object AutoIndentCheckBox: TCheckBox[23] AnchorSideLeft.Control = Owner AnchorSideTop.Control = IndentsTabsGroupLabel AnchorSideTop.Side = asrBottom @@ -322,7 +351,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = AutoIndentCheckBoxChange TabOrder = 9 end - object TabIndentBlocksCheckBox: TCheckBox[23] + object TabIndentBlocksCheckBox: TCheckBox[24] AnchorSideLeft.Control = Owner AnchorSideTop.Control = AutoIndentCheckBox AnchorSideTop.Side = asrBottom @@ -335,7 +364,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = TabIndentBlocksCheckBoxChange TabOrder = 10 end - object SmartTabsCheckBox: TCheckBox[24] + object SmartTabsCheckBox: TCheckBox[25] AnchorSideLeft.Control = Owner AnchorSideTop.Control = IndentsTabsGroupLabel AnchorSideTop.Side = asrBottom @@ -349,7 +378,7 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = SmartTabsCheckBoxChange TabOrder = 11 end - object TabsToSpacesCheckBox: TCheckBox[25] + object TabsToSpacesCheckBox: TCheckBox[26] AnchorSideLeft.Control = SmartTabsCheckBox AnchorSideTop.Control = TabIndentBlocksCheckBox Left = 236 @@ -360,13 +389,13 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = TabsToSpacesCheckBoxChange TabOrder = 12 end - object DoubleClickLineCheckBox: TCheckBox[26] + object DoubleClickLineCheckBox: TCheckBox[27] AnchorSideLeft.Control = Owner AnchorSideTop.Control = MouseGroupLabel AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 244 + Top = 268 Width = 146 BorderSpacing.Left = 6 BorderSpacing.Top = 6 @@ -374,26 +403,26 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = DoubleClickLineCheckBoxChange TabOrder = 13 end - object MouseLinksCheckBox: TCheckBox[27] + object MouseLinksCheckBox: TCheckBox[28] AnchorSideLeft.Control = Owner AnchorSideTop.Control = DoubleClickLineCheckBox AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 263 + Top = 287 Width = 126 BorderSpacing.Left = 6 Caption = 'MouseLinksCheckBox' OnChange = MouseLinksCheckBoxChange TabOrder = 14 end - object DragDropEdCheckBox: TCheckBox[28] + object DragDropEdCheckBox: TCheckBox[29] AnchorSideLeft.Control = Owner AnchorSideTop.Control = MouseGroupLabel AnchorSideTop.Side = asrBottom Left = 236 Height = 19 - Top = 244 + Top = 268 Width = 128 BorderSpacing.Left = 230 BorderSpacing.Around = 6 @@ -401,24 +430,24 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = DragDropEdCheckBoxChange TabOrder = 15 end - object DropFilesCheckBox: TCheckBox[29] + object DropFilesCheckBox: TCheckBox[30] AnchorSideLeft.Control = DragDropEdCheckBox AnchorSideTop.Control = MouseLinksCheckBox Left = 236 Height = 19 - Top = 263 + Top = 287 Width = 113 Caption = 'DropFilesCheckBox' OnChange = DropFilesCheckBoxChange TabOrder = 16 end - object KeepCursorXCheckBox: TCheckBox[30] + object KeepCursorXCheckBox: TCheckBox[31] AnchorSideLeft.Control = Owner AnchorSideTop.Control = CursorGroupLabel AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 310 + Top = 334 Width = 131 BorderSpacing.Left = 6 BorderSpacing.Top = 6 @@ -426,39 +455,39 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = KeepCursorXCheckBoxChange TabOrder = 17 end - object PersistentCursorCheckBox: TCheckBox[31] + object PersistentCursorCheckBox: TCheckBox[32] AnchorSideLeft.Control = Owner AnchorSideTop.Control = KeepCursorXCheckBox AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 329 + Top = 353 Width = 145 BorderSpacing.Left = 6 Caption = 'PersistentCursorCheckBox' OnChange = PersistentCursorCheckBoxChange TabOrder = 18 end - object AlwaysVisibleCursorCheckBox: TCheckBox[32] + object AlwaysVisibleCursorCheckBox: TCheckBox[33] AnchorSideLeft.Control = Owner AnchorSideTop.Control = PersistentCursorCheckBox AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 348 + Top = 372 Width = 162 BorderSpacing.Left = 6 Caption = 'AlwaysVisibleCursorCheckBox' OnChange = AlwaysVisibleCursorCheckBoxChange TabOrder = 19 end - object CursorSkipsSelectionCheckBox: TCheckBox[33] + object CursorSkipsSelectionCheckBox: TCheckBox[34] AnchorSideLeft.Control = Owner AnchorSideTop.Control = CursorGroupLabel AnchorSideTop.Side = asrBottom Left = 236 Height = 19 - Top = 310 + Top = 334 Width = 169 BorderSpacing.Left = 230 BorderSpacing.Around = 6 @@ -466,39 +495,59 @@ inherited EditorGeneralOptionsFrame: TEditorGeneralOptionsFrame OnChange = CursorSkipsSelectionCheckBoxChange TabOrder = 20 end - object RightMouseMovesCursorCheckBox: TCheckBox[34] + object RightMouseMovesCursorCheckBox: TCheckBox[35] AnchorSideLeft.Control = CursorSkipsSelectionCheckBox AnchorSideTop.Control = PersistentCursorCheckBox Left = 236 Height = 19 - Top = 329 + Top = 353 Width = 188 Caption = 'RightMouseMovesCursorCheckBox' OnChange = RightMouseMovesCursorCheckBoxChange TabOrder = 21 end - object HomeKeyJumpsToNearestStartCheckBox: TCheckBox[35] + object HomeKeyJumpsToNearestStartCheckBox: TCheckBox[36] AnchorSideLeft.Control = CursorSkipsSelectionCheckBox AnchorSideTop.Control = AlwaysVisibleCursorCheckBox Left = 236 Height = 19 - Top = 348 + Top = 372 Width = 217 Caption = 'HomeKeyJumpsToNearestStartCheckBox' OnChange = HomeKeyJumpsToNearestStartCheckBoxChange TabOrder = 22 end - object EndKeyJumpsToNearestStartCheckBox: TCheckBox[36] + object EndKeyJumpsToNearestStartCheckBox: TCheckBox[37] AnchorSideLeft.Control = Owner AnchorSideTop.Control = AlwaysVisibleCursorCheckBox AnchorSideTop.Side = asrBottom Left = 6 Height = 19 - Top = 367 + Top = 391 Width = 208 BorderSpacing.Left = 6 Caption = 'EndKeyJumpsToNearestStartCheckBox' OnChange = EndKeyJumpsToNearestStartCheckBoxChange TabOrder = 23 end + object BlockIndentTypeComboBox: TComboBox[38] + AnchorSideLeft.Control = Owner + AnchorSideTop.Control = BlockIndentComboBox + AnchorSideTop.Side = asrBottom + AnchorSideBottom.Control = TabWidthsComboBox + Left = 6 + Height = 21 + Top = 219 + Width = 100 + AutoComplete = False + BorderSpacing.Left = 6 + BorderSpacing.Top = 3 + Ctl3D = False + ItemHeight = 13 + ItemWidth = 200 + OnChange = ComboboxOnChange + OnExit = ComboBoxOnExit + OnKeyDown = ComboboxOnKeyDown + TabOrder = 24 + end end diff --git a/ide/frames/editor_general_options.lrs b/ide/frames/editor_general_options.lrs index 3e47d39f7b..e3d0be9d88 100644 --- a/ide/frames/editor_general_options.lrs +++ b/ide/frames/editor_general_options.lrs @@ -20,170 +20,185 @@ LazarusResources.Add('TEditorGeneralOptionsFrame','FORMDATA',[ +'wner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#180#0#6'Height'#2#3 +#3'Top'#2#7#5'Width'#3#23#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18 +'BorderSpacing.Left'#3#180#0#0#0#242#2#3#6'TLabel'#14'UndoGroupLabel'#22'Anc' - +'horSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#6'Heig' - +'ht'#2#16#5'Width'#2'['#7'Caption'#6#14'UndoGroupLabel'#11'ParentColor'#8#0#0 - +#242#2#4#6'TLabel'#14'UndoLimitLabel'#22'AnchorSideLeft.Control'#7#17'UndoLi' - +'mitComboBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Contro' - +'l'#7#17'UndoLimitComboBox'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#3 - +'V'#1#6'Height'#2#16#3'Top'#2#24#5'Width'#2'U'#20'BorderSpacing.Around'#2#6#7 - +'Caption'#6#14'UndoLimitLabel'#11'ParentColor'#8#0#0#242#2#5#6'TLabel'#16'Sc' - +'rollGroupLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Cont' - +'rol'#7#17'GroupUndoCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#6'Height' - +#2#16#3'Top'#2'B'#5'Width'#2'['#17'BorderSpacing.Top'#2#6#7'Caption'#6#16'Sc' - +'rollGroupLabel'#11'ParentColor'#8#0#0#242#2#6#6'TBevel'#6'Bevel2'#22'Anchor' - +'SideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#16'ScrollGroupLabe' - +'l'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Control'#7#5'Ow' - +'ner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#180#0#6'Height'#2#3#3 - +'Top'#2'I'#5'Width'#3#23#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18 - +'BorderSpacing.Left'#3#180#0#0#0#242#2#7#6'TLabel'#21'IndentsTabsGroupLabel' - +#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#25'Scroll' - +'PastEndLineCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#6'Height'#2#16#3 - +'Top'#3#132#0#5'Width'#2'~'#17'BorderSpacing.Top'#2#6#7'Caption'#6#21'Indent' - +'sTabsGroupLabel'#11'ParentColor'#8#0#0#242#2#8#6'TBevel'#6'Bevel3'#22'Ancho' - +'rSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#21'IndentsTabsGro' - +'upLabel'#18'AnchorSideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Control'#7 - +#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#180#0#6'Height'#2 - +#3#3'Top'#3#139#0#5'Width'#3#23#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight' - +#0#18'BorderSpacing.Left'#3#180#0#0#0#242#2#9#6'TLabel'#15'MouseGroupLabel' - +#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#19'BlockI' - +'ndentComboBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#6'Height'#2#16#3'Top'#3 - +#222#0#5'Width'#2'b'#17'BorderSpacing.Top'#2#6#7'Caption'#6#15'MouseGroupLab' - +'el'#11'ParentColor'#8#0#0#242#2#10#6'TBevel'#6'Bevel4'#22'AnchorSideLeft.Co' - +'ntrol'#7#5'Owner'#21'AnchorSideTop.Control'#7#15'MouseGroupLabel'#18'Anchor' - +'SideTop.Side'#7#9'asrCenter'#23'AnchorSideRight.Control'#7#5'Owner'#20'Anch' - +'orSideRight.Side'#7#9'asrBottom'#4'Left'#3#180#0#6'Height'#2#3#3'Top'#3#229 - +#0#5'Width'#3#23#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSp' - +'acing.Left'#3#180#0#0#0#242#2#11#6'TLabel'#16'CursorGroupLabel'#22'AnchorSi' - +'deLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#18'MouseLinksCheckBo' - +'x'#18'AnchorSideTop.Side'#7#9'asrBottom'#6'Height'#2#16#3'Top'#3' '#1#5'Wid' - +'th'#2'a'#17'BorderSpacing.Top'#2#6#7'Caption'#6#16'CursorGroupLabel'#11'Par' - +'entColor'#8#0#0#242#2#12#6'TBevel'#6'Bevel5'#22'AnchorSideLeft.Control'#7#5 - +'Owner'#21'AnchorSideTop.Control'#7#16'CursorGroupLabel'#18'AnchorSideTop.Si' - +'de'#7#9'asrCenter'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRigh' - +'t.Side'#7#9'asrBottom'#4'Left'#3#180#0#6'Height'#2#3#3'Top'#3''''#1#5'Width' - +#3#23#1#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left' - +#3#180#0#0#0#242#2#13#9'TComboBox'#19'BlockIndentComboBox'#22'AnchorSideLeft' - +'.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#23'TabIndentBlocksCheckBox' - +#18'AnchorSideTop.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#17'Tab' - ,'WidthsComboBox'#4'Left'#2#6#6'Height'#2#21#3'Top'#3#195#0#5'Width'#2'd'#18 - +'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#3#10'ItemHeight'#2#13#13'It' - +'ems.Strings'#1#6#1'1'#6#1'2'#6#1'4'#6#1'8'#0#8'OnChange'#7#16'ComboboxOnCha' + +'horSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#5'Owner'#4'Left' + +#2#0#6'Height'#2#16#3'Top'#2#0#5'Width'#2'['#7'Caption'#6#14'UndoGroupLabel' + +#11'ParentColor'#8#0#0#242#2#4#6'TLabel'#14'UndoLimitLabel'#22'AnchorSideLef' + +'t.Control'#7#17'UndoLimitComboBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21 + +'AnchorSideTop.Control'#7#17'UndoLimitComboBox'#18'AnchorSideTop.Side'#7#9'a' + +'srCenter'#4'Left'#3'V'#1#6'Height'#2#16#3'Top'#2#24#5'Width'#2'U'#20'Border' + +'Spacing.Around'#2#6#7'Caption'#6#14'UndoLimitLabel'#11'ParentColor'#8#0#0 + +#242#2#5#6'TLabel'#16'ScrollGroupLabel'#22'AnchorSideLeft.Control'#7#5'Owner' + +#21'AnchorSideTop.Control'#7#17'GroupUndoCheckBox'#18'AnchorSideTop.Side'#7#9 + +'asrBottom'#4'Left'#2#0#6'Height'#2#16#3'Top'#2'B'#5'Width'#2'['#17'BorderSp' + +'acing.Top'#2#6#7'Caption'#6#16'ScrollGroupLabel'#11'ParentColor'#8#0#0#242#2 + +#6#6'TBevel'#6'Bevel2'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTo' + +'p.Control'#7#16'ScrollGroupLabel'#18'AnchorSideTop.Side'#7#9'asrCenter'#23 + +'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom' + +#4'Left'#3#180#0#6'Height'#2#3#3'Top'#2'I'#5'Width'#3#23#1#7'Anchors'#11#5'a' + +'kTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#3#180#0#0#0#242#2#7#6'T' + +'Label'#21'IndentsTabsGroupLabel'#22'AnchorSideLeft.Control'#7#5'Owner'#21'A' + +'nchorSideTop.Control'#7#25'ScrollPastEndLineCheckBox'#18'AnchorSideTop.Side' + +#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#16#3'Top'#3#132#0#5'Width'#2'~'#17'B' + +'orderSpacing.Top'#2#6#7'Caption'#6#21'IndentsTabsGroupLabel'#11'ParentColor' + +#8#0#0#242#2#8#6'TBevel'#6'Bevel3'#22'AnchorSideLeft.Control'#7#5'Owner'#21 + +'AnchorSideTop.Control'#7#21'IndentsTabsGroupLabel'#18'AnchorSideTop.Side'#7 + +#9'asrCenter'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side' + +#7#9'asrBottom'#4'Left'#3#180#0#6'Height'#2#3#3'Top'#3#139#0#5'Width'#3#23#1 + +#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#3#180#0 + +#0#0#242#2#9#6'TLabel'#15'MouseGroupLabel'#22'AnchorSideLeft.Control'#7#5'Ow' + +'ner'#21'AnchorSideTop.Control'#7#23'BlockIndentTypeComboBox'#18'AnchorSideT' + +'op.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#16#3'Top'#3#246#0#5'Width'#2 + +'b'#17'BorderSpacing.Top'#2#6#7'Caption'#6#15'MouseGroupLabel'#11'ParentColo' + +'r'#8#0#0#242#2#10#6'TBevel'#6'Bevel4'#22'AnchorSideLeft.Control'#7#5'Owner' + +#21'AnchorSideTop.Control'#7#15'MouseGroupLabel'#18'AnchorSideTop.Side'#7#9 + +'asrCenter'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7 + +#9'asrBottom'#4'Left'#3#180#0#6'Height'#2#3#3'Top'#3#253#0#5'Width'#3#23#1#7 + +'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#3#180#0#0 + +#0#242#2#11#6'TLabel'#16'CursorGroupLabel'#22'AnchorSideLeft.Control'#7#5'Ow' + +'ner'#21'AnchorSideTop.Control'#7#18'MouseLinksCheckBox'#18'AnchorSideTop.Si' + +'de'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2#16#3'Top'#3'8'#1#5'Width'#2'a'#17 + +'BorderSpacing.Top'#2#6#7'Caption'#6#16'CursorGroupLabel'#11'ParentColor'#8#0 + +#0#242#2#12#6'TBevel'#6'Bevel5'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Anc' + +'horSideTop.Control'#7#16'CursorGroupLabel'#18'AnchorSideTop.Side'#7#9'asrCe' + +'nter'#23'AnchorSideRight.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'a' + +'srBottom'#4'Left'#3#180#0#6'Height'#2#3#3'Top'#3'?'#1#5'Width'#3#23#1#7'Anc' + +'hors'#11#5'akTop'#6'akLeft'#7'akRight'#0#18'BorderSpacing.Left'#3#180#0#0#0 + +#242#2#13#6'TLabel'#20'BlockIndentTypeLabel'#22'AnchorSideLeft.Control'#7#23 + +'BlockIndentTypeComboBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#24'AnchorSi' + ,'deBottom.Control'#7#23'BlockIndentTypeComboBox'#21'AnchorSideBottom.Side'#7 + +#9'asrCenter'#4'Left'#2'p'#6'Height'#2#16#3'Top'#3#221#0#5'Width'#2'v'#7'Anc' + +'hors'#11#6'akLeft'#8'akBottom'#0#20'BorderSpacing.Around'#2#6#7'Caption'#6 + +#20'BlockIndentTypeLabel'#11'ParentColor'#8#0#0#242#2#14#9'TComboBox'#19'Blo' + +'ckIndentComboBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Co' + +'ntrol'#7#23'TabIndentBlocksCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom' + +#24'AnchorSideBottom.Control'#7#17'TabWidthsComboBox'#4'Left'#2#6#6'Height'#2 + +#21#3'Top'#3#195#0#5'Width'#2'd'#12'AutoComplete'#8#18'BorderSpacing.Left'#2 + +#6#17'BorderSpacing.Top'#2#3#5'Ctl3D'#8#10'ItemHeight'#2#13#13'Items.Strings' + +#1#6#1'1'#6#1'2'#6#1'4'#6#1'8'#0#9'ItemWidth'#2#0#8'OnChange'#7#16'ComboboxO' + +'nChange'#6'OnExit'#7#14'ComboBoxOnExit'#9'OnKeyDown'#7#17'ComboboxOnKeyDown' + +#8'TabOrder'#2#0#0#0#242#2#15#9'TComboBox'#17'TabWidthsComboBox'#22'AnchorSi' + +'deLeft.Control'#7#17'SmartTabsCheckBox'#21'AnchorSideTop.Control'#7#19'Bloc' + +'kIndentComboBox'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBotto' + +'m.Side'#7#9'asrBottom'#4'Left'#3#236#0#6'Height'#2#21#3'Top'#3#195#0#5'Widt' + +'h'#2'd'#12'AutoComplete'#8#5'Ctl3D'#8#10'ItemHeight'#2#13#13'Items.Strings' + +#1#6#1'1'#6#1'2'#6#1'4'#6#1'8'#0#9'ItemWidth'#2#0#8'OnChange'#7#16'ComboboxO' + +'nChange'#6'OnExit'#7#14'ComboBoxOnExit'#9'OnKeyDown'#7#17'ComboboxOnKeyDown' + +#8'TabOrder'#2#1#0#0#242#2#16#9'TComboBox'#17'UndoLimitComboBox'#22'AnchorSi' + +'deLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#14'UndoGroupLabel'#18 + +'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#236#0#6'Height'#2#21#3'Top'#2 + +#22#5'Width'#2'd'#12'AutoComplete'#8#18'BorderSpacing.Left'#3#230#0#20'Borde' + +'rSpacing.Around'#2#6#5'Ctl3D'#8#10'ItemHeight'#2#13#13'Items.Strings'#1#6#5 + +'32767'#6#4'4096'#6#3'512'#0#9'ItemWidth'#2#0#8'OnChange'#7#16'ComboboxOnCha' +'nge'#6'OnExit'#7#14'ComboBoxOnExit'#9'OnKeyDown'#7#17'ComboboxOnKeyDown'#8 - +'TabOrder'#2#0#0#0#242#2#14#9'TComboBox'#17'TabWidthsComboBox'#22'AnchorSide' - +'Left.Control'#7#17'SmartTabsCheckBox'#21'AnchorSideTop.Control'#7#19'BlockI' - +'ndentComboBox'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.' - +'Side'#7#9'asrBottom'#4'Left'#3#236#0#6'Height'#2#21#3'Top'#3#195#0#5'Width' - +#2'd'#10'ItemHeight'#2#13#13'Items.Strings'#1#6#1'1'#6#1'2'#6#1'4'#6#1'8'#0#8 - +'OnChange'#7#16'ComboboxOnChange'#6'OnExit'#7#14'ComboBoxOnExit'#9'OnKeyDown' - +#7#17'ComboboxOnKeyDown'#8'TabOrder'#2#1#0#0#242#2#15#9'TComboBox'#17'UndoLi' - +'mitComboBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control' - +#7#14'UndoGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#236#0#6 - +'Height'#2#21#3'Top'#2#22#5'Width'#2'd'#18'BorderSpacing.Left'#3#230#0#20'Bo' - +'rderSpacing.Around'#2#6#10'ItemHeight'#2#13#13'Items.Strings'#1#6#5'32767'#6 - +#4'4096'#6#3'512'#0#8'OnChange'#7#16'ComboboxOnChange'#6'OnExit'#7#14'ComboB' - +'oxOnExit'#9'OnKeyDown'#7#17'ComboboxOnKeyDown'#8'TabOrder'#2#2#0#0#242#2#16 - +#9'TCheckBox'#17'GroupUndoCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21 - +'AnchorSideTop.Control'#7#21'UndoAfterSaveCheckBox'#18'AnchorSideTop.Side'#7 - +#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#2')'#5'Width'#2'|'#18'Border' - +'Spacing.Left'#2#6#7'Caption'#6#17'GroupUndoCheckBox'#8'OnChange'#7#23'Group' - +'UndoCheckBoxChange'#8'TabOrder'#2#3#0#0#242#2#17#9'TCheckBox'#21'UndoAfterS' - +'aveCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control' - +#7#14'UndoGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'He' - +'ight'#2#19#3'Top'#2#22#5'Width'#3#142#0#18'BorderSpacing.Left'#2#6#17'Borde' - +'rSpacing.Top'#2#6#7'Caption'#6#21'UndoAfterSaveCheckBox'#8'TabOrder'#2#4#0#0 - +#242#2#18#9'TCheckBox'#25'ScrollPastEndFileCheckBox'#22'AnchorSideLeft.Contr' - +'ol'#7#5'Owner'#21'AnchorSideTop.Control'#7#16'ScrollGroupLabel'#18'AnchorSi' - +'deTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#2'X'#5'Width'#3 - +#151#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#7'Caption'#6#25 - +'ScrollPastEndFileCheckBox'#8'OnChange'#7#31'ScrollPastEndFileCheckBoxChange' - +#8'TabOrder'#2#5#0#0#242#2#19#9'TCheckBox'#25'ScrollPastEndLineCheckBox'#22 - +'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#25'ScrollPas' - +'tEndFileCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Heigh' - +'t'#2#19#3'Top'#2'k'#5'Width'#3#155#0#18'BorderSpacing.Left'#2#6#7'Caption'#6 - +#25'ScrollPastEndLineCheckBox'#8'OnChange'#7#31'ScrollPastEndLineCheckBoxCha' - +'nge'#8'TabOrder'#2#6#0#0#242#2#20#9'TCheckBox'#23'ScrollByOneLessCheckBox' - +#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#16'Scroll' - +'GroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#236#0#6'Height' - +#2#19#3'Top'#2'X'#5'Width'#3#149#0#18'BorderSpacing.Left'#3#230#0#20'BorderS' - +'pacing.Around'#2#6#7'Caption'#6#23'ScrollByOneLessCheckBox'#8'OnChange'#7#29 - +'ScrollByOneLessCheckBoxChange'#8'TabOrder'#2#7#0#0#242#2#21#9'TCheckBox'#22 - +'HalfPageScrollCheckBox'#22'AnchorSideLeft.Control'#7#23'ScrollByOneLessChec' - +'kBox'#21'AnchorSideTop.Control'#7#25'ScrollPastEndLineCheckBox'#4'Left'#3 - +#236#0#6'Height'#2#19#3'Top'#2'k'#5'Width'#3#139#0#7'Caption'#6#22'HalfPageS' - +'crollCheckBox'#8'OnChange'#7#28'HalfPageScrollCheckBoxChange'#8'TabOrder'#2 - +#8#0#0#242#2#22#9'TCheckBox'#18'AutoIndentCheckBox'#22'AnchorSideLeft.Contro' - +'l'#7#5'Owner'#21'AnchorSideTop.Control'#7#21'IndentsTabsGroupLabel'#18'Anch' - +'orSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3#154#0#5 - +'Width'#2'y'#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#7'Caption' - +#6#18'AutoIndentCheckBox'#8'OnChange'#7#24'AutoIndentCheckBoxChange'#8'TabOr' - +'der'#2#9#0#0#242#2#23#9'TCheckBox'#23'TabIndentBlocksCheckBox'#22'AnchorSid' - +'eLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#18'AutoIndentCheckBox' - +#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3 - +#173#0#5'Width'#3#150#0#18'BorderSpacing.Left'#2#6#7'Caption'#6#23'TabIndent' - +'BlocksCheckBox'#8'OnChange'#7#29'TabIndentBlocksCheckBoxChange'#8'TabOrder' - +#2#10#0#0#242#2#24#9'TCheckBox'#17'SmartTabsCheckBox'#22'AnchorSideLeft.Cont' - +'rol'#7#5'Owner'#21'AnchorSideTop.Control'#7#21'IndentsTabsGroupLabel'#18'An' - +'chorSideTop.Side'#7#9'asrBottom'#4'Left'#3#236#0#6'Height'#2#19#3'Top'#3#154 - +#0#5'Width'#2'x'#18'BorderSpacing.Left'#3#230#0#20'BorderSpacing.Around'#2#6 - +#7'Caption'#6#17'SmartTabsCheckBox'#8'OnChange'#7#23'SmartTabsCheckBoxChange' - +#8'TabOrder'#2#11#0#0#242#2#25#9'TCheckBox'#20'TabsToSpacesCheckBox'#22'Anch' - +'orSideLeft.Control'#7#17'SmartTabsCheckBox'#21'AnchorSideTop.Control'#7#23 - +'TabIndentBlocksCheckBox'#4'Left'#3#236#0#6'Height'#2#19#3'Top'#3#173#0#5'Wi' - ,'dth'#3#142#0#7'Caption'#6#20'TabsToSpacesCheckBox'#8'OnChange'#7#26'TabsToS' - +'pacesCheckBoxChange'#8'TabOrder'#2#12#0#0#242#2#26#9'TCheckBox'#23'DoubleCl' - +'ickLineCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Con' - +'trol'#7#15'MouseGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2 - +#6#6'Height'#2#19#3'Top'#3#244#0#5'Width'#3#146#0#18'BorderSpacing.Left'#2#6 - +#17'BorderSpacing.Top'#2#6#7'Caption'#6#23'DoubleClickLineCheckBox'#8'OnChan' - +'ge'#7#29'DoubleClickLineCheckBoxChange'#8'TabOrder'#2#13#0#0#242#2#27#9'TCh' - +'eckBox'#18'MouseLinksCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Anc' - +'horSideTop.Control'#7#23'DoubleClickLineCheckBox'#18'AnchorSideTop.Side'#7#9 - +'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3#7#1#5'Width'#2'~'#18'BorderS' - +'pacing.Left'#2#6#7'Caption'#6#18'MouseLinksCheckBox'#8'OnChange'#7#24'Mouse' - +'LinksCheckBoxChange'#8'TabOrder'#2#14#0#0#242#2#28#9'TCheckBox'#18'DragDrop' - +'EdCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control' - +#7#15'MouseGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#236#0 - +#6'Height'#2#19#3'Top'#3#244#0#5'Width'#3#128#0#18'BorderSpacing.Left'#3#230 - +#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#18'DragDropEdCheckBox'#8'OnChan' - +'ge'#7#24'DragDropEdCheckBoxChange'#8'TabOrder'#2#15#0#0#242#2#29#9'TCheckBo' - +'x'#17'DropFilesCheckBox'#22'AnchorSideLeft.Control'#7#18'DragDropEdCheckBox' - +#21'AnchorSideTop.Control'#7#18'MouseLinksCheckBox'#4'Left'#3#236#0#6'Height' - +#2#19#3'Top'#3#7#1#5'Width'#2'q'#7'Caption'#6#17'DropFilesCheckBox'#8'OnChan' - +'ge'#7#23'DropFilesCheckBoxChange'#8'TabOrder'#2#16#0#0#242#2#30#9'TCheckBox' - +#19'KeepCursorXCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSide' - +'Top.Control'#7#16'CursorGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4 - +'Left'#2#6#6'Height'#2#19#3'Top'#3'6'#1#5'Width'#3#131#0#18'BorderSpacing.Le' - +'ft'#2#6#17'BorderSpacing.Top'#2#6#7'Caption'#6#19'KeepCursorXCheckBox'#8'On' - +'Change'#7#25'KeepCursorXCheckBoxChange'#8'TabOrder'#2#17#0#0#242#2#31#9'TCh' - +'eckBox'#24'PersistentCursorCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner' - +#21'AnchorSideTop.Control'#7#19'KeepCursorXCheckBox'#18'AnchorSideTop.Side'#7 - +#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3'I'#1#5'Width'#3#145#0#18'B' - +'orderSpacing.Left'#2#6#7'Caption'#6#24'PersistentCursorCheckBox'#8'OnChange' - +#7#30'PersistentCursorCheckBoxChange'#8'TabOrder'#2#18#0#0#242#2' '#9'TCheck' - +'Box'#27'AlwaysVisibleCursorCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner' - +#21'AnchorSideTop.Control'#7#24'PersistentCursorCheckBox'#18'AnchorSideTop.S' - +'ide'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3'\'#1#5'Width'#3#162 - +#0#18'BorderSpacing.Left'#2#6#7'Caption'#6#27'AlwaysVisibleCursorCheckBox'#8 - +'OnChange'#7'!AlwaysVisibleCursorCheckBoxChange'#8'TabOrder'#2#19#0#0#242#2 - +'!'#9'TCheckBox'#28'CursorSkipsSelectionCheckBox'#22'AnchorSideLeft.Control' - +#7#5'Owner'#21'AnchorSideTop.Control'#7#16'CursorGroupLabel'#18'AnchorSideTo' - +'p.Side'#7#9'asrBottom'#4'Left'#3#236#0#6'Height'#2#19#3'Top'#3'6'#1#5'Width' - +#3#169#0#18'BorderSpacing.Left'#3#230#0#20'BorderSpacing.Around'#2#6#7'Capti' - +'on'#6#28'CursorSkipsSelectionCheckBox'#8'OnChange'#7'"CursorSkipsSelectionC' - +'heckBoxChange'#8'TabOrder'#2#20#0#0#242#2'"'#9'TCheckBox'#29'RightMouseMove' - +'sCursorCheckBox'#22'AnchorSideLeft.Control'#7#28'CursorSkipsSelectionCheckB' - +'ox'#21'AnchorSideTop.Control'#7#24'PersistentCursorCheckBox'#4'Left'#3#236#0 - +#6'Height'#2#19#3'Top'#3'I'#1#5'Width'#3#188#0#7'Caption'#6#29'RightMouseMov' - +'esCursorCheckBox'#8'OnChange'#7'#RightMouseMovesCursorCheckBoxChange'#8'Tab' - +'Order'#2#21#0#0#242#2'#'#9'TCheckBox"HomeKeyJumpsToNearestStartCheckBox'#22 - +'AnchorSideLeft.Control'#7#28'CursorSkipsSelectionCheckBox'#21'AnchorSideTop' - +'.Control'#7#27'AlwaysVisibleCursorCheckBox'#4'Left'#3#236#0#6'Height'#2#19#3 - +'Top'#3'\'#1#5'Width'#3#217#0#7'Caption'#6'"HomeKeyJumpsToNearestStartCheckB' - +'ox'#8'OnChange'#7'(HomeKeyJumpsToNearestStartCheckBoxChange'#8'TabOrder'#2 - +#22#0#0#242#2'$'#9'TCheckBox!EndKeyJumpsToNearestStartCheckBox'#22'AnchorSid' - +'eLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#27'AlwaysVisibleCurso' - +'rCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19 - +#3'Top'#3'o'#1#5'Width'#3#208#0#18'BorderSpacing.Left'#2#6#7'Caption'#6'!End' - +'KeyJumpsToNearestStartCheckBox'#8'OnChange'#7'''EndKeyJumpsToNearestStartCh' - +'eckBoxChange'#8'TabOrder'#2#23#0#0#0 + +'TabOrder'#2#2#0#0#242#2#17#9'TCheckBox'#17'GroupUndoCheckBox'#22'AnchorSide' + +'Left.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#21'UndoAfterSaveCheckB' + +'ox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top' + +#2')'#5'Width'#2'|'#18'BorderSpacing.Left'#2#6#7'Caption'#6#17'GroupUndoChec' + +'kBox'#8'OnChange'#7#23'GroupUndoCheckBoxChange'#8'TabOrder'#2#3#0#0#242#2#18 + +#9'TCheckBox'#21'UndoAfterSaveCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner' + +#21'AnchorSideTop.Control'#7#14'UndoGroupLabel'#18'AnchorSideTop.Side'#7#9'a' + +'srBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#2#22#5'Width'#3#142#0#18'Border' + +'Spacing.Left'#2#6#17'BorderSpacing.Top'#2#6#7'Caption'#6#21'UndoAfterSaveCh' + +'eckBox'#8'TabOrder'#2#4#0#0#242#2#19#9'TCheckBox'#25'ScrollPastEndFileCheck' + +'Box'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#16'S' + +'crollGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height' + +#2#19#3'Top'#2'X'#5'Width'#3#151#0#18'BorderSpacing.Left'#2#6#17'BorderSpaci' + +'ng.Top'#2#6#7'Caption'#6#25'ScrollPastEndFileCheckBox'#8'OnChange'#7#31'Scr' + +'ollPastEndFileCheckBoxChange'#8'TabOrder'#2#5#0#0#242#2#20#9'TCheckBox'#25 + +'ScrollPastEndLineCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorS' + +'ideTop.Control'#7#25'ScrollPastEndFileCheckBox'#18'AnchorSideTop.Side'#7#9 + +'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#2'k'#5'Width'#3#155#0#18'Borde' + +'rSpacing.Left'#2#6#7'Caption'#6#25'ScrollPastEndLineCheckBox'#8'OnChange'#7 + +#31'ScrollPastEndLineCheckBoxChange'#8'TabOrder'#2#6#0#0#242#2#21#9'TCheckBo' + +'x'#23'ScrollByOneLessCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'Anc' + +'horSideTop.Control'#7#16'ScrollGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBo' + +'ttom'#4'Left'#3#236#0#6'Height'#2#19#3'Top'#2'X'#5'Width'#3#149#0#18'Border' + +'Spacing.Left'#3#230#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#23'ScrollBy' + +'OneLessCheckBox'#8'OnChange'#7#29'ScrollByOneLessCheckBoxChange'#8'TabOrder' + +#2#7#0#0#242#2#22#9'TCheckBox'#22'HalfPageScrollCheckBox'#22'AnchorSideLeft.' + +'Control'#7#23'ScrollByOneLessCheckBox'#21'AnchorSideTop.Control'#7#25'Scrol' + +'lPastEndLineCheckBox'#4'Left'#3#236#0#6'Height'#2#19#3'Top'#2'k'#5'Width'#3 + +#139#0#7'Caption'#6#22'HalfPageScrollCheckBox'#8'OnChange'#7#28'HalfPageScro' + +'llCheckBoxChange'#8'TabOrder'#2#8#0#0#242#2#23#9'TCheckBox'#18'AutoIndentCh' + +'eckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#21 + +'IndentsTabsGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6 + +'Height'#2#19#3'Top'#3#154#0#5'Width'#2'y'#18'BorderSpacing.Left'#2#6#17'Bor' + +'derSpacing.Top'#2#6#7'Caption'#6#18'AutoIndentCheckBox'#8'OnChange'#7#24'Au' + +'toIndentCheckBoxChange'#8'TabOrder'#2#9#0#0#242#2#24#9'TCheckBox'#23'TabInd' + +'entBlocksCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.C' + +'ontrol'#7#18'AutoIndentCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Le' + +'ft'#2#6#6'Height'#2#19#3'Top'#3#173#0#5'Width'#3#150#0#18'BorderSpacing.Lef' + +'t'#2#6#7'Caption'#6#23'TabIndentBlocksCheckBox'#8'OnChange'#7#29'TabIndentB' + ,'locksCheckBoxChange'#8'TabOrder'#2#10#0#0#242#2#25#9'TCheckBox'#17'SmartTab' + +'sCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7 + +#21'IndentsTabsGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3 + +#236#0#6'Height'#2#19#3'Top'#3#154#0#5'Width'#2'x'#18'BorderSpacing.Left'#3 + +#230#0#20'BorderSpacing.Around'#2#6#7'Caption'#6#17'SmartTabsCheckBox'#8'OnC' + +'hange'#7#23'SmartTabsCheckBoxChange'#8'TabOrder'#2#11#0#0#242#2#26#9'TCheck' + +'Box'#20'TabsToSpacesCheckBox'#22'AnchorSideLeft.Control'#7#17'SmartTabsChec' + +'kBox'#21'AnchorSideTop.Control'#7#23'TabIndentBlocksCheckBox'#4'Left'#3#236 + +#0#6'Height'#2#19#3'Top'#3#173#0#5'Width'#3#142#0#7'Caption'#6#20'TabsToSpac' + +'esCheckBox'#8'OnChange'#7#26'TabsToSpacesCheckBoxChange'#8'TabOrder'#2#12#0 + +#0#242#2#27#9'TCheckBox'#23'DoubleClickLineCheckBox'#22'AnchorSideLeft.Contr' + +'ol'#7#5'Owner'#21'AnchorSideTop.Control'#7#15'MouseGroupLabel'#18'AnchorSid' + +'eTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3#12#1#5'Width' + +#3#146#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#7'Caption'#6#23 + +'DoubleClickLineCheckBox'#8'OnChange'#7#29'DoubleClickLineCheckBoxChange'#8 + +'TabOrder'#2#13#0#0#242#2#28#9'TCheckBox'#18'MouseLinksCheckBox'#22'AnchorSi' + +'deLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#23'DoubleClickLineCh' + +'eckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3 + +'Top'#3#31#1#5'Width'#2'~'#18'BorderSpacing.Left'#2#6#7'Caption'#6#18'MouseL' + +'inksCheckBox'#8'OnChange'#7#24'MouseLinksCheckBoxChange'#8'TabOrder'#2#14#0 + +#0#242#2#29#9'TCheckBox'#18'DragDropEdCheckBox'#22'AnchorSideLeft.Control'#7 + +#5'Owner'#21'AnchorSideTop.Control'#7#15'MouseGroupLabel'#18'AnchorSideTop.S' + +'ide'#7#9'asrBottom'#4'Left'#3#236#0#6'Height'#2#19#3'Top'#3#12#1#5'Width'#3 + +#128#0#18'BorderSpacing.Left'#3#230#0#20'BorderSpacing.Around'#2#6#7'Caption' + +#6#18'DragDropEdCheckBox'#8'OnChange'#7#24'DragDropEdCheckBoxChange'#8'TabOr' + +'der'#2#15#0#0#242#2#30#9'TCheckBox'#17'DropFilesCheckBox'#22'AnchorSideLeft' + +'.Control'#7#18'DragDropEdCheckBox'#21'AnchorSideTop.Control'#7#18'MouseLink' + +'sCheckBox'#4'Left'#3#236#0#6'Height'#2#19#3'Top'#3#31#1#5'Width'#2'q'#7'Cap' + +'tion'#6#17'DropFilesCheckBox'#8'OnChange'#7#23'DropFilesCheckBoxChange'#8'T' + +'abOrder'#2#16#0#0#242#2#31#9'TCheckBox'#19'KeepCursorXCheckBox'#22'AnchorSi' + +'deLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#16'CursorGroupLabel' + +#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3'N' + +#1#5'Width'#3#131#0#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#6#7'C' + +'aption'#6#19'KeepCursorXCheckBox'#8'OnChange'#7#25'KeepCursorXCheckBoxChang' + +'e'#8'TabOrder'#2#17#0#0#242#2' '#9'TCheckBox'#24'PersistentCursorCheckBox' + +#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#19'KeepCu' + +'rsorXCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2 + +#19#3'Top'#3'a'#1#5'Width'#3#145#0#18'BorderSpacing.Left'#2#6#7'Caption'#6#24 + +'PersistentCursorCheckBox'#8'OnChange'#7#30'PersistentCursorCheckBoxChange'#8 + +'TabOrder'#2#18#0#0#242#2'!'#9'TCheckBox'#27'AlwaysVisibleCursorCheckBox'#22 + +'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#24'Persisten' + +'tCursorCheckBox'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Height' + +#2#19#3'Top'#3't'#1#5'Width'#3#162#0#18'BorderSpacing.Left'#2#6#7'Caption'#6 + +#27'AlwaysVisibleCursorCheckBox'#8'OnChange'#7'!AlwaysVisibleCursorCheckBoxC' + +'hange'#8'TabOrder'#2#19#0#0#242#2'"'#9'TCheckBox'#28'CursorSkipsSelectionCh' + +'eckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop.Control'#7#16 + +'CursorGroupLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#3#236#0#6'H' + +'eight'#2#19#3'Top'#3'N'#1#5'Width'#3#169#0#18'BorderSpacing.Left'#3#230#0#20 + +'BorderSpacing.Around'#2#6#7'Caption'#6#28'CursorSkipsSelectionCheckBox'#8'O' + +'nChange'#7'"CursorSkipsSelectionCheckBoxChange'#8'TabOrder'#2#20#0#0#242#2 + +'#'#9'TCheckBox'#29'RightMouseMovesCursorCheckBox'#22'AnchorSideLeft.Control' + +#7#28'CursorSkipsSelectionCheckBox'#21'AnchorSideTop.Control'#7#24'Persisten' + +'tCursorCheckBox'#4'Left'#3#236#0#6'Height'#2#19#3'Top'#3'a'#1#5'Width'#3#188 + +#0#7'Caption'#6#29'RightMouseMovesCursorCheckBox'#8'OnChange'#7'#RightMouseM' + +'ovesCursorCheckBoxChange'#8'TabOrder'#2#21#0#0#242#2'$'#9'TCheckBox"HomeKey' + +'JumpsToNearestStartCheckBox'#22'AnchorSideLeft.Control'#7#28'CursorSkipsSel' + +'ectionCheckBox'#21'AnchorSideTop.Control'#7#27'AlwaysVisibleCursorCheckBox' + +#4'Left'#3#236#0#6'Height'#2#19#3'Top'#3't'#1#5'Width'#3#217#0#7'Caption'#6 + +'"HomeKeyJumpsToNearestStartCheckBox'#8'OnChange'#7'(HomeKeyJumpsToNearestSt' + +'artCheckBoxChange'#8'TabOrder'#2#22#0#0#242#2'%'#9'TCheckBox!EndKeyJumpsToN' + +'earestStartCheckBox'#22'AnchorSideLeft.Control'#7#5'Owner'#21'AnchorSideTop' + +'.Control'#7#27'AlwaysVisibleCursorCheckBox'#18'AnchorSideTop.Side'#7#9'asrB' + +'ottom'#4'Left'#2#6#6'Height'#2#19#3'Top'#3#135#1#5'Width'#3#208#0#18'Border' + +'Spacing.Left'#2#6#7'Caption'#6'!EndKeyJumpsToNearestStartCheckBox'#8'OnChan' + ,'ge'#7'''EndKeyJumpsToNearestStartCheckBoxChange'#8'TabOrder'#2#23#0#0#242#2 + +'&'#9'TComboBox'#23'BlockIndentTypeComboBox'#22'AnchorSideLeft.Control'#7#5 + +'Owner'#21'AnchorSideTop.Control'#7#19'BlockIndentComboBox'#18'AnchorSideTop' + +'.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#17'TabWidthsComboBox'#4 + +'Left'#2#6#6'Height'#2#21#3'Top'#3#219#0#5'Width'#2'd'#12'AutoComplete'#8#18 + +'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2#3#5'Ctl3D'#8#10'ItemHeight' + +#2#13#9'ItemWidth'#3#200#0#8'OnChange'#7#16'ComboboxOnChange'#6'OnExit'#7#14 + +'ComboBoxOnExit'#9'OnKeyDown'#7#17'ComboboxOnKeyDown'#8'TabOrder'#2#24#0#0#0 ]); diff --git a/ide/frames/editor_general_options.pas b/ide/frames/editor_general_options.pas index c5ac80d394..bf702f1c83 100644 --- a/ide/frames/editor_general_options.pas +++ b/ide/frames/editor_general_options.pas @@ -27,7 +27,7 @@ interface uses Classes, SysUtils, FileUtil, LResources, Forms, Graphics, LCLProc, LCLType, StdCtrls, SynEdit, Controls, ExtCtrls, - EditorOptions, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf; + EditorOptions, LazarusIDEStrConsts, IDEProcs, IDEOptionsIntf, SynBeautifier; type TPreviewEditor = TSynEdit; @@ -40,8 +40,10 @@ type Bevel4: TBevel; Bevel5: TBevel; BlockIndentComboBox: TComboBox; + BlockIndentTypeComboBox: TComboBox; BlockIndentLabel: TLabel; AutoIndentCheckBox: TCheckBox; + BlockIndentTypeLabel: TLabel; EndKeyJumpsToNearestStartCheckBox: TCheckBox; KeepCursorXCheckBox: TCheckBox; PersistentCursorCheckBox: TCheckBox; @@ -124,6 +126,10 @@ end; procedure TEditorGeneralOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog); begin BlockIndentLabel.Caption := dlgBlockIndent; + BlockIndentTypeLabel.Caption := dlgBlockIndent; + BlockIndentTypeComboBox.Items.Add(dlgBlockIndentTypeSpace); + BlockIndentTypeComboBox.Items.Add(dlgBlockIndentTypeCopy); + BlockIndentTypeComboBox.Items.Add(dlgBlockIndentTypePos); TabWidthsLabel.Caption := dlgTabWidths; // undo @@ -172,6 +178,7 @@ begin begin SetComboBoxText(BlockIndentComboBox, IntToStr(BlockIndent)); SetComboBoxText(TabWidthsComboBox, IntToStr(TabWidth)); + BlockIndentTypeComboBox.ItemIndex := ord(BlockIndentType); // undo UndoAfterSaveCheckBox.Checked := UndoAfterSave; @@ -269,6 +276,7 @@ begin if i > 20 then i := 20; BlockIndent := i; + BlockIndentType := TSynBeautifierIndentType(BlockIndentTypeComboBox.ItemIndex); // mouse UpdateOptionFromBool(DoubleClickLineCheckBox.Checked, eoDoubleClickSelectsLine); diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 4a87e9c260..e09d1bc028 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -1145,6 +1145,10 @@ resourcestring dlgHighlightRightOfCursor = 'Right Of Cursor'; gldHighlightBothSidesOfCursor = 'On Both Sides'; dlgBlockIndent = 'Block indent'; + dlgBlockIndentType = 'Indent method'; + dlgBlockIndentTypeSpace = 'Spaces'; + dlgBlockIndentTypeCopy = 'Space/tab as prev Line'; + dlgBlockIndentTypePos = 'Position only'; dlgUndoLimit = 'Undo limit'; dlgTabWidths = 'Tab widths'; dlgMarginGutter = 'Margin and gutter';