void RefreshMarkers() { TypeReferencesResult res=null; try { var ParseCache = DResolverWrapper.CreateCacheList(Document); res = TypeReferenceFinder.Scan(SyntaxTree, ParseCache); RemoveMarkers(false); var txtDoc = Document.Editor.Document; DocumentLine curLine=null; int ln=-1; int len = 0; foreach (var id in res.TypeMatches) { var loc = DeepASTVisitor.ExtractIdLocation(id, out len); if(ln!=loc.Line) curLine = Document.Editor.GetLine(ln = loc.Line); var segment = new TextSegment(curLine.Offset,len); var m = new UnderlineTextSegmentMarker("keyword.semantic.type", loc.Column, TypeReferenceFinder.ExtractId(id)); txtDoc.AddMarker(m); markers.Add(m); } } catch { } }
void HandleMotionNotifyEvent (object sender, MotionNotifyEventArgs args) { var document = IdeApp.Workbench.ActiveDocument; if (IdeApp.Workspace == null) return; if (document == null) return; if (document.ParsedDocument == null) return; try { if (_marker != null) { RemoveMarker (document.Editor.Document); } if ((args.Event.State & ModifierType.ControlMask) == ModifierType.ControlMask) { DocumentLocation location = document.Editor.Parent.PointToLocation(args.Event.X - document.Editor.Parent.TextViewMargin.XOffset, args.Event.Y); int offset = document.Editor.LocationToOffset(location); int start = document.Editor.FindCurrentWordStart(offset); int end = document.Editor.FindCurrentWordEnd(offset); if (end - start <= 0) return; _marker = new UnderlineTextSegmentMarker(document.Editor.ColorStyle.KeywordNamespace.Foreground, new TextSegment(start, end - start)); _marker.Wave = false; _marker.IsVisible = true; document.Editor.Document.AddMarker(_marker); document.Editor.Parent.QueueDraw(); } } catch (Exception exception) { LoggingService.LogError(exception.ToString()); } }
private void RemoveMarker() { if (this.marker != null) { this.markedDocument.Editor.Document.RemoveMarker(marker); this.marker = null; this.markedDocument = null; } }
private void PlaceMarker(Document document, int start, int end) { this.marker = new UnderlineTextSegmentMarker(new Cairo.Color(0, 0, 0), new TextSegment(start, end - start)); this.marker.Wave = false; this.marker.IsVisible = true; this.markedDocument = document; document.Editor.Document.AddMarker(marker); document.Editor.Parent.QueueDraw(); }
private void SetMarker(UnderlineTextSegmentMarker newMarker) { var oldMarker = marker; marker = newMarker; if (textDocument == null) return; if (oldMarker != null) textDocument.RemoveMarker(oldMarker); if (newMarker != null) textDocument.AddMarker(newMarker); }
void RemoveMarker(TextDocument textDocument) { try { textDocument.RemoveMarker(_marker); } catch { // nothing to do } finally { _marker = null; } }