mirror of https://gitlab.com/basile.b/dexed.git
#97, add support for watch points
This commit is contained in:
parent
681e34e8af
commit
8e513f8b52
Binary file not shown.
After Width: | Height: | Size: 800 B |
Binary file not shown.
After Width: | Height: | Size: 809 B |
|
@ -13,7 +13,7 @@
|
||||||
<DpiAware Value="True"/>
|
<DpiAware Value="True"/>
|
||||||
</XPManifest>
|
</XPManifest>
|
||||||
<Icon Value="0"/>
|
<Icon Value="0"/>
|
||||||
<Resources Count="100">
|
<Resources Count="102">
|
||||||
<Resource_0 FileName="../icons/window/layout_add.png" Type="RCDATA" ResourceName="LAYOUT_ADD"/>
|
<Resource_0 FileName="../icons/window/layout_add.png" Type="RCDATA" ResourceName="LAYOUT_ADD"/>
|
||||||
<Resource_1 FileName="../icons/window/layout.png" Type="RCDATA" ResourceName="LAYOUT"/>
|
<Resource_1 FileName="../icons/window/layout.png" Type="RCDATA" ResourceName="LAYOUT"/>
|
||||||
<Resource_2 FileName="../icons/window/application_go.png" Type="RCDATA" ResourceName="APPLICATION_GO"/>
|
<Resource_2 FileName="../icons/window/application_go.png" Type="RCDATA" ResourceName="APPLICATION_GO"/>
|
||||||
|
@ -114,6 +114,8 @@
|
||||||
<Resource_97 FileName="../icons/arrow/go_down.png" Type="RCDATA" ResourceName="GO_DOWN"/>
|
<Resource_97 FileName="../icons/arrow/go_down.png" Type="RCDATA" ResourceName="GO_DOWN"/>
|
||||||
<Resource_98 FileName="../icons/arrow/go_jump.png" Type="RCDATA" ResourceName="GO_JUMP"/>
|
<Resource_98 FileName="../icons/arrow/go_jump.png" Type="RCDATA" ResourceName="GO_JUMP"/>
|
||||||
<Resource_99 FileName="../icons/window/watch_window.png" Type="RCDATA" ResourceName="WATCH_WINDOW"/>
|
<Resource_99 FileName="../icons/window/watch_window.png" Type="RCDATA" ResourceName="WATCH_WINDOW"/>
|
||||||
|
<Resource_100 FileName="../icons/other/camera_go.png" Type="RCDATA" ResourceName="CAMERA_GO"/>
|
||||||
|
<Resource_101 FileName="../icons/other/camera_add.png" Type="RCDATA" ResourceName="CAMERA_ADD"/>
|
||||||
</Resources>
|
</Resources>
|
||||||
</General>
|
</General>
|
||||||
<i18n>
|
<i18n>
|
||||||
|
|
|
@ -10,8 +10,8 @@ uses
|
||||||
type
|
type
|
||||||
|
|
||||||
TBreakPointKind = (
|
TBreakPointKind = (
|
||||||
bpkBreak, // break
|
bpkBreak, // break point
|
||||||
bpkTrace // a message is output
|
bpkWatch // watch point
|
||||||
);
|
);
|
||||||
|
|
||||||
(**
|
(**
|
||||||
|
@ -28,7 +28,8 @@ type
|
||||||
dbUnknown, // ?
|
dbUnknown, // ?
|
||||||
dbBreakPoint, // a break point is reached.
|
dbBreakPoint, // a break point is reached.
|
||||||
dbSignal, // an unexpected signal is emitted.
|
dbSignal, // an unexpected signal is emitted.
|
||||||
dbStep // step to this line
|
dbStep, // step to this line
|
||||||
|
dbWatch // watchpoint reached
|
||||||
);
|
);
|
||||||
(**
|
(**
|
||||||
* An implementer is informed about a debuging session.
|
* An implementer is informed about a debuging session.
|
||||||
|
|
|
@ -258,6 +258,7 @@ inherited CEGdbWidget: TCEGdbWidget
|
||||||
end
|
end
|
||||||
object btnStart: TCEToolButton[9]
|
object btnStart: TCEToolButton[9]
|
||||||
Left = 1
|
Left = 1
|
||||||
|
Hint = 'start debugging'
|
||||||
Top = 0
|
Top = 0
|
||||||
Caption = 'btnStart'
|
Caption = 'btnStart'
|
||||||
DropdownMenu = mnuProjRunnable
|
DropdownMenu = mnuProjRunnable
|
||||||
|
@ -266,6 +267,17 @@ inherited CEGdbWidget: TCEGdbWidget
|
||||||
resourceName = 'POWER'
|
resourceName = 'POWER'
|
||||||
scaledSeparator = False
|
scaledSeparator = False
|
||||||
end
|
end
|
||||||
|
object btnWatch: TCEToolButton[10]
|
||||||
|
Left = 281
|
||||||
|
Hint = 'add a watchpoint for the variable selected in the list'
|
||||||
|
Top = 0
|
||||||
|
Caption = 'btnWatch'
|
||||||
|
DropdownMenu = mnuWatch
|
||||||
|
OnClick = btnWatchClick
|
||||||
|
Style = tbsDropDown
|
||||||
|
resourceName = 'CAMERA_ADD'
|
||||||
|
scaledSeparator = False
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object Splitter2: TSplitter[1]
|
object Splitter2: TSplitter[1]
|
||||||
|
@ -296,4 +308,24 @@ inherited CEGdbWidget: TCEGdbWidget
|
||||||
OnClick = mnuSelRunnableClick
|
OnClick = mnuSelRunnableClick
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
object mnuWatch: TPopupMenu[4]
|
||||||
|
left = 144
|
||||||
|
top = 128
|
||||||
|
object mnuReadW: TMenuItem
|
||||||
|
AutoCheck = True
|
||||||
|
Caption = 'On read'
|
||||||
|
OnClick = mnuReadWClick
|
||||||
|
end
|
||||||
|
object mnuWriteW: TMenuItem
|
||||||
|
AutoCheck = True
|
||||||
|
Caption = 'On write'
|
||||||
|
Checked = True
|
||||||
|
OnClick = mnuWriteWClick
|
||||||
|
end
|
||||||
|
object mnuReadWriteW: TMenuItem
|
||||||
|
AutoCheck = True
|
||||||
|
Caption = 'On read/write'
|
||||||
|
OnClick = mnuReadWriteWClick
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -300,6 +300,8 @@ type
|
||||||
|
|
||||||
TGdbState = (gsNone, gsRunning, gsPaused);
|
TGdbState = (gsNone, gsRunning, gsPaused);
|
||||||
|
|
||||||
|
TAddWatchPointKind = (wpkRead, wpkWrite, wpkReadWrite);
|
||||||
|
|
||||||
{ TCEGdbWidget }
|
{ TCEGdbWidget }
|
||||||
TCEGdbWidget = class(TCEWidget, ICEProjectObserver, ICEDocumentObserver, ICEDebugger, ICEMainMenuProvider)
|
TCEGdbWidget = class(TCEWidget, ICEProjectObserver, ICEDocumentObserver, ICEDebugger, ICEMainMenuProvider)
|
||||||
btnContinue: TCEToolButton;
|
btnContinue: TCEToolButton;
|
||||||
|
@ -311,12 +313,16 @@ type
|
||||||
btnStack: TCEToolButton;
|
btnStack: TCEToolButton;
|
||||||
btnStop: TCEToolButton;
|
btnStop: TCEToolButton;
|
||||||
btnStart: TCEToolButton;
|
btnStart: TCEToolButton;
|
||||||
|
btnWatch: TCEToolButton;
|
||||||
button4: TCEToolButton;
|
button4: TCEToolButton;
|
||||||
Edit1: TComboBox;
|
Edit1: TComboBox;
|
||||||
GroupBox1: TGroupBox;
|
GroupBox1: TGroupBox;
|
||||||
GroupBox2: TGroupBox;
|
GroupBox2: TGroupBox;
|
||||||
GroupBox3: TGroupBox;
|
GroupBox3: TGroupBox;
|
||||||
lstCallStack: TListView;
|
lstCallStack: TListView;
|
||||||
|
mnuReadW: TMenuItem;
|
||||||
|
mnuWriteW: TMenuItem;
|
||||||
|
mnuReadWriteW: TMenuItem;
|
||||||
mnuSelProj: TMenuItem;
|
mnuSelProj: TMenuItem;
|
||||||
mnuSelRunnable: TMenuItem;
|
mnuSelRunnable: TMenuItem;
|
||||||
Panel1: TPanel;
|
Panel1: TPanel;
|
||||||
|
@ -324,6 +330,7 @@ type
|
||||||
btnSendCom: TSpeedButton;
|
btnSendCom: TSpeedButton;
|
||||||
cpuVIewer: TTIPropertyGrid;
|
cpuVIewer: TTIPropertyGrid;
|
||||||
mnuProjRunnable: TPopupMenu;
|
mnuProjRunnable: TPopupMenu;
|
||||||
|
mnuWatch: TPopupMenu;
|
||||||
Splitter2: TSplitter;
|
Splitter2: TSplitter;
|
||||||
Splitter3: TSplitter;
|
Splitter3: TSplitter;
|
||||||
Splitter4: TSplitter;
|
Splitter4: TSplitter;
|
||||||
|
@ -338,15 +345,20 @@ type
|
||||||
procedure btnStackClick(Sender: TObject);
|
procedure btnStackClick(Sender: TObject);
|
||||||
procedure btnStartClick(Sender: TObject);
|
procedure btnStartClick(Sender: TObject);
|
||||||
procedure btnStopClick(Sender: TObject);
|
procedure btnStopClick(Sender: TObject);
|
||||||
|
procedure btnWatchClick(Sender: TObject);
|
||||||
procedure Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
|
procedure mnuReadWClick(Sender: TObject);
|
||||||
|
procedure mnuReadWriteWClick(Sender: TObject);
|
||||||
procedure mnuSelProjClick(Sender: TObject);
|
procedure mnuSelProjClick(Sender: TObject);
|
||||||
procedure mnuSelRunnableClick(Sender: TObject);
|
procedure mnuSelRunnableClick(Sender: TObject);
|
||||||
|
procedure mnuWriteWClick(Sender: TObject);
|
||||||
protected
|
protected
|
||||||
procedure setToolBarFlat(value: boolean); override;
|
procedure setToolBarFlat(value: boolean); override;
|
||||||
procedure updateLoop; override;
|
procedure updateLoop; override;
|
||||||
private
|
private
|
||||||
fExe: string;
|
fExe: string;
|
||||||
fOutputName: string;
|
fOutputName: string;
|
||||||
|
fShowFromCustomCommand: boolean;
|
||||||
fUpdateMenu: boolean;
|
fUpdateMenu: boolean;
|
||||||
fGdbState: TGdbState;
|
fGdbState: TGdbState;
|
||||||
fSubj: TCEDebugObserverSubject;
|
fSubj: TCEDebugObserverSubject;
|
||||||
|
@ -364,6 +376,7 @@ type
|
||||||
fStackItems: TStackItems;
|
fStackItems: TStackItems;
|
||||||
fCatchPause: boolean;
|
fCatchPause: boolean;
|
||||||
fOptions: TCEDebugOptions;
|
fOptions: TCEDebugOptions;
|
||||||
|
fAddWatchPointKind: TAddWatchPointKind;
|
||||||
//
|
//
|
||||||
procedure optionsChangesApplied(sender: TObject);
|
procedure optionsChangesApplied(sender: TObject);
|
||||||
procedure menuDeclare(item: TMenuItem);
|
procedure menuDeclare(item: TMenuItem);
|
||||||
|
@ -843,6 +856,7 @@ begin
|
||||||
fOptions:= TCEDebugOptions.create(self);
|
fOptions:= TCEDebugOptions.create(self);
|
||||||
fOptions.onChangesApplied:=@optionsChangesApplied;
|
fOptions.onChangesApplied:=@optionsChangesApplied;
|
||||||
Edit1.Items.Assign(fOptions.commandsHistory);
|
Edit1.Items.Assign(fOptions.commandsHistory);
|
||||||
|
fAddWatchPointKind := wpkWrite;
|
||||||
//
|
//
|
||||||
AssignPng(btnSendCom, 'ACCEPT');
|
AssignPng(btnSendCom, 'ACCEPT');
|
||||||
setState(gsNone);
|
setState(gsNone);
|
||||||
|
@ -1215,6 +1229,13 @@ begin
|
||||||
mnuSelProj.Checked:=false;
|
mnuSelProj.Checked:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEGdbWidget.mnuWriteWClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
fAddWatchPointKind := wpkWrite;
|
||||||
|
mnuReadW.Checked:=false;
|
||||||
|
mnuReadWriteW.Checked:=false;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEGdbWidget.disableEditor;
|
procedure TCEGdbWidget.disableEditor;
|
||||||
begin
|
begin
|
||||||
cpuVIewer.ItemIndex:=-1;
|
cpuVIewer.ItemIndex:=-1;
|
||||||
|
@ -1547,11 +1568,27 @@ begin
|
||||||
begin
|
begin
|
||||||
reason := val.AsString;
|
reason := val.AsString;
|
||||||
|
|
||||||
if (reason = 'breakpoint-hit') or (reason = 'end-stepping-range') then
|
if (reason = 'breakpoint-hit') or (reason = 'end-stepping-range') or
|
||||||
|
(reason = 'watchpoint-trigger') then
|
||||||
begin
|
begin
|
||||||
case reason of
|
case reason of
|
||||||
'breakpoint-hit': brkreason := dbBreakPoint;
|
'breakpoint-hit': brkreason := dbBreakPoint;
|
||||||
'end-stepping-range': brkreason := dbStep;
|
'end-stepping-range': brkreason := dbStep;
|
||||||
|
'watchpoint-trigger': brkreason:= dbWatch;
|
||||||
|
end;
|
||||||
|
if brkreason = dbWatch then
|
||||||
|
begin
|
||||||
|
obj := TJSONObject(fJson.Find('wpt'));
|
||||||
|
if obj.isNotNil and (obj.JSONType = jtObject) then
|
||||||
|
begin
|
||||||
|
val := obj.Find('exp');
|
||||||
|
if val.isNotNil then
|
||||||
|
begin
|
||||||
|
ValueListEditor1.FindRow(val.AsString, i);
|
||||||
|
if i <> -1 then
|
||||||
|
ValueListEditor1.Row:=i;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
obj := TJSONObject(fJson.Find('frame'));
|
obj := TJSONObject(fJson.Find('frame'));
|
||||||
if obj.isNotNil and (obj.JSONType = jtObject) then
|
if obj.isNotNil and (obj.JSONType = jtObject) then
|
||||||
|
@ -1569,9 +1606,15 @@ begin
|
||||||
readOutput;
|
readOutput;
|
||||||
subjDebugBreak(fSubj, fullname, line, brkreason);
|
subjDebugBreak(fSubj, fullname, line, brkreason);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
else if reason = 'watchpoint-scope' then
|
||||||
|
begin
|
||||||
|
gdbCommand('continue', @gdboutJsonize);
|
||||||
|
end
|
||||||
|
|
||||||
|
// *stopped,reason="watchpoint-trigger",wpt={number="10",exp="h"},value={old="0",new="1"},frame={addr="0x000000000049fb7c",func="D main",args=[{name="args",value="..."}],file="/home/basile/Dev/dproj/Resource.d/src/resource.d",fullname="/home/basile/Dev/dproj/Resource.d/src/resource.d",line="47"},thread-id="1",stopped-threads="all",core="1"
|
||||||
|
|
||||||
else if reason = 'signal-received' then
|
else if reason = 'signal-received' then
|
||||||
begin
|
begin
|
||||||
signame := 'unknown signal';
|
signame := 'unknown signal';
|
||||||
|
@ -1731,6 +1774,7 @@ begin
|
||||||
val := fJson.Find('variables');
|
val := fJson.Find('variables');
|
||||||
if val.isNotNil and (val.JSONType = jtArray) then
|
if val.isNotNil and (val.JSONType = jtArray) then
|
||||||
begin
|
begin
|
||||||
|
i := ValueListEditor1.Row;
|
||||||
ValueListEditor1.Clear;
|
ValueListEditor1.Clear;
|
||||||
arr := TJSONArray(val);
|
arr := TJSONArray(val);
|
||||||
for i := 0 to arr.Count-1 do
|
for i := 0 to arr.Count-1 do
|
||||||
|
@ -1748,10 +1792,13 @@ begin
|
||||||
continue;
|
continue;
|
||||||
ValueListEditor1.InsertRow(nme, val.AsString, false);
|
ValueListEditor1.InsertRow(nme, val.AsString, false);
|
||||||
end;
|
end;
|
||||||
|
if (i <> -1) and (i <= ValueListEditor1.RowCount) then
|
||||||
|
ValueListEditor1.Row:=i;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if fOptions.showGdbOutput then
|
if fOptions.showGdbOutput or fShowFromCustomCommand then
|
||||||
begin
|
begin
|
||||||
|
fShowFromCustomCommand := false;
|
||||||
arr := TJSONArray(fJson.Find('CLI'));
|
arr := TJSONArray(fJson.Find('CLI'));
|
||||||
if arr.isNotNil then
|
if arr.isNotNil then
|
||||||
for i := 0 to arr.Count-1 do
|
for i := 0 to arr.Count-1 do
|
||||||
|
@ -1770,8 +1817,8 @@ begin
|
||||||
|
|
||||||
fLog.Clear;
|
fLog.Clear;
|
||||||
fGdb.getFullLines(fLog);
|
fGdb.getFullLines(fLog);
|
||||||
//for str in fLog do
|
for str in fLog do
|
||||||
// fMsg.message(str, nil, amcMisc, amkAuto);
|
fMsg.message(str, nil, amcMisc, amkAuto);
|
||||||
|
|
||||||
if flog.Text.isEmpty then
|
if flog.Text.isEmpty then
|
||||||
exit;
|
exit;
|
||||||
|
@ -1916,6 +1963,19 @@ begin
|
||||||
setState(gsNone);
|
setState(gsNone);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEGdbWidget.btnWatchClick(Sender: TObject);
|
||||||
|
const
|
||||||
|
cmd: array[TAddWatchPointKind] of string = (
|
||||||
|
'-break-watch -r ','-break-watch ','-break-watch -a ');
|
||||||
|
var
|
||||||
|
nme: string;
|
||||||
|
begin
|
||||||
|
if ValueListEditor1.Row = -1 then
|
||||||
|
exit;
|
||||||
|
nme := ValueListEditor1.Keys[ValueListEditor1.Row];
|
||||||
|
gdbCommand(cmd[fAddWatchPointKind] + nme);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEGdbWidget.btnSendComClick(Sender: TObject);
|
procedure TCEGdbWidget.btnSendComClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
sendCustomCommand;
|
sendCustomCommand;
|
||||||
|
@ -1927,6 +1987,20 @@ begin
|
||||||
sendCustomCommand;
|
sendCustomCommand;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEGdbWidget.mnuReadWClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
fAddWatchPointKind := wpkRead;
|
||||||
|
mnuWriteW.Checked:=false;
|
||||||
|
mnuReadWriteW.Checked:=false;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEGdbWidget.mnuReadWriteWClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
fAddWatchPointKind := wpkReadWrite;
|
||||||
|
mnuReadW.Checked:=false;
|
||||||
|
mnuWriteW.Checked:=false;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEGdbWidget.sendCustomCommand;
|
procedure TCEGdbWidget.sendCustomCommand;
|
||||||
var
|
var
|
||||||
cmd: string;
|
cmd: string;
|
||||||
|
@ -1934,6 +2008,7 @@ begin
|
||||||
cmd := edit1.Text;
|
cmd := edit1.Text;
|
||||||
if cmd.isBlank or cmd.isEmpty then
|
if cmd.isBlank or cmd.isEmpty then
|
||||||
exit;
|
exit;
|
||||||
|
fShowFromCustomCommand := true;
|
||||||
gdbCommand(cmd, @gdboutJsonize);
|
gdbCommand(cmd, @gdboutJsonize);
|
||||||
if edit1.Items.IndexOf(cmd) = -1 then
|
if edit1.Items.IndexOf(cmd) = -1 then
|
||||||
edit1.Items.Add(cmd);
|
edit1.Items.Add(cmd);
|
||||||
|
|
|
@ -9,6 +9,7 @@ uses
|
||||||
SynEdit, SynPluginSyncroEdit, SynCompletion, SynEditKeyCmds, LazSynEditText,
|
SynEdit, SynPluginSyncroEdit, SynCompletion, SynEditKeyCmds, LazSynEditText,
|
||||||
SynHighlighterLFM, SynEditHighlighter, SynEditMouseCmds, SynEditFoldedView,
|
SynHighlighterLFM, SynEditHighlighter, SynEditMouseCmds, SynEditFoldedView,
|
||||||
SynEditMarks, SynEditTypes, SynHighlighterJScript, SynBeautifier, dialogs,
|
SynEditMarks, SynEditTypes, SynHighlighterJScript, SynBeautifier, dialogs,
|
||||||
|
//SynEditMarkupFoldColoring,
|
||||||
fpjson, jsonparser, LazUTF8, LazUTF8Classes, Buttons, StdCtrls,
|
fpjson, jsonparser, LazUTF8, LazUTF8Classes, Buttons, StdCtrls,
|
||||||
ce_common, ce_writableComponent, ce_d2syn, ce_txtsyn, ce_dialogs,
|
ce_common, ce_writableComponent, ce_d2syn, ce_txtsyn, ce_dialogs,
|
||||||
ce_sharedres, ce_dlang, ce_stringrange, ce_dbgitf, ce_observer;
|
ce_sharedres, ce_dlang, ce_stringrange, ce_dbgitf, ce_observer;
|
||||||
|
@ -122,11 +123,15 @@ type
|
||||||
giBulletBlack = 2,
|
giBulletBlack = 2,
|
||||||
giBreak = 3, // break point reached
|
giBreak = 3, // break point reached
|
||||||
giStep = 4, // step / signal / pause
|
giStep = 4, // step / signal / pause
|
||||||
|
giWatch = 5, // watch point reached
|
||||||
giNone = high(byte) // remove
|
giNone = high(byte) // remove
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//TODO-cGDB: add a system allowing to define watch points
|
||||||
|
|
||||||
TCESynMemo = class(TSynEdit, ICEDebugObserver)
|
TCESynMemo = class(TSynEdit, ICEDebugObserver)
|
||||||
private
|
private
|
||||||
|
//fIndentGuideMarkup: TSynEditMarkupFoldColors;
|
||||||
fFilename: string;
|
fFilename: string;
|
||||||
fDastWorxExename: string;
|
fDastWorxExename: string;
|
||||||
fModified: boolean;
|
fModified: boolean;
|
||||||
|
@ -741,6 +746,7 @@ begin
|
||||||
fImages.AddResourceName(HINSTANCE, 'BULLET_BLACK');
|
fImages.AddResourceName(HINSTANCE, 'BULLET_BLACK');
|
||||||
fImages.AddResourceName(HINSTANCE, 'BREAKS');
|
fImages.AddResourceName(HINSTANCE, 'BREAKS');
|
||||||
fImages.AddResourceName(HINSTANCE, 'STEP');
|
fImages.AddResourceName(HINSTANCE, 'STEP');
|
||||||
|
fImages.AddResourceName(HINSTANCE, 'CAMERA_GO');
|
||||||
fBreakPoints := TFPList.Create;
|
fBreakPoints := TFPList.Create;
|
||||||
//
|
//
|
||||||
fPositions := TCESynMemoPositions.create(self);
|
fPositions := TCESynMemoPositions.create(self);
|
||||||
|
@ -754,6 +760,9 @@ begin
|
||||||
LineHighlightColor.Background := color - $080808;
|
LineHighlightColor.Background := color - $080808;
|
||||||
LineHighlightColor.Foreground := clNone;
|
LineHighlightColor.Foreground := clNone;
|
||||||
//
|
//
|
||||||
|
//fIndentGuideMarkup:= TSynEditMarkupFoldColors.Create(self);
|
||||||
|
//MarkupManager.AddMarkUp(fIndentGuideMarkup);
|
||||||
|
//
|
||||||
fAutoCloseCurlyBrace:= autoCloseOnNewLineLexically;
|
fAutoCloseCurlyBrace:= autoCloseOnNewLineLexically;
|
||||||
fAutoClosedPairs:= [autoCloseSquareBracket];
|
fAutoClosedPairs:= [autoCloseSquareBracket];
|
||||||
//
|
//
|
||||||
|
@ -769,6 +778,7 @@ destructor TCESynMemo.destroy;
|
||||||
begin
|
begin
|
||||||
saveCache;
|
saveCache;
|
||||||
//
|
//
|
||||||
|
//fIndentGuideMarkup.Free;
|
||||||
EntitiesConnector.removeObserver(self);
|
EntitiesConnector.removeObserver(self);
|
||||||
subjDocClosing(TCEMultiDocSubject(fMultiDocSubject), self);
|
subjDocClosing(TCEMultiDocSubject(fMultiDocSubject), self);
|
||||||
fMultiDocSubject.Free;
|
fMultiDocSubject.Free;
|
||||||
|
@ -2603,6 +2613,7 @@ begin
|
||||||
case reason of
|
case reason of
|
||||||
dbBreakPoint: setGutterIcon(line, giBreak);
|
dbBreakPoint: setGutterIcon(line, giBreak);
|
||||||
dbStep, dbSignal: setGutterIcon(line, giStep);
|
dbStep, dbSignal: setGutterIcon(line, giStep);
|
||||||
|
dbWatch: setGutterIcon(line, giWatch);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{$ENDREGION --------------------------------------------------------------------}
|
{$ENDREGION --------------------------------------------------------------------}
|
||||||
|
|
Loading…
Reference in New Issue