实际上,这是在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 的内容,并使用了正则表达式,这需要永远(约 30 秒)。
问题:有谁知道禁用复制操作的语法突出显示的可能性,以便仅将纯文本复制到剪贴板。