Можно ли вставить операторы импорта с помощью 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