Contexto
Siempre he buscado una manera simple de incorporar diagramas directamente desde Neovim, pero nunca había encontrado una solución sencilla hasta hoy.
Hasta ahora, no tenía un método sencillo para incluir diagramas, así que delegaba ese trabajo a documentación externa al código, usando Mermaid. Aunque estaba satisfecho con los resultados, me preguntaba cómo podría hacerlo más simple. La respuesta vino justamente de mi experiencia con Mermaid.
Anteriormente, había probado soluciones como asciiflow
o venn.nvim
, pero
implican más tiempo del que me gustaría y tomar muchas decisiones. ¿Cuánto
espacio dejo entre cajas? ¿Cuánto texto debo dividir en varias líneas? ¿Cómo de
largas deben ser las flechas? etc.
Usando mermaid me di cuenta que lo que es potente es que no tengo que tomar ninguna desicion estetica (aunque es posible) sobre el diagram simplemente escribir el contenido y mermaid se encarga de darme un output excelente.
Con este concepto en mente, inicié la exploración para crear un convertidor de Mermaid a ASCII, pero rápidamente me decanté por esta solución:
👉 https://github.com/ggerganov/dot-to-ascii
Basicamente esta solución implica escribir el diagrama en dot
y convertirlo a
ASCII. Realiza exactamente la misma función, está implementada y tiene API,
¿qué más se puede pedir?
Implementación
Por lo tanto, empecé a implementar una solución para poder usarla desde Neovim:
Tan solo necesitamos un script simple en Python que realice la solicitud por nosotros (en el propio proyecto nos dan uno script) y un comando Lua que haga uso de este script para convertir el diagrama a ASCII.
|
|
Y aqui el comando en lua
para Neovim:
|
|
Resultado
Ahora puedo escribir algo como lo siguiente en Neovim:
graph {
rankdir=LR;
a -- b -- c
}
Seleccionando esas líneas del diagrama y ejecutando el comando Dot2Ascii
que
he creado, este es el resultado:
┌───┐ ┌───┐ ┌───┐
│ a │ ─── │ b │ ─── │ c │
└───┘ └───┘ └───┘