2012-04-02 7 views
3

Python Omni Completionを自分のクラス関数で使用しようとすると、予期せぬ結果が出ます。vim pythoncompleteを使ったPython docstringが自分のクラス関数の改行を表示していません

:私は私が期待する結果を得るため、標準のpythonライブラリからモジュールをインポートしていた場合

Unexpected result

:下の写真のように機能のdocstringは、改行を正しくフォーマット取得されていません

Expected result

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

答えて

3

編集:私はすべきではpythoncompleteよりはるかに優れている自動補完を、書いた:https://github.com/davidhalter/jedi-vim


のvimのPython Omni Completionはかなり愚かです。これは、現在のファイルを解析する単純なスクリプトであり、他のすべてのファイルはimportsです。これはかなり危険なので、やってはいけません。しかし、それはそれほど悪くない(しかし、まったくうまくいきません)。

実際には、2つのシナリオの違いは、標準ライブラリがインポートされていることです。あなたのファイルはそうですが、現在のファイルはありません。あなたはtest2名前を付けて使用される第二のモジュールを使用した場合:

import test 
test.mydoc.prettyStr 

をそれが動作するはずです。

あなたの現在のファイルが解析されています。パーサはシンプルであり、実際には良いものではありません。 dostringパーサがあるため、この行(行番号〜290)の特に奇妙です:

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

あなたはそれを変更することができます - ちょうどこのファイルを変更: /usr/share/vim/vim73/autoload/pythoncomplete.vimたぶん、それは別のディレクトリにありますが。

現在、私はpython/viのオートコンプリートを書いています(これが私がこれを知っている理由です)。しかしそれはまだかなりの仕事です。私は1ヶ月でベータ版で準備ができていることを願っています。私はあなたの投稿を維持しようとします。

+0

これはかなりの事を説明しています!ありがとうございました。 – veiset

関連する問題