Je sais qu'emacs prend en charge la complétion de code. Mais pour être honnête, je n'ai jamais été un bon lecteur de FAQ, au moins pour quelque chose que je suis complètement nouveau. Je me demande donc ce que je dois télécharger et comment faire en sorte qu'emacs puisse faire un peu de code intelligent pour moi en C ++ et Java. Ou existe-t-il un package qui effectue l'achèvement du code pour de nombreuses langues principales?
20
complete.el
essayer la bibliothèque standard . Il est très ancien et peu connu, mais le type d'achèvement dans le tampon qu'il fournit peut être utile.M-x find-library complete
, puis lisez le commentaire dans le dossier.La réponse de @ Doug est un peu dépassée et il se concentre sur l'expansion du code en utilisant des extraits de code prédéfinis.
Je pense que la question de l'OP concerne l'intellisense (nom de méthode de remplissage automatique d'une classe, par exemple).
hippie expand était populaire, l'analyseur de syntaxe est des balises emacs . Il prend donc en charge toutes les langues prises en charge par ctags (y compris C ++ , Java). Mais le résultat n'est pas parfait car ctags n'utilise que l'expression régulière pour analyser le code. Voir mon init-hippie-expand.el pour plus de détails. Vous pouvez commencer par vérifier la valeur de
hippie-expand-try-functions-list
l'auto-complétion est moderne avec une interface utilisateur sophistiquée (menu déroulant, même dans la fenêtre de la console). Si vous utilisez clang comme backend. L'intellisense est bien meilleur. Pour faire fonctionner le clang, vous devez installer auto-complete-clang qui est le plugin de l'auto-complétion. Il ne prend en charge que les langages pris en charge (C / C ++ / Obj-C). Comme l'a souligné Sylvain Benner , vous pouvez utiliser emacs-eclim comme back-end d'analyse Java qui appelle en fait l'exécutable d'eclipse. La saisie semi-automatique peut donc prendre en charge java. Voir mon init-auto-complete.el pour plus de détails.
sémantique fournit à la fois l'interface utilisateur et le moteur d'analyse arrière. C'est lent. L'interface utilisateur déroulante est OK mais nécessite une fenêtre X. Le résultat intellisense est meilleur que ctags. Et la documenation est trop geek pour moi. Voir init-semantic.el pour plus de détails.
le mode entreprise est similaire à la saisie semi-automatique, la différence est qu'il regroupe tout en un seul paquet. Par exemple, les développeurs C ++ ont uniquement besoin d'installer le mode entreprise (la saisie automatique nécessite un plugin tiers). Une autre différence d'interface est que la société affichera automatiquement le candidat . Vous appuyez donc moins sur les touches en compagnie. Il est possible de faire la même chose en auto-complétion après personnalisation.
En résumé, la saisie semi-automatique, les entreprises sont les deux choix les plus populaires. Sémantique et hippie-expand sont également les bienvenus mais moins utilisés. D'autres sont trop insignifiants pour être mentionnés et leurs caractéristiques sont déjà couvertes par les quatre grands. Par exemple, la saisie semi-automatique peut utiliser yasnippet comme source d'entrée (la saisie semi-automatique fournit l'interface utilisateur, mais les candidats réels sont produits par le back-end yasnippet).
Je suggère d'utiliser l'auto-complétion ou la société comme plugin majeur de complétion de code et soit sémantique soit hippie-expand comme plugin complémentaire .
J'utilise le mode entreprise et hippie-expand parce que,
Maintenant (année 2017), le mode entreprise est plus activement maintenu que l'auto-complétion et a plus de plugins tiers (par exemple, plugin latex)
hippie-expand n'est pas très actif mais n'occupe pas la
TAB
clé que le mode entreprise / sémantique / auto-complétion utiliseSi vous utilisez le mode entreprise pour C ++ / Java, vous souhaiterez peut-être modifier
company-backends
.Quelques conseils supplémentaires sur le mode entreprise,
Vous devrez peut-être modifier la valeur de
company-backends
. Par exemple, supposons que sa valeur soit(company-eclim company-semantic company-clang (company-dabbrev-code company-gtags company-etags company-keywords))
. Ensuite, sicompany-eclim
peut obtenir des candidats non nuls,company
pense que vous écrivez java, donc il ne fonctionnera PAS aprèscompany-eclim
.Voyons maintenant
(company-dabbrev-code company-gtags company-etags company-keywords)
. Tous ces quatre backends seront utilisés ensemble. Par exemple, même aprèscompany-dabbrev-code
avoir récupéré avec succès des candidats non nuls, les trois autres backends sont toujours exécutés.Dans le monde réel, il est souvent nécessaire de réajuster l'ordre des backends ou d'ajouter un nouveau backend (
company-rtags
par exemple).la source
Réponse courte: je n'en connais aucun pour emacs qui soit utile pour java. Le développement dynamique ne se soucie pas des bibliothèques de votre chemin de classe, il ne sait rien du code que vous saisissez, il ne peut être étendu qu'au texte qui existe déjà dans l'un des tampons. JDE et emacs-eclim essaient de fournir cette fonctionnalité mais personnellement je n'ai pas été impressionné.
la source
Réponse courte:
M-/
Réponse longue: RTFM :-)
la source
C-h r
)C-h k M-/
?