185 comments

  • ristos 15 minutes ago ago

    I wish it were built with a very small, minimal core, that was just the TUI with the lisp machine like functionality, scriptable using R7RS scheme instead of elisp. And then everything else is built on top in a more modular fashion, with "battery packs" that install many modular components into one higher level functionality, like an IDE.

    I'd like to eventually write something like this, there are a lot of things it would enable that you just can't do with emacs. It would be an emacs killer if implemented well, but it would also open up a whole new set of possibilities.

    I don't know how far I'd get just working on it on my free time, which is competing for time with other projects. I'm looking for funding for these sorts of projects. If anyone reading this is an investor and interested in funding this sort of thing, please reach out.

  • lr0 11 hours ago ago

    Almost all the comments here are about things that really possible to do in current Emacs i.e. 'feature-requests' and not "fundamental pitfalls of this foundational application". For me, it would be just:

    - Redesigned with concurrency in mind.

    - Common Lisp, Scheme, or anything else other than Elisp. [Just the same way Neovim adapted Lua instead of VimScript]

    - More sane defaults for new users.

    • az09mugen 4 hours ago ago

      Someone created lem [0] which is basically an Emacs in Common Lisp. I don't know for concurrency but I hope it is designed to do so. Also there isn't org-mode.

      [0] : https://github.com/lem-project/lem

      • mark_l_watson 2 hours ago ago

        I enjoy using Lem sometimes, but mostly use Emacs. Lem is a very cool idea, and with Roswell it is easy to install and manage.

        All that said, it seems like Emacs has been improving rapidly the last few years: native compilation of Elisp, LSP support, good integrations with LLMs.

      • anthk 3 hours ago ago

        More than org-mode, it needs a Texinfo viewer. Once you can access SBCL's documentation (and internal docs), now you have an almost complete Common Lisp editor with the basic features from Emacs.

    • throwaway17_17 10 hours ago ago

      Hard agree that these are true ‘fundamental pitfalls’ of Emacs’ design. However I may go further on your third point. I would like to see a dedicated new user/learner mode that in addition to saner defaults would be pretty fully configured and pre-loaded with the most common extensions/plug-ins/etc. This could then lead to development of dedicated documentation/tutorials that assist the new user in becoming proficient in the common style/habits of Emacs usage.

      This could provide a much simpler full featured ‘base’ state for the app, that can then be customized from that point or can be stripped back by removing the more common add-ons and customized from the ground up.

      It would in some ways necessitate a strongly opinionated set of defaults and an additional focus on documentation, but I think in the long run the app would benefit from higher retention.

      • appplication 8 hours ago ago

        I’m on the strong opinion that most highly configurable software should come with strongly opinionated defaults. “It’s infinitely configurable so you can do anything you want” is just… so annoying. You could implement an LLM using punchcards if you were mad enough. The thing that makes a tool effective is the fact that it constrains and specializes.

      • randmeerkat 9 hours ago ago

        > I would like to see a dedicated new user/learner mode

        “To run the tutorial, start Emacs and type C-h t, that is, Ctrl-h followed by t.”[1]

        [1] https://www.gnu.org/software/emacs/tour/

        • anthk 3 hours ago ago

          That can be just put in the startup screen.

      • jolmg 9 hours ago ago

        > in addition to saner defaults

        Isn't that cua-mode?

        https://www.gnu.org/software/emacs/manual/html_node/emacs/CU...

        > would be pretty fully configured and pre-loaded with the most common extensions/plug-ins/etc.

        Doesn't it already do this? org-mode comes pre-installed for instance.

        • orra 5 hours ago ago

          cua-mode, yes, but the point is it's not the default.

          Similarly, recentf-mode exists but is not the default. Or has that changed?

      • anthk 3 hours ago ago

        I'm against that. Some random user would use Org-Mode and it wouldn't need any IDE related extensions. Also, another programmer might just use Org-Babel and code in Common Lisp with org-babel and a REPL doing literary programming. Another one would use Emacs for IRC, Email and math with M-x calc and/or iMaxima and AucTex.

  • mrob 15 hours ago ago

    I'd make cursors be positioned within the document instead of on the screen. Currently, Emacs does not support off-screen cursors. If you attempt to scroll a cursor off screen, it will move within the document to stay on screen. This behavior is contrary to all modern text editors, and there is no good workaround. I once made a serious effort to start using Emacs, but ultimately stopped because of the annoying cursor behavior. (There were other annoyances, but none so fundamental and unfixable.)

    • akira2501 13 hours ago ago

      It (kinda) has multiple cursors per document if you split the frame and display the buffer twice. For longer source files I find myself splitting horizontally, editing in the left pane, and using the right pane for secondary movement and reference.

      I have a buffer manager that can switch the displayed buffer quickly, when I switch to a different buffer and back again, it retains it's "secondary" cursor position that is separate from the other view.

    • mojifwisi an hour ago ago

      This might be a dumb question, but how would an off-screen cursor work in a terminal? According to my understanding of the way terminal emulators/ncurses work, the cursor must be positioned somewhere in the screen, even if it isn't visible.

    • yoavm 15 hours ago ago
    • throwaway17_17 9 hours ago ago

      This is a really interesting case of Emacs being so old that its default (and only in this case) behavior is just unable to comprehend current computer technology and usage. I think I am correct in saying that the lack of capabilities to have horizontal scrolling of a screen was an absolute hard limit of the teletype and terminal era. It should not be difficult to add such capability, but more than the obviously connected portions of Emacs’ code could implicitly rely on the assumptions that come from the impossibility of horizontally extending text.

    • arghnoname 15 hours ago ago

      I'll try to use the more common Windows/MacOS terms for it, but in emacs I often have the same file opened in two different panes within one window or two separate windows. I do this when I want to be looking at one part of a file while editing another.

      Markers are used to mark a different point in the file and one can pop their location to a previous mark.

      • mrob 15 hours ago ago

        Putting cursors within the document does not preclude supporting different cursors for different windows.

    • tom_ 15 hours ago ago

      This still annoys me slightly after nearly 20 years of using Emacs.

      In response to keypresses, it doesn't bother me too much, as I'm used to the Windows-style behaviour of PgUp/PgDn/etc. moving the caret, much as the Mac behaviour of not doing that is sometimes useful. But for mouse wheel scrolling, which I do a lot - precisely because on Windows this typically does not move the caret! - having point follow along has never felt right.

      • taeric 11 hours ago ago

        Conversely, I curse heavily at Mac programs where I can page down or scroll for a while, only to have an arrow press jump way the heck back in the document.

      • entropie 12 hours ago ago

        > But for mouse wheel scrolling, which I do a lot - precisely because on Windows this typically does not move the caret! - having point follow along has never felt right.

        Iam pretty sure you can customzize that if you want.

        > scroll-preserve-screen-position is a variable defined in ‘C source code’.

        > Its value is ‘keep’ > Original value was nil

        > Controls if scroll commands move point to keep its screen position unchanged.

        > A value of nil means point does not keep its screen position except > at the scroll margin or window boundary respectively.

        > A value of t means point keeps its screen position if the scroll > command moved it vertically out of the window, e.g. when scrolling > by full screens. If point is within ‘next-screen-context-lines’ lines > from the edges of the window, point will typically not keep its screen > position when doing commands like ‘scroll-up-command’/‘scroll-down-command’ > and the like.

        • hibbelig 5 hours ago ago

          You’re misunderstanding. In those other apps the behavior is this: you open a document. You put the cursor on line 3 column 3. You use the mouse wheel or trackpad to scroll down to line 600. You hit cursor right. The cursor is now on line 3 column 4.

          In emacs the cursor would be somewhere around line 600 instead.

  • celeritascelery 9 hours ago ago

    I have actually done some work on a rewrite of the Emacs core in rust[1], so I have thought a lot about this question. Most of the things you would want to change could be fairly easily added to the existing Emacs. The biggest ones that are hard to do with the current core is concurrency and collaborative editing. My particular core is focused on concurrency[2].

    Unlike a lot of commenters here, I am trying to stay backwards compatible with elisp. It is not the best, but huge body of existing code is one of the strengths of Emacs. Unlike vimscript, elisp isn’t painful enough to be worth replacing.

    [1] https://coredumped.dev/2021/10/21/building-an-emacs-lisp-vm-...

    [2] https://coredumped.dev/2022/05/19/a-vision-of-a-multi-thread...

  • rbc 13 hours ago ago

    One thing about Emacs, is it's not really just an editor anymore. Comparing it to other editors kind of misses the mark. It's more like an integrated Lisp development and runtime environment. It reminds me of Smalltalk environments, say Squeak or Pharo, albeit in a very text oriented way.

    The world could probably make room for an integrated Lisp development environment that makes GUI programming more of a first class citizen. Maybe something like Medley Interlisp?

    • anthk 3 hours ago ago

      Emacs runs on terminals too. If you want GUI's, you can choose Common Lisp with Lem and MCCLIM, or that newish web oriented GUI with a similar environment.

  • nabla9 18 hours ago ago

    - Use Common Lisp instead of Emacs Lisp.

    - Design a more modular architecture to make it easier to extend and maintain different components.

    - Design a more robust plugin system for development and distribution of extensions.

    - Implement better sandboxing and security measures for extensions.

    - Better APIs for extension developers.

    - better multi-threading support baked into the editor.

    • az09mugen 17 hours ago ago

      For the Common Lisp part, someone created lem [0], but for the other points I can't tell. I know there is an extension manager being developped, but am not able to judge the robustness. Also that there isn't org-mode.

      [0] : https://github.com/lem-project/lem

    • dokyun 7 hours ago ago

      > - Implement better sandboxing and security measures for extensions.

      Why, pray tell, should this be of any concern at all? Sandboxing is used when the host is concerned about running programs that he doesn't trust. There is no reason that an Emacs package would require security measures around it, unless it were knowingly potentially malware. The only reality in which I could see this is if people were using proprietary Emacs extensions, in which case I would entirely understand it, because then people would be willingly running malware inside their editor. Perhaps this the stance VS Code users like to take towards extensions?

      • tmtvl 4 hours ago ago

        Well, Emacs does ship with a browser (because of course it does, that kind of thing is what makes Emacs so amazing) and we all remember the XZ Utils near-backdoor, so I think that security measures would be useful for people who decide to use a less trustworthy archive like MELPA or who install extensions with package-vc.

    • shprd 17 hours ago ago

      > Use Common Lisp instead of Emacs Lisp.

      Interesting, why not a scheme? Is it because the popularity in the industry? I don't know much about Emacs or lisps and looking to understand better

      • nabla9 17 hours ago ago

        Scheme is smaller, has more static and less interactive philosophy. CL has most things you need straight out of the box. It's more like operating system than programming language. Exactly what Emacs wants to be.

      • aidenn0 11 hours ago ago

        elisp is more like CL than it is like Scheme; RMS was aware of CL when he was working on emacs, but was suspicious of some of its new features (like lexical binding).

        • anthk 3 hours ago ago

          Emacs' Elisp it's pretty close to Common Lisp, any CL user can learn Elisp in days (and the opposite it's true too). There's even a port of PAIP exercises into Elisp:

          https://github.com/yfuna/paip-el

  • musicale 15 hours ago ago

    I don't care that much about the implementation, but I would like to see an emacs environment with:

    - instant startup

    - blazingly fast scrolling

    - minimal keypress-to-display latency

    I have written a lot of elisp (and had to deal with with buffer variables, dynamic scope, etc.), but aligning with modern scheme or lisp (if it can be kept compact and efficient) probably makes sense at this point. (Current emacs should provide backward compatibility as needed.)

    Since so many people use emacs as an IDE, I think having an official emacs co-project/subproject focusing on a standard, extensible IDE framework (perhaps for other apps as well) would make sense.

    It still seems like a pain to display graphics in emacs in various terminal apps. This should be easy, fast, and standardized.

    As others have noted, supply chain attacks against open source are rampant, so vetting and sandboxing packages seems to be more important now.

    • lysace 15 hours ago ago

      I'm confused. On the modern devices I've recently used emacs on (including very low-powered raspberry pi devices), all of your three criteria are already true.

      What kind of HW are you running emacs on where this isn't the case?

      • musicale 14 hours ago ago

        This is from 2015, but emacs still has higher typing latency than vim in 2024.

        https://pavelfatin.com/typing-with-pleasure/

        If you have better numbers and comparisons for emacs keypress-to-pixel latency, etc. I'd be interested.

        Note classic vi started up faster than vim.

        Device makes little to no difference: Raspberry Pi 5, MacBook Pro M1, ThinkPad P1, etc. - emacs is clunky on all of them. I like emacs and it's my daily driver. But it isn't fast.

        see also:

        "Computer latency: 1997-2017" https://danluu.com/input-lag/

        "Measuring keyboard-to-photon latency with a light sensor" https://thume.ca/2020/05/20/making-a-latency-tester/

        • znpy 4 hours ago ago

          I have often see some fellow coworkers start up their fairly complex vim/neovim/other-vim setups and quite frankly… they ended up recreating a poor emacs implementation.

          Yeah it’s faster at starting up but it’s worse in pretty much everything else.

          Oh and they end up typing Ctrl-this Ctrl-that anyway.

          Might as well use gnu emacs.

      • arghnoname 15 hours ago ago

        Emacs pauses are almost always due to some operation blocking in the main thread. It's pretty annoying and is mostly a consequence to a lot of things effectively being single-threaded. Stock emacs doesn't do this very often, but third party packages that might do expensive tasks often do

        • lysace 15 hours ago ago

          Ah. A case of "don't do that, then".

      • hollerith 12 hours ago ago

        Receiving output from a process, as is done for example by shell mode and (I guess, but have not verified) compilation mode, is slow in Emacs because all output is run through comint-carriage-motion and ansi-color-filter-region (which does nothing but throw color information away IIRC) which are written in Elisp.

        If you don't run the output through those 2 functions, then non-printing characters remain in the output that severely undermine legibility.

        C programmers tend to develop the ability to glean information from the voluminous output of build processes as it goes whizzing by on a terminal, so they find compilation mode frustratingly slow. Or at least that is my guess as to what happens.

    • wging 14 hours ago ago

      For instant startup I recommend daemon mode and emacsclient. Start emacs via emacs --daemon, open windows (in the terminal or otherwise) via `emacsclient` / `emacsclient -nc` (I use aliases for these).

      • stackghost 9 hours ago ago

        The solution to "this text editor takes too long to start up" is poorly addressed by the solution to "just leave it running in the background all the time".

        • dokyun 7 hours ago ago

          It really is not poorly addressed, as it's a reasonable solution to the issue which also brings about it's own benefits. If you have your system configured such that the Emacs server starts up when you log in, by the time you actually start Emacs it will long have already loaded completely. If you actually use your Emacs for several things throughout the day, including but not limited to reading and editing text and documents, then it is likely you will have it always running during that time with several files open, and will find it useful to be using Emacs in the same state it was in the last time you opened it.

          As an aside, having it running in the background was actually the way the original EMACS that ran on ITS was intended to be used: When you C-x C-c out of it, it does not kill the program, it simply puts it in the background, and the next time you invoke EMACS it brings it back up. This is similar in effect to hitting C-z, then using 'fg' to bring it up again, but this only really works in a terminal. The Emacs server achieves the intended effect better, especially on a graphical display.

      • perihelions 14 hours ago ago

        I wrap my slow .emacs loads inside #'run-with-idle-timer so they run when I'm not looking, and not likely to notice.

        • andbberger 11 hours ago ago

          what is this point of this, when would you not be using emacs?

      • musicale 14 hours ago ago

        Yep, warm start is the only way to go unfortunately. But I want a fast start from cold boot like classic vi.

        • rbc 13 hours ago ago

          I think running daemon mode has significant advantages. You can have frames running on multiple virtual desktops for different uses. You can also step away from a buffer, and return to it, maybe from some other location on a different computer.

  • hollerith 18 hours ago ago

    Support prettier typography (if the user is not interacting with Emacs through a terminal, in which case of course the typography is up to the terminal-emulation app). If text in Emacs looked as pretty as text on the web does, it would be less of a struggle for me to stay focused on the Emacs text. (Text on the web was already much above average in pleasantness to look at and to read in the 1990s.)

    Get rid of any keybinding or UI convention that is there because that is the way they did it the AI Lab in 1967. Make the UI as familiar to the average computer user as possible (but keep the general design of a large rectangle of text) by using mainstream conventions (which come mainly from the Mac and Windows) for how to respond to this or that keypress or to clicking or dragging with this or that mouse button.

    Inside Emacs is a cross-platform toolkit (where the platforms are MacOS, other Unix derivatives, Windows and the terminal) I would split Emacs into 2 projects: a toolkit and an app that uses the toolkit. That way, if someone wants to create an "standalone" org-mode app, Magit app or Gemini browser designed to appeal to people who do not want to spend any time learning to use Emacs the app or "Emacs the generalized interface to information", they have a straightforward way to do so. (These "standalone" apps that are as easy to learn as any other GUI app will I hope help popularize the Emacs ecosystem.)

    One thing I definitely would not change is I would not make Emacs dependent on or closely integrated with a browser engine.

    • tazjin 16 hours ago ago

      > If text in Emacs looked as pretty as text on the web does

      Do you have an example of this? I can't tell any difference for the fonts that I use (with emacs-pgtk). I believe Emacs uses Harfbuzz (same as Chrom{e|ium}).

      • hollerith 14 hours ago ago

        Most of the text on the web for example is in a proportional-pitch typeface.

        Does your Emacs usually use a proportional-pitch typeface? If so and you're on Linux, I'll install the font you are using.

        I've tried using proportional typefaces in Emacs (on Mac), but there was something off, so I went back to monospaced. I could try again now that I have a Linux machine.

        The text in my Emacs looks almost exactly like the text in my Gnome Terminal. (A slight difference in size is the only thing I notice. To be painfully precise, (window-system) evals to 'pgtk on my Emacs.)

        The text in Gnome Terminal is not terrible, for sure, but text on the web is a nicer in my experience.

        • chrchr 12 hours ago ago

          Pardon me if you're ahead of me on this, but it sounds like you might be using a proportional typeface as the default or fixed-pitch face. You should get nice-looking proportional type if you set the variable-pitch face to your desired typeface and enter variable-pitch-mode in the buffer. E.g.,

              (custom-set-faces '(variable-pitch ((t :family "Verdana" :height 180))))
          
          And then in the buffer you wish to view with proportional type, M-x variable-pitch-mode.
          • jasomill 11 hours ago ago

            I use IBM Plex Sans (proportional) as my default Emacs font, with variable-pitch as a no-op (i.e., defined as "(variable-pitch ((t nil)))" in custom.el), and use IBM Plex Mono as fixed-pitch.

            Tips for using a variable pitch font as the default:

            0. Choose default fixed and variable pitch fonts with identical baseline-to-baseline heights for a given size; this makes everything described below work better (e.g., this is true for all fonts in the IBM Plex family across all platforms I regularly run GUI Emacs on [Linux, Mac, Windows]).

            1. Define a fixed-pitch-mode by copy-pasting the built-in variable-pitch-mode and making the obvious changes (both are trivial applications of buffer-face-mode).

            2. Add fixed-pitch-mode to hooks for modes that don't play nicely with variable-pitch fonts (calc, dired, hexl, magit, terminal and shell modes, etc.), or where you just prefer fixed-pitch modes (hint: define your fixed-pitch-mode in a package so you can use use-package's ":hook ((foo-mode bar-mode … baz-mode) . function)" syntax to manage this).

            3. Some modes that pop up windows (frames in Emacs parlance) within editing buffers require extensions (e.g., company-posframe-mode for company-mode) to work properly in variable pitch buffers.

            4. Last, but certainly not least: assign a convenient key binding to toggle fixed-pitch-mode. I can't emphasize this enough! In fact, I've found that variable pitch is fantastic for coding in most languages if and only if fixed pitch can be quickly toggled on and off with a keystroke, iff this setting is per file rather than global (and iff both fonts have identical line heights, but this is a feature of font families rather than editors).

            For this reason alone, I'd argue that Emacs supports variable pitch fonts better than most text editors.

            • skydhash 11 hours ago ago

              I use IBM Plex across the board and I was trying to understand the font issue because I do not have it. I default to fixed-pitch mode for everything, and use variable pitch for UI elements.

          • hollerith 11 hours ago ago

            Thanks for the info, but the result of that is not any better than the result of what I had already done. (I wrote a command that put an overlay on the buffer to change the typeface.)

            It's not as good text on the web IMHO. Typography is very complicated, and I think the people who did the typographical details of Chrome and Firefox were very skilled, is my guess.

        • tazjin 14 hours ago ago

          I used to use proportional pitch fonts for telega.el and certain document buffers, but I stopped because I find that with Jetbrains Mono (for me personally) there isn't any benefit even for longer text. I'd rather have everything be uniform.

          Emacs is perfectly capable of rendering other fonts, too, though.

          • hollerith 14 hours ago ago

            Yes, I remember now that having everything be uniform was one reason I stopped with the proportional faces in Emacs.

      • hollerith 16 hours ago ago

        Huh. I use pgtk Emacs, too, and am surprised to find someone who doesn't find my statement obvious.

        • tazjin 15 hours ago ago

          Well, if there's no further info then I'm going to speculate you've misconfigured something ;)

          • actionfromafar 15 hours ago ago

            Ok then, "make it harder to hold it wrong". :)

            • hollerith 11 hours ago ago

              I'm not holding it wrong.

              • actionfromafar 2 hours ago ago

                That's the joke, people weren't holding the iPhone 4 wrong, either. :)

      • abdullahkhalids 16 hours ago ago

        I have never figured out how to get a good font and rendering going for text in Urdu/arabic script.

  • GregDavidson 14 hours ago ago

    1. I would like higher-level datatypes for key abstractions, such as

    (1.1) Marks -> StableRegions

    - reference specified text within a buffer

    - continue to reference same text despite insertions or deletions

    (1.2) Strings & characters -> StringBuffers

    - lightweight immutable buffers (no branches or versions)

    - able to hold any content a subset of a buffer can hold

    - could be StableRegions of an Arena Buffer

    (1.3) AbstractBuffers

    - immutable buffers + a tree of deltas

    - some special delta types for, e.g. indentation

    - AbstractBuffers support transactions and versioning

    - can support collaborative editing

    - specific versions can be written to textfiles

    - all versions can be stored in git or in relational database

    2. Use WebAssembly instead of a specific programming language.

    - This was the vision for Guile.

      - Scheme one of several languages.
      - ELisp supported but Emacs port efforts keep failing!
    - The Racket ecosystem has captured this pretty well - if only it supported ELisp!

    3. Prefer languages at least as simple as Scheme, but with monotonic semantics!

    Non-mutable operations would appear as transactions appearing as branches/versions.

    An editing session would automatically follow the latest transaction in the current branch.

    Concurrent edits of the same "file" create different branches as with git, et al.

    4. Separate monolithic Emacs process into SessionProcesses, DisplayProcesses and WorkerProcesses.

    Multiple DisplayProcesses would allow for tightly-coupled collaborative editing. A WorkerProcess would interface buffers with processes, files, git repositories, etc. on a specific account@host giving functionality like Tramp. A user would start with one DisplayProcess connected to a SessionProcess. A SessionProcess would provide the interface between DisplayProcesses, WorkerProcesses and any co-SessionProcesses of collaborators. WorkerProcesses could be scripted without any other overhead.

    • celeritascelery 10 hours ago ago

      Are all these “higher-level datatypes for key abstractions” trying to achieve first-class collaborative editing? That sounds a lot like Zed.

  • susam 17 hours ago ago

    Instead of using ctrl and meta modifiers, use a leader key like escape or semicolon or comma or some such thing as the prefix key for key bindings. In fact, this desire for leader-key-based, non-modal text editing led me to write devil-mode for Emacs: <https://susam.github.io/devil/>.

    • smokel 17 hours ago ago

      Make CapsLock an additional Ctrl. On many old keyboards that is where the Ctrl key was positioned [1].

      [1] https://en.m.wikipedia.org/wiki/Caps_Lock#Placement

      • susam 16 hours ago ago

        I know many people like to remap Caps Lock to function as Ctrl. However that setup does not quite work for me. There is only one Caps Lock key on the left side of the keyboard. I need Ctrl on both sides of the keyboard, so that I can use the left Ctrl key while typing Ctrl+P but the right one while typing Ctrl+A.

        There are other options as well, like remapping the Enter key to act as Ctrl when chorded or using sticky modifiers. I think using an ergonomic keyboard with two large Ctrl keys on both sides of the keyboard is probably the best solution. I've discussed some of these alternatives in more detail <https://susam.github.io/devil/#why>.

        By the way, there are some vendors that still make Unix layout keyboards with the Ctrl key positioned where Caps Lock key usually is: <https://deskthority.net/wiki/Category:Keyboards_with_Unix_la...>.

        • tom_ 14 hours ago ago

          I just leave Ctrl where it is and press it with the knuckle of my little finger. I do it just like the guy in the pic on this page, pressing the control key with his little finger: http://xahlee.info/kbd/how_to_press_control_key.html - because that pic is of my hand. (Xah might not recommend doing this all the time, but I've been doing this for nearly 20 years now and I've had no problems.)

        • asciimov 13 hours ago ago

          For the past 3 years I’ve done the following remap Caps -> lctrl/esc, enter -> rctrl/enter, tab -> lalt/tab, backslash -> ralt/ backslash. Also have the physical right alt mapped to multi key/dead greek.

          It works really well, and makes emacs much more comfortable to type in.

          Downside is this keeps me locked to X11 and fighting the occasional app that reads the key codes directly.

      • imiric 16 hours ago ago

        Instead of making it an additional Ctrl key, you can also make it a new separate modifier key with XKB[1]. I've found this very useful over the years for WM-related key bindings, leaving the other modifiers for applications.

        Tangentially, I really loathe how Wayland has no alternative to this. I'm expected to configure keyboard layouts in every DE or WM I use, which is a much worse UX.

        [1]: https://vincent.bernat.ch/en/extending-xkb#attaching-symbols...

      • petepete 6 hours ago ago

        I use a HHKB because of this. On the Acorn Archimedes I learnt to type on, it wasn't an extra Ctrl, it was the Ctrl.

        Caps lock was rightfully relegated to bottom left.

      • macintux 15 hours ago ago

        I was very disappointed that Apple gave up that fight.

        They also at some point joined the PC world in moving the nubs on their keyboard from "d" and "k", where you were more likely to notice if your fingers are not in their proper place on the home row. Now if your right hand is offset slightly to the right, you won't feel anything, which is less immediately noticeable than if the nub were under the wrong finger.

    • fsckboy 16 hours ago ago

      emacs is not its keybindings. you can bind your emacs keyboard to do what you are asking for; as you said, you wrote a mode for emacs that works the way you want, and it wasn't necessary to rewrite Emacs.

      • susam 15 hours ago ago

        > emacs is not its keybindings ... and it wasn't necessary to rewrite Emacs

        That's indeed true! But the premise of this question explores the scenario: What if we did rewrite Emacs from scratch?

  • wging 13 hours ago ago

    I'd really prefer for emacs' implementation language to have been a lisp-1 rather than a lisp-2. It's annoying to have to do different things to treat a function as a value (put it into a list, assign it to a variable, etc.), as opposed to all other kinds of data. Any benefit you get from allowing name collisions (i.e. function named f, related but distinct variable also named f) seems very small in all elisp code I've seen and promotes confusion more than it enables desirable programming patterns.

    I'd make lexical scope the default and dynamic scope opt-in on a per-variable basis. This one is probably less controversial. I think the devs are moving in that direction (e.g. by changing emacs core code to use lexical scope and adding warnings for code that doesn't opt into it), but I don't see how they will actually be able to change the default without breaking a whole bunch of user code.

    • tmtvl 4 hours ago ago

      My introduction to Lisp was through SICP and Scheme so I used to be in favour of Lisp-1, but having used Common Lisp for a while now I've changed my mind. Treating a function as a value is easy enough:

        (mapcar #'list list)
      
      It's like how if you want to treat a symbol as data you have to quote it:

        (let ((x 2))
          (list 1 x 'x))
  • khazhoux 15 hours ago ago

    Emacs is the shittiest tool I’ve been using since 1992 and will use till I die.

    • eointierney 13 hours ago ago

      It's the finest manure to fertilize thought we can turn over with only a fork

    • ironmagma 6 hours ago ago

      It may be shit, but it's freedom-flavored shit. The best kind.

  • aeonik an hour ago ago

    Instead of making it just an elisp interpreter, make it a generic platform where you can interpret any language and have them with together.

    Make it Programming Language Macros, PLMACS. Kind of life a POSIXs standard. Or the Truffle framework.

  • eointierney 17 hours ago ago

    The core should be in rust, verfied in lean, and the runtime should be in guile. Literate programming in org-mode should be a hard requirement. Package management should require patch algebra. Macros should be submitted to a leaderboard in a blockchain and yield flair in EUDC. M-x measure-beard-length should require 10000 hours of logged usage and unlock the major mode infinity-categorization.

    Tongue-no-longer-in-cheek:

    I reckon the C core of Emacs is some of the most battle-hardened code out there. Verification, a-la SEL4, is probably irrelevant but still nice. Guile is modern and performant but Elisp is still its own little joy. Literate programming is always nice until it gets in the way. Straight is good enough for me now. Macros are always cool and a leaderboard would be fun, but patch algebra is really nice, see jujutsu nowadays. And beard length is gendered and so only partially admissable. Infinity categories are way out there and always good for a reference.

    • fsckboy 16 hours ago ago

      >beard length is gendered

      you insensitive clod

      https://www.gocomics.com/calvinandhobbes/1986/02/14

    • denotational 16 hours ago ago

      Ok, you had me for the first three sentences.

      • neilv 16 hours ago ago

        Implemented mostly in Guile, with just some native primitives/kernel bits in Rust, makes a lot of sense, for a programmer's application platform in the spirit of Emacs.

    • sshine 15 hours ago ago

      > The core should be in rust, verfied in lean, and the runtime should be in guile. Literate programming in org-mode should be a hard requirement. Package management should require patch algebra.

      Since I agreed with all of these, I’ll add some more non-ironic, idealistic wishes:

      Plugins must be written in sandboxed WebAssembly so you can know what a plugin is capable of without reading the source code. The runtime must be portable so it can run in wasm32-wasi.

    • mdaniel 13 hours ago ago

      relevant: https://github.com/remacs/remacs#rust-heart-emacs although as of this message it says they've given up in favor of https://github.com/emacs-ng/emacs-ng#contributing which does mention Rust but seems to be ... a lot different from Emacs so I guess they're really going all-in on the "NG" part

      for the non-tongue-in-cheek, also relevant: https://www.emacswiki.org/emacs/GuileEmacs#h5o-2

    • mech422 11 hours ago ago

      >> see jujutsu nowadays

      I'm looking at pijul..

      https://pijul.org/

    • eddieh 10 hours ago ago

      When I saw “should be in rust” my instinct was to flame like nobody’s business, glad I kept reading. Lmao. Good slow burn.

      Though, not to put too fine a point on it, I know it was in jest, but the core implementation language is the least of my concerns. As long as it is extremely portable, compiles fast, and runs on virtually anything, then whatever the core is, doesn’t matter much to me.

  • mikewarot 15 hours ago ago

    I'd start with the core TECO editor I've written in Free Pascal[1].

    Free Pascal does gigabyte strings you don't even have to allocate. Then I'd read the Emacs manual, and start writing code and tweaking TECO to make it all impedance match better.

    But I'm old and weird, so maybe not the best way to get there.

    [1] https://github.com/mikewarot/teco

  • swah 2 hours ago ago

    The main quality I remember Emacs having compared to something like VSCode is its ease of extendability - but I don't know how to balance the liveness/messyness of a personal Emacs setup and wanting to package some of those bits to third parties. I think its a tension there...

  • keyle 13 hours ago ago

    I like emacs for its flexibility and its ability to be a platform for people to build just about any extension. So for this you'd need a solid scripting language. I was never sold on Lisp but it's fine. I'd prefer to see lua; it just makes more sense.

    The repo-reference stuff works pretty well all things considered. If it were python it would be hell.

    Crazy side of me would like to see it fully written in a safe(r) language like rust, swift or zig. Basically your config would be a recompiled subsystem, loaded at runtime, or you'd recompile the whole editor.

    It wouldn't hurt if the config had a bit more structure. Forcing people to set fonts etc. BEFORE loading other things; essentially enforcing an order in which things get loaded. It can get hairy after years of working in emacs.

    I love that it's keyboard driven and I'd keep that for sure.

    The config should automatically be a git repository and any change should generate a meaningful commit (thinking out loud).

    Better key handling and none c-x nonsense. Switching between keyboard combos and straight up shortcut should be a defined choice not overwritten by x. Every 'plugins' should expose their shortcuts override clearly. Have sane defaults that aren't 30 years of cruft. This means you'd have to consider running on mac just as well as windows, and in and out of the terminal makes this extremely tricky.

    Better plugin system and discovery. Often the best and only way to find how to solve a problem in emacs was by finding some random gray-beard post on some forum by sheer luck.

    • inkyoto 10 hours ago ago

      > Crazy side of me would like to see it fully written in a safe(r) language like rust, swift or zig.

      Emacs Lisp is a very safe language. Even though the Emacs core is written in C, that is immaterial and impalpable to Emacs users as they only interact with Emacs Lisp. What benefits would Rust / Swift / Zig bring to an average Emacs user?

      > Basically your config would be a recompiled subsystem, loaded at runtime, or you'd recompile the whole editor.

      elisp -> bytecode compilation in Emacs… predates humanity?

      https://www.gnu.org/software/emacs/manual/html_node/elisp/By...

      The entire stash of Emacs packages compiles into the byte code at the package installation time, anyway. Personally, I even byte-compile-file my ~/.emacs to eke out an imperceptible speed improvement at the startup time, which is slightless less than entirely useless but it warms my heart that I can do it.

      Recent versions of Emacs can also compile Elisp into the native code:

      https://www.gnu.org/software/emacs/manual/html_node/elisp/Na...

      > Better key handling and none c-x nonsense.

      Perhaps you do not need Emacs then.

      • kazinator 6 hours ago ago

        > elisp -> bytecode compilation in Emacs… predates humanity?

        Actually, I believe it was developed by HackerNews hater Jamie Zawinsky.

        • inkyoto an hour ago ago

          jwz also predates humanity.

      • binary132 10 hours ago ago

        The pseudo-JIT provided by gccjit is really quite good. I’ve been using emacs for a pretty long time and it is definitely the most noticeable improvement they’ve added so far (and it even works seamlessly out of the box on windows!)

        • inkyoto 9 hours ago ago

          It is exceptionally good, indeed. Emacs now starts up in an instant (< than 1 sec) from the cold to a fully working state, which includes loading a hefty .emacs

  • dilap 16 hours ago ago

    Biggest issue w/ emacs is once you start adding packages everything is half-broken. Ideal emacs replacement would preserve the ease of extension and flexibility but have more of a static time verification systems (types and ...?) to prevent bugs (and bonus, make easier to achieve speed too).

    • mark_l_watson 2 hours ago ago

      I have been occasionally been hassled by Emacs package management for forty years.

      A few years ago I very much shortened my .emacs file using the Straight package manager and I have been happier.

  • narag 12 hours ago ago

    Disclaimer: my experience with Emacs is limited. I've only used it because it's the path of least resistence to learn Lisp.

    So for me it would be: everything that makes Lisp programming easier, like:

    - Use a Lisp implementation that's not tied to the editor.

    - Slime/Sly + Quicklisp functionality out of the box.

    - Integrated syntax awareness, preferably "syntax directed" for programming.

    There is more, but it'll be obvious (like updated defaults and looks) unless you want to make an outright clone, or at least a direct replacement option, I wonder if that's what you mean: "rewriting Emacs" seems to suggest it is.

    It's difficult. These big old projects like Emacs, and Lisp itself, have both succeeded and failed. There are features that made them last decades and others that made them stop attracting new users. How to capture the appealing parts without reproducing the quirks?

    • mark_l_watson 2 hours ago ago

      I used to do a lot of consulting work using Common Lisp on remote servers and would frequently need to set up tmux, Emacs, SBCL, Slime, etc. on remote servers to do my work. Keep good notes, and it gets much easier and faster.

  • wwarner 17 hours ago ago

    create an efficient async api for plugins. it’s kind of a kernel+apps situation. an extensible editor has to have a scripted plugin system, and they should be hosted by a core that is fast, can preempt plugins, and provides “ipc” btw plugins for advanced functionality.

  • federicotdn 16 hours ago ago

    I would change the development platform. Doing everything by mail makes things more difficult for people that are not used to the older mail+patch workflow. Having something like GitLab or sourcehut would be nice, as it would also bring a more modern bug tracker.

    Personally I find following email conversations much harder than just a single conversation thread like in a GitHub issue, for example.

    • mdaniel 13 hours ago ago

      I recently learned FSF does have a GL instance but it seems to be locked down to just "approved" emails and also only used for its CI capabilities: https://emba.gnu.org/emacs/emacs/-/pipelines

    • bbarnett 16 hours ago ago

      All sensible email clients have a 'thread view' for just this purpose, which effectively makes it a 'single conversation thread'.

      • federicotdn 16 hours ago ago

        Yes, the Gmail web client does this. However my (personal) problem comes more from reading the emacs-devel archives, where the thread view takes the shape of something more like a tree (maybe I'm not configuring something correctly). I was subscribed to emacs-devel at some point (which made reading easier) but it started filling up my account storage so I un-subscribed.

  • kanodiaashu 4 hours ago ago

    I would 1. Make it more capable as a full GUI - currently I have trouble displaying jupyter notebooks with images/progress bars etc in it. 2. Make an 'emacs app store' where you can get paid plugins (I'm going for Cursor). 3. Make collaborative editing possible.

  • sevensor 11 hours ago ago

    More to the point, emacs already has been rewritten substantially. There’s the initial rewrite from TECO to lisp, there’s the 80s implementations like uemacs (famously used by Linus), we had a major fork with xemacs in the 90s, there’s guile emacs (ready any day now), lem is almost but not quite a Common Lisp emacs, and it’s been making a lot of progress recently. So go ahead with your rewrite, you’re in fine company!

  • aardvark179 14 hours ago ago

    It’s interesting the divide we see here between particular implementation choices, and very general design principles. FWIW I think this exposes some of the tensions in Emacs’ design itself. The fact that everything is customisable is both great and the source of many problems, and it depends on which direction you want to go how you want to move that particular needle.

    I’m not totally sure what I’d do. The semantics of multithreaded or async alteration of buffers are not easy and so, even though they would be great in many ways, might make simple customisation just too painful.

  • chillpenguin 12 hours ago ago

    There's something about it where it doesn't feel quite right when using the mouse as a GUI app. Compare it to something like Sublime Text. I can't quite describe it exactly. It just feels off. It feels like you are supposed to use the keyboard shortcuts to navigate around, and the mouse is sort of bolted on secondarily or something. So I would try to make it feel more like a modern GUI app, where using the mouse feels right.

  • Koshkin 13 hours ago ago

    First of all, I would make sure that it would not be swapping constantly when running on eight megabytes!

    • mech422 11 hours ago ago

      LOL - Haven't seen that one in ages...

  • jiffygist 11 hours ago ago

    - throw away c language mode and and rewrite it from scratch

    - make dired more usable like a normal file manager. opening a file with the associated program that would persist after emacs closes should be its primary feature. ideally i want something like a mix of ranger/lf with dired

    - make it have fully-featured terminal, not dumb terminal. make it easy to open lots of terminal windows. add a way to change terminal directory with fido or dired

    - make working with ssh not so horribly laggy

    • celeritascelery 10 hours ago ago

      All of this is possible in the current Emacs.

      1. You can already define what program opens a file in dired. You could even use detach it from the Emacs process so it stays open when Emacs closes.

      2 we already have vterm, which has all the features you described.

      3. There are ways to make this better. I am actually in the process of writing a blog post about working efficiently over tramp.

      • jiffygist 5 hours ago ago

        Thanks for vterm, that's just what I need.

        For dired I do have my bindings (one for xdg-open on a single file, another for custom command on a bunch of files).

  • taeric 11 hours ago ago

    This will fall to the curse of most people answering didn't write emacs.

    That is, rewrites can work sometimes. You typically need someone who was involved in the last two for it to work, though.

    If you haven't written it once, you have no real idea on any compromises that were made.

    If you haven't tried to do it without a compromise, you don't know which compromises were unexpectedly vital.

  • mdaniel 13 hours ago ago

    I think others have hinted at it, but for me any foundational application must be written in a statically typed language, but cannot be C nor C++ /me glares at Chromium

    The bad news is that I don't currently have enough free energy to help the remacs nor emacs-ng projects, but I am glad they exist

  • panza 12 hours ago ago

    Many of the non-sarcastic responses here are subjective changes (scripting language, core plugins, alternative control schemes) that will change what Emacs is for other people.

    But I think we can find a lot of agreement around launch speeds, latency, typography and similar.

  • buescher 15 hours ago ago

    Take a look at the Mac editor Alpha. It is arguably emacs-in-tcl and did a very nice job of balancing cua-style keybindings with emacs-style. Better, if I remember correctly, than things like cua-mode. It’s been literally decades since I’ve used it though, and it might be impossible to square that circle in a way that’s really frictionless.

  • pton_xd 9 hours ago ago

    Improve performance handling large files and large numbers of buffers. Emacs has been my daily driver for the last 10+ years and yeah perf could use some help. Everything else is superb.

  • umanwizard 14 hours ago ago

    I would use a more mainstream dynamic language like python or lua rather than emacs lisp. It has to be dynamic and maintain the flavor of repl-driven development (the whole point of emacs is that it’s one big X repl where today X is emacs lisp). It doesn’t have to be a lisp though.

  • varjag 16 hours ago ago

    Allow for user controllable window layout within the frame, objectively the editor's only significant drawback.

    • floren 16 hours ago ago

      god yes please. "Will I get a new window? If so, where will it be?"

      If I could have Emacs with Acme-style window management, that'd be perfect

      • signa11 13 hours ago ago

        this is emacs territory so we have infinite customization via the `display-buffer` primitive.

        see https://www.masteringemacs.org/article/demystifying-emacs-wi... for more information.

        • signa11 8 hours ago ago

          unfortunately i cannot edit the previous post anymore. another _excellent_ resource is this article/video from "mr protesilaos stavrou" : https://protesilaos.com/codelog/2024-02-08-emacs-window-rule...

          he goes by the moniker 'prot' and has tons of very very good emacs information (both on his website, and youtube). always worthwhile to check them out !

          as someone would say, if you like that kind of thing, this the is kind of thing you will like :o)

        • floren 9 hours ago ago

          Thanks for reminding me about this, I really need to dig into it and get some rules in place.

      • skydhash 10 hours ago ago

        After years of vim and windows parkour, I started using Emacs, and while the windows management was a bit irritating at first, I made my peace with it and use them in a more focused manner and rely more on the buffer list. I use register if I need a particular configuration.

        Vim feels like working on a moodboard while Emacs is more a study desk.

        • varjag 5 hours ago ago

          I've been using Emacs for 25 years daily and this is still the thing that I think hasn't been really thought through. Yes there are hacks to mitigate that but there are still many rough edges with them.

  • stormking 16 hours ago ago

    A modern display engine.

  • faizshah 15 hours ago ago

    Let us write plugins in whatever programming language we want and provide some simple interface like Unix sockets or something for us to communicate with the editor process.

    Instead of making the first class installable extensions plugins create a primitive called modes that encapsulate groups of plugins with extra configurations so that instead of having to pick every plugins for our setup we just pick the most popular javascript or ruby etc. mode and then add a couple of our own plugins on top.

    Add some system that suggests hotkeys based on usage. If I hit l 20 times instead of just hitting f’ to get to the end of the line show a popup. Gamify the key maps and suggest key maps and features even from my plugins.

    Instead of having a package manager for your editor just use homebrew and integrate it deeply into the editor.

  • musha68k 12 hours ago ago

    Rendering performance is still my main gripe and the one most mentioned by vim users I unsuccessfully tried to convert through evil mode.

  • ruricolist 10 hours ago ago

    I'd replace the underlying data structure used to represent buffers (https://www.gnu.org/software/emacs/manual/html_node/elisp/Bu...) with something more sophisticated, like ropes or piece tables.

  • tiberriver256 14 hours ago ago

    Build it with emacs

  • dmitrygr 16 hours ago ago

    > If you were rewriting Emacs from scratch, what would you do differently?

    UI: Electron, of course.

    Json to represent the edit buffer in RAM. Each utf8 code point base64 encoded, in a json array, it itself, as a blob, base64 encoded. Now, before you complain that that is gonna blow up the data too much, don’t forget that 1. “Ram is cheap” and 2. “gzipped base64 is about the same size as binary”. So, of course, we’ll gzip the data in RAM.

    Plugins should be JavaScript, as should be self-evident. And you’ll need a few installations of python (both 2 and 3) and node.js (each in its own docker container, obviously) to glue it all together and provide reproduceability.

    With some care and work, it’ll run even on a modest machine taking up merely 60GB of disk, 32GB of RAM, a 4090ti GPU, and 8 CPU cores.

    Every key press should be passed through an LLM, to add some intelligence to the editor. The user will, of course, supply a ChatGPT api key when they register for their mandatory myNewEmacs.ai account that they’ll need to subscribe to the editor for only the cost of a few lattes a month.

    It is 2024, after all. One must use modern tools and technologies.

    • Crosseye_Jack 15 hours ago ago

      LGTM: Ship it!

    • maxk42 16 hours ago ago

      Prefer Tauri to Electron. It is 2024, after all.

    • aardvark179 14 hours ago ago

      Thanks, I hate it.

  • EasyMark 12 hours ago ago

    I’d get rid of the text editor and swap in neovim or hx code as a mode, I’d chuck emacs lisp and use Common Lisp instead, I’d definitely keep org mode and ditch old stuff like mail and news reader as core and let them be add ons written in CL . Rewrite it all in rust. That’s probably enough for today.

    • celeritascelery 10 hours ago ago

      What advantage would you get by rewriting it in Rust?

  • dannyfreeman 11 hours ago ago

    Starting with some kind of namespacing solution for emacs lisp would be nice.

  • aidenn0 11 hours ago ago

    Use Common Lisp instead of making its own mac-lisp like dialect.

  • clojureyoureyes 10 hours ago ago

    I'd rewrite in a Clojure-like language

  • znpy 4 hours ago ago

    I’d keep the possibility to use the ide both in the console as well as in a graphical environment for sure.

    I’m not sure i’d change the scripting language, despite all of its shortcomings it has proven itself way more than enough.

    Maybe better concurrency?

  • worthless-trash 4 hours ago ago

    I'd ask the lem guys.

  • abe-101 10 hours ago ago

    I wouldn't. I just used vim

  • intellectronica 15 hours ago ago

    Scheme instead of ELISP. Concurrency (Async IO would do).

  • otabdeveloper4 17 hours ago ago

    Emacs is fine, but buggy as hell.

    Their version of Lisp is clearly not suited for any large-scale development. (This trickles down hard into user experience, i.e., lack of parallelism or multithreading.)

    • keyle 14 hours ago ago

          Emacs is fine, but buggy as hell.
      
      That kind of took 180 turn on that one.

      Ship is fine, but leaks as hell.

      • buescher 13 hours ago ago

        As long as I can keep this ship, I will keep bailing.

    • JadeNB 15 hours ago ago

      > Emacs is fine, but buggy as hell.

      Is this so obvious as to go without examples? I'm no Emacs power user, nor even really an Emacs user, but it certainly conflicts with my understanding of core Emacs.

  • Decabytes 8 hours ago ago

    Honestly I think you could go a long way with default evil mode, and updated documentation with evil keybindings in mind.

  • the_clarence 15 hours ago ago

    I would probably just implement vscode but for the terminal. Emacs shortcuts already work by default in vscode for the most part.

    • umanwizard 14 hours ago ago

      None of the main selling points of emacs have anything to do with its shortcuts or using it in the terminal. Plenty of emacs users (including me) rarely or never use it in the terminal. It’s a GUI editor just like vscode is.

      I think this misconception comes from the fact that (1) people often compare emacs and vim, and (2) vim is usually used in the terminal. But emacs and vim are really categorically different things so I think the “emacs vs. vim” meme kinda doesn’t make sense.

    • sshine 15 hours ago ago

      While Emacs is recognisable for its shortcuts, it is hardly a defining feature. Example: Doom Emacs adds Vim shortcuts, and it is still distinctly Emacs.

      I think of VSCode as “Emacs, but JavaScript instead of Elisp.” That’s one thing I would not choose, in spite of the good things VSCode brings to the table.

      • skydhash 10 hours ago ago

        VSCode is notepad with plugins, built upon a web engine. Comparing it to Emacs is a huge disservice to Emacs.

      • umanwizard 13 hours ago ago

        Can I hit one key combination to edit the JavaScript corresponding to any vscode command, debug it and possibly modify it however I want? If not, it’s not really comparable to emacs IMO.

  • azram 15 hours ago ago

    Nothing

  • geocrasher 8 hours ago ago

    I'd give it a good editor.

  • bitwize 17 hours ago ago

    Build it on top of Guile.

  • lysace 15 hours ago ago

    Use python instead of lisp.

    • ssivark 14 hours ago ago

      There's the Leo editor, if Python's what you want: https://leo-editor.github.io/leo-editor/

    • m463 15 hours ago ago

      I agree.

      Maybe it's just personal preference, since I think it's easier for me to think in python over lisp (which I've known for longer, but I still fumble through)

      I do think python would make emacs more accessible to a wider audience.

  • randmeerkat 10 hours ago ago

    Realize that VI was the superior editor, give up on the endeavor, print out the code I had already written for emacs, shred it, then set the shredder unceremoniously on fire.

    For those that downvote me, worth it.

    • kQq9oHeAz6wLLS 9 hours ago ago

      > For those that downvote me, worth it.

      Nay, quite the opposite; I scrolled down specifically looking for comments like these, because I knew they'd be here. Kind of comforting, really.

  • sno129 16 hours ago ago

    Write Vim instead. /s

  • peter-m80 17 hours ago ago

    Not using lisp

    • m463 15 hours ago ago

      why the downvotes? This is a reasonable point of view.

      I sometimes think using lisp for a language is a little like trying to implement comments within json data.

  • sva_ 18 hours ago ago

    Not using Lisp would be helpful

    • volemo 18 hours ago ago

      Actually, I love Emacs for its Lisp! Yes, Emacs Lisp is not the best Lisp out there, however, IMHO, it's miles ahead of VimScript. If I were really to rewrite Emacs, I'd use some modern Scheme.

      • samatman 14 hours ago ago

        Fennel is a better Lisp than elisp. Neovim is extensible, and to a large degree written in, Lua, which the target language of Fennel.

        Most developers do not like writing Lisp. That's just a fact, slamming the downvote button won't change it. I am not among those developers, I like writing Lisp, but most, flatly put, do not.

        So by choosing Scheme you are competing with a remarkable number of little-used editors which can be extended in Scheme or Common Lisp, as well as Emacs, far and away the top dog in the extensible-in-Lisp-editor niche. Neovim has achieved the best of both worlds, because it can be extended in a rather nice Lisp, and also in Lua, which, while some find the quirks of the language annoying, is at least Algolic in structure, matching the mode of thinking and writing used by the vast majority of devs.

  • ac130kz 9 hours ago ago

    If I leapfrog over my generally cold attitude towards Lisp-like languages and my habit of Vim keys, the main problem is Emacs's sluggishness, even if it is natively compiled. Neovim fully packed with plugins, LSPs, settings and etc without lazy loading (!) is so much faster.

  • dvh 16 hours ago ago

    Don't use lisp. Normal people don't like it, it looks weird. I wonder how many projects failed because they were lisp. Normal people: Visits a project page. Sees it's a lisp. Closes page.

    • neilv 16 hours ago ago

      Parentheses scare away anyone who shouts "bro!" and fist-bumps each other, before they can insist "the first thing Emacs needs is a package manager, to hide code as much as possible from casual users" (missing half the point of Emacs).

      • shawn_w 13 hours ago ago

        Emacs has a package manager...

        • neilv 13 hours ago ago

          And consequently a lot more friction to users becoming extenders.

    • tightbookkeeper 13 hours ago ago

      And how would that make emacs better?