Можно ли вставить операторы импорта с помощью jedi-vim?

Я только начал смотреть на плагин Vim Jedi, и это выглядит довольно впечатляюще. Одной из особенностей некоторых из Java IDE, которые я использовал, является возможность автоматического добавления необходимых импортов. Может ли джедай сделать это? Например, если я введу строку, такую ​​как

arg1 = sys.argv[1]

а затем вызвать некоторую команду джедая, возможно ли для плагина автоматически вставить import sys строка в верхней части исходного файла (если sys еще не импортируется)?

Я просмотрел помощь джедая и не вижу ничего подобного, но возможно я что-то упустил. Кроме того, есть ли другой плагин Vim, который бы сделал это? (Требуется определенный уровень понимания синтаксиса Python, чтобы понять это правильно, поэтому я обратился к джедаю, чтобы иметь возможность это сделать).

2 ответа

Решение

В настоящее время джедай не занимается рефакторингом. Это включает в себя импорт дополнений. Существует проблема для всей темы: https://github.com/davidhalter/jedi/issues/667.

Это не так просто реализовать эту команду с хорошей производительностью. Однако любая помощь приветствуется.:)

FIY, я определил общую функцию импорта, которая может использоваться по требованию в lh-dev. Я использую его из своего набора C&C++ и из моего движка сниппетов (mu-template).

Пока я ничего не анализирую, чтобы добавить отсутствующие операторы import / include. Эта часть будет сложной, как сказал Дейв. Вместо этого мои фрагменты знают, какие файлы необходимо импортировать / включать, и импортировать / включать их, если они еще не импортированы / включены.

Это далеко не идеально, но это начало. mu-template обеспечивает ловушку для выполнения каких-либо действий в начале файла после раскрытия фрагмента, здесь я вызываю функцию lh-dev. Если другие движки сниппета предоставляют аналогичные перехваты, вы можете позвонить lh#dev#import#add() из ваших фрагментов.

Вот подтверждение фрагмента концепции для Python (я редко программирую на Python, и у меня не так много фрагментов для него): https://github.com/LucHermitte/mu-template/blob/master/after/template/python/path-exists.template

Другие вопросы по тегам