2011-09-29 6 views
9

Sto usando lo bpython per un po 'di tempo per tutte le mie esigenze di interpretariato in Python. È delizioso, soprattutto quando usi nuove librerie sconosciute o librerie con una moltitudine di funzioni. In ogni caso, è bello avere un interprete bpython che funzioni insieme a quello che sto facendo, ma sarebbe ancora meglio se avessi sia la funzione di autocomplete, sia la descrizione del parametro nel modo in cui bpython fa mentre I Sto modificando il codice in Emacs. Sono completamente pazzo? Qualcuno ha un'idea su come farlo?autocompleta bpython-like e descrizione dei parametri in modalità Emacs Python?

Grazie, Bradley Powers

risposta

10

non siete completamente pazzo.

python-mode può integrare con eldoc-mode per visualizzare l'argomento arg della funzione che si sta chiamando al punto. Basta fare M-x eldoc-mode mentre si è in un file python per accenderlo e dovrebbe iniziare a funzionare. Parla con un buffer python inferiore per ispezionare direttamente le funzioni, quindi dovrebbe sempre essere decentemente accurato. È possibile accenderlo automaticamente per tutti i nuovi buffer python-mode con (add-hook 'python-mode-hook '(lambda() (eldoc-mode 1)) t) nel file di avvio di emacs. Ora, a questo punto, devo dire che non eseguo alcuna normale programmazione Python, e che quando l'ho provato ora non ha funzionato. Ho trascorso alcuni minuti a frugare nel codice sorgente e tutto sembra essere a posto, ma il codice che viene eseguito nel processo inferiore sta restituendo una stringa vuota. Forse è solo la mia configurazione, o forse sto leggendo i file sorgente errati; è difficile da dire.

Emacs offre diversi tipi di espansione/completamento automatico. Per impostazione predefinita si ha accesso a dabbrev-expand premendo M-/. Questa è una forma abbastanza semplice di completamento; serve solo a lavorare su qualsiasi vecchio file che hai modificato. Più sofisticato è hippie-expand, ma anche questo non fa nulla di specifico per Python. La documentazione dice che può essere integrata con hippie-expand per i completamenti esatti, ma questa potrebbe essere una bugia; Non riuscivo a capire come funziona. Un po 'di curiosità mostra diverse soluzioni correlate per questo, che sembrano fare affidamento su pymacs. Se avessi intenzione di fare un sacco di programmi python e non avessi già un emacs abbastanza complicato, probabilmente inizierei installando emacs-for-python. Sembra essere una configurazione abbastanza completa, e afferma persino di avere un avviso di avviso/rilevamento in tempo reale.

Nello spirito di aiutare gli altri ad aiutare se stessi, vorrei sottolineare come sono arrivato a tutte queste informazioni. Il mio primo passo è stato aprire un file in python-mode. In realtà non avevo alcun codice python disponibile, quindi sono passato al mio scratch buffer e ne sono diventato un buffer python (M-x python-mode). Quindi ho chiesto aiuto su questa strana nuova modalità (C-h m) per vedere cosa poteva fare. L'autore ha gentilmente messo un breve riassunto di ciò che la modalità può fare che menziona eldoc-mode, Imenu, outline-mode, hippie-expand, rlcompleter, abbrev tabelle e un sacco di altre cose. Da lì ho iniziato a guardare il codice sorgente. Ad esempio, per integrarsi con eldoc-mode, definisce una funzione chiamata python-eldoc-function e la fornisce al modulo eldoc per l'uso nei buffer python. Leggendo quel codice mi mostra come interagisce con il buffer inferiore, ecc.

Spero che un po 'di questo aiuti.

+0

Grazie mille per questo. La sperimentazione iniziale suggerisce che questo funziona, mi occuperò di emacs-for-python quando arriverò al laboratorio tra un po '. –

+0

Prego :) – db48x

+0

@ db48x Un'altra ottima risposta. Mi piace il taglio del tuo gib. –

Problemi correlati