2008-10-21 16 views
20

PySmell iyi bir başlangıç ​​noktası gibi görünüyor.Python kod tamamlama TextMate uygulamasında uygulanabilir mi?

Mümkün olması gerektiğini düşünüyorum, PySmell'in idehelper.py karmaşık şeylerin çoğunu yapar, sadece mevcut satırı vermesi, tamamlanmalarını sunması gerekir (biraz emin değilim) ve sonra değiştirilir seçili olan çizgi.

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

Mükemmel olmak asla, ama sadece, hiç değişmez gerektiği stdlib modülleri, tamamladığınız alışkanlık bir işlev eklemek zaman sürekli PYSMELLTAGS dosyasını yeniden zorunda olsa bile (son derece yararlı olacağını)


ilerleyen ! "Çıkışı: "Tüm belge girişi": zar zor çalışır, ancak yakın ..

belirlediğim bir TextMate paket komut aşağıdaki python pysmells.py /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/*.py -O /Library/Python/2.5/site-packages/pysmell/PYSMELLTAGS

Yeri, ran - ben yerde tamamlanma mutlak-temelleri var anahtar eşdeğer: alt + esc " "kapsam seçici: text"," aktivasyon olarak eklemek source.python ithalat urll ""

#!/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 

Sonra yeni bir piton belgesi, daktilo yapımı" ve alt + kaçış vurmak, ve bunu "urllib içe aktar" için tamamladı! Dediğim gibi

, bir iş-içinde-ilerleme, bu yüzden .. kullanmak henüz yok tamamen bulunuyor


Son güncelleme:

orestis PySmell projesi en içine bu entegre etmiştir kod! Herhangi başka işe yaramaz Bu aradığınız tam olarak ne değildir on github

cevap

9

DÜZENLEME: Aslında kodunuzu yukarıda aldım ve bir komuta entegre ettim. Seçmeniz için bir tamamlama listesi uygun şekilde gösterilecektir.

Buradan alabilirsiniz: http://github.com/orestis/pysmell/tree/master (İndirme işlemine devam edin ve python setup.py kurulumunu yapın). Bu kaba ama işe yarıyor. - http://code.google.com/p/pysmell/

üzerinde herhangi bir hata rapor edin -

Hi, I PySmell geliştiricisi değilim.Şu ana kadar ilerleme ile (bilgi kaynak kodunda olduğu başvurun) bana e-posta gönderebilir eğer öyleyse ben de bunu entegre etmek deneyebilirsiniz, Mac kullanıyorsanız :) btw PySmell denir

Oh - Sonuna ' s':)

+0

Geçenlerde github proje üzerinde TextMate ilgili kaydedilmesini fark etmişti. Kodun tanıdık geldiğini düşündüm, ama tesadüf olduğunu düşündüm ..: D – dbr

3

olacak ama seni almak mümkün olabilir başladı:

Using TextMate with Django

Onlar belirli ancak bazı parçacıkları Django biraz görünmektedir ihtiyaçlarınız konusunda yardımcı olabilir. Ayrıca PySmells ile bunun üzerine inşa edebilirsiniz.

0

TextMate PHP'de, kodlanmış işlev adları kümesi şeklinde basit bir otomatik tamamlama vardır. PHP kadar çirkin görünüyor ama pratikte faydalı olmak için yeterince iyi.

İlgili konular