Vmi Python всенаправленное завершение не работает на системных модулях

Я заметил, что даже для системных модулей автозавершение кода работает не слишком хорошо.

Например, если у меня есть простой файл, который делает:

import re
p = re.compile(pattern)
m = p.search(line)

Если я наберу p., Я не получу завершение для методов, которые ожидаю увидеть (например, не вижу search (), но вижу другие, такие как func_closure(), func_code()).

Если я наберу m., Я не получу никакого завершения, как раньше (в этом случае я бы ожидал.groups ()).

Похоже, это не влияет на все модули. Кто-нибудь видел такое поведение и знает, как его исправить?

Я использую Vim 7.2 на WinXP, с последним pythoncomplete.vim от vim.org (0.9), на Python 2.6.2.

2 ответа

Решение

Завершение для такого рода вещей сложно, потому что это должно было бы выполнить фактический код для работы.

Например, p.search() может вернуть None или MatchObject, в зависимости от данных, которые ему передаются.

Вот почему омни-завершение здесь не работает и, вероятно, никогда не будет. Он работает для вещей, которые могут быть определены статически, например, для содержимого модуля.

Я никогда не получал встроенный всеполноту для работы на любых языках. У меня был наибольший успех с pysmell (который, кажется, был обновлен немного позже на github, чем в официальном репо). Я все еще не нашел это достаточно надежным, чтобы использовать его последовательно, но я точно не помню, почему.

Я прибег к созданию обширного набора сниппетов snipMate для моих первичных библиотек и использования дополнения по умолчанию для вкладок в качестве дополнения.

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