A resposta de @ Doug está um pouco desatualizada e seu foco está na expansão de código usando trechos predefinidos.
Eu acho que a pergunta do OP é sobre intellisense (nome do método de preenchimento automático de uma classe, por exemplo).
Como o hippie expand costumava ser popular, o analisador de sintaxe é emacs tags . Portanto, ele suporta todos os idiomas suportados pelo ctags (incluindo C ++ , Java). Mas o resultado não é perfeito, porque ctags usa apenas expressão regular para analisar o código. Veja meu init-hippie-expand.el para detalhes. Você pode começar verificando o valor dehippie-expand-try-functions-list
O preenchimento automático é moderno com uma interface de usuário sofisticada (menu suspenso, mesmo na janela do console). Se você usar o clang como back-end. O intellisense é muito melhor. Para que o clang funcione, você precisa instalar o auto-complete-clang, que é o plugin do auto-complete. Ele suporta apenas os idiomas que o clang suporta (C / C ++ / Obj-C). Como Sylvain Benner apontou, você pode usar o emacs-eclim como o back-end de análise de java que realmente chama o executável de eclipse. Portanto, o preenchimento automático pode suportar 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 está OK, mas requer a janela X. O resultado do intellisense é melhor que ctags. E a documentação é muito nerd para mim. Veja init-semantic.el para detalhes.
O modo empresa é semelhante ao preenchimento automático, a diferença é que ele agrupa tudo em um único pacote. Por exemplo, os desenvolvedores de C ++ precisam apenas instalar o modo empresa (o preenchimento automático precisa de algum plug-in de terceiros). Outra diferença de interface do usuário é que a empresa mostrará o candidato automaticamente . Então você pressiona menos teclas na empresa. É possível fazer o mesmo no preenchimento automático após a personalização.
Em resumo, empresa de preenchimento automático, as duas opções mais populares. Semântica e expansão hippie também são bem-vindas, mas menos usadas. Outros são triviais demais para mencionar e seus recursos já estão cobertos 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 o preenchimento automático ou a empresa como principal plug - in de conclusão de código e a expansão semântica ou hippie como plug-in complementar .
Eu uso o modo empresa e expansão hippie porque,
Agora (ano de 2017), o modo de empresa é mantido mais ativamente do que o preenchimento automático e possui mais plugins de terceiros (por exemplo, plug-in de látex)
O hippie-expand não é muito ativo, mas não ocupa a TAB
chave que o modo da empresa / semântico / preenchimento automático está usando
Se você usar o modo de empresa para C ++ / Java, poderá modificar company-backends
.
Mais algumas dicas sobre o modo da 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))
. Então, se você company-eclim
pode obter candidatos diferentes de zero, company
pensa que está escrevendo java, portanto, NÃO executará back-end depois company-eclim
.
Agora vejamos (company-dabbrev-code company-gtags company-etags company-keywords)
. Todos esses quatro back-end serão usados juntos. Por exemplo, mesmo depois de company-dabbrev-code
buscar candidatos diferentes de zero com êxito, os outros três back-end ainda são executados.
No mundo real, muitas vezes é necessário reajustar a ordem dos back-end ou adicionar novos back-end ( company-rtags
por exemplo).
complete.el
tentar uma biblioteca padrão . É muito antigo e pouco conhecido, mas o tipo de conclusão no buffer que ele fornece pode ser útil.M-x find-library complete
, leia o comentário no arquivo.