Un desarrollador web comparte su experimento para crear un editor de texto desde cero en el navegador, motivado por la frustración con el software actual y el éxito de herramientas como Sublime Text. El proyecto parte de la idea de que VS Code, basado en Monaco Editor, es un laberinto de elementos
difícil de igualar, lo que deja margen para experimentar sin aspirar a esa referencia.
La primera aproximación renderiza todo el texto sobre un elemento , técnica que obliga a la CPU a repintar a 60–120 fotogramas por segundo y obliga a reimplementar manualmente funciones como posicionamiento del cursor, desplazamiento, selección o deshacer. Aunque logra un desbordamiento con barras nativas mediante un
oculto, el autor descarta esta vía por su nula accesibilidad.
La segunda iteración emplea el atributo contenteditable en modo "plaintext-only" sobre ese mismo
, lo que aporta selección nativa, historial de deshacer y compatibilidad con lectores de pantalla, aunque con problemas de rendimiento en textos largos. La tercera, una convencional, resulta mucho más rápida y permite añadir, mediante <div> superpuestos, resaltado de sintaxis con MicroLighter. El autor señala que la futura API OpaqueRange permitiría llevar los resaltados directamente a la <textarea>, y que Tree-sitter sería la opción robusta para generar el árbol sintáctico. Cierra con una advertencia sobre UTF-16 y un ejemplo con Intl.Segmenter para contar grafemas correctamente.</p>
