我在使用自定义快速修复时遇到了问题,我想在我的 Eclipse 插件中提供它,我希望在 Eclipse PDE 方面比我更有经验的人能在这个问题上给我一些提示。
据我所知,我可以通过扩展扩展点 org.eclipse.ui.ide.markerResolution 用于特定标记 ID,例如一些默认的 Eclipse 标记,org.eclipse.core.resources.problemmarker。
这适用于默认标记类型和自定义标记类型,但是: 我的 IMarkerResolutionGenerator 提供的 QuickFixes 只能从“问题” View 访问,不能从显示我的标记的编辑器访问。
我有什么:我在默认文本编辑器中创建标记,这会导致 (1) 带有标记工具提示消息的图标显示在该行的左侧编辑器标尺上,该标记被分配给,(2) 编辑器右侧的标记,(3) 编辑器中的一些带下划线的字符,以及 (4) “问题” View 中的条目。
我想要什么:就像在 Java IDE 支持中一样,我想按 Strg+1,或 Context-Menu->Quick Fix,或单击左侧的错误图标-标尺,查看可用的快速修复并选择一个。
但是:只有在问题 View 中,我才能通过按 Strg+1 或从上下文菜单中获得快速修复。
这是正常行为吗,我是否必须访问另一个扩展点或特定的编辑器功能才能将我的快速修复程序挂接到它们中?我没有找到任何关于它的详细信息,除了每个人似乎都对我上面提到的这个唯一的扩展点非常满意。我错过了什么?
为了完成,这里是我的扩展点定义:
<extension point="org.eclipse.ui.ide.markerResolution">
<markerResolutionGenerator
class="com.markers.test.MarkerResolutionGenerator"
markerType="org.eclipse.core.resources.problemmarker">
</markerResolutionGenerator>
</extension>
最佳答案
我有同样的问题,我不确定这是否是正确的方法,但至少它有效:
如果您想在源代码查看器中看到您的快速修复,您必须为其设置一个 QuickAssistAssistant
。在您实现 SourceViewerConfiguration
的类中覆盖 getQuickAssistAssistant
。你可以实例化org.eclipse.jface.text.quickassist.QuickAssistAssistant
,但是你必须设置一个QuickAssistProcessor
,所以实现org.eclipse.jface.text .quickassist.IQuickAssistProcessor
接口(interface),特别是 computeQuickAssistProposals
返回您的快速修复建议。
public IQuickAssistAssistant getQuickAssistAssistant(ISourceViewer sourceViewer) {
IQuickAssistAssistant quickAssist = new QuickAssistAssistant();
quickAssist.setQuickAssistProcessor(new MyQuickAssistProcessor());
quickAssist.setInformationControlCreator(getInformationControlCreator(sourceViewer));
return quickAssist;
}
另请查看上一篇文章中的代码 here ,它有点乱,但你会明白的。看看这段代码 here对于 ICompletionProposal
的示例实现,您必须在 QuickAssistProcessor
中返回它。
关于java - eclipse PDE : Custom QuickFix only available in Problems View?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866688/