@ A resposta de Doug está um pouco desatualizada e seu foco está na expansão de código usando snippets pré-definidos.
Eu acho que a pergunta do OP é sobre o intellisense (nome do método auto complete de uma classe, por exemplo).
-
expansão hippie costumava ser popular, o analisador de sintaxe é tags emacs . Por isso, suporta todas as linguagens ctags suporta (incluindo C + +, Java). Mas o resultado não é perfeito porque as ctags usam apenas expressões regulares para analisar o código. Veja meu init-hippie-expand.el para detalhes. Você pode começar verificando o valor de hippie-expand-try-functions-list
O -
auto-complete é moderno e conta com interface de usuário sofisticada (menu suspenso, até mesmo na janela do console). Se você usar o clang como back-end. O intellisense é muito melhor. Para que o clang funcione, é necessário instalar o auto-complete-clang, que é o plug-in do preenchimento automático. Suporta apenas os suportes de linguagem (C / C ++ / Obj-C). Como Sylvain Benner apontou, você pode usar emacs-eclim como o back-end de análise java que na verdade chama o executável do eclipse. Portanto, o preenchimento automático pode suportar o java. Veja meu init-auto-complete.el para detalhes.
-
semântica fornece a interface do usuário e o mecanismo de análise de back-end. É lento. A interface do usuário suspensa é OK, mas requer uma janela X. O resultado intellisense é melhor que o ctags. E a documenação é muito nerd para mim. Veja init-semantic.el para detalhes.
-
o modo de empresa é semelhante ao preenchimento automático, a diferença é que agrupa tudo em um agrupar. Por exemplo, os desenvolvedores de C ++ só precisam instalar o modo de empresa (o preenchimento automático precisa de algum plug-in de terceiros). Outra diferença da interface do usuário é que a empresa mostrará o candidato automaticamente . Então você pressiona menos chaves na companhia. É possível fazer a mesma coisa no preenchimento automático após a personalização.
Em resumo, a empresa de auto-completar é a mais popular entre as duas opções. Semantic e hippie-expand também são bem-vindas, mas menos utilizadas. Outros são muito triviais para mencionar e suas características já são cobertas pelos quatro grandes. Por exemplo, o preenchimento automático pode usar o yasnippet como fonte de entrada (o preenchimento automático fornece a interface do usuário, mas os candidatos reais são produzidos pelo back end do yasnippet).
Sugiro usar preenchimento automático ou empresa como o principal plug-in de complementação de código e semântico ou hippie-expand como plug-in complementar .
Eu uso o modo de empresa e o hippie-expand porque
-
Agora (ano de 2017) o modo de empresa é mais ativamente mantido do que o preenchimento automático e tem mais plug-ins de terceiros (por exemplo, o plug-in do latex)
-
O hippie-expand não é muito ativo, mas não ocupa a tecla TAB
que o modo de empresa / semântico / auto-completo está usando
Se você usar o modo de empresa para C ++ / Java, poderá modificar company-backends
.
Mais algumas dicas sobre o modo de empresa
Você pode precisar ajustar o valor de company-backends
. Por exemplo, suponha que seu valor seja (company-eclim company-semantic company-clang (company-dabbrev-code company-gtags company-etags company-keywords))
. Em seguida, se company-eclim
puder obter candidatos diferentes de zero, company
pensa que você está escrevendo java, portanto, ele NÃO executará back-ends após company-eclim
.
Agora vamos ver (company-dabbrev-code company-gtags company-etags company-keywords)
. Todos esses quatro backends serão usados juntos. Por exemplo, mesmo após company-dabbrev-code
ter buscado candidatos diferentes de zero, os outros três backends ainda são executados.
No mundo real, geralmente é necessário reajustar a ordem dos back-ends ou adicionar um novo back-end ( company-rtags
, por exemplo).