From aa685453e373471c6e0b66903b12d6a01521cea7 Mon Sep 17 00:00:00 2001 From: mattias Date: Sun, 15 Jun 2008 11:28:49 +0000 Subject: [PATCH] synedit: removed indenter git-svn-id: trunk@15429 - --- .gitattributes | 1 + components/synedit/synbeautifierpas.pas | 40 ++++++++++ components/synedit/synedit.pp | 97 +++---------------------- 3 files changed, 50 insertions(+), 88 deletions(-) create mode 100644 components/synedit/synbeautifierpas.pas diff --git a/.gitattributes b/.gitattributes index 6ce1d6c688..7f72d41155 100644 --- a/.gitattributes +++ b/.gitattributes @@ -997,6 +997,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/synbeautifierpas.pas svneol=native#text/plain components/synedit/syncompletion.pas svneol=native#text/pascal components/synedit/synedit.inc svneol=native#text/pascal components/synedit/synedit.pp svneol=native#text/pascal diff --git a/components/synedit/synbeautifierpas.pas b/components/synedit/synbeautifierpas.pas new file mode 100644 index 0000000000..365c8bc898 --- /dev/null +++ b/components/synedit/synbeautifierpas.pas @@ -0,0 +1,40 @@ +{------------------------------------------------------------------------------- +The contents of this file are subject to the Mozilla Public License +Version 1.1 (the "License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for +the specific language governing rights and limitations under the License. +-------------------------------------------------------------------------------} +unit SynBeautifierPas; + +{$I synedit.inc} + +interface + +uses + Classes, SysUtils, LCLProc, SynEdit; + +type + + { TSynBeautifierPas } + + TSynBeautifierPas = class(TSynCustomBeautifier) + public + function GetIndentForLineBreak(Editor: TCustomSynEdit; + InsertPos: TPoint; var NextText: string): integer; override; + end; + +implementation + +{ TSynBeautifierPas } + +function TSynBeautifierPas.GetIndentForLineBreak(Editor: TCustomSynEdit; + InsertPos: TPoint; var NextText: string): integer; +begin + Result:=inherited GetIndentForLineBreak(Editor, InsertPos, NextText); +end; + +end. + diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index 8c40d1e4ff..0f307809d9 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -318,26 +318,6 @@ type end; {$IFDEF SYN_LAZARUS} - // aIndex parameters of Line notifications are 0-based. - TSynCustomLineIndenter = class(TComponent) - private - FEditor: TCustomSynEdit; - procedure SetEditor(const AValue: TCustomSynEdit); - public - destructor Destroy; override; - // plugin notifications - procedure LinesInserted(aIndex: integer; aCount: integer); - procedure LinesDeleted(aIndex: integer; aCount: integer); - procedure LinesPutted(aIndex: integer; aCount: integer); - // pretty clear, heh? - procedure Reset; - // indentation - function GetLineIndentProposal(aIndex: integer; - IgnoreCurrentLineText: boolean): integer; - public - property Editor: TCustomSynEdit read FEditor write SetEditor; - end; - { TSynCustomBeautifier } TSynCustomBeautifier = class(TComponent) @@ -383,7 +363,6 @@ type fBracketHighlightPos: TPoint; fBracketHighlightAntiPos: TPoint; fCtrlMouseActive: boolean; - fLineIndenter: TSynCustomLineIndenter; FCFDividerDrawLevel: Integer; {$ENDIF} fLastCaretX: integer; // physical position (screen) //mh 2000-10-19 @@ -501,7 +480,6 @@ type function AdjustPhysPosToCharacterStart(Line: integer; PhysPos: integer): integer; function GetLogicalCaretXY: TPoint; procedure SetCFDividerDrawLevel(const AValue: Integer); - procedure SetLineIndenter(const AValue: TSynCustomLineIndenter); procedure SetLogicalCaretXY(const NewLogCaretXY: TPoint); procedure SetBeautifier(NewBeautifier: TSynCustomBeautifier); {$ENDIF} @@ -844,8 +822,6 @@ type property Beautifier: TSynCustomBeautifier read fBeautifier write SetBeautifier; property CtrlMouseActive: boolean read fCtrlMouseActive; property LogicalCaretXY: TPoint read GetLogicalCaretXY write SetLogicalCaretXY; - property LineIndenter: TSynCustomLineIndenter read fLineIndenter - write SetLineIndenter; property SelStart: Integer read GetSelStart write SetSelStart; property SelEnd: Integer read GetSelEnd write SetSelEnd; {$ENDIF} @@ -1570,7 +1546,7 @@ var begin {$IFDEF SYN_LAZARUS} if HandleAllocated then LCLIntf.DestroyCaret(Handle); - LineIndenter:=nil; + Beautifier:=nil; {$ENDIF} Highlighter := nil; // free listeners while other fields are still valid @@ -1728,21 +1704,6 @@ begin FCFDividerDrawLevel := AValue; end; -procedure TCustomSynEdit.SetLineIndenter(const AValue: TSynCustomLineIndenter); -var - OldLineIndenter: TSynCustomLineIndenter; -begin - if Assigned(fLineIndenter) then begin - OldLineIndenter:=fLineIndenter; - fLineIndenter:=nil; - OldLineIndenter.Editor:=nil; - end; - fLineIndenter:=AValue; - if Assigned(fLineIndenter) then begin - fLineIndenter.Editor:=Self; - end; -end; - procedure TCustomSynEdit.SetLogicalCaretXY(const NewLogCaretXY: TPoint); begin CaretXY:=LogicalToPhysicalPos(NewLogCaretXY); @@ -10823,9 +10784,13 @@ var s: string; FirstNonBlank: Integer; begin - if fLineIndenter<>nil then - Result:=fLineIndenter.GetLineIndentProposal(Line-1,IgnoreCurrentLineText) - else begin + if fBeautifier<>nil then begin + if IgnoreCurrentLineText then + s:='' + else + s:=LineText; + Result:=fBeautifier.GetIndentForLineBreak(Self,Point(1,Line),s); + end else begin // default: use last non empty line indent, ignore always current line y:=Line-1; if y>Lines.Count then y:=Lines.Count; @@ -11417,51 +11382,6 @@ begin end; {$IFDEF SYN_LAZARUS} -{ TSynCustomLineIndenter } - -procedure TSynCustomLineIndenter.SetEditor(const AValue: TCustomSynEdit); -begin - if FEditor=AValue then exit; - FEditor:=AValue; - if fEditor<>nil then fEditor.LineIndenter:=Self; -end; - -destructor TSynCustomLineIndenter.Destroy; -begin - Editor:=nil; - inherited Destroy; -end; - -procedure TSynCustomLineIndenter.LinesInserted(aIndex: integer; - aCount: integer); -begin - // for descendants to override -end; - -procedure TSynCustomLineIndenter.LinesDeleted(aIndex: integer; aCount: integer); -begin - // for descendants to override -end; - -procedure TSynCustomLineIndenter.LinesPutted(aIndex: integer; aCount: integer); -begin - // for descendants to override -end; - -procedure TSynCustomLineIndenter.Reset; -begin - // for descendants to override -end; - -function TSynCustomLineIndenter.GetLineIndentProposal(aIndex: integer; - IgnoreCurrentLineText: boolean): integer; -begin - // for descendants to override - RaiseGDBException('TSynEditLineIndentPlugin.GetLineIndentProposal '+ClassName); - Result:=0; -end; -{$ENDIF} - { TSynCustomBeautifier } function TSynCustomBeautifier.LeftSpaces(Editor: TCustomSynEdit; @@ -11507,6 +11427,7 @@ begin dec(LastTextY); end; end; +{$ENDIF} initialization {$IFNDEF SYN_LAZARUS}