Vmi Python всенаправленное завершение не работает на системных модулях - PullRequest
2 голосов
/ 24 октября 2009

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

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

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 ]

2 голосов
/ 24 октября 2009

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

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

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

0 голосов
/ 24 октября 2009

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

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

...