Eclipse PDE: пользовательский QuickFix доступен только в представлении проблем? - PullRequest
3 голосов
/ 15 января 2012

У меня проблемы с пользовательскими быстрыми исправлениями, которые я хочу предоставить в своем плагине Eclipse, и я надеюсь, что у кого-то более опытного, чем я, в Eclipse PDE, будут какие-то подсказки для меня по этому вопросу.

Как я понял, я могу предоставить пользовательские так называемые "быстрые исправления" (или "разрешения" в Eclipse внутри терминологии), расширяя точку расширения org.eclipse.ui.ide.markerResolution для определенного идентификатора маркера, такого как, например, некоторый маркер Eclipse по умолчанию, org.eclipse.core.resources.problemmarker .

Это работает для меня для типов маркеров по умолчанию и для пользовательских типов маркеров, НО : Быстрые исправления, которые предоставляет мой IMarkerResolutionGenerator , доступны только из представления «Проблемы», но не из редактора, в котором отображаются мои маркеры.

Что у меня есть : я создаю маркеры в текстовом редакторе по умолчанию, в результате чего (1) значок с сообщением всплывающей подсказки маркеров отображается на левой линейке редактора в строке, которой является маркер (2) маркер в правой части редактора, (3) некоторые подчеркнутые символы в редакторе и (4) запись в представлении «Проблемы».

Что я хочу : Точно так же, как в поддержке Java IDE, я хочу нажать Strg + 1 или Context-Menu-> Quick Fix, или щелкнуть по значку ошибки на левой стороне- линейка, чтобы увидеть доступные быстрые исправления и выбрать один.

Однако : только в окне «Просмотр проблем» я могу получить быстрые исправления, нажав Strg + 1 или из контекстного меню.

Это нормальное поведение, и мне нужно обращаться к другой точке расширения или к определенным функциям редакторов, чтобы подключить к ним мои быстрые исправления? Я не нашел ничего подробного об этом, кроме того, что все, кажется, очень довольны этой единственной точкой расширения, о которой я упоминал выше. Чего мне не хватает?

Для завершения вот мое определение точки расширения:

<extension point="org.eclipse.ui.ide.markerResolution">
    <markerResolutionGenerator
        class="com.markers.test.MarkerResolutionGenerator"
        markerType="org.eclipse.core.resources.problemmarker">
    </markerResolutionGenerator>
</extension>

Ответы [ 2 ]

2 голосов
/ 23 января 2012

У меня та же проблема, и я не уверен, что это правильный путь, но, по крайней мере, он работает:

Если вы хотите увидеть свои быстрые исправления в средстве просмотра исходного кода, вы должны установить для него QuickAssistAssistant. В вашем классе реализуется SourceViewerConfiguration override 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.

0 голосов
/ 20 августа 2012

Если вы просто добавите одну строку к точке расширения маркера:

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

и добавьте атрибуты к маркеру marker.setAttribute (IMarker.CHAR_START, ...); marker.setAttribute (IMarker.CHAR_END, ...);

Вы сможете получить это:

displayed quick fix as text hover

Но я все еще не могу найти, как изменить значок маркера (на вариант с лампочкой), чтобы показать возможность быстрого исправления даже после нажатия на значок аннотации.

...