Changes in Emacs 31 I'm Already Daily Driving
62 points by Shorden
62 points by Shorden
The tree-sitter changes are really exciting. I always found the process for setting it up really awkward
Curious about eager complete as well. I find icomplete and fido mode get really close to what I want, but still not as usable as third party packages like corfu
Yeah, hoping that one day we can get something close to vertico etc. with just builtins, and enabled out-of-the-box. There is a huge difference in usability by just enabling a few tweaks and builtins (cf. bedrock and emacs-solo which do this)
Emacs' greatness is really its biggest "fault", huh?
It comes with more tools than entire application suites, but because you're expected to craft the editor to your liking, it's all quite hidden, even with all the introspection/help commands built in. However, it's very hard to agree on "sane defaults" when people are using the app in all manners of ways from zero config to several thousand lines, and so nobody can decide what 'sane' is. Hell, I myself went from a ~500 line config to around 100, because I realized I'm just accruing packages without really understanding or needing them.
My personal opinion is that syntax highlight, fast LSP with code actions, and auto-completion is the bare minimum. Emacs does #1 well, #2 acceptably[0], and #3 badly (dropping 10-15 lines of vertico into your initfile is just so much less of a hassle than messing with inbuilt stuff imo).
[0]: eglot is an impressive project and I'm very happy to see it in stock Emacs, but I reckon lsp-mode is still a better pick when it comes to performance and zero-config usage.
For me lsp-mode required a ton of config and turning things off to be usable. Eglot is nice without configuration. To each their own.
I’m daily driving 32 and I wouldn’t say ts just works. Every time emacs starts I get some huge message about a missing dylib
(treesit-auto-install-grammar t) ; EMACS-31
(treesit-enabled-modes t) ; EMACS-31
The syntax used in these examples suggests that these are function calls but they are actually options to be set.
Some smaller changes I've been enjoying in the upcoming release:
*work*) for something in my personal configA few tweaks I had to make to get everything behave exactly to my liking again:
Assuming that no new bugs are introduced it should be a nice solid release as usual.
The syntax used in these examples suggests that these are function calls but they are actually options to be set.
Probably copy-pasted from a use-package :custom list. I'm ambivalent about :custom for this reason, more fiddly when you want to experiment with values or share.
with-work-buffer
Is this a performance thing? The docs don't say why you'd want to use it over with-temp-buffer, just that you have to be more careful.
Yes, I believe it's for performance. Looks like it was first added as part of the work to make string-pixel-width calculations faster:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=72689#32
This warning can be disabled if anybody finds it annoying.
How? Ideally it would be possible to disable the warning for anything in elpa, so it only warns of my own files.
Also, 64/68 warnings on my Emacs are from -autoloads.el – a generated file, that should be fixed by whatever elpa/melpa thing generates it.
You'd add (files missing-lexbind-cookie) to either warning-suppress-types or warning-suppress-log-types. With the former it's still logged but the warning buffer is not popped up.
(add-to-list 'warning-suppress-types '(files missing-lexbind-cookie))
Suppressing the warning for ELPA only could be done by binding warning-inhibit-types to the desired value for the duration of the package loads. That variable is similar to warning-suppress-types but intended for temporarily binds.
(let ((warning-inhibit-types '((files missing-lexbind-cookie))))
;;; load my packages here
)
YES I was just wishing for editable xref, this is going to make my life so much better. Lots of great changes here that touch a surprisingly large amount of things I interact with daily.
Nvim switched the default from vim regexp to treesitter and it broke my writing. Treesitter needs some configuration to parse HTML comments in markdown and even after I fit the pieces together it didn’t work.
I solved my problem by disabling treesitter.
I’m very conservative when it comes to basic infrastructure like editors.
Most of the time changes to editors just break something Ive done for years with out issues.