Configuración avanzada de Eglot en Emacs para Scala y Kotlin

Fuentes: Emacs Eglot for Scala and Kotlin (JVM)

Artículo técnico que detalla una configuración de producción de Eglot, el cliente LSP integrado por defecto en Emacs desde la versión 29, orientada al trabajo diario con Scala, Kotlin y algo de Java. El autor, integrante de la configuración heks-emacs, defiende que Emacs, frente a IntelliJ IDEA, ofrece una experiencia más ligera, rápida y hackeable para lenguajes JVM gracias a tres pilares: la filosofía Unix aplicada al LSP mediante JSON-RPC, la capacidad de modificar el comportamiento en caliente con unas pocas líneas de Emacs Lisp, y una interfaz unificada válida para cualquier modo o lenguaje.

La configuración se articula sobre use-package y Elpaca. Eglot se inicia automáticamente mediante eglot-ensure en scala-ts-mode, kotlin-ts-mode y otros modos Tree-sitter y clásicos, con autoformato antes de guardar y atajos bajo el prefijo C-c i con mnemotecnia “IDE” (implementación, rename, code actions, inlay hints, etc.). Entre las opciones clave figuran eglot-autoshutdown, eglot-extend-to-xref y eglot-connect-timeout 60.

Para Scala se ajusta el servidor Metals con 4 GB de heap, recolector ZGC y opciones de inicialización que activan el protocolo HTTP. Para Kotlin se emplea el servidor intellij-server en modo stdio. El bloque eglot-workspace-configuration actúa como un settings.json universal con parámetros específicos para Metals (inlay hints selectivos, super method lenses, highlighting semántico), Haskell (ormolu), TypeScript/JavaScript, rust-analyzer, YAML con esquemas JSON y Nix (nixfmt). El texto incluye además referencias a hooks, workarounds JSON-RPC y advice-based para casos avanzados.