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());
			}
		}
Example #3
0
 private void RemoveMarker()
 {
     if (this.marker != null)
     {
         this.markedDocument.Editor.Document.RemoveMarker(marker);
         this.marker = null;
         this.markedDocument = null;
     }
 }
Example #4
0
 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;
			}
		}