Eclipse PDE:自定义QuickFix仅在问题视图中可用?

时间:2012-01-15 00:46:05

标签: java eclipse eclipse-pde markers

我在定制快速修复方面遇到了麻烦,我希望在我的Eclipse插件中提供这些修复程序,我希望Eclipse PDE中比我更有经验的人能够在这个问题上为我提供一些提示。< / p>

据我了解,我可以通过扩展扩展点 org.eclipse.ui.ide.markerResolution来提供自定义的所谓“快速修复”(或“解决方案”,在Eclipse内部术语中)。 em>用于特定标记id,例如某些默认Eclipse标记 org.eclipse.core.resources.problemmarker

这适用于我的默认标记类型和自定义标记类型: 我的 IMarkerResolutionGenerator 提供的QuickFix只能从“问题” - 视图中访问,而不能从我的标记显示的编辑器中访问。

我有什么:我在默认文本编辑器中创建标记,这会导致(1)带有标记工具提示消息的图标显示在该行的左侧编辑器标尺上被分配给,(2)编辑器右侧的标记,(3)编辑器中的一些带下划线的字符,以及(4)“问题”视图中的条目。

我想要什么:就像在Java IDE支持中一样,我想按Strg + 1,或上下文菜单 - >快速修复,或点击左侧的错误图标 - 侧标,查看可用的快速修复程序并选择一个。

然而:仅在问题 - 视图中我可以通过按Strg + 1或从上下文菜单中获取快速修复。

这是正常的行为,我是否必须访问另一个扩展点或特定的编辑器功能才能将我的快速修复程序挂钩到它们中?我没有找到任何有关它的详细信息,除了每个人似乎都非常满意我上面提到的这个唯一的扩展点。我错过了什么?

完成后,这是我的扩展点定义:

<extension point="org.eclipse.ui.ide.markerResolution">
    <markerResolutionGenerator
        class="com.markers.test.MarkerResolutionGenerator"
        markerType="org.eclipse.core.resources.problemmarker">
    </markerResolutionGenerator>
</extension>

2 个答案:

答案 0 :(得分:2)

我有同样的问题,我不确定,如果这是正确的方法,但至少它是有效的:

如果您想在源查看器中看到快速修复,则必须为其设置QuickAssistAssistant。在您的班级中,实施SourceViewerConfiguration覆盖getQuickAssistAssistant。您可以实例化org.eclipse.jface.text.quickassist.QuickAssistAssistant,但必须设置QuickAssistProcessor,因此请实施org.eclipse.jface.text.quickassist.IQuickAssistProcessor界面,尤其是computeQuickAssistProposals以返回快速修复提案。

public IQuickAssistAssistant getQuickAssistAssistant(ISourceViewer sourceViewer) {
  IQuickAssistAssistant quickAssist = new QuickAssistAssistant();
  quickAssist.setQuickAssistProcessor(new MyQuickAssistProcessor());
  quickAssist.setInformationControlCreator(getInformationControlCreator(sourceViewer));
  return quickAssist; 
}

另外看看上一篇文章here中的代码,它有点乱,但你会得到它。请查看此代码here,了解ICompletionProposal的示例实现,您必须在QuickAssistProcessor中返回。

答案 1 :(得分:0)

如果您只是在标记扩展点添加一行:

<super type="org.eclipse.core.resources.textmarker"/>

并向标记添加属性     marker.setAttribute(IMarker.CHAR_START,...);     marker.setAttribute(IMarker.CHAR_END,...);

你将能够得到这个:

displayed quick fix as text hover

但我仍然无法找到如何更改标记图标(使用灯泡变体),点击注释图标后也可以快速修复显示。