mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-23 09:39:37 +01:00
SynEdit: Starting on Ifdef Markup
git-svn-id: trunk@41103 -
This commit is contained in:
parent
c12c9eb25b
commit
24f0786690
@ -330,6 +330,7 @@ type
|
|||||||
FFoldView: TSynEditFoldedView;
|
FFoldView: TSynEditFoldedView;
|
||||||
FHighlighter: TSynPasSyn;
|
FHighlighter: TSynPasSyn;
|
||||||
FIfDefTree: TSynMarkupHighIfDefLinesTree;
|
FIfDefTree: TSynMarkupHighIfDefLinesTree;
|
||||||
|
FOnNodeStateRequest: TSynMarkupIfdefStateRequest;
|
||||||
FOuterLines: TLazSynEditNestedFoldsList;
|
FOuterLines: TLazSynEditNestedFoldsList;
|
||||||
FNeedValidate: Boolean;
|
FNeedValidate: Boolean;
|
||||||
|
|
||||||
@ -353,6 +354,9 @@ type
|
|||||||
procedure IncPaintLock; override;
|
procedure IncPaintLock; override;
|
||||||
procedure DecPaintLock; override;
|
procedure DecPaintLock; override;
|
||||||
|
|
||||||
|
procedure InvalidateAll;
|
||||||
|
procedure SetNodeState(ALinePos, AstartPos: Integer; AState: TSynMarkupIfdefNodeState);
|
||||||
|
|
||||||
// AFirst/ ALast are 1 based
|
// AFirst/ ALast are 1 based
|
||||||
//Procedure Invalidate(SkipPaint: Boolean = False);
|
//Procedure Invalidate(SkipPaint: Boolean = False);
|
||||||
//Procedure InvalidateLines(AFirstLine: Integer = 0; ALastLine: Integer = 0; SkipPaint: Boolean = False);
|
//Procedure InvalidateLines(AFirstLine: Integer = 0; ALastLine: Integer = 0; SkipPaint: Boolean = False);
|
||||||
@ -360,6 +364,7 @@ type
|
|||||||
|
|
||||||
property FoldView: TSynEditFoldedView read FFoldView write SetFoldView;
|
property FoldView: TSynEditFoldedView read FFoldView write SetFoldView;
|
||||||
property Highlighter: TSynPasSyn read FHighlighter write SetHighlighter;
|
property Highlighter: TSynPasSyn read FHighlighter write SetHighlighter;
|
||||||
|
property OnNodeStateRequest: TSynMarkupIfdefStateRequest read FOnNodeStateRequest write FOnNodeStateRequest;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function dbgs(AFlag: SynMarkupIfDefLineFlag): String; overload;
|
function dbgs(AFlag: SynMarkupIfDefLineFlag): String; overload;
|
||||||
@ -1567,20 +1572,8 @@ begin
|
|||||||
idnIfdef: begin
|
idnIfdef: begin
|
||||||
assert(PeerList[i].NodeType in [idnElse, idnElseIf, idnEndIf], 'PeerList[i].NodeType in [idnElse, idnEndIf] for other ifdef');
|
assert(PeerList[i].NodeType in [idnElse, idnElseIf, idnEndIf], 'PeerList[i].NodeType in [idnElse, idnEndIf] for other ifdef');
|
||||||
if PeerList[i].IfDefPeer <> OtherLine.Entry[j] then begin
|
if PeerList[i].IfDefPeer <> OtherLine.Entry[j] then begin
|
||||||
if OtherLine.Entry[j].GetPeer(PeerList[i].NodeType) <> nil then begin
|
Debugln(['New Peer for ',dbgs(PeerList[i].NodeType), ' to ifdef other line']);
|
||||||
debugln(['COMPARING MaxPeerdepth for ',dbgs(PeerList[i].NodeType), ' to ifdef other line']);
|
PeerList[i].IfDefPeer := OtherLine.Entry[j];
|
||||||
if (OtherLine.NestDepthAtNodeStart + OtherLine.Entry[j].RelativeNestDepth + 1 = i
|
|
||||||
// ANode.NestDepthAtNodeStart + PeerList[i].RelativeNestDepth
|
|
||||||
)
|
|
||||||
then begin
|
|
||||||
Debugln(['New Peer (REPLACE) for ',dbgs(PeerList[i].NodeType), ' to ifdef other line']);
|
|
||||||
PeerList[i].IfDefPeer := OtherLine.Entry[j];
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else begin
|
|
||||||
Debugln(['New Peer for ',dbgs(PeerList[i].NodeType), ' to ifdef other line']);
|
|
||||||
PeerList[i].IfDefPeer := OtherLine.Entry[j];
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
j := -1;
|
j := -1;
|
||||||
break;
|
break;
|
||||||
@ -1589,20 +1582,8 @@ begin
|
|||||||
assert(PeerList[i].NodeType in [idnElse, idnElseIf, idnEndIf], 'PeerList[i].NodeType in [idnElse, idnEndIf] for other else');
|
assert(PeerList[i].NodeType in [idnElse, idnElseIf, idnEndIf], 'PeerList[i].NodeType in [idnElse, idnEndIf] for other else');
|
||||||
if (PeerList[i].NodeType = idnEndIf) then begin
|
if (PeerList[i].NodeType = idnEndIf) then begin
|
||||||
if PeerList[i].ElsePeer <> OtherLine.Entry[j] then begin
|
if PeerList[i].ElsePeer <> OtherLine.Entry[j] then begin
|
||||||
|
Debugln(['New Peer for ',dbgs(PeerList[i].NodeType), ' to else other line']);
|
||||||
if OtherLine.Entry[j].GetPeer(PeerList[i].NodeType) <> nil then begin
|
PeerList[i].ElsePeer := OtherLine.Entry[j];
|
||||||
debugln(['COMPARING MaxPeerdepth for ',dbgs(PeerList[i].NodeType), ' to else other line']);
|
|
||||||
if OtherLine.NestDepthAtNodeStart + OtherLine.Entry[j].RelativeNestDepth = i
|
|
||||||
// ANode.NestDepthAtNodeStart + PeerList[i].RelativeNestDepth
|
|
||||||
then begin
|
|
||||||
Debugln(['New Peer (REPLACE) for ',dbgs(PeerList[i].NodeType), ' to else other line']);
|
|
||||||
PeerList[i].ElsePeer := OtherLine.Entry[j];
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else begin
|
|
||||||
Debugln(['New Peer for ',dbgs(PeerList[i].NodeType), ' to else other line']);
|
|
||||||
PeerList[i].ElsePeer := OtherLine.Entry[j];
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
j := -1;
|
j := -1;
|
||||||
end
|
end
|
||||||
@ -1610,19 +1591,8 @@ begin
|
|||||||
if (PeerList[i].NodeType in [idnElseIf, idnElse]) and (OtherLine.Entry[j].NodeType = idnElseIf)
|
if (PeerList[i].NodeType in [idnElseIf, idnElse]) and (OtherLine.Entry[j].NodeType = idnElseIf)
|
||||||
then begin
|
then begin
|
||||||
if PeerList[i].IfDefPeer <> OtherLine.Entry[j] then begin
|
if PeerList[i].IfDefPeer <> OtherLine.Entry[j] then begin
|
||||||
if OtherLine.Entry[j].GetPeer(PeerList[i].NodeType) <> nil then begin
|
Debugln(['New Peer for ',dbgs(PeerList[i].NodeType), ' to else other line']);
|
||||||
debugln(['COMPARING MaxPeerdepth for ',dbgs(PeerList[i].NodeType), ' to else other line']);
|
PeerList[i].IfDefPeer := OtherLine.Entry[j];
|
||||||
if OtherLine.NestDepthAtNodeStart + OtherLine.Entry[j].RelativeNestDepth = i
|
|
||||||
// ANode.NestDepthAtNodeStart + PeerList[i].RelativeNestDepth
|
|
||||||
then begin
|
|
||||||
Debugln(['New Peer (REPLACE) for ',dbgs(PeerList[i].NodeType), ' to else other line']);
|
|
||||||
PeerList[i].IfDefPeer := OtherLine.Entry[j];
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else begin
|
|
||||||
Debugln(['New Peer for ',dbgs(PeerList[i].NodeType), ' to else other line']);
|
|
||||||
PeerList[i].IfDefPeer := OtherLine.Entry[j];
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
j := -1;
|
j := -1;
|
||||||
end
|
end
|
||||||
@ -2863,7 +2833,12 @@ end;
|
|||||||
function TSynEditMarkupIfDef.DoNodeStateRequest(Sender: TObject; LinePos,
|
function TSynEditMarkupIfDef.DoNodeStateRequest(Sender: TObject; LinePos,
|
||||||
XStartPos: Integer): TSynMarkupIfdefNodeState;
|
XStartPos: Integer): TSynMarkupIfdefNodeState;
|
||||||
begin
|
begin
|
||||||
Result := idnEnabled;
|
if FOnNodeStateRequest <> nil then
|
||||||
|
Result := FOnNodeStateRequest(Self, LinePos, XStartPos)
|
||||||
|
else
|
||||||
|
Result := idnInvalid;
|
||||||
|
|
||||||
|
//Result := idnEnabled;
|
||||||
if pos('y', copy(SynEdit.Lines[LinePos-1], XStartPos, 100)) > 1 then
|
if pos('y', copy(SynEdit.Lines[LinePos-1], XStartPos, 100)) > 1 then
|
||||||
Result := idnDisabled;
|
Result := idnDisabled;
|
||||||
DebugLn(['STATE REQUEST ', LinePos, ' ', XStartPos, ' : ', dbgs(Result)]);
|
DebugLn(['STATE REQUEST ', LinePos, ' ', XStartPos, ' : ', dbgs(Result)]);
|
||||||
@ -2920,6 +2895,17 @@ begin
|
|||||||
ValidateMatches;
|
ValidateMatches;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TSynEditMarkupIfDef.InvalidateAll;
|
||||||
|
begin
|
||||||
|
FIfDefTree.Clear;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSynEditMarkupIfDef.SetNodeState(ALinePos, AstartPos: Integer;
|
||||||
|
AState: TSynMarkupIfdefNodeState);
|
||||||
|
begin
|
||||||
|
FIfDefTree.SetNodeState(ALinePos, AstartPos, AState);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
var OldAssert: TAssertErrorProc = @SysAssert;
|
var OldAssert: TAssertErrorProc = @SysAssert;
|
||||||
Procedure MyAssert(const Msg,FName:ShortString;LineNo:Longint;ErrorAddr:Pointer);
|
Procedure MyAssert(const Msg,FName:ShortString;LineNo:Longint;ErrorAddr:Pointer);
|
||||||
|
|||||||
@ -54,7 +54,7 @@ uses
|
|||||||
SynEditMiscClasses, SynEditMarkupHighAll, SynEditMarks,
|
SynEditMiscClasses, SynEditMarkupHighAll, SynEditMarks,
|
||||||
SynBeautifier, LazSynEditText,
|
SynBeautifier, LazSynEditText,
|
||||||
SynPluginSyncronizedEditBase, SourceSynEditor, SynMacroRecorder,
|
SynPluginSyncronizedEditBase, SourceSynEditor, SynMacroRecorder,
|
||||||
SynExportHTML, SynHighlighterPas, SynEditMarkup,
|
SynExportHTML, SynHighlighterPas, SynEditMarkup, SynEditMarkupIfDef,
|
||||||
// Intf
|
// Intf
|
||||||
SrcEditorIntf, MenuIntf, LazIDEIntf, PackageIntf, IDEHelpIntf, IDEImagesIntf,
|
SrcEditorIntf, MenuIntf, LazIDEIntf, PackageIntf, IDEHelpIntf, IDEImagesIntf,
|
||||||
IDEWindowIntf, ProjectIntf, MacroDefIntf,
|
IDEWindowIntf, ProjectIntf, MacroDefIntf,
|
||||||
@ -237,6 +237,9 @@ type
|
|||||||
FTempTopLine: Integer;
|
FTempTopLine: Integer;
|
||||||
FEditPlugin: TSynEditPlugin1; // used to get the LinesInserted and
|
FEditPlugin: TSynEditPlugin1; // used to get the LinesInserted and
|
||||||
// LinesDeleted messages
|
// LinesDeleted messages
|
||||||
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
|
FOnIfdefNodeStateRequest: TSynMarkupIfdefStateRequest;
|
||||||
|
{$ENDIF}
|
||||||
FSyncroLockCount: Integer;
|
FSyncroLockCount: Integer;
|
||||||
FPageName: string;
|
FPageName: string;
|
||||||
|
|
||||||
@ -298,6 +301,11 @@ type
|
|||||||
procedure UpdateNoteBook(const ANewNoteBook: TSourceNotebook; ANewPage: TTabSheet);
|
procedure UpdateNoteBook(const ANewNoteBook: TSourceNotebook; ANewPage: TTabSheet);
|
||||||
procedure SetVisible(Value: boolean);
|
procedure SetVisible(Value: boolean);
|
||||||
procedure UnbindEditor;
|
procedure UnbindEditor;
|
||||||
|
|
||||||
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
|
function DoIfDefNodeStateRequest(Sender: TObject; LinePos,
|
||||||
|
XStartPos: Integer): TSynMarkupIfdefNodeState;
|
||||||
|
{$ENDIF}
|
||||||
protected
|
protected
|
||||||
ErrorMsgs: TStrings;
|
ErrorMsgs: TStrings;
|
||||||
|
|
||||||
@ -491,6 +499,12 @@ type
|
|||||||
procedure LineInfoNotificationChange(const ASender: TObject; const ASource: String);
|
procedure LineInfoNotificationChange(const ASender: TObject; const ASource: String);
|
||||||
function SourceToDebugLine(aLinePos: Integer): Integer;
|
function SourceToDebugLine(aLinePos: Integer): Integer;
|
||||||
function DebugToSourceLine(aLinePos: Integer): Integer;
|
function DebugToSourceLine(aLinePos: Integer): Integer;
|
||||||
|
|
||||||
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
|
procedure InvalidateAllIfdefNodes;
|
||||||
|
procedure SetIfdefNodeState(ALinePos, AstartPos: Integer; AState: TSynMarkupIfdefNodeState);
|
||||||
|
property OnIfdefNodeStateRequest: TSynMarkupIfdefStateRequest read FOnIfdefNodeStateRequest write FOnIfdefNodeStateRequest;
|
||||||
|
{$ENDIF}
|
||||||
public
|
public
|
||||||
// properties
|
// properties
|
||||||
property CodeBuffer: TCodeBuffer read GetCodeBuffer write SetCodeBuffer;
|
property CodeBuffer: TCodeBuffer read GetCodeBuffer write SetCodeBuffer;
|
||||||
@ -2647,7 +2661,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------G O T O L I N E -----------------------------}
|
{------------------------------G O T O L I N E -----------------------------}
|
||||||
Function TSourceEditor.GotoLine(Value: Integer): Integer;
|
function TSourceEditor.GotoLine(Value: Integer): Integer;
|
||||||
Var
|
Var
|
||||||
P: TPoint;
|
P: TPoint;
|
||||||
NewTopLine: integer;
|
NewTopLine: integer;
|
||||||
@ -2874,7 +2888,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function TSourceEditor.DoFindAndReplace(aFindText, aReplaceText: String;
|
function TSourceEditor.DoFindAndReplace(aFindText, aReplaceText: String;
|
||||||
anOptions: TSynSearchOptions): integer;
|
anOptions: TSynSearchOptions): Integer;
|
||||||
var
|
var
|
||||||
AText, ACaption: String;
|
AText, ACaption: String;
|
||||||
OldEntireScope, Again: Boolean;
|
OldEntireScope, Again: Boolean;
|
||||||
@ -2962,7 +2976,7 @@ end;
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Procedure TSourceEditor.FocusEditor;
|
procedure TSourceEditor.FocusEditor;
|
||||||
Begin
|
Begin
|
||||||
DebugLnEnter(SRCED_PAGES, ['>> TSourceEditor.FocusEditor A ',PageName,' ',FEditor.Name]);
|
DebugLnEnter(SRCED_PAGES, ['>> TSourceEditor.FocusEditor A ',PageName,' ',FEditor.Name]);
|
||||||
IDEWindowCreators.ShowForm(SourceNotebook,true);
|
IDEWindowCreators.ShowForm(SourceNotebook,true);
|
||||||
@ -2976,7 +2990,7 @@ Begin
|
|||||||
DebugLnExit(SRCED_PAGES, ['<< TSourceEditor.FocusEditor END ',PageName,' ',FEditor.Name]);
|
DebugLnExit(SRCED_PAGES, ['<< TSourceEditor.FocusEditor END ',PageName,' ',FEditor.Name]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function TSourceEditor.GetReadOnly: Boolean;
|
function TSourceEditor.GetReadOnly: Boolean;
|
||||||
Begin
|
Begin
|
||||||
Result:=FEditor.ReadOnly;
|
Result:=FEditor.ReadOnly;
|
||||||
End;
|
End;
|
||||||
@ -4073,7 +4087,7 @@ begin
|
|||||||
UpdateExecutionSourceMark;
|
UpdateExecutionSourceMark;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function TSourceEditor.RefreshEditorSettings: Boolean;
|
function TSourceEditor.RefreshEditorSettings: Boolean;
|
||||||
var
|
var
|
||||||
SimilarEditor: TSynEdit;
|
SimilarEditor: TSynEdit;
|
||||||
Begin
|
Begin
|
||||||
@ -4089,7 +4103,7 @@ Begin
|
|||||||
SourceNotebook.UpdateActiveEditColors(FEditor);
|
SourceNotebook.UpdateActiveEditColors(FEditor);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TSourceEditor.ccAddMessage(Texts: String);
|
procedure TSourceEditor.ccAddMessage(Texts: String);
|
||||||
Begin
|
Begin
|
||||||
ErrorMsgs.Add(Texts);
|
ErrorMsgs.Add(Texts);
|
||||||
End;
|
End;
|
||||||
@ -4271,7 +4285,7 @@ end;
|
|||||||
|
|
||||||
{ AOwner is the TSourceNotebook
|
{ AOwner is the TSourceNotebook
|
||||||
AParent is a page of the TPageControl }
|
AParent is a page of the TPageControl }
|
||||||
Procedure TSourceEditor.CreateEditor(AOwner: TComponent; AParent: TWinControl);
|
procedure TSourceEditor.CreateEditor(AOwner: TComponent; AParent: TWinControl);
|
||||||
var
|
var
|
||||||
NewName: string;
|
NewName: string;
|
||||||
i: integer;
|
i: integer;
|
||||||
@ -4323,6 +4337,9 @@ Begin
|
|||||||
RegisterMouseActionExecHandler(@EditorHandleMouseAction);
|
RegisterMouseActionExecHandler(@EditorHandleMouseAction);
|
||||||
// IMPORTANT: when you change above, don't forget updating UnbindEditor
|
// IMPORTANT: when you change above, don't forget updating UnbindEditor
|
||||||
Parent := AParent;
|
Parent := AParent;
|
||||||
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
|
OnIfdefNodeStateRequest := @DoIfDefNodeStateRequest;;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
Manager.CodeTemplateModul.AddEditor(FEditor);
|
Manager.CodeTemplateModul.AddEditor(FEditor);
|
||||||
Manager.FMacroRecorder.AddEditor(FEditor);
|
Manager.FMacroRecorder.AddEditor(FEditor);
|
||||||
@ -4439,7 +4456,7 @@ begin
|
|||||||
Result := FSharedValues.NeedsUpdateCodeBuffer;
|
Result := FSharedValues.NeedsUpdateCodeBuffer;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function TSourceEditor.GetSource: TStrings;
|
function TSourceEditor.GetSource: TStrings;
|
||||||
Begin
|
Begin
|
||||||
//return synedit's source.
|
//return synedit's source.
|
||||||
Result := FEditor.Lines;
|
Result := FEditor.Lines;
|
||||||
@ -4484,32 +4501,32 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TSourceEditor.SetSource(value: TStrings);
|
procedure TSourceEditor.SetSource(Value: TStrings);
|
||||||
Begin
|
Begin
|
||||||
FEditor.Lines.Assign(Value);
|
FEditor.Lines.Assign(Value);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function TSourceEditor.GetCurrentCursorXLine: Integer;
|
function TSourceEditor.GetCurrentCursorXLine: Integer;
|
||||||
Begin
|
Begin
|
||||||
Result := FEditor.CaretX
|
Result := FEditor.CaretX
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TSourceEditor.SetCurrentCursorXLine(num: Integer);
|
procedure TSourceEditor.SetCurrentCursorXLine(num: Integer);
|
||||||
Begin
|
Begin
|
||||||
FEditor.CaretX := Num;
|
FEditor.CaretX := Num;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function TSourceEditor.GetCurrentCursorYLine: Integer;
|
function TSourceEditor.GetCurrentCursorYLine: Integer;
|
||||||
Begin
|
Begin
|
||||||
Result := FEditor.CaretY;
|
Result := FEditor.CaretY;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TSourceEditor.SetCurrentCursorYLine(num: Integer);
|
procedure TSourceEditor.SetCurrentCursorYLine(num: Integer);
|
||||||
Begin
|
Begin
|
||||||
FEditor.CaretY := Num;
|
FEditor.CaretY := Num;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TSourceEditor.SelectText(const StartPos, EndPos: TPoint);
|
procedure TSourceEditor.SelectText(const StartPos, EndPos: TPoint);
|
||||||
Begin
|
Begin
|
||||||
FEditor.BlockBegin := StartPos;
|
FEditor.BlockBegin := StartPos;
|
||||||
FEditor.BlockEnd := EndPos;
|
FEditor.BlockEnd := EndPos;
|
||||||
@ -4566,7 +4583,7 @@ begin
|
|||||||
FEditor.LogicalCaretXY:=NewCaretXY;
|
FEditor.LogicalCaretXY:=NewCaretXY;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function TSourceEditor.GetModified: Boolean;
|
function TSourceEditor.GetModified: Boolean;
|
||||||
Begin
|
Begin
|
||||||
Result := FSharedValues.Modified;
|
Result := FSharedValues.Modified;
|
||||||
end;
|
end;
|
||||||
@ -4576,12 +4593,12 @@ begin
|
|||||||
FSharedValues.SetModified(NewValue);
|
FSharedValues.SetModified(NewValue);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function TSourceEditor.GetInsertMode: Boolean;
|
function TSourceEditor.GetInsertMode: Boolean;
|
||||||
Begin
|
Begin
|
||||||
Result := FEditor.Insertmode;
|
Result := FEditor.Insertmode;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Function TSourceEditor.Close: Boolean;
|
function TSourceEditor.Close: Boolean;
|
||||||
Begin
|
Begin
|
||||||
DebugLnEnter(SRCED_CLOSE, ['TSourceEditor.Close ShareCount=', FSharedValues.SharedEditorCount]);
|
DebugLnEnter(SRCED_CLOSE, ['TSourceEditor.Close ShareCount=', FSharedValues.SharedEditorCount]);
|
||||||
Result := True;
|
Result := True;
|
||||||
@ -4842,7 +4859,7 @@ begin
|
|||||||
OnMouseWheel(Self, Shift, WheelDelta, MousePos, Handled)
|
OnMouseWheel(Self, Shift, WheelDelta, MousePos, Handled)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure TSourceEditor.EditorMouseDown(Sender: TObject; Button: TMouseButton;
|
procedure TSourceEditor.EditorMouseDown(Sender: TObject; Button: TMouseButton;
|
||||||
Shift: TShiftState; X, Y: Integer);
|
Shift: TShiftState; X, Y: Integer);
|
||||||
begin
|
begin
|
||||||
CheckActiveWindow;
|
CheckActiveWindow;
|
||||||
@ -5243,6 +5260,29 @@ begin
|
|||||||
Result := FEditor.IDEGutterMarks.DebugLineToSourceLine(aLinePos);
|
Result := FEditor.IDEGutterMarks.DebugLineToSourceLine(aLinePos);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
|
procedure TSourceEditor.InvalidateAllIfdefNodes;
|
||||||
|
begin
|
||||||
|
FEditor.InvalidateAllIfdefNodes;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TSourceEditor.SetIfdefNodeState(ALinePos, AstartPos: Integer;
|
||||||
|
AState: TSynMarkupIfdefNodeState);
|
||||||
|
begin
|
||||||
|
FEditor.SetIfdefNodeState(ALinePos, AstartPos, AState);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TSourceEditor.DoIfDefNodeStateRequest(Sender: TObject; LinePos,
|
||||||
|
XStartPos: Integer): TSynMarkupIfdefNodeState;
|
||||||
|
begin
|
||||||
|
if FOnIfdefNodeStateRequest <> nil then
|
||||||
|
Result := FOnIfdefNodeStateRequest(Self, LinePos, XStartPos)
|
||||||
|
else
|
||||||
|
Result := idnInvalid;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
function TSourceEditor.SharedEditorCount: Integer;
|
function TSourceEditor.SharedEditorCount: Integer;
|
||||||
begin
|
begin
|
||||||
Result := FSharedValues.SharedEditorCount;
|
Result := FSharedValues.SharedEditorCount;
|
||||||
|
|||||||
@ -209,6 +209,7 @@ type
|
|||||||
FTemplateEdit: TSynPluginTemplateEdit;
|
FTemplateEdit: TSynPluginTemplateEdit;
|
||||||
FMarkupForGutterMark: TSynEditMarkupGutterMark;
|
FMarkupForGutterMark: TSynEditMarkupGutterMark;
|
||||||
{$IFDEF WithSynMarkupIfDef}
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
|
FOnIfdefNodeStateRequest: TSynMarkupIfdefStateRequest;
|
||||||
FMarkupIfDef: TSynEditMarkupIfDef;
|
FMarkupIfDef: TSynEditMarkupIfDef;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
FTopInfoDisplay: TSourceLazSynTopInfoView;
|
FTopInfoDisplay: TSourceLazSynTopInfoView;
|
||||||
@ -218,6 +219,10 @@ type
|
|||||||
FTopInfoMarkup: TSynSelectedColor;
|
FTopInfoMarkup: TSynSelectedColor;
|
||||||
FUserWordsList: TList;
|
FUserWordsList: TList;
|
||||||
|
|
||||||
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
|
function DoIfDefNodeStateRequest(Sender: TObject; LinePos,
|
||||||
|
XStartPos: Integer): TSynMarkupIfdefNodeState;
|
||||||
|
{$ENDIF}
|
||||||
function GetHighlightUserWordCount: Integer;
|
function GetHighlightUserWordCount: Integer;
|
||||||
function GetHighlightUserWords(AIndex: Integer): TSourceSynEditMarkupHighlightAllMulti;
|
function GetHighlightUserWords(AIndex: Integer): TSourceSynEditMarkupHighlightAllMulti;
|
||||||
function GetIDEGutterMarks: TIDESynGutterMarks;
|
function GetIDEGutterMarks: TIDESynGutterMarks;
|
||||||
@ -252,6 +257,11 @@ type
|
|||||||
property HighlightUserWordCount: Integer read GetHighlightUserWordCount write SetHighlightUserWordCount;
|
property HighlightUserWordCount: Integer read GetHighlightUserWordCount write SetHighlightUserWordCount;
|
||||||
property HighlightUserWords[AIndex: Integer]: TSourceSynEditMarkupHighlightAllMulti read GetHighlightUserWords;
|
property HighlightUserWords[AIndex: Integer]: TSourceSynEditMarkupHighlightAllMulti read GetHighlightUserWords;
|
||||||
property MarkupMgr;
|
property MarkupMgr;
|
||||||
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
|
procedure InvalidateAllIfdefNodes;
|
||||||
|
procedure SetIfdefNodeState(ALinePos, AstartPos: Integer; AState: TSynMarkupIfdefNodeState);
|
||||||
|
property OnIfdefNodeStateRequest: TSynMarkupIfdefStateRequest read FOnIfdefNodeStateRequest write FOnIfdefNodeStateRequest;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TIDESynHighlighterPasRangeList = class(TSynHighlighterPasRangeList)
|
TIDESynHighlighterPasRangeList = class(TSynHighlighterPasRangeList)
|
||||||
@ -1487,6 +1497,29 @@ begin
|
|||||||
Result := TIDESynGutterMarks(Gutter.Parts.ByClass[TIDESynGutterMarks, 0]);
|
Result := TIDESynGutterMarks(Gutter.Parts.ByClass[TIDESynGutterMarks, 0]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
|
function TIDESynEditor.DoIfDefNodeStateRequest(Sender: TObject; LinePos,
|
||||||
|
XStartPos: Integer): TSynMarkupIfdefNodeState;
|
||||||
|
begin
|
||||||
|
if FOnIfdefNodeStateRequest <> nil then
|
||||||
|
Result := FOnIfdefNodeStateRequest(Self, LinePos, XStartPos)
|
||||||
|
else
|
||||||
|
Result := idnInvalid;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TIDESynEditor.InvalidateAllIfdefNodes;
|
||||||
|
begin
|
||||||
|
FMarkupIfDef.InvalidateAll;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TIDESynEditor.SetIfdefNodeState(ALinePos, AstartPos: Integer;
|
||||||
|
AState: TSynMarkupIfdefNodeState);
|
||||||
|
begin
|
||||||
|
FMarkupIfDef.SetNodeState(ALinePos, AstartPos, AState);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
function TIDESynEditor.GetHighlightUserWordCount: Integer;
|
function TIDESynEditor.GetHighlightUserWordCount: Integer;
|
||||||
begin
|
begin
|
||||||
Result := FUserWordsList.Count;
|
Result := FUserWordsList.Count;
|
||||||
@ -1544,6 +1577,7 @@ begin
|
|||||||
{$IFDEF WithSynMarkupIfDef}
|
{$IFDEF WithSynMarkupIfDef}
|
||||||
FMarkupIfDef := TSynEditMarkupIfDef.Create(Self);
|
FMarkupIfDef := TSynEditMarkupIfDef.Create(Self);
|
||||||
FMarkupIfDef.FoldView := TSynEditFoldedView(FoldedTextBuffer);
|
FMarkupIfDef.FoldView := TSynEditFoldedView(FoldedTextBuffer);
|
||||||
|
FMarkupIfDef.OnNodeStateRequest := @DoIfDefNodeStateRequest;
|
||||||
TSynEditMarkupManager(MarkupMgr).AddMarkUp(FMarkupIfDef);
|
TSynEditMarkupManager(MarkupMgr).AddMarkUp(FMarkupIfDef);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
@ -1613,6 +1647,7 @@ begin
|
|||||||
Ime.InvalidateLinesMethod := @InvalidateLines;
|
Ime.InvalidateLinesMethod := @InvalidateLines;
|
||||||
ImeHandler := Ime;
|
ImeHandler := Ime;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
{ TIDESynPasSyn }
|
{ TIDESynPasSyn }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user