124 pointsby celadevra_4 hours ago12 comments
  • jimbokun26 minutes ago
    This article shows how Emacs remains a beautiful, relevant project several decades after it was first created. The core design and implementation’s ability to evolve into something still useful today and competitive with modern tools is an amazing achievement.

    Also, with LLMs driving so much of current development it potentially makes Emacs even more competitive relative to modern IDEs. Development can be driven primarily by an agent like Claude Code from the command line, then navigating and tweaking the code, handling Git commits, etc with Emacs.

    I imagine an LLM would be very good at writing Elisp to leverage EMacs’ strong core functionality to make Emacs work exactly how you want. This author managed to do it by hand, but I imagine someone starting now with an LLM could get there much faster.

  • Ferret74462 hours ago
    The "why" is kinda sketchy. The difference between what is shipped in Emacs and in ELPA is somewhat arbitrary. In fact, there are many built in packages that have their updates shipped in ELPA, meaning if you aren't using ELPA then your builtin packages might have unpatched bugs.

    There's also no reason why you have to literally write everything yourself either. You can find open source licensed packages, read them to understand them, and then copy them into your config. Doing everything from scratch is a waste of time unless you enjoy the process (in which case go nuts).

    It's roughly equivalent to trying to discover all of our scientific knowledge yourself from scratch vs taking "for granted" the knowledge discovered by your forebears. There is no shame or disadvantage in doing so.

    Also, a critical objection:

    > Writing your own packages is the best way to learn Elisp

    Absolutely not. Reading a language is crucial. If all you do is write, you will pigeonhole into weird practices and generally fail to improve. Only by reading stuff written by others can you learn, as you're exposed to what other people do right and wrong, both of which will be different from you.

    Of course, writing your own packages is also necessary, but not sufficient alone.

    • porcoda2 hours ago
      > Absolutely not. Reading a language is crucial.

      I don't think the post implied that this package writing activity was a write-only activity where reading and learning is strictly forbidden.

      > You can find open source licensed packages, read them to understand them, and then copy them into your config. Doing everything from scratch is a waste of time unless you enjoy the process (in which case go nuts).

      The post clearly indicates the relatively large set of open source packages they looked at and understood before doing their own packages. The author graciously acknowledges them and their influence on the work:

      "Emacs Solo doesn't install external packages, it is deeply influenced by them. diff-hl, ace-window, olivetti, doom-modeline, exec-path-from-shell, eldoc-box, rainbow-delimiters, sudo-edit, and many others showed me what was possible and set the bar for what a good Emacs experience looks like. Where specific credit is due, it's noted in the source code itself."

    • tom_2 hours ago
      It's nothing like rediscovering everything. Not only is it only Emacs, but it's also been designed by people with a goal of being straightforward to use by people. And whatever you create just needs to be useful to you personally anyway.

      I think of it more like building stuff out of Lego without following any instructions.

    • jimbokunan hour ago
      I’m not sure how you missed it, but the “why” was clearly a challenge to better learn and understand Emacs. And because it was fun.
    • skydhash2 hours ago
      > There's also no reason why you have to literally write everything yourself either.

      > It's roughly equivalent to trying to discover all of our scientific knowledge yourself from scratch vs taking "for granted" the knowledge discovered by your forebears.

      The author do have another config with all the bells and whistles. But Emacs does come with a lot of packages and tweaking them isn't that much work compared to building a full suite like Helm, especially with the awesome documentation system. Getting a v0.x of anything can be a matter of minutes. And then you wake up one day and you've built a whole OS for your workflows.

  • wilkystyle3 hours ago
    > That means the code is sketchy sometimes, sure, but it's in my control. I wrote it, I understand it, and when it breaks, I know exactly where to look.

    This resonates with me so hard. I'm not a "no external packages" purist, but there are a number of pieces of functionality that I wrote for myself because there wasn't anything quite like what I wanted.

    One example is a function to expand the region (selection) to any arbitrary set of pairing delimiters that I define in a defvar (parens, quotes, brackets, or I can can supply a custom left/right regex for matching). Then, when I execute the function, it waits for a second keypress, which is the trigger key I've defined for that matching pair, and it will expand the region to the left and the right until it meets the applicable delimiter.

    Repeating the same key presses results in selecting the left and right delimiters themselves, and another repeat will extend to the next set of matching delimiters, and so on.

    Even though I use a treesitter-based expand-region plug-in, my custom function is still invaluable for when I want to jump past a series of valid treesitter object expansions, or when certain text objects are just not defined in treesitter.

    Some of the helpful custom expansions I have defined are:

    "w" to select what Vim considers a lowercase-w word

    Space to select what Vim considers an uppercase-W word

    "$" to select ${...}-style expressions

    "/" to select everything between forward slashes

    "*" to select between asterisks (useful when editing markdown)

    It's really an invaluable function for me, personally, but I always talk myself out of trying to open-source it because it has some gotchas and limitations, and I just don't want to be on the hook for trying to make everyone who uses it happy.

    • throwaway274482 hours ago
      > "w" to select what Vim considers a lowercase-w word

      ?!? Wtf does this mean and how did vi come up

      • keithnz2 hours ago
        vim has two "word" motions, w and W, the lowercase w motion will see punctuation as a word boundary (as well as whitespace ) W only considers whitespace
        • throwaway2744826 minutes ago
          Sure. how was that relevant to explaining their keymapping? Why would you not simply directly describe the behavior as you did rather than sending the same amount of energy to route people through an entirely unrelated editing paradigm?
  • coolcoder9520an hour ago
    The 'when it breaks, I know exactly where to look' part really resonates. It’s the same reason I’m a big fan of deterministic systems over probabilistic ones. There’s a specific kind of professional peace of mind that comes from owning the entire execution graph of your own tools, whether it’s a text editor config or a security middleware for AI agents. It's not about being a purist; it's about being the master of your own stack.
  • bananamogulan hour ago
    If I was going to reimplement Emacs it wouldn't be with Lisp.

    Is there some reason Lisp is superior to any other general-purpose programming language for text editing? I'm skeptical because to my knowledge, Emacs is the only major text editor written in Lisp.

    • spudlyo40 minutes ago
      It's a product of its time. In the mid 70s when Emacs was originally created, the MIT Lisp Machine Project had already been going for a few years, and Lisp was kind of a big deal at MIT's AI Lab, where it was created. When Stallman started GNU Emacs in '85 or so, he took lots of inspiration from Lisp and those systems.

      You can think of Emacs as a kind of software Lisp machine with an emphasis on editing. Although that analogy only works well if you squint or if you don't know a lot about Lisp machines.

      As someone who first learned Lisp through Emacs Lisp, I found it fun, well-documented, and powerful. Once you grok the basics of how the system is dynamically glued together, infinitely hackable, and self-documenting it's kind of mind-blowing.

    • jimbokun24 minutes ago
      But if you were implementing it in 1976 you would have.
    • beepbooptheory35 minutes ago
      Lisp calls c in emacs. What would be a better language? The code-as-data, data-as-code paradigm fits nicely imo with everything-is-a-buffer. Things like global namespace, hooks, defadvice, would all feel very wrong in other interpreter, and yet seem to make sense in elisp.
  • lvass2 hours ago
    This is beautiful, incredibly sane, and awesome reference material. There's no way I'd use a 3500 lines init.el or most of the extras, but somehow I feel like a good chunk of the stuff here should be upstreamed if we one day consider it reasonable to change default behaviors in a major update.
  • throwaway274482 hours ago
    Why are we so bad at naming things? Modules and packages are so abstract I need to google what they mean relative to the development environment just to move forward.
    • InMice2 hours ago
      That's the beauty of open source
  • yunnpp3 hours ago
    Is Eglot on par with emacs-lsp for C++? Specifically thinking about pointing it to a compile_commands.json and all of the usual C++ nonsense required for code navigation and autocomplete.
    • Ferret74462 hours ago
      The UX will be different and is a matter of preference. The performance depends solely on your LSP. So long as your LSP is the same and configured the same, it will give you the same results for navigation/completion.
  • gyrgtyn2 hours ago
    The only reason I'm still using emacs is magit (and muscle memory). I could not make magit myself.
  • hirvi743 hours ago
    This might be a paragon of masochism. Though, I am not only beyond impressed. I am beyond jealous as well.

    I've been using Emacs since one of professors/mentors converted me over a decade ago back when I was attending university. As the years have progressed, I have found myself reaching for Emacs less and less. I still maintain my config and use it fairly often. I cannot use Emacs at my employer either, so that doesn't help.

    However, I have always wanted to do what the author has demonstrated. I would love to be liberated from the all package dependencies I currently have. I just do not have the time nor self-discipline to do something like this. Even if the functionality would be less than or equal parity with 3rd-party packages, I would prefer the Devil I know over the ones I don't.

  • iJohnDoe44 minutes ago
    This guy Emacs!

    In all seriousness very impressive and cool. Great information and post.

  • fedreg2 hours ago
    super impressive!! Going to steal some of this lisp for sure