public void Init() { ServiceContainer container = new ServiceContainer(); markerService = new MockTextMarkerService(); container.AddService(typeof(ITextMarkerService), markerService); // Add xpath marker to document. AvalonEditDocumentAdapter doc = new AvalonEditDocumentAdapter(new ICSharpCode.AvalonEdit.Document.TextDocument(), container); doc.Text = "<Test/>"; XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc); XPathNodeMatch nodeMatch = new XPathNodeMatch("Test", "<Test/>", 0, 1, XPathNodeType.Element); xpathNodeMarker.AddMarker(nodeMatch); // Add non text editor provider view to workbench. workbench = new MockWorkbench(); nonTextEditorProviderView = new MockViewContent(); workbench.ViewContentCollection.Add(nonTextEditorProviderView); // Add document to view content. textEditorView = new MockTextEditorProviderViewContent(); textEditorView.MockTextEditor.SetDocument(doc); workbench.ViewContentCollection.Add(textEditorView); command = new RemoveXPathHighlightingCommand(workbench); }
public EditorView(ITextMarkerService textMarkerService) { _textMarkerService = textMarkerService; InitializeComponent(); ErrorsRow.Height = new GridLength(0); var rowStyle = new Style(typeof(DataGridRow), (Style)FindResource("MetroDataGridRow")); rowStyle.Setters.Add(new EventSetter(MouseDoubleClickEvent, new MouseButtonEventHandler(OnErrorsGridMouseDoubleClick))); ErrorsGrid.RowStyle = rowStyle; _foldingManager = FoldingManager.Install(TextEditor.TextArea); _foldingStrategy = new XmlFoldingStrategy(); TextEditor.TextChanged += (sender, args) => { _foldingStrategy.UpdateFoldings(_foldingManager, TextEditor.Document); }; _textMarkerService.SetTextEditor(TextEditor); var textView = TextEditor.TextArea.TextView; textView.BackgroundRenderers.Add(_textMarkerService); textView.LineTransformers.Add(_textMarkerService); textView.Services.AddService(typeof(ITextMarkerService), _textMarkerService); textView.MouseHover += MouseHover; textView.MouseHoverStopped += TextEditorMouseHoverStopped; textView.VisualLinesChanged += VisualLinesChanged; }
public void NamespaceQuery() { string xml = "<?xml version='1.0'?>\r\n" + "<Xml1></Xml1>"; XPathQuery query = new XPathQuery(xml); XPathNodeMatch[] nodes = query.FindNodes("//namespace::*"); ServiceContainer container = new ServiceContainer(); container.AddService(typeof(MockTextMarkerService), new MockTextMarkerService()); AvalonEditDocumentAdapter doc = new AvalonEditDocumentAdapter(new ICSharpCode.AvalonEdit.Document.TextDocument(), container); doc.Text = xml; XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc); xpathNodeMarker.AddMarkers(nodes); ITextMarkerService service = doc.GetService(typeof(MockTextMarkerService)) as ITextMarkerService; List <ITextMarker> markers = new List <ITextMarker>(service.TextMarkers); Assert.AreEqual(0, markers.Count); Assert.AreEqual(1, nodes.Length); }
public void EmptyCommentNode() { string xml = "<!----><root/>"; XPathQuery query = new XPathQuery(xml); XPathNodeMatch[] nodes = query.FindNodes("//comment()"); ServiceContainer container = new ServiceContainer(); container.AddService(typeof(MockTextMarkerService), new MockTextMarkerService()); IDocument doc = new ICSharpCode.AvalonEdit.Document.TextDocument() { ServiceProvider = container }; doc.Text = xml; XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc); xpathNodeMarker.AddMarkers(nodes); ITextMarkerService service = doc.GetService(typeof(MockTextMarkerService)) as ITextMarkerService; List <ITextMarker> markers = new List <ITextMarker>(service.TextMarkers); Assert.AreEqual(0, markers.Count); Assert.AreEqual(1, nodes.Length); }
public void ShowExample(TextArea exampleTextArea) { string exampleText = StringParser.Parse(color.ExampleText, GetXshdProperties().ToArray()); int semanticHighlightStart = exampleText.IndexOf("#{#", StringComparison.OrdinalIgnoreCase); int semanticHighlightEnd = exampleText.IndexOf("#}#", StringComparison.OrdinalIgnoreCase); if (semanticHighlightStart > -1 && semanticHighlightEnd >= semanticHighlightStart + 3) { semanticHighlightEnd -= 3; exampleText = exampleText.Remove(semanticHighlightStart, 3).Remove(semanticHighlightEnd, 3); ITextMarkerService svc = exampleTextArea.GetService(typeof(ITextMarkerService)) as ITextMarkerService; exampleTextArea.Document.Text = exampleText; if (svc != null) { ITextMarker m = svc.Create(semanticHighlightStart, semanticHighlightEnd - semanticHighlightStart); m.Tag = (Action <IHighlightingItem, ITextMarker>)( (IHighlightingItem item, ITextMarker marker) => { marker.BackgroundColor = item.Background; marker.ForegroundColor = item.Foreground; marker.FontStyle = item.Italic ? FontStyles.Italic : FontStyles.Normal; marker.FontWeight = item.Bold ? FontWeights.Bold : FontWeights.Normal; if (item.Underline) { marker.MarkerColor = item.Foreground; marker.MarkerTypes = TextMarkerTypes.NormalUnderline; } }); } } else { exampleTextArea.Document.Text = exampleText; } }
public void SetUpTestFixture() { try { string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests"); PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests"); } catch (Exception) {} document = MockTextMarkerService.CreateDocumentWithMockService(); markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; string code = "\t\t{\r\n" + "\t\t\tint count = 0;\r\n" + "\t\t}\r\n"; document.Text = code; string xml = "<PartCoverReport>\r\n" + "\t<File id=\"1\" url=\"c:\\Projects\\Foo\\FooTestFixture.cs\"/>\r\n" + "\t<Assembly id=\"1\" name=\"Foo.Tests\" module=\"C:\\Projects\\Test\\bin\\Foo.Tests.DLL\" domain=\"test-domain-Foo.Tests.dll\" domainIdx=\"1\" />\r\n" + "\t<Type name=\"Foo.Tests.FooTestFixture\" asmref=\"1\">\r\n" + "\t\t<Method name=\"SimpleTest\">\r\n" + "\t\t\t<pt visit=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" fid=\"1\" />\r\n" + "\t\t\t<pt visit=\"1\" sl=\"2\" sc=\"4\" el=\"2\" ec=\"18\" fid=\"1\" />\r\n" + "\t\t\t<pt visit=\"0\" sl=\"3\" sc=\"3\" el=\"3\" ec=\"4\" fid=\"1\" />\r\n" + "\t\t</Method>\r\n" + "\t</Type>\r\n" + "</PartCoverReport>"; CodeCoverageResults results = new CodeCoverageResults(new StringReader(xml)); CodeCoverageMethod method = results.Modules[0].Methods[0]; CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter(); highlighter.AddMarkers(document, method.SequencePoints); // Add non-code coverage markers. markerStrategy.Create(0, 2); markerStrategy.Create(4, 5); }
public void Init() { IDocument doc = MockTextMarkerService.CreateDocumentWithMockService(); markerService = doc.GetRequiredService <ITextMarkerService>(); // Add xpath marker to document. doc.Text = "<Test/>"; XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc); XPathNodeMatch nodeMatch = new XPathNodeMatch("Test", "<Test/>", 0, 1, XPathNodeType.Element); xpathNodeMarker.AddMarker(nodeMatch); // Add non text editor provider view to workbench. workbench = MockRepository.GenerateStrictMock <IWorkbench>(); workbench.Stub(w => w.ViewContentCollection).Return(new List <IViewContent>()); nonTextEditorProviderView = new MockViewContent(); workbench.ViewContentCollection.Add(nonTextEditorProviderView); // Add document to view content. textEditorView = new MockTextEditorProviderViewContent(); textEditorView.MockTextEditor.SetDocument(doc); workbench.ViewContentCollection.Add(textEditorView); command = new RemoveXPathHighlightingCommand(workbench); }
public void Init() { try { string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests"); PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests"); } catch (Exception) {} IDocument document = MockTextMarkerService.CreateDocumentWithMockService(); ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; string xml = "<PartCoverReport>\r\n" + "\t<File id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\"/>\r\n" + "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" + "\t<Type name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\" asmref=\"1\">\r\n" + "\t\t<Method name=\"GetSchema\">\r\n" + "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"0\" sc=\"3\" el=\"0\" ec=\"4\" />\r\n" + "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"-1\" sc=\"4\" el=\"9\" ec=\"20\" />\r\n" + "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"10\" sc=\"3\" el=\"10\" ec=\"4\" />\r\n" + "\t\t</Method>\r\n" + "\t</Type>\r\n" + "</PartCoverReport>"; CodeCoverageResults results = new CodeCoverageResults(new StringReader(xml)); CodeCoverageMethod method = results.Modules[0].Methods[0]; CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter(); highlighter.AddMarkers(document, method.SequencePoints); markers = new List <ITextMarker>(); foreach (ITextMarker marker in markerStrategy.TextMarkers) { markers.Add(marker); } }
public void Init() { IDocument doc = MockTextMarkerService.CreateDocumentWithMockService(); markerService = doc.GetRequiredService<ITextMarkerService>(); // Add xpath marker to document. doc.Text = "<Test/>"; XPathNodeTextMarker xpathNodeMarker = new XPathNodeTextMarker(doc); XPathNodeMatch nodeMatch = new XPathNodeMatch("Test", "<Test/>", 0, 1, XPathNodeType.Element); xpathNodeMarker.AddMarker(nodeMatch); // Add non text editor provider view to workbench. workbench = MockRepository.GenerateStrictMock<IWorkbench>(); workbench.Stub(w => w.ViewContentCollection).Return(new List<IViewContent>()); nonTextEditorProviderView = new MockViewContent(); workbench.ViewContentCollection.Add(nonTextEditorProviderView); // Add document to view content. textEditorView = new MockTextEditorProviderViewContent(); textEditorView.MockTextEditor.SetDocument(doc); workbench.ViewContentCollection.Add(textEditorView); command = new RemoveXPathHighlightingCommand(workbench); }
/// <summary> /// <inheritdoc/> /// </summary> /// <param name="markerService"><inheritdoc/></param> /// <returns><inheritdoc/></returns> protected override ITextMarker CreateMarker(ITextMarkerService markerService) { IDocumentLine line = this.Document.GetLine(this.LineNumber); ITextMarker marker = markerService.Create(line.Offset, line.Length); marker.BackgroundColor = Color.FromRgb(162, 208, 80); marker.ForegroundColor = Colors.White; return marker; }
public IssueManager(ITextEditor editor) { this.editor = editor; this.markerService = editor.GetService(typeof(ITextMarkerService)) as ITextMarkerService; //SD.ParserService.ParserUpdateStepFinished += ParserService_ParserUpdateStepFinished; SD.ParserService.ParseInformationUpdated += new EventHandler <ParseInformationEventArgs>(SD_ParserService_ParseInformationUpdated); editor.ContextActionProviders.Add(this); }
protected override ITextMarker CreateMarker(ITextMarkerService markerService) { ITextMarker marker = null; marker.BackgroundColor = System.Windows.Media.Color.FromRgb(180, 38, 38); marker.ForegroundColor = Colors.White; return(marker); }
static bool ContainsNonCodeCoverageMarkers(ITextMarkerService markerStrategy) { foreach (ITextMarker marker in markerStrategy.TextMarkers) { if ((Type)marker.Tag != typeof(CodeCoverageHighlighter)) { return true; } } return false; }
public void Init() { document = MockTextMarkerService.CreateDocumentWithMockService(); markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; document.Text = "{\r\n" + " int count = 0;\r\n" + "}\r\n"; }
public void SetUpFixture() { try { string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests"); PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests"); } catch (Exception) {} document = MockTextMarkerService.CreateDocumentWithMockService(); string code = "\t\t{\r\n" + "\t\t\tint count = 0;\r\n" + "\t\t}\r\n"; document.Text = code; markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; string xml = "<CoverageSession xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n" + "\t<Modules>\r\n" + "\t\t<Module hash=\"44-54-B6-13-97-49-45-F8-6A-74-9E-49-0C-77-87-C6-9C-54-47-7A\">\r\n" + "\t\t\t<FullName>C:\\Projects\\Test\\Foo.Tests\\bin\\Foo.Tests.DLL</FullName>\r\n" + "\t\t\t<ModuleName>Foo.Tests</ModuleName>\r\n" + "\t\t\t<Files>\r\n" + "\t\t\t\t<File uid=\"1\" fullPath=\"c:\\Projects\\Foo\\FooTestFixture.cs\" />\r\n" + "\t\t\t</Files>\r\n" + "\t\t\t<Classes>\r\n" + "\t\t\t\t<Class>\r\n" + "\t\t\t\t\t<FullName>Foo.Tests.FooTestFixture</FullName>\r\n" + "\t\t\t\t\t<Methods>\r\n" + "\t\t\t\t\t\t<Method visited=\"true\" cyclomaticComplexity=\"1\" sequenceCoverage=\"100\" branchCoverage=\"100\" isConstructor=\"false\" isStatic=\"false\" isGetter=\"false\" isSetter=\"false\">\r\n" + "\t\t\t\t\t\t\t<MetadataToken>100663297</MetadataToken>\r\n" + "\t\t\t\t\t\t\t<Name>System.Void Foo.Tests.FooTestFixture::SimpleTest()</Name>\r\n" + "\t\t\t\t\t\t\t<FileRef uid=\"1\" />\r\n" + "\t\t\t\t\t\t\t<SequencePoints>\r\n" + "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" />\r\n" + "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"2\" sc=\"4\" el=\"2\" ec=\"18\" />\r\n" + "\t\t\t\t\t\t\t\t<SequencePoint vc=\"0\" sl=\"3\" sc=\"3\" el=\"3\" ec=\"4\" />\r\n" + "\t\t\t\t\t\t\t</SequencePoints>\r\n" + "\t\t\t\t\t\t</Method>\r\n" + "\t\t\t\t\t</Methods>\r\n" + "\t\t\t\t</Class>\r\n" + "\t\t\t</Classes>\r\n" + "\t\t</Module>\r\n" + "\t</Modules>\r\n" + "</CoverageSession>"; CodeCoverageResults results = new CodeCoverageResults(new StringReader(xml)); CodeCoverageMethod method = results.Modules[0].Methods[0]; CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter(); highlighter.AddMarkers(document, method.SequencePoints); foreach (ITextMarker marker in markerStrategy.TextMarkers) { if (markerOne == null) { markerOne = marker; } else if (markerTwo == null) { markerTwo = marker; } else if (markerThree == null) { markerThree = marker; } } }
/// <summary> /// Removes all markers from the given view content or text editor. /// </summary> public static void RemoveMarkers(IServiceProvider serviceProvider) { ITextMarkerService markerService = serviceProvider.GetService(typeof(ITextMarkerService)) as ITextMarkerService; if (markerService != null) { markerService.RemoveAll(IsXPathNodeTextMarker); } }
public ITextMarker CreateMarker(DecompilerTextView textView, ITextMarkerService markerService) { var marker = CreateMarkerInternal(markerService, textView); var cm = textView == null ? null : textView.CodeMappings; marker.ZOrder = ZOrder; marker.IsVisible = b => cm != null && cm.ContainsKey(MethodKey); marker.TextMarkerObject = this; Initialize(textView, markerService, marker); return marker; }
public ITextMarker CreateMarker(ITextEditorUIContext uiContext, ITextMarkerService markerService) { var marker = CreateMarkerInternal(markerService, uiContext); var cm = uiContext.GetCodeMappings(); marker.ZOrder = ZOrder; marker.IsVisible = b => cm.TryGetMapping(SerializedDnToken) != null; marker.TextMarkerObject = this; Initialize(uiContext, markerService, marker); return marker; }
protected override ITextMarker CreateMarker(ITextMarkerService markerService) { IDocumentLine line = this.Document.GetLine(startLine); ITextMarker marker = markerService.Create(line.Offset + startColumn - 1, Math.Max(endColumn - startColumn, 1)); marker.BackgroundColor = Colors.Yellow; marker.ForegroundColor = Colors.Blue; return(marker); }
public void RemoveMarkers() { ITextMarkerService markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; if (markerService != null) { markerService.RemoveAll(IsXPathNodeTextMarker); } }
/// <summary> /// Removes all CodeCoverageMarkers from the marker strategy. /// </summary> public void RemoveMarkers(IDocument document) { ITextMarkerService markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; if (markerService != null) { markerService.RemoveAll(IsCodeCoverageTextMarker); } }
protected override ITextMarker CreateMarker(ITextMarkerService markerService) { IDocumentLine line = this.Document.GetLine(this.LineNumber); ITextMarker marker = markerService.Create(line.Offset, line.Length); marker.BackgroundColor = Color.FromRgb(180, 38, 38); marker.ForegroundColor = Colors.White; return(marker); }
public IssueManager(ITextEditor editor) { this.editor = editor; this.markerService = editor.GetService(typeof(ITextMarkerService)) as ITextMarkerService; //SD.ParserService.ParserUpdateStepFinished += ParserService_ParserUpdateStepFinished; SD.ParserService.ParseInformationUpdated += SD_ParserService_ParseInformationUpdated; SD.ParserService.LoadSolutionProjectsThread.Finished += RerunAnalysis; IssueSeveritySettingsSaved += RerunAnalysis; // re-run analysis when settings are changed editor.ContextActionProviders.Add(this); }
public void Init() { try { //string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests"); //PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests"); } catch (Exception) {} IDocument document = MockTextMarkerService.CreateDocumentWithMockService(); ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; // Give doc 3 lines (end line seems to be counted as an extra line). document.Text = "abc\r\ndef"; string xml = "<CoverageSession xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n" + "\t<Modules>\r\n" + "\t\t<Module hash=\"44-54-B6-13-97-49-45-F8-6A-74-9E-49-0C-77-87-C6-9C-54-47-7A\">\r\n" + "\t\t\t<FullName>C:\\Projects\\Test\\Foo.Tests\\bin\\Foo.Tests.DLL</FullName>\r\n" + "\t\t\t<ModuleName>Foo.Tests</ModuleName>\r\n" + "\t\t\t<Files>\r\n" + "\t\t\t\t<File uid=\"1\" fullPath=\"c:\\Projects\\Foo\\FooTestFixture.cs\" />\r\n" + "\t\t\t</Files>\r\n" + "\t\t\t<Classes>\r\n" + "\t\t\t\t<Class>\r\n" + "\t\t\t\t\t<FullName>Foo.Tests.FooTestFixture</FullName>\r\n" + "\t\t\t\t\t<Methods>\r\n" + "\t\t\t\t\t\t<Method visited=\"true\" cyclomaticComplexity=\"1\" sequenceCoverage=\"100\" branchCoverage=\"100\" isConstructor=\"false\" isStatic=\"false\" isGetter=\"false\" isSetter=\"false\">\r\n" + "\t\t\t\t\t\t\t<MetadataToken>100663297</MetadataToken>\r\n" + "\t\t\t\t\t\t\t<Name>System.Void Foo.Tests.FooTestFixture::SimpleTest()</Name>\r\n" + "\t\t\t\t\t\t\t<FileRef uid=\"1\" />\r\n" + "\t\t\t\t\t\t\t<SequencePoints>\r\n" + "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"3\" sc=\"3\" el=\"4\" ec=\"4\" />\r\n" + "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"4\" el=\"5\" ec=\"20\" />\r\n" + "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"4\" el=\"-1\" ec=\"20\" />\r\n" + "\t\t\t\t\t\t\t\t<SequencePoint vc=\"1\" sl=\"1\" sc=\"4\" el=\"0\" ec=\"20\" />\r\n" + "\t\t\t\t\t\t\t</SequencePoints>\r\n" + "\t\t\t\t\t\t</Method>\r\n" + "\t\t\t\t\t</Methods>\r\n" + "\t\t\t\t</Class>\r\n" + "\t\t\t</Classes>\r\n" + "\t\t</Module>\r\n" + "\t</Modules>\r\n" + "</CoverageSession>"; CodeCoverageResults results = new CodeCoverageResults(new StringReader(xml)); CodeCoverageMethod method = results.Modules[0].Methods[0]; CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter(); highlighter.AddMarkers(document, method.SequencePoints); markers = new List <ITextMarker>(); foreach (ITextMarker marker in markerStrategy.TextMarkers) { markers.Add(marker); } }
public override ITextMarker CreateMarker(ITextMarkerService markerService, DecompilerTextView textView) { ITextMarker marker = CreateMarkerInternal(markerService, textView); var cm = textView == null ? null : textView.CodeMappings; marker.ZOrder = ZOrder; marker.HighlightingColor = () => IsEnabled ? HighlightingColor : DisabledHighlightingColor; marker.IsVisible = b => cm != null && b is BreakpointBookmark && cm.ContainsKey(((BreakpointBookmark)b).MethodKey); marker.Bookmark = this; return(marker); }
static bool ContainsNonCodeCoverageMarkers(ITextMarkerService markerStrategy) { foreach (ITextMarker marker in markerStrategy.TextMarkers) { if ((Type)marker.Tag != typeof(CodeCoverageHighlighter)) { return(true); } } return(false); }
public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length) { ITextMarker marker = markerService.Create(offset + startColumn - 1, length + 1); marker.BackgroundColor = Colors.Yellow; marker.ForegroundColor = Colors.Blue; marker.IsVisible = b => b is MarkerBookmark && DebugInformation.DecompiledMemberReferences != null && DebugInformation.DecompiledMemberReferences.ContainsKey(((MarkerBookmark)b).MemberReference.MetadataToken.ToInt32()); marker.Bookmark = this; this.Marker = marker; return marker; }
public ITextMarker CreateMarker(DecompilerTextView textView, ITextMarkerService markerService) { var marker = CreateMarkerInternal(markerService, textView); var cm = textView == null ? null : textView.CodeMappings; marker.ZOrder = ZOrder; marker.IsVisible = b => cm != null && cm.ContainsKey(SerializedDnSpyToken); marker.TextMarkerObject = this; Initialize(textView, markerService, marker); return(marker); }
public ITextMarker CreateMarker(ITextEditorUIContext uiContext, ITextMarkerService markerService) { var marker = CreateMarkerInternal(markerService, uiContext); var cm = uiContext.GetCodeMappings(); marker.ZOrder = ZOrder; marker.IsVisible = b => cm.TryGetMapping(SerializedDnToken) != null; marker.TextMarkerObject = this; Initialize(uiContext, markerService, marker); return(marker); }
void InitializeTextMarkerService() { var textMarkerService = new TextMarkerService(CodeEditor.Document); CodeEditor.TextArea.TextView.BackgroundRenderers.Add(textMarkerService); CodeEditor.TextArea.TextView.LineTransformers.Add(textMarkerService); var services = (IServiceContainer)CodeEditor.Document.ServiceProvider.GetService(typeof(IServiceContainer)); services?.AddService(typeof(ITextMarkerService), textMarkerService); _textMarkerService = textMarkerService; }
private void SetMarker() { RemoveMarker(); if (this.Document != null) { ITextMarkerService markerService = this.Document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; if (markerService != null) { marker = CreateMarker(markerService); } } }
public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length) { ITextMarker marker = markerService.Create(offset + startColumn - 1, length + 1); marker.BackgroundColor = Colors.Yellow; marker.ForegroundColor = Colors.Blue; marker.IsVisible = b => b is MarkerBookmark && DebugInformation.CodeMappings != null && DebugInformation.CodeMappings.ContainsKey(((MarkerBookmark)b).MemberReference.MDToken.ToInt32()); marker.Bookmark = this; this.Marker = marker; return(marker); }
public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length) { ITextMarker marker = markerService.Create(offset, length); marker.BackgroundColor = Color.FromRgb(180, 38, 38); marker.ForegroundColor = Colors.White; marker.IsVisible = b => b is BreakpointBookmark && DebugInformation.CodeMappings != null && DebugInformation.CodeMappings.ContainsKey(((BreakpointBookmark)b).FunctionToken); marker.Bookmark = this; this.Marker = marker; return(marker); }
public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length) { ITextMarker marker = markerService.Create(offset, length); marker.BackgroundColor = Color.FromRgb(180, 38, 38); marker.ForegroundColor = Colors.White; marker.IsVisible = b => b is MarkerBookmark && DebugInformation.DecompiledMemberReferences != null && DebugInformation.DecompiledMemberReferences.ContainsKey(((MarkerBookmark)b).MemberReference.MetadataToken.ToInt32()); marker.Bookmark = this; this.Marker = marker; return(marker); }
private void InitializeTextMarkerService(TextEditor textEditor) { var textMarkerService = new TextMarkerService(textEditor.Document); textEditor.TextArea.TextView.BackgroundRenderers.Add(textMarkerService); textEditor.TextArea.TextView.LineTransformers.Add(textMarkerService); IServiceContainer services = (IServiceContainer)textEditor.Document.ServiceProvider.GetService(typeof(IServiceContainer)); if (services != null) { services.AddService(typeof(ITextMarkerService), textMarkerService); } this.textMarkerService = textMarkerService; }
protected override void Initialize(DecompilerTextView textView, ITextMarkerService markerService, ITextMarker marker) { marker.HighlightingColor = () => { switch (type) { case StackFrameLineType.CurrentStatement: return DebuggerColors.StackFrameCurrentHighlightingColor; case StackFrameLineType.SelectedReturnStatement: return DebuggerColors.StackFrameSelectedHighlightingColor; case StackFrameLineType.ReturnStatement: return DebuggerColors.StackFrameReturnHighlightingColor; default: throw new InvalidOperationException(); } }; }
private void IniciarMarcadoDeErrores() { var textMarkerService = new TextMarkerService(Texto.Document); Texto.TextView.BackgroundRenderers.Add(textMarkerService); Texto.TextView.LineTransformers.Add(textMarkerService); IServiceContainer services = (IServiceContainer)Texto.Document.ServiceProvider.GetService(typeof(IServiceContainer)); if (services != null) { services.AddService(typeof(ITextMarkerService), textMarkerService); } this.TextMarkerService = textMarkerService; }
public void SetUpFixture() { try { string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests"); PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests"); } catch (Exception) {} IDocument document = MockTextMarkerService.CreateDocumentWithMockService(); ITextMarkerService markerStrategy = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; string code = "\t\t{\r\n" + "\t\t\tAssert.AreEqual(0, childElementCompletionData.Length, \"\" +\r\n" + "\t\t\t \"Not expecting any child elements.\");\r\n" + "\t\t}\r\n"; document.Text = code; string xml = "<PartCoverReport>\r\n" + "\t<file id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\" />\r\n" + "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" + "\t<Type asmref=\"1\" name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\">\r\n" + "\t\t<Method name=\"NoteElementHasNoChildElements\">\r\n" + "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" />\r\n" + "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"2\" sc=\"4\" el=\"3\" ec=\"57\" />\r\n" + "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"4\" sc=\"3\" el=\"4\" ec=\"4\" />\r\n" + "\t\t</Method>\r\n" + "\t</Type>\r\n" + "</PartCoverReport>"; CodeCoverageResults results = new CodeCoverageResults(new StringReader(xml)); CodeCoverageMethod method = results.Modules[0].Methods[0]; CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter(); highlighter.AddMarkers(document, method.SequencePoints); foreach (ITextMarker marker in markerStrategy.TextMarkers) { if (markerOne == null) { markerOne = marker; } else if (markerTwo == null) { markerTwo = marker; } else if (markerThree == null) { markerThree = marker; } } }
void InitializeTextMarkerService() { var textMarkerService = new TextMarkerService(_avEdit.Document); _avEdit.TextArea.TextView.BackgroundRenderers.Add(textMarkerService); _avEdit.TextArea.TextView.LineTransformers.Add(textMarkerService); var services = (IServiceContainer)_avEdit.Document.ServiceProvider.GetService(typeof(IServiceContainer)); if (services != null) { services.AddService(typeof(ITextMarkerService), textMarkerService); } _textMarkerService = textMarkerService; }
public ErrorPainter(ITextEditor textEditor) { this.textEditor = textEditor; this.markerService = this.textEditor.GetService(typeof(ITextMarkerService)) as ITextMarkerService; if (this.markerService == null) throw new InvalidOperationException("this ITextEditor has no text marker service!"); TaskService.Added += OnAdded; TaskService.Removed += OnRemoved; TaskService.Cleared += OnCleared; DebuggerService.DebugStarted += OnDebugStartedStopped; DebuggerService.DebugStopped += OnDebugStartedStopped; textEditor.Options.PropertyChanged += textEditor_Options_PropertyChanged; UpdateEnabled(); }
public ErrorPainter(ITextEditor textEditor) { instances.Add(this); this.textEditor = textEditor; this.markerService = this.textEditor.GetRequiredService<ITextMarkerService>(); TaskService.Added += OnAdded; TaskService.Removed += OnRemoved; TaskService.Cleared += OnCleared; DebuggerService.DebugStarted += OnDebugStartedStopped; DebuggerService.DebugStopped += OnDebugStartedStopped; textEditor.Options.PropertyChanged += textEditor_Options_PropertyChanged; ErrorColor = Colors.Red; WarningColor = Colors.Orange; MessageColor = Colors.Blue; UpdateEnabled(); }
void DisplayTooltip(MouseEventArgs e) { int line = GetLineFromMousePosition(e); if (line == 0) return; int startLine; bool added; string oldText = changeWatcher.GetOldVersionFromLine(line, out startLine, out added); TextEditor editor = this.TextView.Services.GetService(typeof(TextEditor)) as TextEditor; markerService = this.TextView.Services.GetService(typeof(ITextMarkerService)) as ITextMarkerService; LineChangeInfo zeroLineInfo = changeWatcher.GetChange(0); int offset, length; bool hasNewVersion = changeWatcher.GetNewVersionFromLine(line, out offset, out length); if (line == 1 && zeroLineInfo.Change == ChangeType.Deleted) { int zeroStartLine; bool zeroAdded; startLine = 1; string deletedText = changeWatcher.GetOldVersionFromLine(0, out zeroStartLine, out zeroAdded); var docLine = editor.Document.GetLineByNumber(line); string newLine = DocumentUtilitites.GetLineTerminator(changeWatcher.CurrentDocument, 1); deletedText += newLine; deletedText += editor.Document.GetText(docLine.Offset, docLine.Length); if (oldText != null) oldText = deletedText + newLine + oldText; else oldText = deletedText; if (!hasNewVersion) { offset = 0; length = docLine.Length; hasNewVersion = true; } } if (hasNewVersion) { if (marker != null) markerService.Remove(marker); if (length <= 0) { marker = null; length = 0; } else { marker = markerService.Create(offset, length); marker.BackgroundColor = Colors.LightGreen; } } if (oldText != null) { LineChangeInfo currLineInfo = changeWatcher.GetChange(startLine); if (currLineInfo.Change == ChangeType.Deleted && !(line == 1 && zeroLineInfo.Change == ChangeType.Deleted)) { var docLine = editor.Document.GetLineByNumber(startLine); if (docLine.DelimiterLength == 0) oldText = DocumentUtilitites.GetLineTerminator(changeWatcher.CurrentDocument, startLine) + oldText; oldText = editor.Document.GetText(docLine.Offset, docLine.TotalLength) + oldText; } DiffControl differ = new DiffControl(); differ.editor.SyntaxHighlighting = editor.SyntaxHighlighting; differ.editor.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden; differ.editor.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden; differ.editor.Document.Text = oldText; differ.Background = Brushes.White; if (oldText == string.Empty) { differ.editor.Visibility = Visibility.Collapsed; differ.copyButton.Visibility = Visibility.Collapsed; } else { var baseDocument = new TextDocument(DocumentUtilitites.GetTextSource(changeWatcher.BaseDocument)); if (differ.editor.SyntaxHighlighting != null) { var mainHighlighter = new DocumentHighlighter(baseDocument, differ.editor.SyntaxHighlighting.MainRuleSet); var popupHighlighter = differ.editor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter; popupHighlighter.InitialSpanStack = mainHighlighter.GetSpanStack(currLineInfo.OldStartLineNumber); } } differ.revertButton.Click += delegate { if (hasNewVersion) { Document.Replace(offset, length, oldText); tooltip.IsOpen = false; } }; tooltip.Child = new Border() { Child = differ, BorderBrush = Brushes.Black, BorderThickness = new Thickness(1) }; if (tooltip.IsOpen) tooltip.IsOpen = false; tooltip.IsOpen = true; tooltip.Closed += delegate { if (marker != null) markerService.Remove(marker); }; tooltip.HorizontalOffset = -10; tooltip.VerticalOffset = TextView.GetVisualTopByDocumentLine(startLine) - TextView.ScrollOffset.Y; tooltip.Placement = PlacementMode.Top; tooltip.PlacementTarget = this.TextView; } }
public XPathNodeTextMarker(IDocument document) { this.document = document; markerService = document.GetService(typeof(ITextMarkerService)) as ITextMarkerService; }
public abstract ITextMarker CreateMarker(ITextMarkerService markerService, DecompilerTextView textView);
protected override ITextMarker CreateMarker(ITextMarkerService markerService) { IDocumentLine line = this.Document.GetLine(startLine); ITextMarker marker = markerService.Create(line.Offset + startColumn - 1, Math.Max(endColumn - startColumn, 1)); marker.BackgroundColor = Colors.Yellow; marker.ForegroundColor = Colors.Blue; return marker; }
protected override ITextMarker CreateMarker(ITextMarkerService markerService) { IDocumentLine line = this.Document.GetLineByNumber(this.LineNumber); ITextMarker marker = markerService.Create(line.Offset, line.Length); IHighlighter highlighter = this.Document.GetService(typeof(IHighlighter)) as IHighlighter; marker.BackgroundColor = DefaultBackground; marker.ForegroundColor = DefaultForeground; marker.MarkerColor = DefaultBackground; marker.MarkerTypes = TextMarkerTypes.CircleInScrollBar; if (highlighter != null) { var color = highlighter.GetNamedColor(BreakpointMarker); if (color != null) { marker.BackgroundColor = color.Background.GetColor(null); marker.MarkerColor = color.Background.GetColor(null) ?? DefaultBackground; marker.ForegroundColor = color.Foreground.GetColor(null); } } return marker; }
protected override ITextMarker CreateMarker(ITextMarkerService markerService) { IDocumentLine line = this.Document.GetLine(startLine); ITextMarker marker = markerService.Create(line.Offset + startColumn - 1, Math.Max(endColumn - startColumn, 1)); ISyntaxHighlighter highlighter = this.Document.GetService(typeof(ISyntaxHighlighter)) as ISyntaxHighlighter; marker.BackgroundColor = DefaultBackground; marker.ForegroundColor = DefaultForeground; if (highlighter != null) { var color = highlighter.GetNamedColor(Name); if (color != null) { marker.BackgroundColor = color.Background.GetColor(null); marker.ForegroundColor = color.Foreground.GetColor(null); } } return marker; }
public override ITextMarker CreateMarker(ITextMarkerService markerService, DecompilerTextView textView) { ITextMarker marker = CreateMarkerInternal(markerService, textView); var cm = textView == null ? null : textView.CodeMappings; marker.ZOrder = ZOrder; marker.HighlightingColor = () => { switch (type) { case StackFrameStatementType.CurrentStatement: return CurrentHighlightingColor; case StackFrameStatementType.SelectedReturnStatement: return SelectedHighlightingColor; case StackFrameStatementType.ReturnStatement: return ReturnHighlightingColor; default: throw new InvalidOperationException(); } }; marker.IsVisible = b => { if (cm == null) return false; var mbm = b as MarkerBookmark; if (mbm == null) return false; var key = MethodKey.Create(mbm.MemberReference); return key != null && cm.ContainsKey(key.Value); }; marker.Bookmark = this; return marker; }
public abstract ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length);
public override ITextMarker CreateMarker(ITextMarkerService markerService, DecompilerTextView textView) { ITextMarker marker = CreateMarkerInternal(markerService, textView); var cm = textView == null ? null : textView.CodeMappings; marker.ZOrder = ZOrder; marker.HighlightingColor = () => IsEnabled ? HighlightingColor : DisabledHighlightingColor; marker.IsVisible = b => cm != null && b is BreakpointBookmark && cm.ContainsKey(((BreakpointBookmark)b).MethodKey); marker.Bookmark = this; return marker; }
protected override void OnMouseMove(MouseEventArgs e) { int line = GetLineFromMousePosition(e); if (line == 0) return; int startLine; string oldText = changeWatcher.GetOldVersionFromLine(line, out startLine); int offset, length; TextEditor editor = this.TextView.Services.GetService(typeof(TextEditor)) as TextEditor; markerService = this.TextView.Services.GetService(typeof(ITextMarkerService)) as ITextMarkerService; if (changeWatcher.GetNewVersionFromLine(line, out offset, out length)) { if (marker != null) markerService.Remove(marker); marker = markerService.Create(offset, length); marker.BackgroundColor = Colors.LightGreen; } if (oldText != null) { DiffControl differ = new DiffControl(); differ.editor.SyntaxHighlighting = editor.SyntaxHighlighting; differ.editor.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden; differ.editor.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden; differ.editor.Document.Text = oldText; differ.Background = Brushes.White; DocumentHighlighter mainHighlighter = TextView.Services.GetService(typeof(IHighlighter)) as DocumentHighlighter; DocumentHighlighter popupHighlighter = differ.editor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter; // popupHighlighter.InitialSpanStack = mainHighlighter.GetSpanStack( if (oldText == string.Empty) { differ.editor.Visibility = Visibility.Collapsed; } differ.undoButton.Click += delegate { if (marker != null) { int delimiter = 0; if (oldText == string.Empty) delimiter = Document.GetLineByOffset(offset + length).DelimiterLength; Document.Replace(offset, length + delimiter, oldText); tooltip.IsOpen = false; } }; tooltip.Child = new Border() { Child = differ, BorderBrush = Brushes.Black, BorderThickness = new Thickness(1) }; if (tooltip.IsOpen) tooltip.IsOpen = false; tooltip.IsOpen = true; tooltip.Closed += delegate { if (marker != null) markerService.Remove(marker); }; tooltip.HorizontalOffset = -10; tooltip.VerticalOffset = TextView.GetVisualTopByDocumentLine(startLine) - TextView.ScrollOffset.Y; tooltip.Placement = PlacementMode.Top; tooltip.PlacementTarget = this.TextView; } base.OnMouseMove(e); }
public override ITextMarker CreateMarker(ITextMarkerService markerService, int offset, int length) { ITextMarker marker = markerService.Create(offset, length); marker.BackgroundColor = Color.FromRgb(180, 38, 38); marker.ForegroundColor = Colors.White; marker.IsVisible = b => b is BreakpointBookmark && DebugInformation.CodeMappings != null && DebugInformation.CodeMappings.ContainsKey(((BreakpointBookmark)b).FunctionToken); marker.Bookmark = this; this.Marker = marker; return marker; }
protected override ITextMarker CreateMarker(ITextMarkerService markerService) { IDocumentLine sLine = this.Document.GetLineByNumber(startLine); IDocumentLine eLine = this.Document.GetLineByNumber(endLine); int sOffset = Math.Min(sLine.Offset + startColumn - 1, sLine.EndOffset); int eOffset = Math.Min(eLine.Offset + endColumn - 1, eLine.EndOffset); ITextMarker marker = markerService.Create(sOffset, Math.Max(eOffset - sOffset, 1)); IHighlighter highlighter = this.Document.GetService(typeof(IHighlighter)) as IHighlighter; marker.BackgroundColor = BookmarkBase.CurrentLineDefaultBackground; marker.ForegroundColor = BookmarkBase.CurrentLineDefaultForeground; if (highlighter != null) { var color = highlighter.GetNamedColor(BookmarkBase.CurrentLineBookmarkName); if (color != null) { marker.BackgroundColor = color.Background.GetColor(null); marker.ForegroundColor = color.Foreground.GetColor(null); } } return marker; }
public IssueManager(ITextEditor editor) { this.editor = editor; this.markerService = editor.GetService(typeof(ITextMarkerService)) as ITextMarkerService; //SD.ParserService.ParserUpdateStepFinished += ParserService_ParserUpdateStepFinished; SD.ParserService.ParseInformationUpdated += new EventHandler<ParseInformationEventArgs>(SD_ParserService_ParseInformationUpdated); editor.ContextActionProviders.Add(this); }
public void CreateMarker(IDocument document, ITextMarkerService markerService) { int startOffset = InspectedVersion.MoveOffsetTo(document.Version, this.StartOffset, AnchorMovementType.Default); int endOffset = InspectedVersion.MoveOffsetTo(document.Version, this.EndOffset, AnchorMovementType.Default); if (this.StartOffset != this.EndOffset && startOffset >= endOffset) return; marker = markerService.Create(startOffset, endOffset - startOffset); marker.ToolTip = this.Description; Color color = GetColor(this.Severity); color.A = 186; marker.MarkerColor = color; if (!Provider.IsRedundancy) marker.MarkerTypes = TextMarkerTypes.ScrollBarRightTriangle; switch (MarkerType) { case IssueMarker.WavedLine: marker.MarkerTypes |= TextMarkerTypes.SquigglyUnderline; break; case IssueMarker.DottedLine: marker.MarkerTypes |= TextMarkerTypes.DottedUnderline; break; case IssueMarker.GrayOut: marker.ForegroundColor = SystemColors.GrayTextColor; break; } marker.Tag = this; }
protected abstract ITextMarker CreateMarker(ITextMarkerService markerService);
protected ITextMarker CreateMarkerInternal(ITextMarkerService markerService, DecompilerTextView textView) { TextLocation location, endLocation; if (!GetLocation(textView, out location, out endLocation)) throw new InvalidOperationException(); var line = markerService.TextView.Document.GetLineByNumber(location.Line); var endLine = markerService.TextView.Document.GetLineByNumber(endLocation.Line); int startOffset = line.Offset + location.Column - 1; int endOffset = endLine.Offset + endLocation.Column - 1; return markerService.Create(startOffset, endOffset - startOffset); }
protected override void OnMouseMove(MouseEventArgs e) { int line = GetLineFromMousePosition(e); if (line == 0) return; int startLine; bool added; string oldText = changeWatcher.GetOldVersionFromLine(line, out startLine, out added); TextEditor editor = this.TextView.Services.GetService(typeof(TextEditor)) as TextEditor; markerService = this.TextView.Services.GetService(typeof(ITextMarkerService)) as ITextMarkerService; int offset, length; bool hasNewVersion = changeWatcher.GetNewVersionFromLine(line, out offset, out length); if (hasNewVersion) { if (marker != null) markerService.Remove(marker); if (length <= 0) { marker = null; length = 0; } else { marker = markerService.Create(offset, length); marker.BackgroundColor = Colors.LightGreen; } } if (oldText != null) { DiffControl differ = new DiffControl(); differ.editor.SyntaxHighlighting = editor.SyntaxHighlighting; differ.editor.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden; differ.editor.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden; differ.editor.Document.Text = oldText; differ.Background = Brushes.White; // TODO : deletions on line 0 cannot be displayed. LineChangeInfo prevLineInfo = changeWatcher.GetChange(startLine - 1); LineChangeInfo lineInfo = changeWatcher.GetChange(startLine); if (prevLineInfo.Change == ChangeType.Deleted) { var docLine = editor.Document.GetLineByNumber(startLine - 1); differ.editor.Document.Insert(0, editor.Document.GetText(docLine.Offset, docLine.TotalLength)); } if (oldText == string.Empty) { differ.editor.Visibility = Visibility.Collapsed; differ.copyButton.Visibility = Visibility.Collapsed; } else { var baseDocument = new TextDocument(changeWatcher.BaseDocument.Text); var mainHighlighter = new DocumentHighlighter(baseDocument, differ.editor.SyntaxHighlighting.MainRuleSet); var popupHighlighter = differ.editor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter; if (prevLineInfo.Change == ChangeType.Deleted) popupHighlighter.InitialSpanStack = mainHighlighter.GetSpanStack(prevLineInfo.OldStartLineNumber); else popupHighlighter.InitialSpanStack = mainHighlighter.GetSpanStack(lineInfo.OldStartLineNumber); } differ.revertButton.Click += delegate { if (hasNewVersion) { int delimiter = 0; DocumentLine l = Document.GetLineByOffset(offset + length); if (added) delimiter = l.DelimiterLength; if (length == 0) oldText += DocumentUtilitites.GetLineTerminator(new AvalonEditDocumentAdapter(Document, null), l.LineNumber); Document.Replace(offset, length + delimiter, oldText); tooltip.IsOpen = false; } }; tooltip.Child = new Border() { Child = differ, BorderBrush = Brushes.Black, BorderThickness = new Thickness(1) }; if (tooltip.IsOpen) tooltip.IsOpen = false; tooltip.IsOpen = true; tooltip.Closed += delegate { if (marker != null) markerService.Remove(marker); }; tooltip.HorizontalOffset = -10; tooltip.VerticalOffset = TextView.GetVisualTopByDocumentLine(startLine) - TextView.ScrollOffset.Y; tooltip.Placement = PlacementMode.Top; tooltip.PlacementTarget = this.TextView; } base.OnMouseMove(e); }