YouTube Odysee

§¿Qué es Emacs?

Emacs es una pieza de software muy vieja.

§Una mala aproximación a la pregunta

Voy a proponer algunas posibles respuestas a la pregunta. Cabe aclarar que estas respuestas no son incorrectas, sólo son incompletas.

§Un editor de textos

Originalmente, Emacs fue creado para editar textos de manera visual en la pantalla de la terminal (estamos hablando de la segunda mitad de la década de los 70s).

Por el mismo tiempo surgió el editor vi para los sistemas tipo Unix, y tenía en común con Emacs que también permitía ver en pantalla el archivo que se estaba editando.

(Ya veremos más sobre las diferencias entre ambos editores y la «guerra» de editores que desataron).

§Un IDE

Un IDE (Integrated Development Environment) es una herramienta mucho más avanzada que un editor de texto (aunque incluye editores de texto), ya que debe integrar también otras herramientas necesarias para el desarrollo de software con determinado lenguaje de programación.

Emacs, a pesar de ser un editor, también es posible configurarlo como un IDE altamente capaz de competir con la gran mayoría de los que están disponibles en el mercado. Aún así, suele tener algunas inconveniencias para ello, ya que requiere de configuraciones que pueden no ser sencillas para el que acaba de iniciar en el uso de Emacs.

§Un cliente de correo electrónico

¡Un momento! Eso suena a herejía: ¿cómo va a ser que un editor de texto también pueda funcionar como lector de correo electrónico? Eso no es compatible con la filosofía de Unix: «Haz una tarea y hazla bien».

Pero es cierto. De hecho, Emacs tiene varios paquetes que pueden utilizarse como lectores de correo electrónico. Algunos vienen incluidos con todas las versiones recientes (al menos 20 años de antigüedad), y otros se pueden instalar.

Y la verdad es que no son nada malos, al contrario, como lectores de correo son excelentes. Pero, al igual que con el caso anterior, toda configuración requiere algunos conocimientos con el uso de Emacs.

§Un cliente de IRC

Sí. También herramientas de comunicación interactiva en tiempo real.

Y no sólo IRC. La verdad es que la lista de este tipo de paquetes es tan grande que no me cabe en este documento.

Pero, de nuevo, requiere alguna habilidad con Emacs.

§La respuesta correcta

Es cierto que Emacs es todo lo anterior y mucho más. ¿Entonces por qué no es la respuesta correcta?

Porque Emacs en realidad es un intérprete de emacs-lisp que se puede utilizar para crear un ambiente de trabajo para interfaces textuales (basadas en texto).

Y ese es verdaderamente el poder de Emacs, ya que si conoces un poco de emacs-lisp puedes hacer que Emacs se comporte y haga prácticamente lo que tú quieras que haga, lo cual incluiría todo lo anterior y mucho más.

§¿Para qué sirve Emacs?

Pues, para editar textos.

§Desarrollo de software

Pero también sirve para desarrollo de software.

Recordemos que los creadores de Emacs son programadores, y por lo mismo les interesa que su editor de textos sea capaz de ayudarles en tareas relacionadas con la programación.

En este sentido, Emacs ha crecido de manera increíble a lo largo de las décadas que tiene de vida. Prácticamente existen paquetes que te ayudarán a programar con mayor comodidad y eficiencia en casi cualquier lenguaje de programación.

—¿Y qué me dices de bases de datos?

Las versiones de prueba y desarrollo de Emacs ya tienen implementado el acceso a bases de datos SQLite, de modo que esas bases de datos se puedan accesar y modificar sin necesidad de instalar software extra (quizá algunos paquetes de Emacs).

Además, existen paquetes para interactuar con otras bases de datos (siempre y cuando ellas tengan implementado un REPL, una interfaz de línea de comandos, y resulta que la mayoría lo tienen).

§Escritura en general

No obstante, no todo lo relacionado a editar achivos es para fines de desarrollo de software.

También se pued utilizar para la escritura creativa.

—Claro, un archivo de texto plano puede contener un cuento o un poema —me dirán algunos—. ¿Pero qué me dices de obras de teatro, libretos para cine, libros enteros, novelas, manuales, presentaciones…? Eso es más complicado que un simple archivo de texto plano.

Bueno, como respuesta a esos desafíos, puedo decirles que Emacs es capaz de todo eso y mucho más. Y sí, puede utilizar archivos de texto plano para ello.

§Organización de proyectos

Org. Este paquete es uno de los más poderosos que han sido desarrollados para Emacs. Mucho de lo anterior (quizá todo ello) se puede hacer con este paquete.

Además, Org puede ayudar a organizar los proyectos (de desarrollo o de cualquier otro tipo) tanto con agendas, calendarios, recordatorios, captura de notas, medición de tiempo invertido en alguna tarea, y mucho más.

Haría falta una serie de presentaciones sólo para rascar la superficie de lo que se puede hacer con Org en Emacs.

§¿Cómo puedo conseguir Emacs?

Si te interesa obtener una copia que puedas instalar en tu sistema, te alegrará saber que Emacs está disponible en todos los principales sistemas operativos:

§GNU/Linux (en todas sus distribuciones)

Este sistema operativo ha sido desarrollado por el proyecto GNU, utilizando el kernel Linux (desarrollado independientemente por Linus Torvalds y un montón de programadores al rededor del mundo).

Se recomienda que utilices el manejador de paquetes de tu distribución, para no tener problemas de dependencias con distintas librerías.

Algunas instrucciones útiles aquí.

§BSDs que aún están en uso y desarrollo

Estas serían: FreeBSD, OpenBSD, NetBSD, MidnightBSD, MirOS BSD, GhostBSD, Darwin (la base para macOS) y DragonFly BSD.

Estas distribuciones son los descendientes directos de BSD (Berkley Software Distribution) Unix, que fueron licenciados por AT&T™ para utilizar su sistema operativo y distribuirlo con fines no comerciales.

Por supuesto, que está disponible en estos sistemas operativos libres.

§Android™ (linux)

Android es un sistema operativo para móviles y tablets (originalmente pensado para cámaras) que utiliza el kernel Linux.

Personalmente nunca he instalado Emacs en Android, pero sé que es posible hacerlo por medio de una combinación de busy-box, tmux, y emacs (instalado desde busy-box).

Sin embargo, existe una app nativa para Android. Puedes conseguirla aquí.

§Windows™

Si bien es el sistema operativo de escritorio más utilizado en el mundo, no es el más amigable con los desarolladores.

Aún así, la gente del proyecto GNU han sido generosos y han habilitado a los usuarios de este sistema operativo a instalar Emacs de manera nativa.

Puedes conseguirlo aquí.

§MacOS™

Este es un sistema opeativo muy popular que está basado en Unix por medio de NeXTSTEP. Suele ser popular entre desarolladores, diseñadores gráficos, animadores, y gente en general que no quiere batallar con los constantes fallos del sistema operativo de Microsoft™.

Puedes conseguirlo aquí.

§¿Cómo puedo probar Emacs?

§Ejecutarlo

Sencillo: Instala Emacs y ejecútalo.

Si no lo encuentras entre las aplicaciones de tu sistema operativo, puedes abrir una terminal (no le tengas miedo) y teclear lo siguiente:

emacs

O, si estás utilizando windows:

run-emacs

(No olvides presionar ENTER al final de la línea).

§Capturas de pantalla

Deberás ver una ventana similar a estas (dependiendo del tema que utilice tu sistema):

§Tema claro

emacs-light.png

§Tema oscuro

emacs-dark.png

§Configuración

Si quieres una experiencia más agradable, te puedo recomendar doom-emacs (https://github.com/doomemacs/). Es una configuración muy pulida.

Otra configuración bastante pulida es spacemacs (https://www.spacemacs.org/). Esta la probé hace muchos años y no conozco mucha gente que la utilice: la mayoría prefiere doom-emacs.

También está crafted-emacs (https://github.com/SystemCrafters/crafted-emacs). Esta configuración ha sido creada por un conjunto de usuarios de Emacs en base a algunas ideas expresadas por David Wilson en su canal de YouTube System Crafters (https://youtube.com/@SystemCrafters). Yo mismo llegué a hacer algunas contribuciones a ésta.

Si te interesa algo más sencillo, te recomiendo mi propia configuración: https://git.sr.ht/~abarocio80/simple-emacs. Esta toma algunas ideas de crafted-emacs, pero con un toque más personal.

§¿Y ahora qué?

En los siguientes videos explicaré cómo comenzar a utilizar emacs como un editor de textos.

Más adelante explicaré también cómo configurarlo por medio de emacs-lisp.

Si te interesa este tipo de contenido, suscríbete al canal y activa las notificaciones para que (tarde o temprano) te enteres de los nuevos videos que vaya subiendo.

Puedes acceder a mis notas en mi repositorio: https://git.sr.ht/~abarocio80/videos/tree/master/item/content/0x0001--introduccion_a_emacs.org