Question

Il semble y avoir de nombreux mécanismes d'auto-complétion Emacs alternative. Sans une recherche exhaustive, les éléments suivants viennent à l'esprit: Ido, auto-complétion, stalactites, dans l'achèvement tampon, minibuffer l'achèvement et la sortie standard de l'achèvement de la boîte. Et puis il y a la complétion de code. Beaucoup. Et une grande partie dépendant de la langue. Il serait très utile d'avoir un gourou Emacs, ou trois, résumer les avantages des principaux acteurs dans le code et l'auto-complétion non-code. Et ce qui est le débordement de pile, il va sans dire qu'il serait bon d'identifier les modes d'achèvement automatique qui fonctionnent le mieux pour les mécanismes comme IDE d'Emacs.

Mise à jour : Je viens de découvrir la page d'achèvement Wiki Emacs qui amplifiant ma question fondamentale: de tous ces choix, ce qui est bon, ce qui est moins bon et si vous ne pouviez jouer avec 2-3 qui recommanderiez-vous

?
Était-ce utile?

La solution

J'utilise généralement deux paquets d'achèvement (autres que le haut-achèvement TAB dans les tampons de mini-tampon et COMINT).

pabbrev.el - qui fournit une suggestion au niveau du curseur (appuyez sur TAB ) à accepter. Les choix sont faits en regardant la fréquence des mots. J'aime cela à cause de l'indication visuelle de ce qui serait achevé - mais il fonctionne la plupart du temps pour une seule fin

.

hippie-expand - qui est généralement lié à M - / à la place de dabbrev parce qu'il fait tout ce que fait dabbrev et plus. Cela fonctionne bien quand vous pourriez avoir besoin de faire défiler des solutions de rechange, ou si vous voulez remplir un nom de fichier ou autre chose.

J'aime tant parce qu'ils ne nécessitent aucun mouvement de la souris et du travail rapidement.

Autres conseils

Icicles -

Pour la plupart, Glaçons est sur minibuffer fin. Il y a quelques cas où il offre quelque chose pour (le code par exemple) dans le tampon d'achèvement, mais il est principalement de l'achèvement minibuffer.

Quand la plupart des gens pensent à la fin minibuffer ils pensent à la fin du nom de fichier, la fin nom de la mémoire tampon, et l'achèvement de commande nom. Mais il y a une beaucoup plus à lui.

En tant que programmeur Emacs-Lisp, vous pouvez utiliser la complétion où que vous voulez donner aux utilisateurs un choix de manière interactive. C'est assez général!

L'achèvement est vraiment pattern-matching pour définir des ensembles , que vous pouvez ensuite manipuler.

La plupart des gens pensent que le seul objectif d'achèvement minibuffer est de choisir un nom unique (fichier, tampon, commande, variable ...). Mais le pouvoir d'achèvement est vraiment filtrer et éventuellement trier l'ensemble des noms de fichiers, les noms de tampons, etc. de différentes manières, et pour permettre aux utilisateurs de faire quelque chose ou avec le résultat set (non nécessairement un seul objet).

C'est ce que Icicles est sur: vous permettant de dynamiquement (par incréments) définir des ensembles en utilisant ltrage , puis agir sur certains membres ou tous les membres de ces ensembles <. / p>

Ce n'est pas tant le but de Ido ou les autres paquets d'achèvement, à l'exception possible de Helm (Tout) .

Contrairement à Helm (Tout) , qui privilégie l'objet nom sur types d'objets et actions comme point de départ, Icicles vous invoquez généralement pour faire quelque chose à un ou plusieurs objets d'une donnée type ( tampons, par exemple), et puis vous restreindre l'ensemble de ces objets, généralement par nom correspondant. Il est souvent le cas dans Icicles que vous pouvez agir sur ces objets de multiples façons, mais connexes au sein de la même commande.

Helm (Tout) , en général votre entrée est en correspondance d'abord par nom de l'objet contre l'univers entier des objets de tous types, et vous restreindre à choisir la suite une opération (s) à effectuer.

Enfin, gardez à l'esprit que chacune des différentes approches réalisation offre à la fois quelque chose (par exemple des commandes) pour les utilisateurs finaux et quelque chose (par exemple des caractéristiques d'achèvement) pour les programmeurs.

Si vous faites la complétion de code , alors vous voulez juste généralement compléter le nom au point . La principale chose intéressante à propos de la complétion de code est de déterminer quels sont les candidats appropriés. Pour cela, le contexte textuel (code par exemple) est généralement très important. Pour offrir des choix intelligents, la fonction d'achèvement doit analyser le contexte (code), y compris un contexte englobante (par exemple le code de projet).

Minibuffer l'achèvement d'autre part peut être utilisé pour tout type de choix et d'action, y compris le choix multiple avec plusieurs actions. Ici, toutes les pièces sont intéressantes. Ce que les candidats à offrir, ce que vous pouvez faire avec eux, etc

si cette aide ne sais pas, mais mon prendre de toute façon.

J'utilise la touche de tabulation standard dans le mini-tampon pour les noms de fichiers, les commandes de M-x et d'autres choses.

J'utilise aussi souvent la combinaison de touches de M-/ (de dabbrev-expand) pour la réalisation dynamique d'un mot dans l'un de vos tampons Emacs. Il est fantastique, surtout pour les longs noms de variables. Voici la documentation:

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-/.

Vous pouvez regarder à la société-package ou le mode de saisie semi-automatique, qui pourrait utiliser différentes sources d'achèvement, y compris CEDET, et ils permettent également de définir de nouvelles sources d'achèvement ... Pour certains langages de programmation, vous pouvez utiliser CEDET directement ...

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