Readit News logoReadit News
Decabytes · 4 years ago
I posted a link here to a Reddit post that said “if you could change one thing about emacs what would it be?” It had almost 200 comments. Some answers definitely touched on these points. But for the most part, what Emacs users wanted was for the Gnu Emacs maintainers to do was…

1. Switch out Elisp for a Common Lisp or Scheme

2. Update the way Emacs Ui Core so it used standard GTK or something better. (The current implementation uses a lot of ugly hacks to support a subset of GTK)

3. Ability to scroll without bringing point along with me so I can quickly check something off screen then just continue typing where I left off.

4. Improve threading so that things like TRAMP didn’t freeze when you were connecting

5. Fast/Arbitrary graphics support

I think for most Emacs users it’s a performance thing. Though the improvements to the GUI code would go a long way to making it easier to make Emacs be more user friendly.

In terms of this article. I think all of this is possible in a separate distribution of Emacs right now. Emacs will never turn on most of these things by default. But maybe if a version of Emacs that makes these changes becomes wildly popular, the current maintainers would be more amenable to it.

https://old.reddit.com/r/emacs/comments/padv22/if_you_could_...

Finnucane · 4 years ago
Yes, if you ask people who know how to use emacs what they would change, the answer is going to be very different from the answer you’d get asking people who have tried to use emacs and gave up.

The documentation does really suck. The terminology makes no sense to users not used to it. It does not explain that to make this into a functional system, some configuration needs to be done. It is terrible out-of-the-box. ‘Because this is how rms did it 45 years ago’ is not really a good excuse.

Abhinav2000 · 4 years ago
The documentation does _not_ suck. It it literally the most well documented software in existence, a reason for which it has been used for many different things outside its original purpose of text editing.

Yes, it may not be for everyone. But just say that, that it uses certain conventions that are likely outdated for a reasonable set of the population. But you can't say the documentation sucks when you have the below:

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

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

mlang23 · 4 years ago
Emacs is the self-documenting editor for a reason. I always found the documentation very good. I submit that every sufficiently complex system will need some terminology specific to the system the user will have to learn. Not wanting to do so if a form of lazyness that the developers cant really do anything about.
otabdeveloper4 · 4 years ago
Emacs is great out-of-the-box.

Really its only problem is the annoying bugs you frequently run into. (Emacs Lisp really isn't meant for programming large, stable systems.)

User23 · 4 years ago
M-x shortdoc-display-group is quite nice.
bachmeier · 4 years ago
> ‘Because this is how rms did it 45 years ago’ is not really a good excuse.

Not only do they use it as an excuse, they think it means Emacs is somehow enlightened. The people that want that can put (setq rms-mode t) in their .emacs and let the rest of us have sane defaults.

creamytaco · 4 years ago
I've been using Emacs for more than 20 years, these are all (for the most part) non-issues, brought up by folks who either are new to Emacs or never read the documentation / dived below the surface.

1. Emacs Lisp is great (for the problem domain), exists and works. Common Lisp could work but then given how close Emacs Lisp and CL are, there's no clear benefit, especially with Emacs getting native compilation. Scheme was proposed, some POC code written and failed because nobody was interested. It doesn't fit and fragmenting one of Emacs's greatest strengths (consistent ecosystem of working Emacs Lisp code) is a terrible idea.

2. The Emacs UI core is completely toolkit-agnostic. It doesn't use GTK on Windows. It doesn't use GTK on macOS. You can run _graphical_ Emacs without GTK or any toolkit whatsoever on Linux, and not lose any functionality. Therefore what you write makes no sense (ugly hacks to support a subset of GTK).

3. There are multiple ways to do this. Read up on setting the mark.

4. Threading has nothing to do with TRAMP freezing, bad configuration does. TRAMP documentation (does anyone that bring up these points ever read it?) has multiple sections on improving performance. Check "SSH control master" and "Improving performance of asynchronous remote processes".

5. SVG support is already there and more is on the pipeline.

What I've noticed during my 40 year computing career is that folks get lazier and lazier. Few read manuals / documentation anymore but most are quick to jump to superficial conclusions without any substantial time investment in trying to figure things out. Spoonfed knowledge is the order of the day, and the folks doing the spooning are usually not far from clueless themselves (the blind leading the blind). This leads to generational gaps and rapid propagation of erroneous ideas amidst the newbie masses, very similar to what you laid out.

Emacs mastery requires commitment and time investment in order to understand (at least) the basic models and the trade-offs involved. If that doesn't take place, one can start going down paths that are entirely irrelevant ("Emacs needs threads so that it doesn't freeze!", "Let's use JavaScript so we can do non-blocking IO!", "Let's rewrite Emacs in Rust!")

lytefm · 4 years ago
> What I've noticed in my 40 year computing career is that folks get lazier and lazier. Few read manuals / documentation anymore but most are quick to jump to superficial conclusions without any substantial time investment in trying to figure things out.

The problem is being used to software that "just works".

I've tried out to figure out how to to stuff with Emacs multiple times, but apart from sticking with org-mode for some use cases, I always have up after a while.

I don't see why I should "master Emacs" when there are usually better tools for any given task.

CJefferson · 4 years ago
2. What you wrote makes no sense. If linking to gtk provides nothing at all, why is the code even there?

3. Why is the default config for TRAMP so bad? It isn't spoonfeeding for everyone to not want to reconfigure it.

chriswarbo · 4 years ago
The fact there are known workarounds for certain problems shouldn't prevent us improving and fixing the underlying causes (in a step-by-step, backwards-compatible way).

With that said, I'd rather not see Emacs go all-in on threads or GTK, since they generally feel like WorseIsBetter anti-patterns:

- GTK 2 seemed OK, but unusable for me due to the 'display disconnection' bug. GTK 3 is full of red flags: a constantly moving target, little thought given to third-party applications, pretty much killed off third-party theming, etc.

- Threading is famously error-prone, which is completely unnecessary for high-level languages like Emacs Lisp. Co-routines, async/await macros, delimited continuations; even an actor model would all seem like better fits.

pjmlp · 4 years ago
Similar age, back in 1995 XEmacs was my refuge, because most UNIX world was foreign territory for IDEs and developer editors like Ultraedit.

With the way UNIX landscape evolved, I seldom use it, although the last time I used it in anger was around 2006, the muscle memory is still there, but really, the IDEs I missed in 1995 are now available everywhere.

slightwinder · 4 years ago
Be aware that this are comments from people who use emacs. It does'nt mean that implementing these wishes will also lead to more users coming to emacs. Even the low hanging fruits from the article are barely something that will bring in new users.

Though, distributions like spacemacs and doom-emacs have shown that they are bait working well to get new users. Investing more in that directions should pay out to some degree.

clircle · 4 years ago
Hopefully pure-gtk branch will be merged prior to Emacs 28, addressing (2).

On (1), I'm not much of a programmer, but Emacs-lisp fine, so I'm not sure what benefit changing languages could bring.

b3morales · 4 years ago
There are a good number of Emacs users who also use a Lisp dialect such as Scheme for their day-to-day work. Emacs Lisp has enough small, slightly strange differences from more mainstream Lisps that I can imagine that being kind of frustrating.

For myself I think that Emacs Lisp is a pretty good language for configuring a text editor. A lot of its warts actually make it easy to use in that context, in my opinion. Personally I wouldn't mind moving closer to Scheme or CL. Though I wouldn't want to lose "special" variables (with dynamic binding) no matter what happens -- they're a key tool in tweaking behavior to get it just how you want. But for people who are trying to build packages, especially large ones on the order of Org or Magit, I can see having a more, let's say production code oriented language, being a nice prospect.

chriswarbo · 4 years ago
Would this pure-gtk branch avoid GTK's famous X11 connection bug? https://gitlab.gnome.org/GNOME/gtk/-/issues/221

Every few years I'm tempted to try the GTK version of Emacs, but it doesn't take long before this bites me and I go back to Lucid!

slightwinder · 4 years ago
Is the pure-gtk-branch really working on switching the underlying UI-architecture? Or just removing the hacks for X11 and moving them to gtk?
guessbest · 4 years ago
I've seen all these before and it makes me wonder why someone doesn't just make a different version of emacsen like guile-emacs. There must be a lot of inertia behind emacs and substantial amount of development effort to make all these changes that keeps competitors to gnu emacs from progressing to replace it.
slightwinder · 4 years ago
Because of GNU Emacs biggest strenght, which is also it's biggest flaw: the mountains of existing code. Any new emacs must support what emacs already offers. And this means not just to be able to run the code, but to also support the huge amount of special and exotic features that Emacs offers. Guile-emacs for example has a pretty long history on fighting emacs-strings and it's special features.

There is the general believe that users don't wanna change from emacs away and any new emacs should be ~100% compatible to old emacs. But history has shown, people will not settle with inferiour clones. So many work will be neccessary, whatever someone will build to replace emacs.

908B64B197 · 4 years ago
> 3. Ability to scroll without bringing point along with me so I can quickly check something off screen then just continue typing where I left off.

https://ftp.gnu.org/old-gnu/Manuals/emacs-20.7/html_chapter/...

> 4. Improve threading so that things like TRAMP didn’t freeze when you were connecting

You really want this, as well as the low level functions to support TRAMP to be written in C.

https://code.visualstudio.com/docs/remote/remote-overview

michaelmrose · 4 years ago
Regarding 3. Ability to scroll without bringing point along.

You can duplicate the buffer side by side with the original buffer and in each window point will be at a different location. This is fundamentally just better than such a peek mode as you can see two different segments of the same file side by side. If you do want to peek and return you can use goto-last-change to return to where you were last typing. In evil this is bound to g; no idea about a binding in plain emacs but nothing is stopping you from using and binding such a thing.

https://github.com/emacs-evil/goto-chg/blob/master/goto-chg....

You can also use marks in evil m[a-z] to set a mark '[a-z] to go back to that mark. so for example ma 'a to go back.

Consider the alternative. Since you don't want scroll to always leave point behind you must have a special binding to enter peek mode and thereafter you scroll as normal. Then one of two things has to happen. Either you decide point really ought to be here now and you have to hit a key combo bound to end-peek-at-current-location or another key bound to end-peek-return-to-point. I would suggest escape/q for end-peek-return-to-point and return for end-peek-at-current-location. You can also do end-peek-return-to-point if you just start typing obviating the need for an additional binding but I think this would be a little weird because there would be a slight hitch while it pops back to prior location.

The biggest defect with this compared to goto-last-change is that it is ironically given the alternative being part of evil modal. You have to decide to use peek ahead of time and then you have to remember you are in that mode and do something to get out of it should you decide you actually want to do something different like exit with point at the new location. With goto-last-change you don't have to decide ahead of time you can simply decide to go back after the fact without needing to attend to any state in between.

Multiple windows on the same file and marks require attention ahead of time but are far more general and powerful than peeking.

Sometimes what people want and what is most useful are different things. Fortunately Emacs is simple enough and powerful enough for you to implement peek mode trivially if you like but I don't think it would be worth using compared to the alternatives. Logically you could implement it by remembering present point and making local bindings to go back to prior point example esc to go back enter to remove local binding to esc.

Deleted Comment

rusk · 4 years ago
> 3. Ability to scroll without bringing point

You could probably do this with a transparent indirect buffer with a special “scroll only” mode that reverts once you start typing again.

pjmlp · 4 years ago
For me Emacs was only something I used when I couldn't have access to XEmacs, which was the best workaround for the lack of IDEs in 1990's UNIX.

Nowadays I just use IDEs.

tsuujin · 4 years ago
I agree with basically everything in this article. Emacs needs new users, and to get them we need to reduce the barriers and user friction. In fact, increasing adoption through reducing user friction is a very well known topic in software design; this shouldn’t really be a topic for debate.

But god help you if you suggest changing Emacs to conform with modern standards. I still maintain that the worst part of Emacs is the vocal minority of evangelicals in the community.

I’ve been using Emacs as a daily driver for years, but it also took me years to adopt fully because the mental overhead of learning new terms for things I already knew drove me to ask for help from the community, and the community routinely made me not want to be any part of it.

It sucks, because most of the community is fine, but the very loud voices of a minority group of purists who have built their identities around being “Emacs people” are incredibly aggravating.

BeetleB · 4 years ago
> Emacs needs new users

Why do you think so?

I've been hearing things like this for over a decade now. And compared to 10 years ago, the Emacs "ecosystem" has shown explosive growth. I can find much more useful help on Emacs on the Internet now. I can find an order more magnitude of tips/tricks than I could 10 years ago. There are many more packages easily accessible than 10 years ago.

From within, it's clear that Emacs is doing quite well in terms of its user base. The fact that its percentage market share is dropping doesn't mean it's not growing - just that other things are growing faster.

So I never understood why people imply that Emacs is somehow stagnating.

User23 · 4 years ago
The Emacs user community is absolutely fantastic. Lisp is an amazing language to work in, and Emacs gives it to you for free. VSCode is an excellent piece of software, but you have to jump through hoops to extend it. I can extend Emacs by switching to my scratch buffer and hacking until I get what I want inside of 15 minutes in most cases. And then I drop it in an .el file and go from there.

And org-mode is absolutely fantastic when it's integrated into the editor you're writing your code in.

jolux · 4 years ago
It’s moving, it’s just going to take a long time to get to where it needs to be. Personally I would be focused entirely on performance if I were to start making improvements.
pjmlp · 4 years ago
Surveys that show user distribution across vim, emacs, vscode and IDEs.
wiz21c · 4 years ago
been using emacs for several years... What could be improved is speed. Too many times it doesn't see some keys combinations I hit. Screen redraw should be faster too (I spend a lot of time in front of it so that kind of "detail" is actually important). Loading big files is slow. Editing long lines is slow. Of course it doesn't happen often but when it happens it's annoying. Emacs could also propose options to better align on common behaviors (for example C-left/right arrow) doesn't behave like in other editors.

It could also be more "discoverable". There are hundreds of functions so that 100% of my needs are covered. But every now and then, when I want to find a command, I DuckDuckGo it... It'd be nicer if somehow there would be an assisted navigation in the commands (or a pointer to that assistance I've been sorely missing :-))

But I like it anyway. 'cos it's faithful, community grown, etc.

And if I had time I would contribute. But emacs is an old platform so there are many choices buried in and reaching the level of knowledge necessary to contribute is probably very high...

yakubin · 4 years ago
> been using emacs for several years... What could be improved is speed.

Same here. Long lines are especially painful. And it's quite surprising what Emacs considers a "long line". I have a file in my project with tests, where I have an array, with each element of the array on a separate line, averaging at around 125 characters per line (some of them weird Unicode characters, so not just ASCII). There are 52 lines of it. And when I scroll down the file with C-v (Page Down basically) it scrolls quickly up until I get close to this place, then I get something like 1.5 seconds delay while it's hanging there. It's ridiculous.

Another thing is how easy it is to freeze Emacs into being completely unusable when editing files over Tramp (with remote work it's the go-to solution), caused by an unreliable connection. Mostly it happens when the underlying VPN connection is dropped. When that happens, Emacs freezes with no explanation whatsoever. I can only guess what happened. C-g, Esc, nothing works, regardless whether the VPN connection is restored or not. The only solution at this point is killing this instance of Emacs. Specifically for this purpose I crafted a one-liner to kill the right instance of Emacs[1] (the one under the mouse pointer):

  kill $(xdotool getwindowpid $(xdotool getmouselocation | cut -d : -f 5))
Also, magit is painfully slow. When using it, I always wonder if Emacs is frozen again, or if it's just magit being magit. It's a shame Fork is not available for Linux.

[1]: The other instance of Emacs is used for tracking in org-mode the time I spend on different tasks. I used to do it all in a single instance, but then I kept losing that data due to Emacs freezing like that, so I started using a separate instance for the time-tracking. I really think Emacs should be a multi-process application to prevent such situations.

mattmein · 4 years ago
Regarding your long lines issue - from your description it sounds instead like an unicode issue which I also ran into a while back.

What happens is that your main programming font does not have the unicode characters, so Emacs falls back to searching all your fonts for each character it can't find, which is slow if it has to search through many different fonts.

The solution is to ensure you have symbol fonts installed - see the list of fonts here: https://github.com/rolandwalker/unicode-fonts

jpeloquin · 4 years ago
> some of them weird Unicode characters, so not just ASCII

This makes me suspicious that it's the font cache causing the slowdown (assuming Windows), not long lines. I saw similar symptoms a couple years ago and fixed it with (setq inhibit-compacting-font-caches t).

You could also try increasing the garbage collection threshold on the theory that the lag is a gc pause. I've used:

  (setq gc-cons-threshold (* 511 1024 1024))
  (setq gc-cons-percentage 0.5)
  (run-with-idle-timer 5 t #'garbage-collect)

User23 · 4 years ago
Magit performance issues are definitely disappointing and I definitely wish it had a better out of the box experience. However there are plenty of resources on how to improve its performance. It's really only on big monorepos where it's frustratingly slow after mitigations. But again I agree it should have a better out of the box experience and I'm sure the maintainers agree.
BeetleB · 4 years ago
Agree with the others that this is likely a Unicode bug and not a long line issue. 125 characters never causes me problems.

But yes, Emacs does have a long lines issue, sadly.

lloda · 4 years ago
xkill ?

But I agree. Emacs should be faster.

kryptiskt · 4 years ago
"Buttery Smooth Emacs" contains some insight into what goes on under the surface of Emacs and is a great read: https://m.facebook.com/notes/daniel-colascione/buttery-smoot...
shrimpx · 4 years ago
> Too many times it doesn't see some keys combinations I hit.

This caught my eye because I tend to think the opposite of this statement. Emacs doesn't skip a beat on text input -- unlike say VSCode which has perceivable input lag. In my experience, when Emacs gets slow it's a configuration problem, like flychecking on every keystroke, or a slow/poorly written third-party package. Raw emacs is blazing fast.

Disclaimer: I use `emacs -nw` -- no GUI toolkits.

Tomte · 4 years ago
> What could be improved is speed.

Native compilation is coming in the next version and should help quite a bit.

wiz21c · 4 years ago
I'm already on the 28.0 branch, makes no visible difference (my workflow is rather basic : editing lots of code, bits of org mode, bits of WL)
medo-bear · 4 years ago
i think running as a server should be made default. i imagine that alot of people are opening alot of seperate instances
abdullahkhalids · 4 years ago
> It could also be more "discoverable".

I definitely agree that I want to type some string and it should show a fuzzy search from all available commands and their descriptions. That would be huge timesaver for functionality I know exist, but I forgot the exact commands.

uncletaco · 4 years ago
This is literally what `M-x` does. You want to do the same for functions? `C-h f`. Variables? `C-h v`. Keybindings for the current mode? `C-h ?`.

If I'm not mistaken when you install vanilla Emacs the screen even includes a tutorial and guided tour that both tell you these commands.

vvillena · 4 years ago
Discoverability is a key part of larger addons such as Spacemacs and Doom Emacs. They come configured out-of-the-box with nice completion panels for command and function search panels.
BeetleB · 4 years ago
> It could also be more "discoverable". There are hundreds of functions so that 100% of my needs are covered. But every now and then, when I want to find a command, I DuckDuckGo it

Have you tried the apropos command? For me, often using helm/ido and trying to guess actually leads me to the correct command. I personally haven't even tried apropos, so I don't know how good it is.

rightbyte · 4 years ago
Have you tried "native Emacs", AoT compiled with libgccjit?
mlang23 · 4 years ago
The title is rather strange considering Emacs is Free Software. Forks are fine. So why not UX forks. But demanding changes to the original without going through the dev process as everyone else would need to do is rather weird. "X should do Y" seems to be the new way of treating eachother...

If you ask me, Emacs is fine as it is. In fact, I have been bitten by two changes over the time which come from the "better UI" camp. matching-paren-mode stopped to do the jumping cursor thing, which I totally rely on working with a braille display. I luckily caught this during the dev process and managed to submit a patch which adds a flag to force the "old" behaviour. And frankly, the guy who forced transient-mark mode on the world needs to hugs till he feels the pain. I am always bewildered when something I just marked suddenly vanishes just because I hit del. Move cursor a bit and DEL suddenly does something different again.

IOW, I am a long-time Emacs user, and really, stop breaking the world just because you think something needs to be "modernized". Breaking the user experience of long-term users in order to cater to newbies is rather rude to those who have invested considerable time to learn the system so they can use it as effectively as possible.

bjourne · 4 years ago
Xah Lee and friends maintains a mode called ErgoEmacs that implements most of the changes he proposed: https://github.com/ergoemacs/ergoemacs-mode
b5n · 4 years ago
Lately there's been a lot of talk about what Emacs needs, written mostly by people who don't understand Emacs.

Emacs is more of a journey than an application. It's similar to a blacksmith forging their own tools - Emacs is the metaphorical ingot, waiting to be transformed and molded by the user.

If you're happy with what you're using then you don't need Emacs, and Emacs doesn't need to appeal to that crowd. Emacs isn't a VSCode competitor, it's something entirely different, and it's waiting for those who desire transcendence - shedding the limits imposed by other tools.

You can install and use Emacs as quickly as any other application, but to truly reap its benefit you must go deeper. I don't see the need to cater to people who clearly want something else, those tools already exist, please leave Emacs to those of us who appreciate it for what it is.

I disagree with all the reccomendations made in this article, all these changes are easy to implement, and the user is encouraged to do so - one of the main selling points of Emacs.

That doesn't mean there is not room for improvement, Emacs is still constantly improving. Additionally, I've encountered many instances where a colleague or friend introduces me to some new feature in their preferred application, the majority of the time it's a feature that's been available in Emacs for years if not decades.

I'd prefer we continue to focus on the needs of Emacs users rather than the wants of non-emacs users. Emacs will still be waiting for them when they're ready.

greggman3 · 4 years ago
Seems like you completely missed the point of the article.

The article called out that none of the changes make emacs any less powerful nor do any of the changes remove any functionality. Users can still do everything they could always do with emacs. They can still take this "journey" you mention. All the changes do is let them get started quicker and jump in with at least some familiarity.

Old emacs users such as yourself can keep on using your non-standard keys and old terminology. For you, nothing would change. For new users, they'd be productive quicker and still able to take advantage of all the things that keep fans of emacs using to emacs.

b5n · 4 years ago
I can't help but feel that you missed the point of my comment. New users should be encouraged to make those changes themselves if they feel the need to. If that's not something they're interested in, why use Emacs?

Anyone can publish a config and distribute it. For instance, the author of this article could create a 'new user friendly' config and distribute it just like doom, spacemacs, etc. If it's popular enough it will see a lot of use, but my guess is it would most likely wallow.

Making those changes default would require existing users to update their configs, not necessarily a big deal, but for what? So a new user can download Emacs, play with it for a minute, and still conclude that Emacs is a dusty relic because they don't understand the philosophy?

The whole idea of chasing new Emacs users is kind of silly, Emacs is more popular than it has ever been, and if a new user doesn't come to Emacs for what Emacs offers they were never going to stay.

Out of the box solutions already exist, Emacs is in a different category, and need not compete in that arena - especially at the expense of current users.

Appreciate the reply, cheers.

mleonhard · 4 years ago
I've been using Emacs for 17 years. I want every change suggested in the article, especially 'redo'. A few additional ones:

- After pressing Alt-X, show a list of recently used commands. Allow moving between them with the up/down keys. Show a docs pane which explains what the command does, how to use it, and has an example. For new users, pre-populate the recently-used commands list with common commands. This is like the auto-complete "intellisense" function that saves me so much time when using JetBrains & VSCode.

- When opening/saving a file and typing the path, automatically show the directory contents and hi-light entries that match the path. Show recently opened files and directories in bold. Scroll the listing with PGUP/PGDN/mouse-wheel. I often use emacs to open log files which contain long unique prefixes which are error-prone to type. Allow using the mouse & arrows keys to select the file.

- Auto-save and auto-format. I love this mode when editing Rust code with CLion. It gives me something I've wanted for a long time: to write code without thinking about formatting. There's probably already some complicated way to get this to work in Emacs. Ideally, emacs would check if appropriate tools (rustfmt) are installed and make it just work automatically.

- Allow using ENTER to add newlines to a search-replace command. I can rarely remember whether it's CTRL-Q, CTRL-J, or both and frequently make mistakes.

- Allow writing Emacs commands in popular languages like Python 3 or JavaScript. Include a tutorial for each supported language. The lisp bigots will be angry about this.

- Create a public issue tracker for emacs, ideally on GitHub. This will let users help each other and participate in setting issue priorities. Include a code of conduct. Do not auto-lock old issues like Flutter Team does. Old issues are findable by search engines. Workarounds and error messages change over time. When issues are unlocked, users will add comments like "The fix now requires change X. Here's the new command that worked for me ..." Locking old issues saves the dev team some effort but destroys a lot of the utility for users.

tgbugs · 4 years ago
> especially 'redo'

undo-redo is in emacs-28 now, though not the default behavior.

> Allow writing Emacs commands in popular languages like Python 3 or JavaScript.

For js see https://github.com/emacs-ng/emacs-ng

Integrating additional runtimes into the Emacs core, especially ones that also have a single main thread are likely to be a complete nightmare. There are already insane and undebugable performance issues with things that run on the main graphics event loop or on timers.

If elisp can somehow be made multi-threaded there might be a chance. However, there is SO much elisp code that assumes synchronous ordered execution that will break in subtle and unexpected ways when that restriction is lifted I expect it will take even longer than the transition to lexical scoping (and that is just in the core). I would love to be wrong though.

With respect to Python, the cpython runtime and semantics for redefinition are likely even more nighmareish because it is so easy for classes and instances to become out of sync and you wind up having to restart the whole environment just to clear out the bad state or risk creeping insanity. Also the churn in the Python ecosystem is likely far too high for Emacs to be able to maintain. So there are both technical and process mismatches. You could always run python in a separate process and use message passing though. Work to support LSP certainly paves the way for it, and elpy has fully interop with python as well, so you could use that machinery to operate on buffers in languages beyond python. So if all this is possible why isn't anyone doing it?

BeetleB · 4 years ago
> After pressing Alt-X, show a list of recently used commands.

I would recommend people install/enable some of the nicer completion packages. Helm does this, for example. Personally, I wouldn't recommend helm, but I suspect all the "major" completion modes do this. Even ido/smex, I believe, does this, and it comes with Emacs (you still need to enable it, though).

Also, I suspect if you use Doom or Spacemacs this will be the default.

> When opening/saving a file and typing the path, automatically show the directory contents and hi-light entries that match the path. Show recently opened files and directories in bold. Scroll the listing with PGUP/PGDN/mouse-wheel. I often use emacs to open log files which contain long unique prefixes which are error-prone to type. Allow using the mouse & arrows keys to select the file.

I think all of this is configurable, but I'm also sure 95% of users don't want to spend too much time configuring. The default interface sucks - the problem is that there's no "improvement" that the majority likes, so the default remains a bit barebone. For example, I don't like some of your suggestions (although they are "objectively" OK). Likewise you wouldn't want it the way I have it.

> Auto-save and auto-format.

You could put a setting in your config file to enable this. Most people don't want it, though. Even in other editors.

> Allow using ENTER to add newlines to a search-replace command.

I believe this is configurable - I did something similar for a different input. But ... how do you propose someone then achieve the current effect of ENTER?

> Allow writing Emacs commands in popular languages like Python 3 or JavaScript. Include a tutorial for each supported language. The lisp bigots will be angry about this.

I would like this, but it's very challenging. I even switched to Leo Editor which was inspired by Emacs and is the closest thing you'll get to Emacs: An extremely configurable editor that you can script in Python - you can dynamically change the UI, etc. It's the equivalent of Emacs but for Python users. You may want to look into it. Unfortunately, despite being "mature", its documentation isn't the best, and it's hard to compete with all the Emacs packages out there. I gave up and decided to learn elisp - much easier than porting every Emacs feature I liked to Leo.

But Leo really has its strong points. The literate programming capabilities it is based on still haven't been replicated in Emacs - I've not found anything as good in that regard as Leo. I still occasionally fire up Leo when I find Emacs lacking.

> Create a public issue tracker for emacs

It occurred to me that anyone could create a Github project just for Emacs issues. It would be useful even if Emacs developers don't look at it. Currently people do it with StackExchange.

roenxi · 4 years ago
Interesting commentary. I do think this is a little harsh on the poor Emacs undo system.

I can't really push back on the idea that Emacs' undo system is excessively confusing, because I use Emacs and I don't understand it. I usually save text in a second buffer if I think I'll need it later.

But the solution should be to improve the UI rather than remove functionality. Consider what magit did to a similar problem in git - git is powerful with a weirdly crippled CLI. Magit adds a great ... Emacs User Interface? EUI? and all is well.

There is a probably a similar solution to the Emacs Undo problem.

psychstudio · 4 years ago
Given your current situation, undo-tree-visualize will change your life.
rurban · 4 years ago
Absolutely not. In typical Emacs fashion they took a serious complaint, fixed it and then went on to overdo it, making it unusable overkill and slow. One step redo would have been enough.
medo-bear · 4 years ago
wow. is there something like this but for a whole project ?
Guthur · 4 years ago
Just add undo-tree and blow everyone's mind :)
karatinversion · 4 years ago
> I usually save text in a second buffer if I think I'll need it later.

I use the kill ring for this.

abdullahkhalids · 4 years ago
Doesn't the kill ring also behave similarly. That if you move through the kill ring and stop, next time it will start from that point, rather than the latest killed text?

I always get confused if I use too much of it.

Dead Comment

medo-bear · 4 years ago
i initially hated emacs' non-CUA bindings. now my thoughts are opposite and because i spend so much time in emacs, when I need to go to CUA it's quite annoying. i agree that CUA should be made default, but with immediate option on start-up to use original emacs bindings. i think it will put off far fewer people