HeadlinesBriefing favicon HeadlinesBriefing.com

Einen benutzerdefinierten Texteditor von Grund auf neu erstellen

Hacker News •
×

Inspiriert von der Frustration über die Qualität moderner Software und der Aussage 'They don't make 'em like Sublime Text anymore', begab sich der Autor darauf, einen benutzerdefinierten Texteditor zu bauen. Die Reise untersucht drei Rendering-Ansätze: <canvas>, contenteditable und <textarea>.

Das initiale <canvas>-Experiment erreichte eine Renderleistung von 60–120 FPS, fehlte jedoch an nativer Interaktivität. Die Implementierung grundlegender Funktionen wie Cursorpositionierung, Eingabe und Zeilenhervorhebung offenbarte fehlende Essentials: Textauswahl, Undo/Redo und Überlaufscrollen. Eine hybride Lösung mit einem versteckten <div> für native Scrollberechnungen verbesserte das Scrollen, doch <canvas> blieb grundsätzlich unzugänglich.

Der Wechsel zu contenteditable="plaintext-only“ brachte native Auswahl, Undo-Historie und Barrierefreiheit kostenlos. Die Selection-API ermöglichte benutzerdefinierte Cursordarstellung, obwohl die Leistung bei größeren Dateien unvorhersehbar abfiel, insbesondere in Chromium.

Schließlich erwies sich der <textarea>-Ansatz als deutlich leistungsfähiger für längeren Text. Syntaxhervorhebung wurde über eine dritte Ebene mittels Micro Lighter hinzugefügt, obwohl die neue Opaque Range API möglicherweise natives Highlighting ermöglichen könnte. Der Autor weist darauf hin, dass Tree-sitter und virtuelles Scrollen die Robustheit verbessern könnten, aber räumt ein, dass die aktuelle Demo „90 % eines Texteditors mit 1 % der Funktionen“ darstellt.

Wichtige Entitäten: Unternehmen: Apple, Chromium, Web Kit, Firefox