自分のクラス関数でPythonOmniCompletionを使用しようとすると、予期しない結果が発生します。次の図に示すように、関数のdocstringが改行で正しくフォーマットされていません。
標準のPythonライブラリからモジュールをインポートすると、期待どおりの結果が得られます。
Python docstringの規則によれば、ソースファイルの改行は改行として解釈される必要があります。ここで何が起こっているのか、そしておそらく問題を解決する方法を誰かが知っていますか?
自分のクラス関数でPythonOmniCompletionを使用しようとすると、予期しない結果が発生します。次の図に示すように、関数のdocstringが改行で正しくフォーマットされていません。
標準のPythonライブラリからモジュールをインポートすると、期待どおりの結果が得られます。
Python docstringの規則によれば、ソースファイルの改行は改行として解釈される必要があります。ここで何が起こっているのか、そしておそらく問題を解決する方法を誰かが知っていますか?
編集:オートコンプリートを作成しました。これはpythoncompleteよりもはるかに優れているはずです: https ://github.com/davidhalter/jedi-vim
vimのPython Omni Completion
はかなりばかです。これは、現在のファイルとimports
他のすべてのファイルを解析する単純なスクリプトです。これはかなり危険であり、実行すべきではありません。ただし、それほど悪くはありません(ただし、まったく良くありません)。
つまり、2つのシナリオの実際の違いは、標準ライブラリがインポートされているということです。あなたのファイルもそうですが、現在のファイルではありません。名前を付けて使用した2番目のモジュールを使用した場合test2
:
import test
test.mydoc.prettyStr
動作するはずです。
現在のファイルが解析されています。パーサーは単純で、あまり良くありません。この行(行番号〜290)があるため、dostringパーサーは特に奇妙です。
docstr = docstr.replace('\n', ' ')
あなたはそれを変更することができます-このファイルを変更するだけです:
/usr/share/vim/vim73/autoload/pythoncomplete.vim
多分それは別のディレクトリにあります。
現在、私はpython / viのより良いオートコンプリートを作成しているところです(これが私がこれを知っている理由でもあります)。しかし、それはまだかなりの作業です。1か月以内にベータ版の準備ができていることを願っています。私はあなたを投稿し続けるようにしています。