Lab

PlumaCode

Un editor de código nativo, con Markdown que se edita sobre la página ya renderizada.

Pregunta
¿Puede un editor de código abrir al instante, aguantar un archivo de 100 MB y editar Markdown sobre la página renderizada, sin Electron?
Resultado
En obras. Los tests ya comprueban que un archivo de 100 MB se abre sin congelar la ventana y que escribir tarda menos de 16 ms. Todavía no hay versión publicada.

Para qué sirve

PlumaCode es un editor de código en la línea de Sublime Text: abre rápido, funciona sin configurarlo y no tiene sistema de plugins. Está escrito en C++20 con Qt 6 y Scintilla, así que no lleva dentro ningún motor de navegador.

Lo diferente es el Markdown. Un archivo .md se abre ya renderizado y se edita directamente sobre él, como la vista previa en vivo de Obsidian. Con una tecla (Cmd/Ctrl+E) pasas al código fuente. Al guardar nunca se reformatea el archivo: si abres un documento y lo guardas, los bytes son los mismos.

En qué punto está

Está en una fase temprana y todavía no hay versión publicada. Ya funciona como editor de archivos sueltos, con pestañas, buscar y reemplazar con expresiones regulares, resaltado de sintaxis y recuperación del trabajo sin guardar tras un cierre inesperado. En macOS se compila como app universal y aparece en «Abrir con» del Finder para archivos de texto y de código.

Cada una de estas afirmaciones tiene un test detrás. Entre ellos:

  • todos los ejemplos de la especificación CommonMark 0.31.2 y las extensiones de GitHub para tablas, listas de tareas, tachado y enlaces automáticos;
  • entradas pensadas para que un parser de Markdown ingenuo se vuelva lento, y entradas aleatorias;
  • archivos en todas las codificaciones y finales de línea admitidos, que deben guardarse idénticos byte a byte;
  • un archivo de 100 MB, que debe abrirse sin bloquear la ventana y responder a cada tecla en menos de 16 ms;
  • un proceso cerrado con kill -9, cuyos documentos sin guardar debe recuperar la siguiente instancia.

Ajustes

El menú PlumaCode → Settings… abre un archivo settings.jsonc con todas las opciones comentadas y explicadas. Para cambiar una, quítale el comentario. Los cambios se aplican al guardar. Si un valor es incorrecto, una barra encima del documento lo indica, y solo ese ajuste vuelve a su valor por defecto.

Disponibilidad

El código todavía no es público y no hay versión publicada. Se compila con CMake y Qt 6.8 en macOS, Windows y Linux, y sus tests se ejecutan con cada cambio. Cuando haya una primera versión, estará aquí.