【问题标题】:How can a MonoDevelop addin highlight a line in a text editor?MonoDevelop 插件如何在文本编辑器中突出显示一行?
【发布时间】:2015-07-09 18:44:25
【问题描述】:

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

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

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

有没有人能在不定义自定义编辑器的情况下实现这一目标?

【问题讨论】:

    标签: c# mono monodevelop add-in


    【解决方案1】:

    你没有说你是如何获得 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。

    【讨论】:

    • 谢谢!我现在可以获取 TextEditor 并添加一个标记,但是在调用 textEditor.Document.AddMarker(lineNumber, marker);textEditor.QueueDraw(); 之后,LineBackgroundMarker 和 StyleTextMarker 似乎都没有任何效果有什么想法吗?
    • 为我工作。我没有调用 QueueDraw,只是添加了线条背景标记。
    • 没关系 - 我使用 int 值搞砸了颜色定义,所以它总是显示白色背景......即使没有 QueueDraw,您的解决方案也能完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 2015-02-16
    • 2011-01-04
    • 1970-01-01
    • 2019-03-21
    • 2010-11-29
    • 1970-01-01
    相关资源
    最近更新 更多