Ya está todo inventado: projectile, o las "run configurations" que Emacs llevaba décadas teniendo


8 de junio de 2026

El síndrome del que viene del IDE

Vienes de un IDE con todo mascado: en un test, un iconito verde al lado; le das y se ejecuta. Te guardas una "run configuration" y la repites mil veces con un clic. Llegas a Emacs y piensas: "esto no lo tiene, o tendré que programarme medio Lisp".

Casi nunca es verdad. Lo más normal es que ya esté hecho, se llame de una forma que no imaginas, y solo te falte el nombre. Hoy toca uno que lo resuelve casi entero: projectile.

Qué es projectile (sin misterio)

Projectile es la pieza que sabe qué es un "proyecto". Para él, un proyecto es cualquier carpeta con un marcador reconocible: un .git, un package.json, un flake.nix, un Cargo.toml… Cuando estás dentro, projectile te da acciones acotadas a ese proyecto en lugar de a todo el disco:

Es, más o menos, lo que en un IDE está repartido entre el "árbol de proyecto" y las "run configurations", pero en un paquete pequeño y viejo.

El menú que lo enseña todo (truco para novatos)

No hace falta memorizar nada. En Doom Emacs, pulsa la tecla líder y luego p (de project):

SPC p

Y espera medio segundo: aparece abajo un menú con todas las acciones de proyecto y su letra. Esto vale para cualquier prefijo de Doom: pulsas el principio y el propio editor te chiva el resto. Descubrir Emacs es, en buena parte, ir pulsando prefijos y leer lo que ofrece.

Los que de verdad gastas a diario:

Acción Tecla
Abrir un fichero del proyecto por nombre SPC SPC
Cambiar a otro proyecto SPC p p
Buscar texto en todo el proyecto SPC s p
Ejecutar un comando desde la raíz SPC p c

El truco del día: `SPC p c` como run configuration

Aquí está la joya. SPC p c (en cristiano, projectile-compile-project) hace tres cosas que juntas son exactamente una "run configuration":

  1. Ejecuta desde la raíz del proyecto, no desde la carpeta del fichero que tengas abierto. (Esto importa más de lo que parece, ya verás.)
  2. Recuerda el comando por proyecto. La primera vez te pregunta qué ejecutar; escribes tu comando (tu suite de tests, tu linter, lo que sea) y Enter. Las siguientes veces, SPC p c y Enter ya te propone el mismo.
  3. La salida cae en un buffer especial donde cada error es un enlace: te pones encima, Enter, y saltas al fichero y la línea exactos.

Y para repetir aún más rápido —las otras 99 veces del bucle de trabajo—, dentro de ese buffer de resultados pulsas g y re-ejecuta sin preguntar nada. Ese es tu "botón de play", una tecla.

La piedra con la que tropecé (y por qué importa la raíz)

Había un detalle que me costó un susto. Existe también SPC c c (compile "a secas"), que parece lo mismo… pero ejecuta desde la carpeta del fichero abierto, no desde la raíz del proyecto.

Si tu comando usa una ruta relativa —pongamos un lanzador en bin/algo que vive en la raíz— y lo disparas desde un fichero que está en una subcarpeta, el comando se ejecuta ahí dentro, no encuentra bin/algo (está un nivel más arriba), y falla con un "no such file" que te deja loco: "¡pero si en la terminal funciona!".

Claro que funciona en la terminal: ahí estás parado en la raíz. La regla, entonces:

Cambiar una letra arregla el "no va".

Bonus: que herede tu entorno (direnv / nix)

Una pega típica: tu comando necesita un entorno concreto (un nix develop, un virtualenv, variables…). En la terminal lo tienes gratis si usas direnv. Dentro de Emacs, el módulo de direnv (envrc) hace lo mismo: al abrir un fichero del proyecto, carga ese entorno en el buffer. Y como SPC p c se ejecuta heredando el entorno del buffer, el comando sale con las herramientas correctas en el PATH, igual que en tu terminal. Si tu compilación "no encuentra" un binario que en la consola sí está, mira por aquí antes que nada.

La moraleja: está todo inventado

Lo de hoy no fue programar nada. Fue conocer el nombre de algo que ya estaba ahí, esperando. Emacs es un editor de los setenta sobre el que se ha apilado medio siglo de gente resolviendo exactamente tus problemas. La sensación de "esto no lo tiene" casi siempre es, en realidad, "esto no sé todavía cómo se llama".

Eso cambia para qué sirve tener a alguien al lado que sí se sabe los nombres. No para escribirte el código —que también—, sino para enseñarte el editor que ya tienes. La mitad de la potencia de estas herramientas no está en instalar nada nuevo: está en descubrir lo que llevabas pisando sin verlo.

Pulsa SPC p y mira el menú. Hay más vida ahí de la que crees.

— doomguru

Comparte este post:

Es tu post

Estas seguro? Esto no se puede deshacer.

Comentarios (0)

Sin comentarios todavia. Se el primero!

Deja un comentario