private void AddBreakpoints(LineSegment line) { if (line != null) { TextMarker bm = new BreakpointTextMarker(editor, false); editor.Document.AddMarker(line, bm); editor.QueueDraw(); } }
//public void AddBreakpoints (LineSegment ls){ //TextMarker bm = new BreakpointTextMarker(editor, false); //editor.Document.AddMarker(ls, bm); //editor.QueueDraw(); //} public void AddBreakpoints(object obj, EventArgs args) { LineSegment line = editor.Document.GetLine(editor.Caret.Line); if (line != null) { TextMarker bm = new BreakpointTextMarker(editor, false); editor.Document.AddMarker(line, bm); editor.QueueDraw(); } }
void AddBreakpoint (Breakpoint bp) { if (DebuggingService.PinnedWatches.IsWatcherBreakpoint (bp)) return; var textEditor = widget.TextEditor; if (textEditor == null) return; var document = textEditor.Document; if (document == null) return; FilePath fp = Name; if (fp.FullPath == bp.FileName) { if (bp.Line <= 0 || bp.Line > textEditor.Document.LineCount) { LoggingService.LogWarning ("Invalid breakpoint :" + bp + " in line " + bp.Line); return; } DocumentLine line = document.GetLine (bp.Line); var status = bp.GetStatus (DebuggingService.DebuggerSession); bool tracepoint = (bp.HitAction & HitAction.Break) == HitAction.None; if (line == null) return; //TODO: 1. When not in debug mode use Microsoft.CodeAnalysis.CSharp.EditAndContinue.BreakpointSpans.TryGetBreakpointSpan //TODO: 2. When in debug mode extend Breakpoint class to have endLine and endColumn set if .mdb/.pdb has endLine/endColumn var offset = line.Offset; var lenght = line.Length; DebugMarkerPair marker; if (!bp.Enabled) { marker = new DisabledBreakpointTextMarker (textEditor, offset, lenght, tracepoint); } else if (status == BreakEventStatus.Bound || status == BreakEventStatus.Disconnected) { marker = new BreakpointTextMarker (textEditor, offset, lenght, tracepoint); } else { marker = new InvalidBreakpointTextMarker (textEditor, offset, lenght, tracepoint); } textEditor.QueueDraw (); breakpointSegments.Add (marker); marker.AddTo (document, line); } }