2012-01-15 70 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