TextMateでPythonコード補完を実装することは可能ですか?
-
03-07-2019 - |
質問
PySmell は良い出発点のようです。
それは可能だと思う、PySmellの idehelper.py
は大部分の複雑な処理を行います。それは現在の行を与えて補完を提供する場合にすぎません(ビットIわからない)を選択し、選択した行に置き換えます。
>>> import idehelper
>>> # The path is where my PYSMELLTAGS file is located:
>>> PYSMELLDICT = idehelper.findPYSMELLDICT("/Users/dbr/Desktop/pysmell/")
>>> options = idehelper.detectCompletionType("", "" 1, 2, "", PYSMELLDICT)
>>> completions = idehelper.findCompletions("proc", PYSMELLDICT, options)
>>> print completions
[{'dup': '1', 'menu': 'pysmell.pysmell', 'kind': 'f', 'word': 'process', 'abbr': 'process(argList, excluded, output, verbose=False)'}]
完璧になることは決してありませんが、非常に便利です(変更されることのないstdlibモジュールを完成させるためだけでも、関数を追加するたびにPYSMELLTAGSファイルを常に再生成する必要はありません)
進行中!私は完了の完全な基本を用意しています-ほとんど動作しませんが、それは近いです。.
python pysmells.py /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/*.py -O /Library/Python/2.5/site-packages/pysmellを実行しました/ PYSMELLTAGS
次をTextMateバンドルスクリプトに配置し、「入力:ドキュメント全体」、「出力:テキストとして挿入」、「アクティベーション:キーと同等:alt + esc」、「スコープセレクター:source.python」を設定します;
#!/usr/bin/env python
import os
import sys
from pysmell import idehelper
CUR_WORD = os.environ.get("TM_CURRENT_WORD")
cur_file = os.environ.get("TM_FILEPATH")
orig_source = sys.stdin.read()
line_no = int(os.environ.get("TM_LINE_NUMBER"))
cur_col = int(os.environ.get("TM_LINE_INDEX"))
# PYSMELLS is currently in site-packages/pysmell/
PYSMELLDICT = idehelper.findPYSMELLDICT("/Library/Python/2.5/site-packages/pysmell/blah")
options = idehelper.detectCompletionType(cur_file, orig_source, line_no, cur_col, "", PYSMELLDICT)
completions = idehelper.findCompletions(CUR_WORD, PYSMELLDICT, options)
if len(completions) > 0:
new_word = completions[0]['word']
new_word = new_word.replace(CUR_WORD, "", 1) # remove what user has already typed
print new_word
次に、「import urll」と入力して新しいpythonドキュメントを作成しました。 alt + escapeを押すと、「urllibのインポート」が完了しました!
私が言ったように、それは完全に進行中の作業なので、まだ使用しないでください。
最終更新:
orestisはこれをPySmellプロジェクトのコードに統合しました!さらなるいじりは、 github
で発生します。解決
編集:実際に上記のコードを取得し、コマンドに統合しました。選択可能な補完リストが適切に表示されます。
ここで入手できます: http://github.com/orestis/pysmell/tree / master (ダウンロードを実行してpython setup.py installを実行します)。ラフですが、動作します。 - http://code.google.com/p/pysmell/
-
こんにちは、私はPySmellの開発者です。私もMacを使用しているので、これまでの進捗状況をメール(連絡先情報はソースコードに記載)で送っていただければ、統合してみます:)
ああ、それはPySmellと呼ばれます-末尾の 's'はありません:)
他のヒント
これはまさにあなたが探しているものではありませんが、始めることができるかもしれません:
これらはややDjango固有のもののように見えますが、一部のスニペットはユーザーのニーズに役立つ場合があります。また、PySmellsを使用してその上に構築することもできます。
完全ではありませんが、試してみてください: http://mtod.org/tempy
TextMate PHPには、関数名のハードコードされたセットの形式で単純な自動補完があります。 PHPのようにugいように聞こえますが、実際には便利で十分です。