3

自分のクラス関数でPythonOmniCompletionを使用しようとすると、予期しない結果が発生します。次の図に示すように、関数のdocstringが改行で正しくフォーマットされていません。

予期しない結果

標準のPythonライブラリからモジュールをインポートすると、期待どおりの結果が得られます。

期待される結果

Python docstringの規則によれば、ソースファイルの改行は改行として解釈される必要があります。ここで何が起こっているのか、そしておそらく問題を解決する方法を誰かが知っていますか?

4

1 に答える 1

3

編集:オートコンプリートを作成しました。これは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か月以内にベータ版の準備ができていることを願っています。私はあなたを投稿し続けるようにしています。

于 2012-04-06T01:25:39.363 に答える