top | item 37427279

What's new in Emacs 29.1

236 points| User23 | 2 years ago |masteringemacs.org

142 comments

order
[+] ashton314|2 years ago|reply
This little project of mine made the front page here a few days ago, so I’m not trying to beat a dead horse or anything, but I just want to surface it here again in case anybody finds it useful.

I have made a starter kit at leverages many of the now built-in features of Emacs 29.1. You can get very far with regards to completion, project management, language, server, etc. just by tweaking a few defaults. I have put some of these nice tweaks together in a starter kit called “Emacs bedrock“: https://sr.ht/~ashton314/emacs-bedrock/

Let me know if you find it useful, or if you have any comments or suggestions. :-) I’m still working on incorporating some feedback I got earlier.

[+] tagfowufe|2 years ago|reply
It's incredibly useful to me. I love it. I find it nicely curated and true to the word 'starter' (kit). If I knew more about Emacs, this is definitely what I would have created, and in a similar manner.

It's that lil' layer of configuration that's missing that makes the first clash with emacs sane. I like the structure. I also like the fact that there's a 'researcher' mixin. Would absolutely love to see your opinionated inclusion of org-roam, and general.el.

I recently dabbled into System Crafters' 'Emacs from Sratch' series [0], which is incredibly well thought-out. After 5 hours of following it, you kinda get feature parity between his config and this; but in Berock's case it's done more natively which is really, really neat. I only miss some basic config with general.el.

I feel super lucky to have started in Emacs when they finally added LSP and Treesitter support, and with System Crafters' help and yours!

[0] https://www.youtube.com/watch?v=74zOY-vgkyw&list=PLEoMzSkcN8...

[+] globular-toast|2 years ago|reply
I saw this and finally after 15 years of using emacs I will be recommending it to people and getting them to use this starter kit. Previously I just couldn't explain to people what I love about emacs without thinking about the huge barrier they have to overcome to make it nice. I also couldn't in good faith recommend a "batteries included" starter kit like doom because I don't use it and I'm not sure if it has what I love about emacs which is it sets you free.

I've also read the linked blog post about avy and forced myself to get familiar with it. Jumping all over the screen is great (I set it up jump across all visible frames in my tiling wm). I'm going to investigate consult et al next (already use vertico and orderless).

[+] bradrn|2 years ago|reply
I’ve used Emacs for quite a few years now, but I had a look at emacs-bedrock when it was posted, and discovered a whole bunch of interesting settings and packages I’d never seen before. I’ve now switched my config over from Ivy to Vertico (and associated packages), and am much happier with it. Thank you so much for making this!
[+] lenkite|2 years ago|reply
Really tempted to try out emacs 29.1. I wish someone would compare Neovim with all the bling aginst Emacs with all the bling - with all the pros/cons along with startup-times and performance (intellisense, etc). Want to get out of vscode.
[+] elevader|2 years ago|reply
Your starter kit inspired me to finally bite the bullet and write my own emacs config from scratch instead of using doom. I'm not sure yet if I'm thankful for that, time will tell ;)
[+] jordigh|2 years ago|reply
Heh, people are still putting up their config files online and blogging about them, eh?

Some things in Emacs never change, no matter how many bells and whistles are in the latest version. :)

[+] Otek|2 years ago|reply
It amazes me that it took so long for emacs to have this kind of started kit. And I haven’t thought of it either. Thank you and please support it!
[+] raincole|2 years ago|reply
Finally decided to try out Emacs for a couple of days. (after years of vim and Jetbrains). Vanilla Emacs without batteries included.

I've found the configuration is surprisingly easy to read even tho I haven't seen lisp for 10 years. I think it's atrocious that many keybindings start with <C-x>, but it's easy to set it to another key (mine is <C-j> with capslock as <C>) so not a big deal.

My biggest complain so far is that the whole ecosystem is Unix-first. People say once they get used to Emacs they almost stay in it all day long. And even as an Emacs newbie I can confidently say these people all use Unix-like systems.

On Windows magit is really slow. Like much slower than any git GUI I've seen. And while eshell is usable, it feels rather primitive and not like a proper terminal. The default spellchecker option doesn't work on Windows either, but hunspell seems ok-ish (still a bit slow).

I understand that no one is oblige to write any software for my OS, but stil...

Edit:

The reason I don't use WSL: the last time I tried it, it was really slow when a windows process read from/wrote to a file living in linux file system, and vice versa. One obvious solution is to move as many file as possible to WSL, but I'm just not mentally ready to change my workflow that much.

Edit 2:

For people who like to try Emacs, I'd suggest to turn `which-key` on and install helpful-key. It's a software with the premise that you need to learn obscure key combinations.

[+] MereInterest|2 years ago|reply
To be fair, improving performance on Windows is not really a priority for GNU. From the GNU downloads page for emacs (https://www.gnu.org/software/emacs/download.html#nonfree):

> To improve the use of proprietary systems is a misguided goal. Our aim, rather, is to eliminate them. We include support for some proprietary systems in GNU Emacs in the hope that running Emacs on them will give users a taste of freedom and thus lead them to free themselves.

[+] ElevenLathe|2 years ago|reply
I'm one of those people that stays in emacs all day, and you're right that the Windows port is basically useless on it's own. I use the emacs-w32 package from Cygwin (it is a real GUI emacs that doesn't require an X server but also integrates with the Cygwin environment) though, and that has gotten me productive on lots of corporate workstations where running desktop Linux is out of the question.
[+] komali2|2 years ago|reply
I can't speak for emacs performance on windows (you surely have very good reasons to put yourself through devving on windows), but if you're a big vim user I'd highly recommend looking into evil mode, to bring vim bindings into emacs. I find emacs native key bindings kinda stupid, and modal editing to be superior. There's also full emacs config suites around this, such as spacemacs and doom, if you want to explore how they integrate vim-ness into emacs.

Emacs + evil mode has been my primary text editing environment for 7 years now.

[+] celrod|2 years ago|reply
Emacs-eat is supposed to work on windows, and may give you a faster e-shell.

Note that you can use things like `pcomplete` and `eshell-syntax-highlighting` to make eshell fairly smart. The fact that my shell can use corfu and the same completion, filtering, and ordering as the rest of my emacs is great.

[+] User23|2 years ago|reply
I hear WSL is snappier. Sadly NTFS optimizes for a completely different file usage pattern than extfs and the native win emacs has poor performance.
[+] worthless-trash|2 years ago|reply
If magit is slow, its likely because of your filesystems performance profile with gits data structures on-disk.

Source: I benchmarked git on windows and decided it wasn't worth trying to fix it.

[+] crabbone|2 years ago|reply
On remapping C-x -> C-j:

You are meant to press Ctrl with your right hand when you press C-x. Those who came up with these keybindings had this way of using in mind. If you remap it to C-j, it becomes inconvenient because you need to switch between left and right Ctrl in the middle of a chord (though, in some cases this is inevitable). Also, many keybindings are configured so that you can do both C-x (some key) and C-x C-(some key). That is you don't need to release Ctrl in the middle. But, if you change to C-j, then this becomes difficult to execute. Imagine pressing C-j C-m (or C-jm) for example.

Bottom line: not a good idea.

As for Windows: (I haven't used it roughly since Windows 7, and even then only in one work place that required it). How does the OS affect whether you close Emacs between sessions or not? Or is it still the case that you need to reboot Windows a lot?

Also: Magit wasn't always very slow on Windows (although both Git and Magit are and were always slower on Windows, but the magnitude varied at times). As someone who used Magit long before current maintainers took over: it evolved, but not always in the ways that I would like it to. The original Magit is quite a bit less organized (internally, in the way it's coded), but it's a lot simpler and in some ways more intuitive to use.

Modern Magit went through a cycle where they tried to do some performance optimizations, but then they added more features, and the performance gains were lost. Today, Magit is plagued with performance issues, and is a very complex (and a very unfriendly) program to debug: it's neigh impossible to get to the source of errors or trace the performance offenders. But, it's still better (at least on Linux) than anything else I tried by a large margin. So, I'm ranting about performance, but will keep using it anyways.

[+] stjohnswarts|2 years ago|reply
While WSL might be "slow" relative to linux, emacs with lots of plugins is exponentially slower under standard windows. Also since emacs launches lots of processes and accesses a lot of files the windows virus scanners, including microsoft, slow things down a lot more. I don't use live virus scanning though and have my downloads folder automatically scanned and a nightly scan set up for my windows machine to avoid that.
[+] 0x445442|2 years ago|reply
The reason eshell doesn’t feel like a proper terminal is because it’s a shell that doesn’t run in a terminal but in an emacs buffer. A down side is programs meant to display output in a terminal emulator won’t render properly in eshell. An up side is emacs commands meant to display output in an emacs buffer will work beautifully in eshell and the entire output will be editable.
[+] ljm|2 years ago|reply
Incredible work; I’ve cut down my config immensely by deleting external packages, using built-ins as much as possible, and emacs gives you a lot more out of the box now.

That said, magit is the star of the show.

[+] pantulis|2 years ago|reply
> "As much as we like to delude ourselves into thinking that unstructured orgmode text, or even s-expressions, represent the pinnacle of text editing and the acme of scrappy hackerdom, that mantra does come with a significant penalty to performance."

Love this in the context of native SQLite support.

[+] nforgerit|2 years ago|reply
M-x pixel-scroll-precision-mode

This is the best thing since idk. Thank you so much, folks!

[+] ashton314|2 years ago|reply
Really makes reading mail with inline images or org files etc. sooooooo much nicer.
[+] alwaysbeconsing|2 years ago|reply
It's a nice release. Headliners aside, a lot of little improvements that make a big difference. `mouse-drag-and-drop-region-cross-program` and `dnd-indicate-insertion-point` might be my favorites that category. Making dragging text into GUI Emacs work as it does for other programs.
[+] pickingdinner|2 years ago|reply
Anyone have a good recipe for proper color coding and autocompletion for mixed language files? js, html, css, php. I love spacemacs but couldn't get it to work right until I bailed for vscode which had everything working out of the box...
[+] srhtftw|2 years ago|reply
I'm not really happy with the number of times I have recently had to resort to sending it SIGUSR2 to force it to stop whatever it's doing when I re-indent some code in a file of Typescript. It happens about once a day. When it does I quickly save all my work and restart. I haven't looked too closely at it yet but from what I've seen in backtraces I suspect there's a bad pattern match situation in there somewhere, like what you might get from the exponential behavior of a poorly written regex.

I'm also not happy about the fact that I can no longer open large C++ files like https://github.com/ASDAlexander77/TypeScriptCompiler/blob/ma... in C++ mode without scrolling becoming so sluggish as to be unusable. I either have to disable C++ mode or open them in an older version.

It's good that emacs is getting some long needed attention, but I'm sad the latest version isn't as usable for me.

[+] G3rn0ti|2 years ago|reply
> I'm also not happy about the fact that I can no longer open large C++ files

Regex-based syntax highlighting is usually the culprit in these cases. There’s probably a new RegEx inside c++ mode that burns too many cpu cycles.

You might want to try out the treesitter mode „c++—ts-mode“ that does the syntax highlighting based on a real static parser written in C: https://medium.com/really-learn-programming/setting-up-tree-...

Disclaimer: I’m not a C++ dev so I have never tried that.

[+] G3rn0ti|2 years ago|reply
> when I re-indent some code in a file of Typescript

What typescript mode are you using? Emacs 29.1 comes with "typescript-ts-mode" providing parser based syntax highlighting and navigation. Traditionally, re-indentation is implemented using regex based syntax tables, too, so you might enhance your experience by switching over to that newer mode.

[+] fergie|2 years ago|reply
Mickey Peterson is doing gods work, but it would be great if this book-sized article could have a table of contents.
[+] unbornmaster|2 years ago|reply
Yeah, it's amazing work, but the amount of information here is really hard to digest.
[+] antoineMoPa|2 years ago|reply
I'm a bit disappointed at the features of the included lsp client. I went back to lsp-mode.

Also I feel like performance could be improved a lot, but that's probably an issue in my particular setup.

If someone has an efficient lsp-mode + typescript-mode + eslint checks, I'd be happy to see how you achieved that.

[+] kccqzy|2 years ago|reply
I recently updated to Emacs 29.1. I found that Emacs is now behaving erratically when it comes to modifier keys. Here's a post about someone seeing phantom hyper keys: https://emacs.stackexchange.com/questions/78135/why-does-ema... In my case I experienced phantom meta keys when I press the super key. I spent hours debugging and gave up by redefining my key bindings to include these meta keys.
[+] fergie|2 years ago|reply
What is the significance of TreeSitter? Emacs has syntax highlighting already- so how is it an improvement?
[+] lycopodiopsida|2 years ago|reply
Syntax highlighting now runs on regex, which means that it is slower and prone to errors. In the end, it understands nothing about the code it highlights. Tresitter, on the other end, makes a proper syntax tree.
[+] bananapub|2 years ago|reply
it's faster, builds a proper parse tree so is more reliable, it's shared between editors so will have greater opportunity for improvement, and exposes related things like indentation and code movement from the same system.

it's very very cool that this late in the world of computers we ~suddenly get cross-editor analysis system (LSP) and cross-editor highlighting/indentation/rough parsing support.

[+] SoftTalker|2 years ago|reply
Any improvement with "one long-running thing blocks all the buffers"?
[+] rjzzleep|2 years ago|reply
Can someone elaborate on the Wayland warning? I've been waiting for wayland support for a very long time. Does this warning imply that if I add or remove an external monitor emacs will crash?
[+] worthless-trash|2 years ago|reply
I run emacs on wayland, removing external monitors regularly, emacs jumps between them.
[+] tap-snap-or-nap|2 years ago|reply
I have been hearing about emacs and vim also intending to learn Emacs for a while, from the comments it seems like a good time to start.
[+] BearhatBeer|2 years ago|reply
The long line support improvement could be a game changer. I’m less interested in tree sitter and pixel-scroll seems like a nightmare - emacs users know how screwed up scrolling is already especially in large buffers.

I’m just glad that you can still compile a minimal emacs without dbus.

[+] Horffupolde|2 years ago|reply
I don’t like how you can’t reason about commands. It’s all like do-magic-spell-etc without an intuition.
[+] alex_smart|2 years ago|reply
Emacs is literally the best self-documenting system in the world - zero exceptions. You can easily see the documentation of every function which usually explains what it does and what each parameter is for. And in case you are not satisfied with that, you can quickly jump into the definition and see the code for yourself.
[+] G3rn0ti|2 years ago|reply
„C-h f“ (help on function) or „C-h k“ (help on keybinding) at least gives you some quick information on any function in Emacs. I also recommend „which-key.el“ showing you which commands are bound when you typed in an incomplete key combo. You probably also want some improved completion engine like ivy/counsel showing you the key bindings in the command list after hitting „M-x“.

This way I discovered a lot of helpful stuff.