PySmellは良い出発点のようです。
私はそれが可能であるべきだと思います.PySmell'sidehelper.py
は複雑なことの大部分を行います.現在の行を与え、補完を提供し(私にはよくわかりません)、行を選択したものに置き換えるだけです. 1。
>>> 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
次に、新しいpythonドキュメントを作成し、「import url」と入力してalt + Escapeを押すと、「import urllib」まで完了しました!
私が言ったように、それは完全に進行中の作業なので、まだ使用しないでください..
最後の更新:
orestis はこれを PySmell プロジェクトのコードに統合しました! それ以上のいじりはgithub で行われます