1. 8

  2. 3

    This is pretty exciting if not a little vague. The design philosophy of emacs is clearly what’s helped it survive this long, and it would be great to see an updated emacs with effectively the same degree of extensibility and introspection, the same or better key mapping system, but with modern performance and richer, better performing rendering capabilities (modals, smooth scrolling). Despite the weirdly controversial nature of web tech on the desktop I do think that a web render + JS runtime is basically entirely consistent with the idea of emacs as a live programmable UI.

    1. 1

      I might be curmudgeon here, but I don’t think this project will live for long. The power of emacs comes from the ability to modify everything using a simple language - lisp. Adding javascript just increases complexity (ok, performance might be better) and adds an inconsistent language to the mix.

      1. 4

        I’ll be very interested to see how far it goes. If there is one language that could be used in a project like this and survive, Javascript would be it.

        1. 3

          Legitimately curious what would prevent a lisp to underlying typescript / javascript interpreter to interop with existing elisp.

          1. 3

            I tried writing a simple elisp-to-js transpiler some time ago, it’s doable and mostly straightforward (macros are tricky, but doable). I lost interest after I’d gotten the basics working (functions, variables, simple data types, macros). Maybe I should go back to that little project, it was fun.

            1. 1

              Sounds fun and like it could have practical/research benefit to this project!

            2. 1

              Same, it’s something I’ve been wondering for a long time. I genuinely don’t understand why, as an example, why can’t I use python’s regex functions (which I already know) to manipulate strings. Apart from performance concerns, of course, but often there aren’t any.

              For me, the power of emacs usually comes from

              • advice system
              • scoping rules: sucks that lexical scope isn’t the default, but it’s nice when you can easily override any global variable over the course of a single function call
              • integration with the runtime, e.g. REPL, evaluating arbitrary form in the file, being able to jump to any function source, etc.

              I don’t see why this all can’t be achieved in other languages (but I’m happy to be convinced!).