Eclipse RCP ContentAssistПроцессор не работает

#eclipse #rcp

#затмение #ркп

Вопрос:

Я реализовал свой собственный редактор с помощью своего собственного TextSourceViewerConfiguration . Поэтому я хочу добавить два помощника по обработке контента.

 public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {  ContentAssistant assistant = new ContentAssistant();  IContentAssistProcessor pr = new MyFirstContentAssistProcessor();  IContentAssistProcessor dr = new MySecondContentAssistProcessor();  assistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE);  assistant.setContentAssistProcessor(pr, IDocument.DEFAULT_CONTENT_TYPE);  assistant.setContentAssistProcessor(dr, IDocument.DEFAULT_CONTENT_TYPE);  return assistant;  }  

Только MyFirstContentAssistProcessor работает. Но мне нужно и то, и другое.

Когда я сделаю

 assistant.addContentAssistProcessor(dr, IDocument.DEFAULT_CONTENT_TYPE)  java.lang.UnsupportedOperationException  at java.util.AbstractCollection.add(AbstractCollection.java:262)  at org.eclipse.jface.text.contentassist.ContentAssistant.addContentAssistProcessor(ContentAssistant.java:1147)  at testingpluginproject.editors.XMLConfiguration.getContentAssistant(XMLConfiguration.java:61)  at org.eclipse.jface.text.source.SourceViewer.configure(SourceViewer.java:500)  at org.eclipse.ui.texteditor.AbstractTextEditor.createPartControl(AbstractTextEditor.java:3385)  at org.eclipse.ui.texteditor.StatusTextEditor.createPartControl(StatusTextEditor.java:64)  at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.createPartControl(AbstractDecoratedTextEditor.java:452)  at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:154)  at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:96)  at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:361)  

Комментарии:

1. Второй звонок addContentAssistProcessor не должен быть setContentAssistProcessor

2. Но когда я изменю его на assistant.addContentAssistProcessor(dr, IDocument. DEFAULT_CONTENT_TYPE); Затем я получил исключение, потому что ключ уже прощен. Когда я делаю так ssistant.addContentAssistProcessor(dr, IDocument. DEFAULT_CONTENT_TYPE «Новый»); не работает

3. Покажите нам трассировку стека исключения, вам нужно получить add для работы с одним и тем же типом документа.

4. добавление трассировки стека выше

5. Я понял, помощник.addContentAssistProcessor(pr,Документ. DEFAULT_CONTENT_TYPE) помощник.addContentAssistProcessor(dr,IDocument. DEFAULT_CONTENT_TYP); До того,как у меня был помощник.setContentAssistProcessor(pr, IDocument. DEFAULT_CONTENT_TYPE); помощник.addContentAssistProcessor(dr,Документ. DEFAULT_CONTENT_TYPE); Thx