SynEdit: Starting on Ifdef Markup

git-svn-id: trunk@41103 -
This commit is contained in:
martin 2013-05-09 22:27:23 +00:00
parent c12c9eb25b
commit 24f0786690
3 changed files with 122 additions and 61 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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 }