mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 00:59:31 +02:00
SynEdi: more debugln for undo
git-svn-id: trunk@35067 -
This commit is contained in:
parent
3330db0aba
commit
f88a9d1f56
@ -1353,7 +1353,7 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
CurSrcEdit.BeginUndoBlock;
|
||||
CurSrcEdit.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TCodyIdentifiersDlg.UseIdentifier'){$ENDIF};
|
||||
try
|
||||
// insert or replace identifier
|
||||
if (not CurSrcEdit.SelectionAvailable)
|
||||
@ -1380,7 +1380,7 @@ begin
|
||||
if not SameUnitName then
|
||||
AddToUsesSection;
|
||||
finally
|
||||
CurSrcEdit.EndUndoBlock;
|
||||
CurSrcEdit.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TCodyIdentifiersDlg.UseIdentifier'){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -292,7 +292,7 @@ begin
|
||||
debugln(['InsertCallInherited CodeToolBoss.SourceChangeCache.Replace failed']);
|
||||
exit;
|
||||
end;
|
||||
SrcEdit.BeginUndoBlock;
|
||||
SrcEdit.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('InsertCallInherited'){$ENDIF};
|
||||
try
|
||||
SrcEdit.CursorTextXY:=NewXY;
|
||||
if not CodeToolBoss.SourceChangeCache.Apply then begin
|
||||
@ -300,7 +300,7 @@ begin
|
||||
exit;
|
||||
end;
|
||||
finally
|
||||
SrcEdit.EndUndoBlock;
|
||||
SrcEdit.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('InsertCallInherited'){$ENDIF};
|
||||
end;
|
||||
except
|
||||
on e: Exception do CodeToolBoss.HandleException(e);
|
||||
|
@ -1591,7 +1591,7 @@ begin
|
||||
// Note: Form.Visible can be false, for example when completion only contains one item
|
||||
if F.CurrentEditor is TCustomSynEdit then
|
||||
with TCustomSynEdit(F.CurrentEditor) do begin
|
||||
BeginUndoBlock;
|
||||
BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSynCompletion.Validate'){$ENDIF};
|
||||
BeginUpdate;
|
||||
try
|
||||
LogCaret := LogicalCaretXY;
|
||||
@ -1634,7 +1634,7 @@ begin
|
||||
Cancel(Sender);
|
||||
finally
|
||||
EndUpdate;
|
||||
EndUndoBlock;
|
||||
EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSynCompletion.Validate'){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
@ -792,9 +792,9 @@ type
|
||||
destructor Destroy; override;
|
||||
procedure AfterLoadFromFile;
|
||||
|
||||
procedure BeginUndoBlock;
|
||||
procedure BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF};
|
||||
procedure BeginUpdate(WithUndoBlock: Boolean = True);
|
||||
procedure EndUndoBlock;
|
||||
procedure EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF};
|
||||
procedure EndUpdate;
|
||||
|
||||
public
|
||||
@ -2097,7 +2097,7 @@ begin
|
||||
if (FUndoBlockAtPaintLock > FPaintLock) then
|
||||
debugln(['***** SYNEDIT: Fixing auto-undo-block FUndoBlockAtPaintLock=',FUndoBlockAtPaintLock,' FPaintLock=',FPaintLock]);
|
||||
FUndoBlockAtPaintLock := 0;
|
||||
EndUndoBlock;
|
||||
EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TCustomSynEdit.DoDecPaintLock'){$ENDIF};
|
||||
end;
|
||||
if (FPaintLock=1) and HandleAllocated then begin
|
||||
ScanRanges(FLastTextChangeStamp <> TSynEditStringList(FLines).TextChangeStamp);
|
||||
@ -3298,6 +3298,9 @@ begin
|
||||
|
||||
If FPaintLock > 0 then begin
|
||||
debugln(['Warning: SynEdit.Paint called during PaintLock']);
|
||||
{$IFDEF SynCheckPaintLock}
|
||||
DumpStack;
|
||||
{$ENDIF}
|
||||
// Ensure this will be repainted after PaintLock
|
||||
if FInvalidateRect.Top < 0 then
|
||||
FInvalidateRect := rcClip
|
||||
@ -5621,6 +5624,12 @@ begin
|
||||
end;
|
||||
finally
|
||||
InternalEndUndoBlock;
|
||||
{$IFDEF SynCheckPaintLock}
|
||||
if (FPaintLock > 0) and (FInvalidateRect.Bottom > FInvalidateRect.Top) then begin
|
||||
debugln(['TCustomSynEdit.CommandProcessor: Paint called while locked InitialCmd=', InitialCmd, ' Command=', Command]);
|
||||
DumpStack;
|
||||
end;
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -6245,6 +6254,9 @@ end;
|
||||
procedure TCustomSynEdit.InternalBeginUndoBlock(aList: TSynEditUndoList);
|
||||
begin
|
||||
if aList = nil then aList := fUndoList;
|
||||
{$IFDEF SynUndoDebugBeginEnd}
|
||||
DebugLnEnter(['>> TCustomSynEdit.InternalBeginUndoBlock', DbgSName(self), ' ', dbgs(Self), ' aList=', aList, ' FPaintLock=', FPaintLock, ' InGroupCount=',aList.InGroupCount]);
|
||||
{$ENDIF}
|
||||
aList.OnNeedCaretUndo := {$IFDEF FPC}@{$ENDIF}GetCaretUndo;
|
||||
aList.BeginBlock;
|
||||
IncPaintLock;
|
||||
@ -6261,10 +6273,17 @@ begin
|
||||
// after unfold
|
||||
DecPaintLock;
|
||||
aList.EndBlock; // Todo: Doing this after DecPaintLock, can cause duplicate calls to StatusChanged(scModified)
|
||||
{$IFDEF SynUndoDebugBeginEnd}
|
||||
DebugLnEnter(['<< TCustomSynEdit.InternalEndUndoBlock', DbgSName(self), ' ', dbgs(Self), ' aList=', aList, ' FPaintLock=', FPaintLock, ' InGroupCount=',aList.InGroupCount]);
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TCustomSynEdit.BeginUndoBlock;
|
||||
procedure TCustomSynEdit.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF};
|
||||
begin
|
||||
{$IFDEF SynUndoDebugBeginEnd}
|
||||
DebugLnEnter(['>> TCustomSynEdit.BeginUndoBlock ', DbgSName(self), ' ', dbgs(Self), ' Caller=', ACaller, ' FPaintLock=', FPaintLock, ' InGroupCount=',fUndoList.InGroupCount]);
|
||||
if ACaller = '' then DumpStack;
|
||||
{$ENDIF}
|
||||
fUndoList.OnNeedCaretUndo := {$IFDEF FPC}@{$ENDIF}GetCaretUndo;
|
||||
fUndoList.BeginBlock;
|
||||
////FFoldedLinesView.Lock;
|
||||
@ -6276,17 +6295,21 @@ begin
|
||||
IncPaintLock;
|
||||
if WithUndoBlock and (FUndoBlockAtPaintLock = 0) then begin
|
||||
FUndoBlockAtPaintLock := FPaintLock;
|
||||
BeginUndoBlock;
|
||||
BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('SynEdit.BeginUpdate'){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCustomSynEdit.EndUndoBlock;
|
||||
procedure TCustomSynEdit.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF};
|
||||
begin
|
||||
// Write all trimming info to the end of the undo block,
|
||||
// so it will be undone first, and other UndoItems do see the expected spaces
|
||||
//FTrimmedLinesView.UnLock;
|
||||
////FFoldedLinesView.UnLock;
|
||||
fUndoList.EndBlock;
|
||||
{$IFDEF SynUndoDebugBeginEnd}
|
||||
DebugLnEnter(['<< TCustomSynEdit.EndUndoBlock', DbgSName(self), ' ', dbgs(Self), ' Caller=', ACaller, ' FPaintLock=', FPaintLock, ' InGroupCount=',fUndoList.InGroupCount]);
|
||||
//if ACaller = '' then DumpStack;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TCustomSynEdit.EndUpdate;
|
||||
|
@ -208,6 +208,9 @@ type
|
||||
function RealCount: Integer;
|
||||
function IsTopMarkedAsUnmodified: boolean;
|
||||
function UnModifiedMarkerExists: boolean;
|
||||
{$IFDEF SynUndoDebugBeginEnd}
|
||||
property InGroupCount: integer read FInGroupCount;
|
||||
{$ENDIF}
|
||||
public
|
||||
property CanUndo: boolean read GetCanUndo;
|
||||
property FullUndoImpossible: boolean read fFullUndoImposible;
|
||||
@ -372,7 +375,7 @@ begin
|
||||
FForceGroupEnd := False;
|
||||
end;
|
||||
{$IFDEF SynUndoDebugCalls}
|
||||
DebugLnExit(['>> TSynEditUndoList.EndBlock ', DebugName, ' ', DbgSName(self), ' ', dbgs(Self), ' fLockCount=', fLockCount, ' Cnt=', fItems.Count, ' FInGroupCount=', FInGroupCount, ' fUnModifiedItem=', fUnModifiedItem]);
|
||||
DebugLnExit(['<< TSynEditUndoList.EndBlock ', DebugName, ' ', DbgSName(self), ' ', dbgs(Self), ' fLockCount=', fLockCount, ' Cnt=', fItems.Count, ' FInGroupCount=', FInGroupCount, ' fUnModifiedItem=', fUnModifiedItem]);
|
||||
end else begin
|
||||
DebugLn(['** EXTRA TSynEditUndoList.EndBlock ', DebugName, ' ', DbgSName(self), ' ', dbgs(Self), ' fLockCount=', fLockCount, ' Cnt=', fItems.Count, ' FInGroupCount=', FInGroupCount, ' fUnModifiedItem=', fUnModifiedItem]);
|
||||
{$ENDIF}
|
||||
|
@ -169,7 +169,7 @@ procedure TTestSynEdit.TestSetSelText(Value: String; PasteMode: TSynSelectionMod
|
||||
AFlags: TTestSetSelFlags);
|
||||
begin
|
||||
if not(tssSkipUndoBlock in AFlags) then
|
||||
BeginUndoBlock;
|
||||
BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('test'){$ENDIF};
|
||||
if (tssUpdateBlock in AFlags) then
|
||||
BeginUpdate(False);
|
||||
|
||||
@ -180,7 +180,7 @@ begin
|
||||
if (tssUpdateBlock in AFlags) then
|
||||
EndUpdate;
|
||||
if not(tssSkipUndoBlock in AFlags) then
|
||||
EndUndoBlock;
|
||||
EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('test'){$ENDIF};
|
||||
end;
|
||||
|
||||
procedure TTestSynEdit.SimulatePaintText;
|
||||
|
@ -1071,11 +1071,11 @@ procedure TTestSynSelection.ReplaceSelText;
|
||||
SetLines(TheText);
|
||||
SetCaretAndSel(X1,Y1, X2,Y2);
|
||||
TestIsBlock ('Sanity, selection at begin of test (3)', X1,Y1, X2,Y2, Before);
|
||||
SynEdit.BeginUndoBlock;
|
||||
SynEdit.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('test sel'){$ENDIF};
|
||||
SynEdit.BeginUpdate(False);
|
||||
SynEdit.SelText := '';
|
||||
SynEdit.TestSetSelText(LinesToText(Replace), SelInsertMode);
|
||||
SynEdit.EndUndoBlock;
|
||||
SynEdit.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('test sel'){$ENDIF};
|
||||
SynEdit.EndUpdate;
|
||||
TestIsCaretPhys('After Replace (2 step, locked)', ExpCaretX, ExpCaretY);
|
||||
TestIsNoBlock ('After Replace (2 step, locked)');
|
||||
|
@ -534,14 +534,14 @@ var UpdateMode: TUpdateMode;
|
||||
procedure BeginUndoBlock;
|
||||
begin
|
||||
if UpdateMode = umOuter then SynEdit.BeginUpdate;
|
||||
SynEdit.BeginUndoBlock;
|
||||
SynEdit.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('test'){$ENDIF};
|
||||
if UpdateMode = umInner then SynEdit.BeginUpdate;
|
||||
end;
|
||||
|
||||
procedure EndUndoBlock;
|
||||
begin
|
||||
if UpdateMode = umInner then SynEdit.EndUpdate;
|
||||
SynEdit.EndUndoBlock;
|
||||
SynEdit.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('test'){$ENDIF};
|
||||
if UpdateMode = umOuter then SynEdit.EndUpdate;
|
||||
end;
|
||||
|
||||
@ -554,10 +554,10 @@ var UpdateMode: TUpdateMode;
|
||||
SetCaret(1,1);
|
||||
// need to add space later, so it is regocnized as trailing
|
||||
|
||||
BeginUndoBlock;
|
||||
BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('test'){$ENDIF};
|
||||
SynEdit.TextBetweenPointsEx[point(5,1), point(6,1), scamEnd] := ''; // delete d
|
||||
SynEdit.TextBetweenPointsEx[point(4,2), point(4,2), scamEnd] := ' '; // add space
|
||||
EndUndoBlock;
|
||||
EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('test'){$ENDIF};
|
||||
TestIsFullText ('modified after block', ['abc', 'mno ', 'xyz', '']);
|
||||
TestIsCaret('modified after block', 5,2);
|
||||
|
||||
|
@ -978,7 +978,7 @@ procedure TCodeContextFrm.CompleteParameters(DeclCode: string);
|
||||
exit;
|
||||
end;
|
||||
// insert
|
||||
ASynEdit.BeginUndoBlock;
|
||||
ASynEdit.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TCodeContextFrm.CompleteParameters'){$ENDIF};
|
||||
try
|
||||
XY:=Point(X,Y);
|
||||
ASynEdit.BlockBegin:=XY;
|
||||
@ -986,7 +986,7 @@ procedure TCodeContextFrm.CompleteParameters(DeclCode: string);
|
||||
ASynEdit.LogicalCaretXY:=XY;
|
||||
ASynEdit.SelText:=NewCode;
|
||||
finally
|
||||
ASynEdit.EndUndoBlock;
|
||||
ASynEdit.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TCodeContextFrm.CompleteParameters'){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -324,13 +324,13 @@ begin
|
||||
if p>0 then s:=copy(s,1,p-1);
|
||||
TxtXY:=CondSynEdit.LogicalCaretXY;
|
||||
CondSynEdit.GetWordBoundsAtRowCol(TxtXY,TxtStartX,TxtEndX);
|
||||
CondSynEdit.BeginUndoBlock();
|
||||
CondSynEdit.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TCompOptBuildMacrosFrame.fSynCompletionValidate'){$ENDIF};
|
||||
try
|
||||
CondSynEdit.BlockBegin:=Point(TxtStartX,TxtXY.Y);
|
||||
CondSynEdit.BlockEnd:=Point(TxtEndX,TxtXY.Y);
|
||||
CondSynEdit.SelText:=s;
|
||||
finally
|
||||
CondSynEdit.EndUndoBlock();
|
||||
CondSynEdit.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TCompOptBuildMacrosFrame.fSynCompletionValidate'){$ENDIF};
|
||||
end;
|
||||
FCompletionHistory.Insert(0,s);
|
||||
if FCompletionHistory.Count>100 then
|
||||
|
@ -346,8 +346,8 @@ type
|
||||
function Close: Boolean;
|
||||
|
||||
// codebuffer
|
||||
procedure BeginUndoBlock; override;
|
||||
procedure EndUndoBlock; override;
|
||||
procedure BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF}; override;
|
||||
procedure EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF}; override;
|
||||
procedure BeginUpdate; override;
|
||||
procedure EndUpdate; override;
|
||||
procedure BeginGlobalUpdate;
|
||||
@ -2211,7 +2211,7 @@ begin
|
||||
try
|
||||
CodeToolsInSync:=not NeedsUpdateCodeBuffer;
|
||||
if SrcLogEntry<>nil then begin
|
||||
SynEditor.BeginUndoBlock;
|
||||
SynEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditorSharedValues.OnCodeBufferChanged'){$ENDIF};
|
||||
SynEditor.BeginUpdate;
|
||||
SynEditor.TemplateEdit.IncExternalEditLock;
|
||||
SynEditor.SyncroEdit.IncExternalEditLock;
|
||||
@ -2246,7 +2246,7 @@ begin
|
||||
SynEditor.SyncroEdit.DecExternalEditLock;
|
||||
SynEditor.TemplateEdit.DecExternalEditLock;
|
||||
SynEditor.EndUpdate;
|
||||
SynEditor.EndUndoBlock;
|
||||
SynEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditorSharedValues.OnCodeBufferChanged'){$ENDIF};
|
||||
end;
|
||||
end else begin
|
||||
{$IFDEF VerboseSrcEditBufClean}
|
||||
@ -2282,14 +2282,14 @@ begin
|
||||
inc(FInGlobalUpdate);
|
||||
if FInGlobalUpdate > 1 then exit;
|
||||
SynEditor.BeginUpdate; // locks all shared SynEdits too
|
||||
SynEditor.BeginUndoBlock;
|
||||
SynEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditorSharedValues.BeginGlobalUpdate'){$ENDIF};
|
||||
end;
|
||||
|
||||
procedure TSourceEditorSharedValues.EndGlobalUpdate;
|
||||
begin
|
||||
dec(FInGlobalUpdate);
|
||||
if FInGlobalUpdate > 0 then exit;
|
||||
SynEditor.EndUndoBlock;
|
||||
SynEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditorSharedValues.EndGlobalUpdate'){$ENDIF};
|
||||
SynEditor.EndUpdate;
|
||||
end;
|
||||
|
||||
@ -3363,7 +3363,7 @@ begin
|
||||
end;
|
||||
|
||||
BeginUpdate;
|
||||
BeginUndoBlock;
|
||||
BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.UpdateCommentSelection'){$ENDIF};
|
||||
FEditor.SelectionMode := smNormal;
|
||||
|
||||
if CommentOn then begin
|
||||
@ -3391,7 +3391,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
EndUndoBlock;
|
||||
EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.UpdateCommentSelection'){$ENDIF};
|
||||
EndUpdate;
|
||||
|
||||
FEditor.CaretXY := OldCaretPos;
|
||||
@ -3407,7 +3407,7 @@ var
|
||||
P: TPoint;
|
||||
begin
|
||||
if ReadOnly then exit;
|
||||
FEditor.BeginUndoBlock;
|
||||
FEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.ConditionalSelection'){$ENDIF};
|
||||
try
|
||||
if not EditorComponent.SelAvail then begin
|
||||
P.Y := FEditor.CaretY;
|
||||
@ -3424,7 +3424,7 @@ begin
|
||||
// will show modal dialog - must not be in Editor.BeginUpdate block, or painting will not work
|
||||
FEditor.SelText:=AddConditional(EditorComponent.SelText,IsPascal);
|
||||
finally
|
||||
FEditor.EndUndoBlock;
|
||||
FEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.ConditionalSelection'){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -3448,13 +3448,13 @@ begin
|
||||
if ReadOnly then exit;
|
||||
if not EditorComponent.SelAvail then exit;
|
||||
FEditor.BeginUpdate;
|
||||
FEditor.BeginUndoBlock;
|
||||
FEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.BreakLinesInSelection'){$ENDIF};
|
||||
// ToDo: replace step by step to keep bookmarks and breakpoints
|
||||
try
|
||||
OldSelection:=EditorComponent.SelText;
|
||||
FEditor.SelText:=BreakLinesInText(OldSelection,FEditor.RightEdge);
|
||||
finally
|
||||
FEditor.EndUndoBlock;
|
||||
FEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.BreakLinesInSelection'){$ENDIF};
|
||||
FEditor.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
@ -3464,12 +3464,12 @@ begin
|
||||
if ReadOnly then exit;
|
||||
if not EditorComponent.SelAvail then exit;
|
||||
FEditor.BeginUpdate;
|
||||
FEditor.BeginUndoBlock;
|
||||
FEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.InvertAssignment'){$ENDIF};
|
||||
try
|
||||
// ToDo: replace step by step to keep bookmarks and breakpoints
|
||||
FEditor.SelText := InvertAssignTool.InvertAssignment(FEditor.SelText);
|
||||
finally
|
||||
FEditor.EndUndoBlock;
|
||||
FEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.InvertAssignment'){$ENDIF};
|
||||
FEditor.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
@ -3894,12 +3894,12 @@ begin
|
||||
s:=' '+CodeToolBoss.SourceChangeCache.BeautifyCodeOptions.BeautifyKeyWord(s);
|
||||
if not (Line[x2] in [' ',#9]) then
|
||||
s:=s+' ';
|
||||
FEditor.BeginUndoBlock;
|
||||
FEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.AutoBlockCompleteChar'){$ENDIF};
|
||||
try
|
||||
FEditor.InsertTextAtCaret(s);
|
||||
FEditor.LogicalCaretXY:=aTextPos;
|
||||
finally
|
||||
FEditor.EndUndoBlock;
|
||||
FEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.AutoBlockCompleteChar'){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -3926,13 +3926,13 @@ begin
|
||||
debugln(['TSourceEditor.AutoBlockCompleteChar ']);
|
||||
// user typed 'begin'
|
||||
if not LazarusIDE.SaveSourceEditorChangesToCodeCache(self) then exit;
|
||||
FEditor.BeginUndoBlock;
|
||||
FEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.AutoBlockCompleteChar (2)'){$ENDIF};
|
||||
FEditor.BeginUpdate;
|
||||
try
|
||||
if not CodeToolBoss.CompleteBlock(CodeBuffer,p.X,p.Y,true) then exit;
|
||||
finally
|
||||
FEditor.EndUpdate;
|
||||
FEditor.EndUndoBlock;
|
||||
FEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.AutoBlockCompleteChar (2)'){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -3945,7 +3945,7 @@ var
|
||||
begin
|
||||
if not LazarusIDE.SaveSourceEditorChangesToCodeCache(self) then exit;
|
||||
XY:=FEditor.LogicalCaretXY;
|
||||
FEditor.BeginUndoBlock;
|
||||
FEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.AutoCompleteBlock'){$ENDIF};
|
||||
FEditor.BeginUpdate;
|
||||
try
|
||||
if not CodeToolBoss.CompleteBlock(CodeBuffer,XY.X,XY.Y,false,
|
||||
@ -3960,7 +3960,7 @@ begin
|
||||
end;
|
||||
finally
|
||||
FEditor.EndUpdate;
|
||||
FEditor.EndUndoBlock;
|
||||
FEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.AutoCompleteBlock'){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -4283,14 +4283,14 @@ Begin
|
||||
CodeBuffer := nil;
|
||||
end;
|
||||
|
||||
procedure TSourceEditor.BeginUndoBlock;
|
||||
procedure TSourceEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF};
|
||||
begin
|
||||
FEditor.BeginUndoBlock;
|
||||
FEditor.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.BeginUndoBlock ' + ACaller){$ENDIF};
|
||||
end;
|
||||
|
||||
procedure TSourceEditor.EndUndoBlock;
|
||||
procedure TSourceEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF};
|
||||
begin
|
||||
FEditor.EndUndoBlock;
|
||||
FEditor.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditor.EndUndoBlock ' + ACaller){$ENDIF};
|
||||
end;
|
||||
|
||||
procedure TSourceEditor.BeginUpdate;
|
||||
|
@ -114,7 +114,7 @@ begin
|
||||
else
|
||||
RemoveUnits:=nil;
|
||||
if (RemoveUnits<>nil) and (RemoveUnits.Count>0) then begin
|
||||
SrcEdit.BeginUndoBlock;
|
||||
SrcEdit.BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('ShowUnusedUnitsDialog'){$ENDIF};
|
||||
try
|
||||
for i:=0 to RemoveUnits.Count-1 do begin
|
||||
if not CodeToolBoss.RemoveUnitFromAllUsesSections(Code,RemoveUnits[i])
|
||||
@ -124,7 +124,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
SrcEdit.EndUndoBlock;
|
||||
SrcEdit.EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('ShowUnusedUnitsDialog'){$ENDIF};
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
|
@ -140,8 +140,8 @@ type
|
||||
// DesktopXY:=EditorControl.ClientToScreen(ScreenToPixelPosition(ScreenXY));
|
||||
|
||||
// update
|
||||
procedure BeginUndoBlock; virtual; abstract;
|
||||
procedure EndUndoBlock; virtual; abstract;
|
||||
procedure BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF}; virtual; abstract;
|
||||
procedure EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF}; virtual; abstract;
|
||||
procedure BeginUpdate; virtual; abstract; // block painting
|
||||
procedure EndUpdate; virtual; abstract;
|
||||
procedure IncreaseIgnoreCodeBufferLock; virtual; abstract;
|
||||
@ -533,13 +533,13 @@ procedure TSourceEditorInterface.ReplaceText(const StartPos, EndPos: TPoint;
|
||||
const NewText: string);
|
||||
begin
|
||||
BeginUpdate;
|
||||
BeginUndoBlock;
|
||||
BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditorInterface.ReplaceText'){$ENDIF};
|
||||
try
|
||||
SelectText(StartPos,EndPos);
|
||||
CursorTextXY:=StartPos;
|
||||
Selection:=NewText;
|
||||
finally
|
||||
EndUndoBlock;
|
||||
EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}('TSourceEditorInterface.ReplaceText'){$ENDIF};
|
||||
EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user