обновление: ооо, поэтому я проверил ваш пример, и я получил завершение для
x = Test()
x.<C-x><C-o>
, но не
o = object()
o.x = Test()
o.x.<C-x><C-o>
... Ясобираюсь немного покопаться
обновление 2: месть доктора Стрейнджлав
и ... вот откуда это странно.
from StringIO import StringIO
class M:
pass
s = M()
s.x = StringIO()
s.x.<C-x><C-o>
завершен.но это
from StringIO import StringIO
class M: pass
s = M()
s.x = StringIO()
s.x.<C-x><C-o>
Вы заметили разницу? ничего синтаксического - просто маленький пробел
И все же это нарушает завершение.Так что где-то определенно есть ошибка разбора (, почему они не просто используют модуль ast
, я понятия не имею ...)
[конец обновлений]
На первый взгляд, я не могу воспроизвести вашу проблему;вот мой тестовый файл:
from os import path
path.<C-x><C-o>
и я получаю завершение.Теперь я знаю, что это не совсем ваша ситуация, но это показывает, что pythoncomplete знает о 'from'.
А теперь более подробный пример:
from StringIO import StringIO
s = StringIO()
s.<C-x><C-o>
И ... завершение!Не могли бы вы попробовать этот пример, чтобы посмотреть, работает ли он со встроенными модулями для вас? Если это так, вам, вероятно, следует проверить пути ...
Если он все еще не работает, и вы 'Чтобы покопаться, посмотрите строку # 555 в pythoncomplete.vim [at /usr/share/vim/vim72/autoload/pythoncomplete.vim
на моей машине с Ubuntu]:
elif token == 'from':
mod, token = self._parsedotname()
if not mod or token != "import":
print "from: syntax error..."
continue
names = self._parseimportlist()
for name, alias in names:
loc = "from %s import %s" % (mod,name)
if len(alias) > 0: loc += " as %s" % alias
self.scope.local(loc)
freshscope = False
, как вы можете видеть, именно здесь он обрабатывает from
операторов.
Ура