diff --git a/IDE/src/ui/WatchPanel.bf b/IDE/src/ui/WatchPanel.bf index c9f55359..1303cec4 100644 --- a/IDE/src/ui/WatchPanel.bf +++ b/IDE/src/ui/WatchPanel.bf @@ -3324,6 +3324,8 @@ namespace IDE.ui CompactChildExpression(listViewItem, evalStr); int valStart = 0; + if ((evalStr.StartsWith("@Beef:")) || (evalStr.StartsWith("@C:"))) + valStart = evalStr.IndexOf(':') + 1; if (evalStr.StartsWith('{')) { int endPos = evalStr.IndexOf('}'); @@ -3335,6 +3337,7 @@ namespace IDE.ui evalStr.Remove(valStart, 1); else evalStr.Insert(valStart, "&"); + gApp.mBreakpointPanel.CreateMemoryBreakpoint(evalStr); gApp.MarkDirty(); }); diff --git a/IDEHelper/WinDebugger.cpp b/IDEHelper/WinDebugger.cpp index 3081d340..52486e2d 100644 --- a/IDEHelper/WinDebugger.cpp +++ b/IDEHelper/WinDebugger.cpp @@ -10672,6 +10672,38 @@ String WinDebugger::CompactChildExpression(const StringImpl& expr, const StringI if (compileUnit != NULL) language = compileUnit->mLanguage; + auto terminatedParentExpr = parentExpr + ";"; + + String parentPrefix; + + int colonIdx = terminatedParentExpr.IndexOf(':'); + if (colonIdx > 0) + { + bool isValid = true; + String lang = terminatedParentExpr.Substring(1, colonIdx - 1); + lang = ToUpper(lang); + if ((lang == "") || (lang == "BEEF")) + { + language = DbgLanguage_Beef; + } + else if (lang == "C") + { + language = DbgLanguage_C; + } + if (language != DbgLanguage_Unknown) + { + parentPrefix += terminatedParentExpr.Substring(0, colonIdx + 1); + terminatedParentExpr.Remove(0, colonIdx + 1); + } + } + + if (terminatedParentExpr.StartsWith('{')) + { + int prefixEnd = terminatedParentExpr.IndexOf('}'); + parentPrefix += terminatedParentExpr.Substring(0, prefixEnd + 1); + terminatedParentExpr.Remove(0, prefixEnd + 1); + } + BfPassInstance bfPassInstance(mBfSystem); BfParser parser(mBfSystem); @@ -10680,16 +10712,6 @@ String WinDebugger::CompactChildExpression(const StringImpl& expr, const StringI parser.SetSource(terminatedExpr.c_str(), terminatedExpr.length()); parser.Parse(&bfPassInstance); - auto terminatedParentExpr = parentExpr + ";"; - - String parentPrefix; - if (terminatedParentExpr.StartsWith('{')) - { - int prefixEnd = terminatedParentExpr.IndexOf('}'); - parentPrefix = terminatedParentExpr.Substring(0, prefixEnd + 1); - terminatedParentExpr.Remove(0, prefixEnd + 1); - } - BfParser parentParser(mBfSystem); parentParser.mCompatMode = language != DbgLanguage_Beef; parentParser.SetSource(terminatedParentExpr.c_str(), terminatedParentExpr.length());