PySmell parece ser un buen punto de partida.¿Es posible implementar el completado de código Python en TextMate?
Creo que debería ser posible, PySmell's idehelper.py
hace la mayoría de las cosas complejas, solo debería ser una cuestión de darle la línea actual, ofreciendo las terminaciones (el bit del que no estoy seguro) y luego reemplazando la línea con la seleccionada.
>>> 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)'}]
Nunca será perfecta, pero sería extremadamente útil (aunque sólo sea por completar los módulos stdlib, que nunca debe cambiar, por lo que no tiene que regenerarse constantemente el archivo PYSMELLTAGS cada vez que agrega una función)
Progreso! Tengo la absoluta-fundamentos de la finalización en el lugar - apenas funciona, pero está cerca ..
me encontré python pysmells.py /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/*.py -O /Library/Python/2.5/site-packages/pysmell/PYSMELLTAGS
Coloque el siguiente en una secuencia de comandos paquete TextMate, ajuste "Entrada: documento completo", "Salida: insertar como texto", "activación: clave equivalente: Alt + Esc", "selector de alcance: 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
Entonces hice un nuevo documento pitón, mecanografiado "URLL importación" y pulsar Alt + escape, ¡y lo completó para "importar urllib"!
Como ya he dicho, es totalmente una obra en curso, por lo que no deberá ser utilizado sin embargo ..
Última actualización:
orestis ha integrado esta en el proyecto de PySmell ¡código! Cualquier tocar el violín más sucederá on github
me había dado cuenta recientemente las confirmaciones relacionadas con TextMate en el proyecto github. Pensé que el código parecía familiar, pero pensé que era una coincidencia ..: D – dbr