Frage

PySmell scheint wie ein guter Ausgangspunkt.

Ich denke, es sollte möglich sein, tut PySmell des idehelper.py eine Mehrheit der komplexen Sachen, es sollte nur ein Fall sein, die aktuelle Zeile geben, die Fertigstellungen von bis (das Bit ich nicht sicher bin), und dann ersetzt die Linie mit dem ausgewählten.

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

Es wird nie perfekt sein, aber es wäre sehr nützlich sein (wenn auch nur für die stdlib Module abgeschlossen, die sich nie ändern sollte, so wie Sie es sonst ständig müssen die PYSMELLTAGS Datei regenerieren, wenn Sie eine Funktion hinzufügen)


Progressing! Ich habe die völlige-Grundlagen der Fertigstellung an Ort und Stelle - kaum funktioniert, aber es ist in der Nähe ..

Ich lief python pysmells.py /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/*.py -O /Library/Python/2.5/site-packages/pysmell/PYSMELLTAGS

Platzieren Sie die folgenden in einem Textmate Bündel Skript Setz "-Eingang: gesamtes Dokument", "output: Als Text einfügen", "Aktivierung: Schlüssel äquivalent: alt + esc", "scope selector: 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

Dann habe ich ein neues Python-Dokument, getippt "import urll" und drücken Sie Alt + Flucht, und es fertig, es zu "import urllib"!

Wie gesagt, es ist ganz eine Work-in-progress, so verwenden Sie es noch nicht ..


Letzte Aktualisierung:

Orestis integriert diese in die PySmell Projekt-Code! Eine darüber hinausgehende Hantieren wird passieren auf Github

War es hilfreich?

Lösung

EDIT: Ich habe tatsächlich nahm den Code oben und integriert in einen Befehl. Es wird richtig eine Vervollständigungsliste zeigen, damit Sie wählen.

Sie können es hier greifen: http://github.com/orestis/pysmell/tree / Master (Hit-Download und python tun setup.py install). Es ist rau, aber es funktioniert. - melden Sie sich bitte alle Fehler auf http://code.google.com/p/pysmell/

-

Hallo, ich bin der Entwickler PySmell. Ich benutze auch einen Mac, also wenn Sie mir eine E-Mail senden (Kontaktinfos im Quellcode sind) mit dem Fortschritt so weit, ich kann versuchen, es zu integrieren:)

Oh BTW ist es PySmell genannt - kein Hinter 's':)

Andere Tipps

Dies ist nicht genau das, was Sie suchen, aber es könnte Sie bekommen können, gestartet:

Mit Textmate mit Django

Sie scheinen etwas Django spezifisch zu sein, aber einige Schnipsel mit Ihren Bedürfnissen helfen können. Sie können auch in der Lage sein, oben auf, dass zu bauen mit PySmells.

Es ist nicht perfekt, aber man kann es versuchen: http://mtod.org/tempy

In PHP Textmate hat eine einfache Auto-Vervollständigung in Form von fest codierten Satz von Funktionsnamen. Klingt so hässlich wie PHP, aber es ist gut genug, um in der Praxis nützlich zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top