Question

PySmell semble être un bon point de départ.

Je pense que cela devrait être possible, le idehelper.py de PySmell effectue la majorité des tâches complexes. Il suffit simplement de lui donner la ligne courante en offrant les compléments (le bit I). je ne suis pas sûr de), puis de remplacer la ligne par celle sélectionnée.

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

Cela ne sera jamais parfait, mais ce serait extrêmement utile (même si vous ne complétez que les modules stdlib, ils ne devraient jamais changer, vous n'aurez donc pas à régénérer constamment le fichier PYSMELLTAGS chaque fois que vous ajoutez une fonction)

Progresse! J'ai les bases de l'achèvement en place - fonctionne à peine, mais c'est proche ..

J'ai exécuté python pysmells.py / System / Library / Frameworks / Python.framework/Versions/2.5/lib/python2.5/*.py -O /Library/Python/2.5/site-packages/pysmell / PYSMELLTAGS

Placez les éléments suivants dans un script de lot TextMate, définissez "entrée: document entier", "sortie: insérer comme texte", "activation": équivalent de clé: alt + échappe, "sélecteur de portée: 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

Ensuite, j'ai créé un nouveau document Python, tapé "import urll". et tapez alt + escape, et le complétez pour "importer urllib"!

Comme je l’ai dit, c’est un travail en cours, ne l’utilisez pas encore.

Dernière mise à jour:

orestis a intégré cela dans le code du projet PySmell! Tous les autres violons se produiront sur github

Était-ce utile?

La solution

EDIT: J'ai en fait pris votre code ci-dessus et intégré à une commande. Une liste d’achèvement que vous pourrez choisir apparaîtra correctement.

Vous pouvez le récupérer ici: http://github.com/orestis/pysmell/tree / master (cliquez sur download et effectuez l’installation python.py). C'est dur mais ça marche. - signalez les erreurs éventuelles sur http://code.google.com/p/pysmell/

-

Bonjour, je suis le développeur de PySmell. J'utilise aussi un Mac, donc si vous pouvez m'envoyer un email (vos coordonnées sont dans le code source) avec vos progrès jusqu'à présent, je peux essayer de l'intégrer:)

Oh BTW, ça s'appelle PySmell - pas de ':'):

Autres conseils

Ce n’est pas exactement ce que vous cherchez, mais vous pourrez peut-être commencer:

Utiliser TextMate avec Django

Ils semblent être spécifiques à Django, mais des extraits peuvent vous aider. Vous pouvez également être en mesure de construire par-dessus cela avec PySmells.

Ce n'est pas parfait, mais vous pouvez l'essayer: http://mtod.org/tempy

Dans TextMate, PHP dispose d’une fonctionnalité d’auto-complétion simple consistant en un ensemble codé en dur de noms de fonctions. Cela semble aussi moche que PHP, mais en pratique, il est assez bon pour être utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top