MonoDevelop 插件如何在文本编辑器中突出显示一行?

How can a MonoDevelop addin highlight a line in a text editor?

我正在开发主要在源代码编辑器上运行的 MonoDevelop 插件。现在我想根据行的内容突出显示具有背景颜色的特定行。

到目前为止,我看到两种方法,但似乎都不起作用:第一种是使用 MonoDevelop 绘制线条背景的标准方式,它基于错误或警告,通过创建 Task 并添加它到 TaskService.Errors - 但在这里我无法定义自定义颜色,我只想给出视觉指示,而不是指示问题。

第二个基于 Mono.TextEditor highlight line 的答案,它提供了一些有价值的提示,但要求我手头有一个 Mono.TextEditor 的实例。我已经使用了 MonoDevelop.Ide.IdeApp.Workbench.ActiveDocument,但这是 MonoDevelop.Ide.Gui.Document 的一个实例,我不知道如何从中获取 Mono.TextEditor.TextDocument

有没有人看到无需定义自定义编辑器即可实现此目的的方法?

你没有说你是如何得到 MonoDevelop.Ide.Gui.Document 所以我猜你正在做类似的事情:

MonoDevelop.Ide.Gui.Document doc = MonoDevelop.Ide.IdeApp.Workbench.ActiveDocument;

您可以使用类似的代码访问 TextEditor 和 TextEditorDocument:

var view = MonoDevelop.Ide.IdeApp.Workbench.ActiveDocument.Window.ActiveViewContent as MonoDevelop.SourceEditor.SourceEditorView;
var textEditor = view.TextEditor;
var textEditorDoc = view.Document;

您需要引用 MonoDevelop.SourceEditor 插件才能使用 SourceEditorView。