Pergunta

PySmell parece ser um bom ponto de partida.

Eu acho que deveria ser possível, idehelper.py de PySmell faz a maioria do material complexo, deve ser apenas um caso de dar-lhe a linha atual, oferecendo-se as conclusões (o pouco que eu não estou certo sobre) e, em seguida, substituindo o linha com o selecionado.

>>> 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)'}]

Isso nunca vai ser perfeito, mas seria extremamente útil (mesmo que apenas para completar os módulos stdlib, que nunca deve mudar, para que você não terá que constantemente regenerar o arquivo PYSMELLTAGS sempre que você adicionar uma função)


Progredindo! Eu tenho a absoluta-básico de conclusão no lugar - apenas funciona, mas é perto ..

Eu corri 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 o seguinte em um script TextMate bundle, set "input: documento inteiro", "saída: inserção como texto", "ativação: chave equivalentes: alt + esc", "seletor de escopo: 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

Então eu fiz um novo documento python, digitei "urll importação" e hit alt + escape, e completou-o para "urllib importação"!

Como eu disse, é inteiramente uma obra em andamento, por isso não usá-lo ainda ..


Última actualização:

Orestis integrou esta em código do projeto PySmell! Qualquer outra mexer vai acontecer no github

Foi útil?

Solução

EDIT: Eu realmente levou seu código acima e integrados em um comando. Ela vai mostrar corretamente uma lista de conclusão para você escolher.

Você pode agarrá-lo aqui: http://github.com/orestis/pysmell/tree / master (download batida e não python setup.py install). É difícil, mas ele funciona. - Por favor relate quaisquer erros na http://code.google.com/p/pysmell/

-

Oi, eu sou o desenvolvedor PySmell. Eu também uso um Mac, por isso, se você pode me enviar um e-mail (informações de contato é no código fonte) com o seu progresso até agora, eu posso tentar integrá-lo:)

Oh BTW é chamado PySmell - 's' não à direita:)

Outras dicas

Isto não é exatamente o que você está procurando, mas ele pode ser capaz de começar:

Usando TextMate com Django

Eles parecem ser um pouco Django específico, mas alguns trechos podem ajudar com suas necessidades. Você também pode ser capaz de construir em cima do que com PySmells.

Não é perfeito, mas você pode experimentá-lo: http://mtod.org/tempy

Em TextMate PHP tem uma auto-realização simples na forma de um conjunto codificado de nomes de funções. Sons tão feio como PHP, mas na prática é bom o suficiente para ser útil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top