簡體   English   中英

將鼠標懸停在自定義編輯器中的錯誤上時如何顯示快速修復

[英]How do I show quick fixes when I hover over an error in my custom editor

我已經為自己的DSL編寫了Eclipse編輯器。 打開或保存編輯器時,我檢查內容並為任何語法錯誤創建問題標記。 標記將按預期顯示在我的編輯器中,也顯示在“問題”視圖中。

我有一個擴展點org.eclipse.ui.ide.markerResolution並提供了IMarkerResolutionGenerator的實現,該實現創建了問題標記的解決方案。 這很好用; 當我在“問題”視圖中右鍵單擊一個問題時,快捷修復選項將顯示在上下文菜單中,並且工作正常。

我的編輯器擴展了SourceViewerConfiguration並且覆蓋了getQuickAssistAssistant() ,返回了QuickAssistAssistant的擴展。 這使我可以在編輯器中右鍵單擊問題,然后在菜單中查看“快速修復”選項。

當我將鼠標懸停在編輯器中的問題上時,就像在Java編輯器中一樣,我真的很想獲得快速解決方案。 目前,問題提示僅出現在工具提示中。 是否有單獨的掛鈎,還是應該用我已經實現的兩個快速修復掛鈎覆蓋?

我遇到了同樣的問題,並為自己找到了解決方案: 如何為自定義蝕編輯器實現Quick Fix / Quick Assist?

據我了解,標記顯示在問題視圖中,注釋顯示在編輯器中(在標尺和鼠標懸停時)。

我使用org.eclipse.ui.editors.annotationTypes擴展點來注冊我自己的注釋類型,並使用org.eclipse.ui.editors.markerAnnotationSpecification擴展點來指定外觀。 在我的自定義SourceViewerConfiguration類中,我重寫getAnnotationHover(...)以返回DefaultAnnotationHover對象,並getTextHover(...)以返回DefaultTextHover對象,因此注釋在我的源查看器中顯示。

要創建注釋,可以使用org.eclipse.ui.texteditor.SimpleMarkerAnnotation ,您可以構造一個SimpleMarkerAnnotation將標記對象傳遞給構造函數。 然后,您需要將注釋添加到注釋模型。 您可以使用getAnnotationModel()在你的SourceViewer ,然后addAnnotation(Annotation annotation, Position position)AnnotationModel 模型中的所有注釋將顯示在編輯器中。

您也可以使用org.eclipse.ui.texteditor.AbstractMarkerAnnotationModel作為注釋模型。 然后,您將不需要首先創建注釋對象,因為AbstractMarkerAnnotationModel提供了方法addMarkerAnnotation(IMarker marker)

看看IAnnotationModel接口

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM