HerlockSholmes

distroEmacs

¿Qué es Dired?

En el capítulo anterior se presentaban herramientas para el flujo de trabajo en Emacs por medio de proyectos; en esta entrada se hará una breve introducción al uso del paquete Dired que viene de “Directory editor” y significa Editor de directorios en inglés.

Para revisar un archivo de proyecto, se utiliza Projectile, pero ¿Qué pasaría cuando en vez de abrir un archivo, se abre un directorio?. En esta situación es cuando se invoca el modo Dired, que muestra detalles del contenido en el directorio y permite interactuar con el mismo presionando ( en Emacs () en EViL) para ver más o menos información; si la usuaria desea seleccionar un archivo o directorio, lo puede hacer presionando RET (la tecla Enter en ambas configuraciones de teclado) o se puede mover al directorio anterior presionando ^ (- en EViL).

En caso de que la usuaria quiera cambiar esos atajos de teclado, basta con agregar en ~/.doom.d/config.el lo siguiente:

(global-set-key (kbd "atajo que desee") 'nombre-de-la-función)

Dired nos permite gestionar los directorios tal como se hace desde la terminal, creando, moviendo, borrando o incluso generando symlinks entre los directorios de una manera simple y directa.

Funciones avanzadas de Dired

Para crear un nuevo directorio, basta con presionar la tecla +, lo que abrirá una intefaz de consulta sobre el nombre de este nuevo directorio. Si lo que se quiere es borrar un directorio, se debe marcar con la tecla d y luego eso se presiona x para ejecutar la deleción marcada; si se marca algo accidentalmente, se puede deshacer la selección con u (si es un único archivo) o con U si son todos los archivos los que se quieren dejar de marcar.

Se puede usar s (o en EViL) para ordenar los archivos y directorios según nombre o fecha de modificación, también se le pueden modificar los atributos a directorios o archivos presionando la tecla M (esto mostrará opciones de modificación para lectura y escritura). Modificar las usuarias a las que pertenece un archivo o la carpeta se puede realizar presionando O.

Si la usuaria quiere trabajar con dos buffers abiertos, lo puede hacer con C-x 3 (que corresponde a SPC w v en EViL), moviéndose entre estos buffers con C-x o y luego, para copiar archivos entre dos carpetas con Dired lo único que debe hacer es marcar los archivos a transferir con m para después presionar C que lo ejecutará en el buffer adyacente. Por otra parte, si lo que se quiere es mover archivos, se deben marcar con m y luego presionar R para que se transfieran los archivos o directorios marcados al buffer adyacente.

Finalmente, para renombrar los directorios o archivos, se puede hacer con C-x C-q (i que activa el modo insert de EViL) y, una vez finalizada la edición del nombre, presionar C-c C-c (C-w en EViL) para que se escriba al disco.

Esto no es más que una pincelada de lo que se puede hacer con Dired, una herramienta que facilita la interacción tanto con archivos como con directorios de nuestros proyectos.

#doomEmacs #emacs #dired #distroEmacs #guix

En el capítulo anterior se detalla el inicio rápido de esta configuración dogmática que es Doom Emacs, ahora profundizaremos en el uso de tres herramientas incluidas en esta distribución.

Como somos animales de costumbres, suele ser bueno tener espacios cuyo comportamiento sea consistente; la administración de ese trabajo (documentos de texto, programas de configuración, pequeños y grandes programas creados) también debería tener cierta consistencia. Como Emacs es un editor de texto tan hackeable, hay quienes escriben paquetes para que su utilización sea semejante a los editores más modernos.

Durante estas entradas, utilizaré los atajos por defecto de Emacs y entre paréntesis los que corresponden a EViL. Por ejemplo, para abrir un archivo el atajo es C-x f que significa presionar la tecla Control junto a x y luego, la tecla f (con EViL, sería SPC f . o SPC . donde SPC es la tecla espacio). En Doom Emacs, cuando se presiona C-x o C-c (SPC) se abre un pequeño buffer en la zona inferior de la ventana que permite visualizar las siguientes teclas asociadas a este atajo, mostrando en azul los comandos, y en violeta secuencias que se pueden encadenar (simbolizadas también por un + como prefijo).

En la presente entrada, las usuarias podrán aprender a usar tres herramientas versátiles incluidas en Doom Emacs, la primera de ellas un gestor de proyectos llamado Projectile.

Projectile

Es un gestor de proyectos en los que los directorios marcados por la usuaria son tratados con accesos más directos (por ejemplo usando treemacs). Para estos efectos, la usuaria puede asociar sus proyectos por medio del comando M-x projectile-discover-in-directory (donde M es la tecla Meta o Alt, también se puede presionar Alt gr para que de inmediato se tome como M-x) y luego seleccionando un directorio que contenga los proyectos, así Projectile lo anexará a sus entradas marcadas.

Projectile reconoce los contenidos para un directorio como proyectos si contienen archivos relacionados a git, mercurial, darcs, y bazaar. Si se quiere que reconozca un directorio como proyecto, basta con que ese directorio contenga un archivo vacío llamado .projectile.

Luego de marcar los directorios que la usuaria quiere tener asignados como proyecto, puede acceder a la lista presionando C-c p p (SPC p p) lo que puede tratar para seleccionar directamente archivos en los que esté trabajando.

Así mismo, se pueden especificar un conjunto de directorios en los que projectile puede buscar, si la usuaria así lo estima, puede modificar en su configuración personal accediendo al archivo config.el en el directorio .doom.d (el atajo para esto es C-c f c o SPC f p), ingresando lo siguiente:

(setq projectile-project-search-path ("/Directorio1" "/Directorio2"))

Y luego actualizar mediante M-x projectile-discover-in-path, lo que agregará nuevos proyectos en dichos directorios.

Si bien trabajar en proyectos definidos es siempre útil, también se puede querer visualizar los directorios en los que se está trabajando; una excelente herramienta para esto es Treemacs.

Treemacs

Es un paquete que da visualización a los directorios de trabajo, o a proyectos que uno desee agregar directamente, se puede acceder presionando <f9> o invocando M-x treemacs (SPC o p). Inmediatamente se abrirá un buffer de tamaño 35 caracteres por defecto, que permitirá navegar por los directorios o proyectos que la usuaria haya destacado para su configuración, mostrando la jerarquía de los mismos con fuentes vistosas e íconos.

Finalmente, si se llega a necesitar usar la línea de comandos, Emacs posee un emulador de terminal integrado, llamado EShell.

EShell

Emulador de terminal al que se puede acceder con M-x eshell (SPC o e), como los objetivos de estas entradas no son analizar en profundidad el uso de la shell de Emacs, me remito a decir que es versátil para cuando la usuaria quiere ahorrar tiempo trabajando en su proyecto y (en vez de abrir un nuevo programa) mantiene todo su flujo de trabajo en Emacs, pudiendo cambiar rápidamente entre el archivo en que trabaja y la terminal abierta en Emacs.

#doomEmacs #emacs #projectile #distroEmacs #guix

¿Qué es Doom?

Es una configuración dogmática de Emacs (similar a Spacemacs y Centaur) orientada a usuarias de Vim que quieran experimentar en El editor.

La gran diferencia que tiene con las otras dos distribuciones de Emacs es que contiene menos paquetes que Centaur, e implementa un modo de gestión de la configuración bastante interesante cuando se compara con Spacemacs.

Es posible que esta breve introducción no le haga justicia, pero mi firme compromiso es demostrar mediante estos posts el uso habitual de Emacs en el ambiente de un profesor chileno que adscribe a la ética y política que implica la defensa del software libre.

Doom fue desarrollado por Henrik Lissner quien quería usar extensivamente la capa de compatibilidad con Vi (llamada EViL en Emacs por sus siglas en inglés). Como toda configuración, Doom es dogmática respecto de las opiniones y expectativas que tiene su desarrollador, sin embargo, a diferencia de las dos mencionadas con anterioridad Doom tiene la ventaja de contener una cantidad menor de paquetes por defecto y alentar que sea la usuaria quien decida los paquetes a utilizar.

Cabe destacar que esta instalación y el uso de Emacs es en distribuciones GNU/Linux (puntualmente, el sistema Guix que está usando el autor), por lo que no puedo asegurar su funcionamiento en condiciones diferentes.

Instalación rápida

Lo primero que se debe hacer es tener instalado git y clonar el repositorio desde github:

$ git clone https://github.com/hlissner/doom-emacs.git ~/.emacs.d

Luego debemos cambiar la rama objetivo, ya que la rama master está ligeramente atrasada; usaremos la rama develop. Para eso, debemos entrar en la carpeta .emacs.d con:

$ cd .emacs.d

Y luego hacer el seguimiento de la rama:

~/.emacs.d $ git checkout develop

Doom viene con un script de bash que hará más sencilla la instalación, se puede invocar desde la línea de comandos con lo siguiente:

~/.emacs.d $ sh bin/doom quickstart

Comenzará preguntando si se desean instalar los paquetes, así como crear un entorno propio (env); se sugiere permitir la instalación del paquete all-the-icons para que la apariencia de Emacs sea consistente.

Luego de terminada la instalación, si se arranca Emacs se verá un buffer de inicio característico para esta distribución; al margen de esto, la usuaria ya está lista para utilizar Emacs con este conjunto de paquetes seleccionados por hlissner.

¿Qué hacer si no soy un vimmer?

En el caso que la usuaria no esté familiarizada con Vim (o prefiera usar los atajos propios de Emacs), puede cambiar su configuración personal que se encuentra en el directorio .doom.d dentro de home (si se quiere utilizar Doom como punto de partida para su propia distribución de Emacs, este es el directorio que se recomienda modificar, y no .emacs.d).

En el directorio .doom.d se encuentran tres archivos:

  • config.el (que contendrá la configuración local de la usuaria)
  • init.el (que carga los paquetes al inicio de Emacs)
  • packages.el (que contiene las definiciones de paquetes a utilizar por parte de la usuaria)

Para quienes deseen dejar de lado el uso de teclas de Vim, pueden editar (usando Emacs u otro editor) la parte dentro de .init.el que incluye “evil”, ya sea dejándolo como comentario (agregando “;” al inicio de esa línea) o borrando la línea completa (siendo cuidadosa de no alterar el sangrado de las líneas posteriores).

Una vez hecho esto se cierra Emacs y queda repetir el quickstart de la sección anterior o utilizar el script de la siguiente manera:

~.emacs.d $ sh bin/doom update

Lo que hará que se actualicen los paquetes y se omita esta vez la instalación de todos los paquetes que utilizan EViL.

En la próxima entrada se revisará la gestión de proyectos, el uso de Treemacs y de la EShell.

#doomEmacs #emacs #instalacion #distroEmacs #guix