У меня есть подключаемый модуль Eclipse, который я создал для добавления записей о завершении кода. Я настроил Eclipse для автоматического отображения кода при вводе (Windows | Preferences | PyDev | Редактор | Кодовое завершение | Запрос завершения на всех символах букв и «_»?). Сначала, когда я набрал, я продолжал получать шаблоны вместо моих записей о завершении кода, поэтому я удалил все шаблоны (Windows | Preferences | PyDev | Templates - выбрал все, а затем «Удалить»). Теперь, когда я печатаю его, он работает правильно для всех остальных нажатых клавиш. Например, когда я печатаю «print», список завершения кода падает с моими записями, как ожидалось, когда я нажимаю «p». Однако, когда я нажимаю 'r', список исчезает. Когда я нажимаю 'i', список снова отображается, но исчезает, когда я нажимаю следующую клавишу ('n') и т. Д. Является ли это дефектом Пидева, или я делаю что-то неправильно? Он отлично работает для шаблонов и другого кода по умолчанию, только для моего плагина. Вот код пропущен из разбавленной версии моего кода:Встроенный плагин для пользовательского кода PyDev обнаруживает только каждый ход клавиатуры
//...
public class MyPlugin implements IPyDevCompletionParticipant
@Override
public Collection<Object> getGlobalCompletions(CompletionRequest arg0,
ICompletionState arg1) throws MisconfigurationException {
String replacementString = "{" + arg0.qualifier + "}";
int replacementOffset = arg0.documentOffset - arg0.qlen;
int replacementLength = arg0.qlen;
int cursorPosition = arg0.documentOffset;
String displayString = arg0.qualifier;
final IContextInformation contextInformation = new ContextInformation(
"displayStr", "message");
String additionalProposalInfo = "additionalProposalInfo";
final String bundle = "com.github.EclipseChameleonPlugins";
final org.eclipse.swt.graphics.Image image = new org.eclipse.swt.graphics.Image(getDisplay(), locateFile(bundle, "icons/smiley.gif").getPath());
arg0.showTemplates = false;
final CompletionProposal proposal = new CompletionProposal(
replacementString, replacementOffset, replacementLength,
cursorPosition, image, displayString, contextInformation, additionalProposalInfo);
List<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>();
// ADD IT...
proposals.add(proposal);
final Collection<Object> returnProposals = new ArrayList<Object>(
proposals);
return returnProposals;
}
Я искал Google и StackOverflow, и видел очень мало о разработке коды для Pydev плагин, и ничего, что не упоминает или адрес этой проблемы ,
Вот несколько ссылок, я посмотрел на, но никто не ответил на мой вопрос:
- Auto-completion in PyDev
- Code completion for custom modules not working with PyDev
- pydev remote debuging - code completion in interactive console?
Благодарим за быстрый ответ! В ответ на ваши 4 пункта: (1) «Использовать общий код автозавершения токенов» не был отмечен, и я все еще получал шаблоны, отображаемые как второй набор дополнений к коду - я мог переключаться между ними с помощью ctrl + space , но не хотел этого, поэтому мне пришлось удалить шаблоны в разделе «Шаблоны». (2) ОК ... (3) Это выглядит многообещающим ...Я попробую ... (4) Пробовал только то, что не сработало, и забыл очистить это - хорошо поймать. – MrMobileMan
Я реализую IPyDevCompletionParticipant, в то время как эталонный код реализует этот класс + IPyDevCompletionParticipant2. Когда я пытаюсь реализовать этот второй интерфейс, я реализую необходимые методы (а именно computeConsoleCompletions (...)), но у него есть IScriptConsoleViewer в сигнатуре, которую Eclipse не может найти для меня, пока я не добавлю банку PyDev shared_interactive_console. Правильно ли я это делаю? Я установил точку останова и не ударил точку останова в методе computeConsoleCompletions (...) ... – MrMobileMan
IPyDevCompletionParticipant2.computeConsoleCompletions не требуется - это необходимо только для добавления завершений при запросе кода в консоли - что нужно, это ICompletionProposalExtension2 и ICompletionProposalExtension, которые предоставляет AbstractPyCompletionProposalExtension2. –