O emacs possui uma função ou biblioteca que pode permitir que o usuário acesse a declaração de função mesmo que tenha sido definida em outro arquivo?
Em caso afirmativo, para quais idiomas há suporte?
A inspiração para esta pergunta vem do artigo abaixo, que fala sobre algumas das razões pelas quais o emacs nunca será capaz de competir com os IDE.
http://henrikwarne.com/2012/06/17/programmer-productivity-emacs-versus-intellij-idea/
irony-clang
para este fim. Você leu os comentários no artigo?Respostas:
Você pode pular para qualquer definição / referência de projeto inteiro do tamanho da árvore de origem do kernel Linux (mais de 36k) em um instante. Veja meu guia C / C ++ para obter detalhes. Para C / C ++, sugiro usar o GNU Global que suporte C, C ++, Yacc, Java, PHP4 e assembly.
A chave é que, se você deseja ter os recursos IDE de um idioma, é necessário instalar o plug-in desse idioma. Aqui estão alguns pacotes para linguagens dinâmicas que eu conheço:
js2-mode
faz, veja a descrição ; mas, em essência,js2-mode
é um analisador Javascript completo que gera um AST para executar os recursos IDE adequados. Se você instalar oskewer-mode
que você terájs2-mode
por padrão, uma vez queskewer-mode
depende disso.Você também pode usar
ctags
para suportar muitas linguagens, como shell script ou Tcl ...fonte
j2-mode
eu editei na minha resposta.anaconda
pode ser uma solução mais específica para o salto de definição em Python.Eu tive um problema semelhante com o emacs, então fiz o Dumb Jump . Tentei muitas das soluções mencionadas na resposta aceita, mas sempre encontrava um ou mais dos seguintes problemas:
Eu queria muito uma solução que "apenas funcionasse" e não exigisse personalização ou configuração. Ou seja, eu queria clonar um repositório aleatório no Github e navegar por ele como qualquer outro projeto meu.
No momento, o Dumb Jump tem suporte básico para:
Está disponível através de questões MELPA e GitHub e PRs são mais que bem-vindos.
fonte
A principal solução para isso no emacs é usar arquivos TAGS, criados por programas como etags ou gtags. Eu mesmo uso (e recomendo) ctags exuberantes e etags-select.el para ajudá-lo a restringir destinos quando o símbolo de pesquisa estiver em vários destinos. Os idiomas suportados são bastante numerosos, consulte os manuais das ferramentas individuais. Existe ainda suporte para adicionar seu próprio idioma, no qual você pode fornecer uma expressão regular que instrua ctags como isolar as tags nas quais você está interessado.
fonte
ctags -e -R *
do diretório raiz o configurará para você.