[英]Eclipse PDE: Custom QuickFix only available in Problems View?
我在自定义快速修复方面遇到了麻烦,我希望在我的Eclipse插件中提供,我希望Eclipse PDE中比我更有经验的人在这个问题上给我一些提示。
据我了解,我可以通过扩展特定标记id的扩展点org.eclipse.ui.ide.markerResolution来提供定制的所谓“快速修复”(或“解决方案”,在Eclipse内部术语中),例如例如一些默认的Eclipse标记org.eclipse.core.resources.problemmarker 。
这适用于我的默认标记类型和自定义标记类型, 但是 :我的IMarkerResolutionGenerator提供的QuickFix只能从“Problems”-View访问,而不能从我的标记显示的编辑器中访问。
我拥有 :我在默认文本编辑器中创建标记,这会导致(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>
我有同样的问题,我不确定,如果这是正确的方法,但至少它的工作原理:
如果要在源查看器中查看快速修复,则必须为其设置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;
}
也可以看看在过去后的代码在这里 ,这是一个有点乱,但你会得到它。 在这里查看此代码以获取ICompletionProposal
的示例实现,您必须在QuickAssistProcessor
返回该实现。
如果您只是在标记扩展点添加一行:
<super type="org.eclipse.core.resources.textmarker"/>
并将属性添加到标记marker.setAttribute(IMarker.CHAR_START,...); marker.setAttribute(IMarker.CHAR_END,...);
你将能够得到这个:
但我仍然无法找到如何更改标记图标(与灯泡变体)一个节目可能快速修复也点击注释图标后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.