Fine, I'll build my own text editor

(dbushell.com)

55 points | by Alephinitesimal 13 hours ago

14 comments

  • tzs 30 minutes ago
    Sometime around 1980-81 I had a part time job while an undergraduate in college doing system programming/admin for the Caltech High Energy Physics department.

    Rob Pike was the system programmer/admin before me when he was a grad student in high energy physics, but he left to go work at Bell Labs.

    One day another student, Karl Heuer, and I both were engaging in the common programmer pastime of complaining about the screen editors of the day and saying we could write something better.

    Somehow this turned into a competition, and we both spent all night racing against each other writing our editors. It was mostly silent except for the typing, interrupted by the occasional announcement of some feature that was now working to hopefully rattle the other.

    In the morning the other student system programmer/admin, Norman Wilson, got in and saw what Karl and I had been up to.

    Norman mentioned this in an email to Rob Pike. His response was something close to this:

    > Everyone writes a screen editor. It's easy to do and makes them feel important. Tell them to work on something useful.

    It was only a couple years or so later that Rob Pike wrote a screen editor. I wonder if it made him feel important? :-)

    • bigiain 23 minutes ago
      I was hoping for this to end with "I wrote emacs, and Karl wrote vi."
      • LtWorf 6 minutes ago
        If Rob Pike is in the story, it happened like yesterday.
  • akersten 48 minutes ago
    Yes, who would have guessed that the <textarea> element, designed specifically for this use case and built into browsers for 3 decades, would be the most performant and behaviorally consistent way to implement editable text.

    I'm kind of sad the author stopped shedding unneeded complexity there though... we're not really building a text editor yet, we're building a website with a fancy input field. If we want to build a proper text editor we must eschew the bloat that is the web browser too.

  • pmkary 1 hour ago
    Text editors are like mechanical watches or fountain pens. There is just so much beauty in the machinery that makes them. For me, there are hardly any other modules that are this satisfying to watch being made. Each time I find a new one (a good one like this), with everything on ropes and rendering and I-beam placement computations and ... it feels like a Christmas gift.
    • pmkary 1 hour ago
      Just what part of this comment deserved to get a -1 point leaves a whole universe of imagination to me and no answer :/
      • ameminator 1 hour ago
        Sometimes people down vote for no reason. Unfortunately, when one complains about it, they look like a whiner.
        • wolletd 5 minutes ago
          That's because they are whining about worthless internet points.
      • pmkary 1 hour ago
        Literally I only praised and wrote how much I love something and how beautiful text editors are. And there are people who cannot stand this :))) oh wow!
        • qsera 31 minutes ago
          Seriously. What is so beautiful about text editors? (I am not the downvoter btw).
      • roarcher 1 hour ago
        A word of unsolicited advice: HNers are a prickly lot and will downvote without explanation because you stepped on some unknowable pet peeve of theirs that probably nobody else in the world shares. This happens all the time but you likely only notice when you happen to get downvoted before any upvotes and end up at 0 or -1. If your comment is reasonable, it will usually come back up.

        But complaining about downvotes will certainly earn more of them.

        • jasonkester 48 minutes ago
          Don’t forget the old “downvote the other comments so mine goes to the top “ trick.

          All your best stuff will get downvoted by at least somebody eventually. For some reason, that somebody always gets in early enough that you notice.

        • card_zero 34 minutes ago
          I don't think that's certain at all. What affects votes is:

          1. Being near the top of the page

          2. Having a downvote already

          You can curtail the bandwagon effect by complaining.

      • CamperBob2 17 minutes ago
        It's unfortunately all too easy to hit the downvote arrow when you're aiming for the other one, especially for people using touchscreens.

        I don't know who thought it was a good idea to put those character-size icons on adjacent lines, or who thinks it's a good idea to leave them there, but... this is one of those cases where it's better to assume it's an accident rather than an attack.

        It's also true that there are a lot of asshats^H^H^H^H^H^H^H empty boats around here, but the above advice still applies, I think.

      • fsckboy 47 minutes ago
        i didn't downvote it but I thought it was pretty empty. "how do i love thee, let me count the ways" has been done before, and his love was more interesting than that you like text editors generically, and you don't mention anything you like. I'm not in favor of more poesy in tech circles.

        i like text editors but I feel they contain "everything but the kitchen sink" (if you know you know) and that makes them somewhat impenetrable and difficult to modify and bend to new purposes even though they contain so much capability and potential, and the people who do understand them think it's a good idea to drag and drop an URL and have that do a web transaction and download a buttload of text, when what I wanted was just the text... of the url. I'm sure there's some way to turn it off, but instead there should be some way to turn it on. Oh yeah, worse when it's a jpg url, guess what they do with that.

        in another direction, the point of markdown was to be editable and readable in source form, not to be a replacement for rendered HTML, but the same people who ruined HTML by overloading it are now fully engaged in ruining markdown by overloading it and making it unreadable in source form.

  • stillpointlab 41 minutes ago
    I literally just got Fable to write me a text editor. Well, I'll be honest, I got it to wrap the KDE KTextEditor library which is like 90% of a text editor.

    I had been using Kate which was what an LLM suggested was the closest to something like Sublime Text on Fedora. But even Kate, which was great, had too much going on.

    So I asked Fable to take the text editor part (KTextEditor) and wrap it using Rust with an LSP server. It took about 2 days but I have a tiny, super fast little editor. I use Sway to manage things like tabs, fuzzel stands in for fuzzy file search, broot stands in for an explorer view. I've already added Markdown preview support. I might get around to some basic git integration.

    Then I got it to turn that little editor into a note-taking interface that I have bound to a Mod-m key binding to keep notes in ~/Notes.

    We live in wild times. I hope everyone is taking advantage while they can.

    • brailsafe 21 minutes ago
      > We live in wild times. I hope everyone is taking advantage while they can.

      Yep, I'm taking advantage of the times by using the exact same tools I have been for years, and if those fail me, I'll pay for one of the multitude of other high quality editors offered by companies who's business it is to make them, so I get back to writing things in them instead of paying even more to companies trying to persuade me to believe that those products are obselete.

      • stillpointlab 4 minutes ago
        No shade on keeping using what is working. I was moving from Windows to Linux Fedora so I was in the market for a new editor. VSCode just wasn't working for me any more.

        I considered a bunch of options, including vim or neovim or lazyvim, emacs, newer projects like zed. LLM gave a few more I can't recall including helix and Kate. There are so many good options these days, we're all spoiled for choice.

        But the main thing is, and YMMV, I am not writing a lot of code anymore. I'm mostly reading/searching/navigating. So all of the powerful editing features are lost on me. No editors really match my current workflow, they all have too much.

        So this was an opportunity to try something out, to experiment. See if I could do the real-deal vibe coding thing and judge the result. I just said "I want it to do ..." and then a few minutes later it did. I repeated this until it did enough to use as my primary editor.

        I don't recommend it for anyone else, nor do I expect people to agree. Just describing my thought process.

    • inatreecrown2 32 minutes ago
      do you want to share your text editor?
      • stillpointlab 21 minutes ago
        I was planning to. It is 100% vibe coded, the first project I did that way. I'm one of those who've been reading all the code in my major projects. But when I got frustrated with editors and off-handed mentioned to Fable something like "I like Kate, but it has way too many option I will never use" it told me that the core part could be wrapped pretty easily (like 50 lines of C++).

        So I just said "do it" and have been merging everything without reading a single line. It wrote all the specs, wrote all the code, wrote all the tests. I just got it to write out a tutorial to take me on a tour of the code it wrote, but I haven't reviewed it yet.

        I will push it as OSS once I've made sure it hasn't included anything that I don't want public. But it wouldn't be super useable for anyone else since many of the features (e.g fuzzel and broot) are glue that exists in the Sway configs and some helper scripts.

        It's held together by bubble gum and scotch tape. But is does exactly what I want and so far without a single bug, crash or problem. It's my frankenstien editor and I love it. (disclosure: I've been using it for less than a week)

      • boxed 30 minutes ago
        I also had Claude write me an IDE: https://github.com/boxed/TurboKod

        It's obviously not for everyone, but if you fork that repo and prompt your favorite model to make it look and feel like you want, you can get something extremely useful very fast.

  • jdw64 2 minutes ago
    There used to be a joke that said, 'A great programmer should try building a text editor.'
  • dang 2 hours ago
    Recent and related:

    They don't make 'em like Sublime Text anymore - https://news.ycombinator.com/item?id=49209354 - Aug 2026 (13 comments)

    • asabla 1 hour ago
      I used sublime text over so many years. Still find it to be a marvel when it comes to large text files, and how well it still handles them
      • cwnyth 49 minutes ago
        I still don't see a point in switching from Sublime to VS Code. If I need to SSH in to my server, I have options there. But Sublime does everything I need it to do and it does it faster and cleaner and just better than the alternatives.
  • nottorp 1 hour ago
    There really is a fps counter on there.

    Is the experiment seriously rendering continuously in a loop?

  • vintermann 25 minutes ago
    I still miss NEdit.

    Around 2001 when I started getting into Linux seriously, I was also reading a lot about cults - Scientology had recently, infamously, forced Slashdot to take down a comment about their secret practices.

    One of the things I read was that a common cult trick was to demand that people re-learn basic skills so that they do them the "right" way, like reading (Scientology did that), eating (chew X times!), using the phone etc.

    So here's this system that demands I need to learn basic text editing all over? Nope, not joining that cult! We Amiga kids had had graphical editors for a long time!

    So I got the best modern text editor Linux had at the time, NEdit from fermilab. It was almost entirely CUA + the conventions we use today (which aren't entirely what we used in 2001). And the unusual features it had, such as square selection and X-style middle click copying, were quick to pick up. It was also tiny, both in binary size and memory footprint.

    Sadly it didn't really survive the switch to utf-8. I switched to Slava Pestov's Jedit for many years, and did some cool things with its huge library of extensions. But when VSCode started doing IDE stuff better than most IDEs, I defected to that. Yes yes, electron, Microsoft, I know... but it's just so damn convenient.

  • qbane 26 minutes ago
    Hope the author finds CodeMirror 6 to be a solid foundation. It uses the same contenteditable-based approach but abstracts away all the browser-specific edge cases and quirks for you.
  • samus 1 hour ago
    Every time someone has that idea they discover that text editing is hard! Kudos to the author that they considered accessibility as well.
  • erichocean 35 minutes ago
    If you want to do this in Clojure, Clobber[0] is a great base to start from.

    It can be used in headless-mode, I've hooked it up to the latest JavaFX text editing component it works very nicely.

    [0] https://github.com/phronmophobic/clobber

  • anon291 2 hours ago
    I am being pushed to use vs code right now by my team, but we already have a fully programmable and scriptable editor called emacs that is 100000x better. I don't understand why everyone just switches to these random tools. Text editing is a solved problem. Most of the supposed advantages of these tools is just a configuration of vim or emacs.
    • xedrac 1 hour ago
      I use emacs daily (with vim keybindings of course), but I completely understand why vscode is so popular. It's extremely easy to get started with, has features galore, and sane defaults. Emacs takes much more effort to get productive with, although this is improving with each release.
      • cosmic_cheese 26 minutes ago
        In general, I find that good defaults are rather undervalued and downplayed in the FOSS world.

        Configurability is great but without good defaults it can also be a liability. Would-be users will bounce off long before they like the software enough to pore through pages of options.

    • nxc18 1 hour ago
      If you work on web tech (and who doesn’t these days?) VS Code has the advantage of using the same tech stack you’re already familiar with. If you need to debug a problem, just open devtools. If you want to run a performance profile, do the same. If you want to fix a bug in the extension you’re using, just open a PR and fix it.

      It is a very flexible system and still quite fast and easy to configure. I’ve been trying Zed and WebStorm looking for better alternatives, but it turns out they have their own problems. Zed isn’t nearly as configurable, WebStorm’s config system is an absolute nightmare (xml for days - and constantly changing, mingling actual config with transient state).

      People complain that VS Code is slow; perhaps on some metrics and perhaps it is slower than a much less featured system like sublime. But I don’t think it is meaningfully slower in practice than Zed, and they make a lot of compromises to get that edge.

      • jotato 1 hour ago
        I’m trying to phrase this to not be “that guy” but have you used Code on large code bases? Vscode on my m2 Mac routinely crashed when doing file search. That is why I switched to zed.

        I do miss the configurablity though

      • bigstrat2003 26 minutes ago
        VSCode's problem isn't that it's slow, it's that it's bloated. It takes a bit over 1GB memory (in my testing) to open the same files that Sublime can do in just 200-300 MB. In my book, it is simply not acceptable to waste my memory like that.
    • muppetman 1 hour ago
      That’s easy. Because if they accept that emacs is good enough, they have to then accept that probably whatever thing they’re building is almost certainly worthless.

      26 different browsers all based on Chromium, 127 different “observability platforms” etc.

      So so much redundant rehashed stuff. We can’t accept that though, THIS TIME it’s going to be great and amazing and we’ll get a huge investment and sold to a huge company for millions.

      I’m not suggesting that it hasn’t been a huge leap in computing and software in the last 40 years.

      But we need to have faith in new being better to keep going. That’s why the new hotness is always so popular.

    • kstenerud 34 minutes ago
      Because very few people actually care about the things that emacs has to offer.

      Tools like VS Code do the job well enough for the majority of people, with just enough configurability and much greater ease-of-use.

      Emacs has a similar problem to Lisp: Infinite configurability and expandability (plus the lack of a "blessed set" standard that people actually like enough to use out-of-the-box) means that everyone's environment and tooling ends up becoming incompatible with each other.

    • 01100011 37 minutes ago
      90% of software is just new people not learning from the past and making/using some new thing.

      Get off my lawn.

  • globalnode 36 minutes ago
    The problem with writing an editor if you intend to use it for coding, is not the text editor itself, that's rather simple. The problem is code completion and syntax highlighting. Then whatever system you try to implement becomes just as bloated as the bloatware you're trying to replace.
    • bigstrat2003 29 minutes ago
      You don't actually need either of those things for coding. Many, many programmers did just fine without them.
  • self_awareness 1 hour ago
    Text editing is a solved problem.

    It's not about the style of cursor, or if rope is used or not. We already have answers to that.

    It's about remote editing, LSP support.

    • boxed 29 minutes ago
      You can prompt yourself all the way to that. I don't have remote editing in my custom IDE because I never need that personally, but LSP/DSP, syntax highlighting, a built-in lazygit clone, git blame, soft wrap, find-in-files, etc all there: https://github.com/boxed/TurboKod