diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Highlighting/HtmlClipboardTests.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Highlighting/HtmlClipboardTests.cs index 9e09cd1bb5..29d0473b12 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Highlighting/HtmlClipboardTests.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/Highlighting/HtmlClipboardTests.cs @@ -25,10 +25,9 @@ namespace ICSharpCode.AvalonEdit.Highlighting { var segment = new TextSegment { StartOffset = 0, Length = document.TextLength }; string html = HtmlClipboard.CreateHtmlFragment(document, highlighter, segment, new HtmlOptions()); - Assert.AreEqual("<span style=\"color: #008000; font-weight: bold; \">using</span> " + - "System<span style=\"color: #006400; \">.</span>Text<span style=\"color: #006400; \">;</span><br>" + Environment.NewLine + + Assert.AreEqual("<span style=\"color: #008000; font-weight: bold; \">using</span> System.Text;<br>" + Environment.NewLine + " <span style=\"color: #ff0000; \">string</span> " + - "text = <span style=\"color: #191970; font-weight: bold; \">SomeMethod</span><span style=\"color: #006400; \">();</span>", html); + "text = <span style=\"color: #191970; font-weight: bold; \">SomeMethod</span>();", html); } [Test] diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightedLine.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightedLine.cs index cbeee2028d..31c225140a 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightedLine.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HighlightedLine.cs @@ -127,12 +127,14 @@ namespace ICSharpCode.AvalonEdit.Highlighting HtmlClipboard.EscapeHtml(w, document.GetText(textOffset, newOffset - textOffset), options); } textOffset = Math.Max(textOffset, newOffset); - if (e.IsEnd) { - w.Write("</span>"); - } else { - w.Write("<span"); - options.WriteStyleAttributeForColor(w, e.Color); - w.Write('>'); + if (options.ColorNeedsSpanForStyling(e.Color)) { + if (e.IsEnd) { + w.Write("</span>"); + } else { + w.Write("<span"); + options.WriteStyleAttributeForColor(w, e.Color); + w.Write('>'); + } } } HtmlClipboard.EscapeHtml(w, document.GetText(textOffset, endOffset - textOffset), options); diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HtmlClipboard.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HtmlClipboard.cs index 387ebd9f35..43658d8e85 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HtmlClipboard.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HtmlClipboard.cs @@ -187,5 +187,15 @@ namespace ICSharpCode.AvalonEdit.Highlighting writer.Write(color.ToCss()); writer.Write("\""); } + + /// <summary> + /// Gets whether the color needs to be written out to HTML. + /// </summary> + public virtual bool ColorNeedsSpanForStyling(HighlightingColor color) + { + if (color == null) + throw new ArgumentNullException("color"); + return !string.IsNullOrEmpty(color.ToCss()); + } } }