- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
实际上这是在 http://community.sharpdevelop.net/forums/p/21949/56153.aspx#56153 上被问到的但还没有答案 - 所以我在这里试试。
我在 WPF 4.0 应用程序中使用 Avalon Edit (ICSharpCode.AvalonEdit.dll 4.4.2)。我已经将一个文本文件(~7 MBytes)加载到编辑器中。当我应用语法突出显示然后处理(Control-A 和 Control-C)整个文本时,它需要永远(不突出显示它在一秒钟内完成)
当我进入调试器时,我得到以下调用堆栈(缩短):
System.Text.RegularExpressions.RegexInterpreter.Go()
System.Text.RegularExpressions.RegexRunner.Scan(regex, text, textbeg, textend, textstart, prevlen, quick, timeout)
System.Text.RegularExpressions.Regex.Run(quick, prevlen, input, beginning, length, startat)
System.Text.RegularExpressions.Regex.Match(input, beginning, length)
ICSharpCode.AvalonEdit.Highlighting.DocumentHighlighter.HighlightNonSpans(until)
ICSharpCode.AvalonEdit.Highlighting.DocumentHighlighter.HighlightLineInternal(line)
ICSharpCode.AvalonEdit.Highlighting.DocumentHighlighter.HighlightLineAndUpdateTreeList(line, lineNumber)
ICSharpCode.AvalonEdit.Highlighting.DocumentHighlighter.HighlightLine(lineNumber)
ICSharpCode.AvalonEdit.Highlighting.HtmlClipboard.CreateHtmlFragment(document, highlighter, segment, options)
ICSharpCode.AvalonEdit.Editing.Selection.CreateHtmlFragment(options)
ICSharpCode.AvalonEdit.Editing.Selection.CreateDataObject(textArea)
ICSharpCode.AvalonEdit.Editing.EditingCommandHandler.CopySelectedText(textArea)
ICSharpCode.AvalonEdit.Editing.EditingCommandHandler.OnCopy(target, args)
似乎编辑器为剪贴板创建了基于 html 的内容并使用了 RegularExpressions,这需要很长时间(~30 秒)。
问题:有谁知道可以禁用复制操作的语法突出显示,以便仅将纯文本复制到剪贴板。
最佳答案
我从 SharpDevelop 上的 DanielGrunwald 那里得到了我想分享的答案:在 avalonedit 4.X 中,不能禁用 html 复制到剪贴板。但在 5.X 中你可以做到这一点。
与:
AvalonEdit.TextEditor TextView
编写以下内容以注册复制前事件的回调:
DataObject.AddSettingDataHandler(TextView, onTextViewSettingDataHandler);
注册一个在处理剪贴板复制之前调用的用户处理程序。在该处理程序中取消 html 格式(例如,取决于文档大小)。示例:
static public void onTextViewSettingDataHandler(object sender, DataObjectSettingDataEventArgs e)
{
var textView = sender as TextEditor;
if (textView != null && e.Format == DataFormats.Html && textView.Text.Count() > MaxDocByteSizeForHtmlCopy)
{
e.CancelCommand();
}
}
使用该代码可以防止出现这种情况,但当然在粘贴内容(例如粘贴到 Word 中)时不会保留格式。
关于regex - AvalonEdit:复制大型突出显示的文本文件需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27206919/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!