Juan Castro

5 ideas equivocadas acerca de Emacs

Posted at — Jul 2, 2019

Emacs es mi editor de texto favorito. En un principio me obligué a usarlo solamente por org-mode, pero conforme fui personalizándolo y aprendiendo más sobre su uso, se volvió parte integral de mi trabajo. Hoy día, Emacs es mi editor de texto principal, no solo para org-mode, sino para toda clase de texto plano, además de aprovechar algunos paquetes interesantes como Magit.

A lo largo de mi experiencia con Emacs, he visto varias entradas de blogs, hilos en foros y videos donde hablan acerca de Emacs, generalmente comparándolo con Vim, y recuperan varias razones por las cuales Emacs es un mal editor de texto. Las he leído, y considero que varias de ellas nacen de ideas equivocadas acerca de Emacs, o bien, un desconocimiento de qué es Emacs y como funciona. Así que a continuación quisiera recuperar 5 de esas ideas y por qué considero que están equivocadas, o bien, no dicen toda la verdad acerca de este programa.

1. Para usar Emacs necesitas dominar lisp, un lenguaje que casi no se utiliza y nadie sabe

Es cierto, Emacs se configura con un archivo de elisp, un dialecto de lisp, y es cierto que no es un lenguaje realmente popular. Sin embargo, no es necesario se un maestro de elisp para usar Emacs, así como no necesitas dominar Haskell para usar XMonad, ni ser un maestro en bash para usar Linux. En lo personal, no domino elisp, lo poco que se lo he aprendido copiando y pegado pedazos de código desde foros y blogs. No se requiere ser ningún genio para, por ejemplo, comprender este pedacito de código (que saqué de internet) donde se configura la agenda de org-mode:

(global-set-key (kbd "C-c a") 'org-agenda)
(setq org-agenda-window-setup
      'other-window)
(setq org-agenda-span 7)
(setq org-agenda-start-on-weekday nil)
(setq calendar-day-name-array ["domingo" "lunes" "martes" "miércoles"
                                 "jueves" "viernes" "sábado"])
(setq calendar-month-name-array ["enero" "febrero" "marzo" "abril" "mayo"
                                   "junio" "julio" "agosto" "septiembre"
                                   "octubre" "noviembre" "diciembre"])

Y si no nos gusta editar un archivo de texto, Emacs cuenta con un menú gráfico para configurar Emacs, generalmente invocado con M-x customize RET <paquete>.

2. Emacs es demasiado personalizable, por ello te vuelves "esclavo" de tu configuración, y no puedes usar la de otro usuario

Este argumento (que puede extenderse a cualquier programa, y a muchos aspectos de la vida diaria) me parece algo ridículo. Los sistemas operativos son muy personalizables también, cada quien usa diferentes paquetes, ¿quiere decir eso que solo se usar mi computadora y soy incapaz de usar la de otra persona? Los entornos de escritorio en Linux o los launchers en Android, la mayoría son muy personalizables y cada quien tiene sus aplicaciones en distintos lugares y algunos hasta cambian los atajos de teclado, ¿somos esclavos de su configuración? ¡No! Simplemente personalizas tu experiencia, lo haces más cómodo para ti, finalmente quien se supone que lo usará eres tú, no los demás, pero eso no significa que seas incapaz de usar las configuraciones de otras personas, o que tu configuración sea tan extrema que es como usar un programa totalmente nuevo.

3. Emacs es muy lento, tanto que puedes hacer tu trabajo en <inserte editor de texto> en el tiempo que Emacs tarda en abrir

Aquí si debo darles la razón: Emacs tarda aproximadamente 13 segundos en abrir con mi configuración; sin configuración abre casi inmediatamente pero, vamos, ¿quien usa Emacs sin una configuración personal? Lo que no dicen en estos casos es que existe un comando de Emacs, emacs --daemon que vuelve a Emacs un demonio, y podemos abrir una ventana llamado a emacsclient -c, o emacsclient -t si queremos ejecutarlo en terminal.

Usando el cliente de Emacs no solo se agiliza el tiempo al abrir el editor al ser igual casi inmediato, sino que ahora, si cerramos Emacs, no perderemos nuestro trabajo, basta invocar nuevamente una ventana del cliente y tendremos nuestro trabajo donde quedó, pues en teoría, nunca cerramos Emacs.

A pesar de las ventajas que trae usar el demonio, debo admitir que la obligación de usar un demonio puede no agradar a todas las personas, de todas maneras debemos esperar los mismos 12 o 13 segundos a que el demonio se inicie.

4. Emacs está sobrecargado (bloated), puedes hasta escuchar música, navegar en internet o enviar correos, ¡Hasta juegos tiene! Es más un sistema operativo que un editor de texto

Emacs tiene incluido un gestor de paquetes, desde este gestor de paquetes podemos bajar pequeños programas escritos en elisp, y Emacs se encarga de interpretarlos y ejecutarlos. Podemos considerarlos como extensiones o plugins que otros editores, como Vim o VSCode usan. No es necesario usar paquetes externos o instalarlos de hecho, aunque si es cierto que algunos de ellos mejoran la experiencia. Dicho esto, afirmar que Emacs es un Sistema Operativo es como afirmar que el interprete de Python también es un sistema operativo, pues puedes bajar paquetes con el (pip), y hay paquetes disponibles para muchas cosas.

Lo que si es cierto y me molesta hasta cierto punto, es que el paquete principal trae demasiados paquete inútiles. Entiendo que incluya org-mode, un cliente IRC, hasta un navegador web (bastante bueno, he de decirlo) pero ¿Tetris? ¿Un juego de psicólogo? ¿Solitario? Sería bueno que, al menos, existiera una versión "minima" de Emacs, solo con los paquetes necesarios y dejar al usuario la opción si quiere descargar el juego de Pong.

5. Emacs es un editor de texto

La web de Emacs, lo describe como "un interprete para Emacs Lisp, un dialecto del lenguaje de programación Lisp con extensiones para soportar edición de texto". Es decir, Emacs es un interprete de elisp, no un editor de texto en sí, es más parecido, en su núcleo, al intérprete de Python o Ruby que a un editor de texto. Esto explica porque existen tantos paquetes disponibles en Emacs, y porque hace mucho más que solo editar texto, pues la ambición de Emacs no es editar texto, es ejecutar paquetes escritos en elisp.

Para terminar, quiero decir que estos puntos expuestos aquí no pretenden cambiar la opinión de las personas, o evangelizarlos en el uso de Emacs, simplemente aclarar ciertas ideas que considero no están del todo acertadas. Cada quien puede usar el editor de texto que prefiera y, en mi opinión, el mejor software y el mejor editor de texto es aquel que cumple con tus necesidades y te sientes cómodo con su uso, no el que los demás consideren mejor.