Emacs a-t-il une fonction ou une bibliothèque qui peut permettre à l'utilisateur d'accéder à la déclaration de fonction même si elle a été définie dans un autre fichier?
Si oui, pour quelles langues est-il pris en charge?
L'inspiration pour cette question vient de l'article ci-dessous qui parle de certaines des raisons pour lesquelles emacs ne pourra jamais rivaliser avec les IDE.
http://henrikwarne.com/2012/06/17/programmer-productivity-emacs-versus-intellij-idea/
irony-clang
à cette fin. Avez-vous lu les commentaires sur l'article?Réponses:
Vous pouvez passer à n'importe quelle définition / référence de projet entier aussi grand que l'arbre source du noyau Linux (plus de 36k) en un instant. Voir mon guide C / C ++ pour plus de détails. Pour C / C ++, je suggère d'utiliser GNU Global qui prend en charge C, C ++, Yacc, Java, PHP4 et l'assemblage.
La clé est, si vous voulez avoir des fonctionnalités IDE d'une langue, vous devez installer le plugin de cette langue. Voici quelques packages pour les langages dynamiques que je connais:
js2-mode
fait, voir la description ; mais en substance,js2-mode
c'est un analyseur Javascript complet qui génère un AST pour faire les fonctionnalités IDE appropriées. Si vous installezskewer-mode
que vous aurezjs2-mode
par défaut, car celaskewer-mode
dépend.Vous pouvez également utiliser
ctags
pour prendre en charge de nombreux langages tels que le script shell ou Tcl ...la source
j2-mode
j'ai édité dans ma réponse.anaconda
peut être une solution plus spécifique pour le saut de définition en Python.J'ai rencontré un problème similaire avec emacs, alors j'ai créé Dumb Jump . J'ai essayé de nombreuses solutions mentionnées dans la réponse acceptée, mais j'ai toujours rencontré un ou plusieurs des problèmes suivants:
Je voulais vraiment une solution qui "marchait juste" et ne nécessitait ni personnalisation ni configuration. Autrement dit, je voulais cloner un dépôt aléatoire sur Github et naviguer autour de lui comme n'importe quel autre de mes propres projets.
À l'heure actuelle, Dumb Jump a un support de base pour:
Il est disponible via les numéros MELPA et GitHub et les RP sont plus que bienvenus.
la source
La principale solution pour cela dans emacs utilise des fichiers TAGS, qui sont créés par des programmes tels que etags ou gtags. J'utilise moi-même (et recommande) des ctags exubérants et etags-select.el pour vous aider à affiner les destinations lorsque le symbole de recherche se trouve dans plusieurs destinations. Les langues prises en charge sont assez nombreuses, voir les manuels des outils individuels. Il est même possible d'ajouter votre propre langue, grâce à laquelle vous pouvez fournir une expression régulière qui indique aux ctags comment isoler les balises qui vous intéressent.
la source
ctags -e -R *
à partir du répertoire racine le configurera pour vous.