Строка документации Python с vim pythoncomplete не отображает переводы строк для моих собственных функций класса

Я получаю некоторые неожиданные результаты, когда пытаюсь использовать Python Omni Completion в своих собственных функциях класса. Строка документации для функций неправильно форматируется с переносами строк, как показано на рисунке ниже:

Неожиданный результат

Когда я импортирую модули из стандартной библиотеки Python, я получаю ожидаемый результат:

Ожидаемый результат

В соответствии с соглашениями документации строки Python перевод строки в исходном файле должен интерпретироваться как перевод строки. Кто-нибудь знает, что здесь происходит и, возможно, как решить проблему?

1 ответ

Решение

Изменить: я написал автозаполнение, которое должно быть намного лучше, чем pythoncomplete: https://github.com/davidhalter/jedi-vim


Python Omni Completion Вим довольно глупо. Это простой скрипт, который анализирует текущий файл и imports все остальные. Это довольно опасно и не должно быть сделано. Однако это работает не так уж плохо (но и не очень хорошо).

Так что разница между вашими двумя сценариями в том, что стандартные библиотеки импортируются. Как и ваши файлы, но не текущий файл. Если вы использовали второй модуль с именем test2 и использовал:

import test
test.mydoc.prettyStr

Он должен работать.

Ваш текущий файл анализируется. Парсер прост и не очень хорош. Парсер Dostring особенно странен из-за этой строки (номер строки ~290):

docstr = docstr.replace('\n', ' ')

Вы можете изменить его - просто измените этот файл:/usr/share/vim/vim73/autoload/pythoncomplete.vim Может быть, это в другом каталоге.

В настоящее время я нахожусь в процессе написания лучшего автозаполнения для python/vi (это также причина, почему я знаю это). Но это все еще довольно трудоемкая работа. Я надеюсь, что через месяц я буду готова с бета-версией. Я стараюсь держать вас в курсе.

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