Domanda

Sembra che ci sia molti meccanismi di completamento automatico alternativa Emacs. Senza una ricerca esaustiva, quanto segue vengono in mente: IDO, il completamento automatico, ghiaccioli, a completamento del buffer, minibuffer completamento e standard out del completamento scatola. E poi c'è il completamento del codice. Un sacco. E gran parte di essa dipendono dalla lingua. Sarebbe molto utile avere un guru Emacs, o tre, riassumere i vantaggi dei principali operatori sia il codice e non il codice auto-completamento. E questo essere Stack Overflow, va da sé che sarebbe bene per identificare le modalità di completamento automatico che funzionano meglio per i meccanismi di IDE-come Emacs.

Aggiorna : la pagina di completamento Emacs Wiki che amplifica la mia domanda di base: di tutte queste scelte, ciò che è buono, ciò che è meno buono e se si potesse giocare solo con 2-3 che consiglierebbe

?
È stato utile?

Soluzione

Generalmente uso due pacchetti di completamento (diversi incorporata completamento TAB nel minibuffer e COMINT buffer).

pabbrev.el - che fornisce un suggerimento al cursore (premere TAB ) per accettare. Le scelte sono fatte, cercando in frequenza di parola. Mi piace questo perché l'indicazione visiva di quello che sarebbe stato completato - ma funziona per lo più per un solo termine

.

hippie-espandere - che è generalmente legato a M - / al posto di dabbrev perché fa tutto ciò che fa dabbrev e altro ancora. Questo metodo funziona bene quando potrebbe essere necessario per passare in rassegna alcune alternative, o se si vuole completare un nome di file o di qualcosa d'altro.

Mi piace sia perché non richiedono alcun movimento del mouse e lavorare velocemente.

Altri suggerimenti

Ghiaccioli -

Per la maggior parte, Icicles è di circa minibuffer di completamento. Ci sono alcuni casi in cui offre qualcosa per (codice di esempio) il completamento in-tampone, ma è soprattutto di completamento minibuffer.

Quando la maggior parte della gente pensa su minibuffer completamento pensano di completamento nome-file, il completamento del buffer-nome, e il completamento nome comando. Ma c'è un molto di più ad esso.

Come un programmatore Emacs-Lisp, è possibile usare il completamento dove si vuole dare agli utenti una scelta in modo interattivo. Questo è abbastanza generale!

Il completamento è davvero di pattern-matching per definire set , che è quindi possibile manipolare.

La maggior parte della gente pensa che l'unico scopo di completamento minibuffer è quello di scegliere un singolo nome (file, buffer dei comandi, variabili, ...). Ma il potere di completamento è davvero per filtrare ed eventualmente ordinare la serie completa dei nomi di file, buffer, ecc in modi diversi, e quindi per consentire agli utenti di fare qualcosa o con l'risultante set (non necessariamente un singolo oggetto).

Questo è ciò che Ghiaccioli è di circa: che ti permette di in modo dinamico (incrementale) definire set con pattern-matching , e poi agire sui membri selezionati o tutti i membri di tali gruppi <. / p>

Questa non è tanto l'obiettivo di Ido o gli altri pacchetti di completamento, con la possibile eccezione di Helm (Anything) .

A differenza Helm (Anything) , che privilegi oggetto nomi sopra tipi di oggetti e azioni come punto di partenza, in Ghiaccioli in genere si richiama un per fare qualcosa per uno o più oggetti di un dato tipo ( ad esempio tamponi) e poi a restringere l'insieme di quegli oggetti, tipicamente per nome-matching. E 'spesso il caso in Ghiaccioli che si può agire su quegli oggetti in più ma correlati modi all'interno dello stesso comando.

Helm (Anything) , in generale, l'input è abbinati prima per argomento contro l'intero universo di oggetti di tutti i tipi, e poi a limitare giù a raccogliere alcune operazioni (s) per eseguire.

Infine, tenere presente che ciascuno dei vari approcci di completamento offre sia qualcosa (ad esempio i comandi) per gli utenti finali e qualcosa (ad esempio funzioni di completamento) per i programmatori.

Se si sta facendo il completamento del codice , allora in genere si vuole solo completare il nome al punto . La cosa principale interessante di completamento del codice è determinare quali sono i candidati idonei sono. Per questo, il testuale (ad esempio codice) contesto è tipicamente importanza. Per offrire scelte intelligenti, la funzione di completamento ha bisogno di analizzare il contesto (codice), compreso qualsiasi contesto onnicomprensivo (ad esempio, codice di progetto).

completamento Minibuffer d'altra parte può essere utilizzato per qualsiasi tipo di scelta e di azione, tra cui scelta multipla con più azioni. Qui, tutte le parti sono interessanti:. Ciò che i candidati da offrire, cosa si può fare con loro, ecc

Non so se questo aiuta, ma questo è il mio prendere comunque.

Io uso il completamento scheda standard nel minibuffer per i nomi dei file, comandi M-x e altre cose.

Io uso anche di frequente la sequenza di tasti M-/ (dabbrev-expand) per il completamento dinamica di qualsiasi parola in qualsiasi dei vostri tamponi di Emacs. E 'fantastico, soprattutto per i nomi di variabili lunghi. Ecco la documentazione:

M-/ runs the command dabbrev-expand, which is an interactive
autoloaded Lisp function in `dabbrev.el'.

It is bound to M-/.

(dabbrev-expand ARG)

Expand previous word "dynamically".

Expands to the most recent, preceding word for which this is a prefix.
If no suitable preceding word is found, words following point are
considered.  If still no suitable word is found, then look in the
buffers accepted by the function pointed out by variable
`dabbrev-friend-buffer-function'.

A positive prefix argument, N, says to take the Nth backward *distinct*
possibility.  A negative argument says search forward.

If the cursor has not moved from the end of the previous expansion and
no argument is given, replace the previously-made expansion
with the next possible expansion not yet tried.

The variable `dabbrev-backward-only' may be used to limit the
direction of search to backward if set non-nil.

See also `dabbrev-abbrev-char-regexp' and C-M-/.

Si può guardare alla società-mode o un pacchetto di completamento automatico, che potrebbe utilizzare diverse fonti di completamento, tra cui CEDET, e anche permettere di definire nuove fonti di completamento ... Per alcuni linguaggi di programmazione, è possibile utilizzare CEDET direttamente ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top