2012-01-15 71 views
3

我在自定义快速修复程序方面遇到了问题,我想在Eclipse插件中提供这些修复程序,我希望Eclipse PDE中比我更有经验的人在此问题上为我提供一些提示。Eclipse PDE:自定义QuickFix仅在问题视图中可用?

正如我所理解的,我可以提供自定义所谓的“快速修复”(或“拆分”,在内部术语Eclipse中),通过延伸的延伸点org.eclipse.ui.ide.markerResolution用于特定的标记ID,例如某些默认的Eclipse标记,org.eclipse.core.resources.problemmarker

这对我的作品的默认标记类型和自定义标记类型,: 的快速修复,这我IMarkerResolutionGenerator提供,是从“问题” - 视图,而不是从编辑器才能访问,我的标记显示出来。

我有什么:我在默认的文本编辑器中创建标记,这会导致(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> 
+0

我忘了提及最重要的一点:我目前正在使用Eclipse Indigo SR1,一个干净的RCP和RAP发行版。 – Janos 2012-01-15 03:03:21

回答

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的代码,这是一个有点乱,但你会得到它。并看看这个代码hereICompletionProposal的一个示例实现,你将不得不返回你的QuickAssistProcessor

+0

非常感谢你,这肯定会让我走向正确的方向!就目前而言:它似乎是用**自定义的'SourceViewerConfiguration' **来丰富**自定义编辑器**。是否也可以使用自定义的“SourceViewerConfiguration”来提供_existing editor_(如es文本编辑器,XML编辑器)? – Janos 2012-01-24 15:57:08

+0

只需扩展'org.eclipse.ui.editors.text.TextEditor'并使用'setSourceViewerConfiguration(new MySourceViewerConfiguration(new ColorManager()));'设置您的自定义'SourceViewerConfiguration'。 但我不知道现有的XML编辑器,也许这个链接可以帮助你:http://vzurczak.wordpress.com/2010/09/25/merge-compare-dialogs-and-xml-syntax-highlighting/ – 2012-01-25 08:20:48

0

如果你只是一个行添加到标记扩展点:

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

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

,您将能够得到这样的:

displayed quick fix as text hover

但我仍然无法找到如何标记图标变化(与灯泡变体)一个节目可能速战速决也点击注释图标后。

+0

我可以通过注释获取灯泡图标,但无法获得如截图所示的quickfix。 你能帮我吗? – Shalin 2015-03-13 10:00:22

+0

@shalin你可能想创建自己的问题并提供更多关于你的实现的信息。 – 2015-06-17 08:51:46