It is peak Emacs to have only a reverse changelog in their HTML documentation, but for a changelog making you either get the source tarball or read a file directly from their git repo. :/
An actual example of a peak Emacs thing is that the interactive help parses these NEWS.* files so that it can tell you how recently the function or variable was changed in a newsworthy way.
Warning for people who get emacs off of homebrew tho, there was some issue with libgccjit’s formula that means that native compliation was not being enabled there, and I have my doubts about it being the case with this either.
while native compilation is fast, it creates another step in my workflow that was just painful enough. I move between boxes and bring my editor with me (I dont use tramp). So I found myself wanting to quickly spin up my editor on VMs. Enter emacs naitive compilation. After going through the lengthy doom install, opening the editor would fire off this native compilation mode which took a long time too.
It caused me to look reach for neovim and now that’s what i use on VMs. I still have my precious emacs on a couple machines but that’s about it, which is kind of a bummer.
TLDR: neovim can bootstrap in 1/4 or 1/5 the time of emacs. Wish I had a solution..
i’m not sure how to turn off native comp at runtime but I will look into it.
The problem with native comp is features dont always work right until they have been compiled. So I want to install and use the editor. Having such a slow install process with both doom and native comp is what’s painful.
The problem with native comp is features dont always work right until they have been compiled.
That shouldn’t be the case, do you have any examples?
For disabling at runtime, (setq native-comp-jit-compilation nil) before loading anything should do it. You could make it conditional on system-name or similar to select it only on the machines in question. Emacs will still take advantage of anything already native-compiled but won’t try to compile in the background. There is also native-comp-jit-compilation-deny-list for finer control.
i’ve tried, I suspect the latency is too high. In addition it requires extra setup which i’d rather not deal with. since I have to use teleport and vpn in different occasions, i’d likely end up with hung sshfs procs all the time.
How portable is the eln-cache? (I would guess that same gcc-version and arch would be enough, then you can just copy that folder, mine is like 100M ie. less than what you download in a minute of doom-scrolling)
i’ve tried, and while that works I havn’t figured out all the inputs yet. Most of the VMs I run are different than my desktop or macbook too. A worthy experiment for sure but I have yet to figure it out.
I have a personal “hype document” where I chuck new features as I see them land on the main development branch, since I use that branch, fetch & rebuild regularly, and cannot rely on etc/NEWS to remind me of the subset of things I am excited about. Figure it cannot hurt to share.
“:core promotions”: packages that used to be third-party, now available out-of-the-box:
which-key for key binding discovery: start a key sequence, get a cheatsheet popup. C-h already existed and still remains as an on-demand reference with a more explorable output, but IME which-key is a nice complement when you are in the middle of the learning curve for a new mode.
visual-wrap (was adaptive-wrap in GNU ELPA) for “nicer-looking” continuation lines: I have a weird fascination with this one.
OT1H the premise is nifty: add intangible prefixes to wrapped lines, based on the current mode’s hard-wrap rules; e.g. > for citation lines, # for comments blocks, appropriate stretches of whitespace for bullet-list items; purely decorative, not part of buffer text.
OTOH this opens the door for heretofore untold levels of jank:
prefixes will sometimes grab face decoration they should not (button & flymake underlines, region & show-paren backgrounds);
sometimes they should but won’t (markdown > markers get the default face);
leveraging adaptive-fill knobs means that modes that never had any reason to set those knobs will behave weirdly: in diff-adjacent modes, removed lines are wrapped with more whitespace than added lines, because the default value of adaptive-fill-regexp includes - but not +.
(No bug report for these AFAIK; will eventually get to it; can only focus on so much at any given time)
Better visual-line-mode integration in some modes that traditionally relied on hard-filling, which means more smooth & robust line re-flowing after text-scale or window-width updates.
ERC: set erc-fill-function to erc-fill-wrap.
EWW: set shr-fill-text to nil.
(Tables still use rigid wrapping though; also coaxing Gnus into trusting visual-line-mode takes some work)
Lots of love for outline (generalized Org-like section-cycling & -navigation):
outline-(show|hide)-by-heading-regexp: similar to Org’s “sparse tree” display;
tree-sitter integration: couple of knobs to let tree-sitter major modes declare where their headings are located;
buffer-menu and tabulated-list-mode integration.
imenu-flatten: compile imenu (M-g i) indexes into a flat list ; lets completion frameworks shine, instead of requiring the user to “drill down” nested indexes.
etags-regen-mode: automatically regenerate & reload TAGS when saving files.
completion-preview-mode: inserts an overlay after point to show the first completion candidate; saves a couple of speculative M-TAB.
toggle-option: what it says on the tin; very situational but not having to bring up M-: or M-x set-variable to flip a boolean is neat.
read-passwd-toggle-visibility (TAB while entering a password in the minibuffer): as someone who can barely string one word together without typos, I appreciate the ability to avoid the “Wrong 🙅 think about what you’ve done for a second and type better next time” punishment.
toggle-window-dedicated (C-x w d): I never went into the display-buffer-alist rabbit hole; instead I get by with C-x 4 [14] to nudge Emacs into popping stuff where I’d like. Happy to have a command to opportunistically tell Emacs “no touching this windows please”.
Ooooh! I’m running FreeBSD 14.2 on both laptop and desktop these days; looking forwards to this landing in FreeBSD ports 🤩. I have a moderately customized Emacs setup so don’t like being behind major versions.
I fired off a poudriere rebuild yesterday when I saw this news but sadly I found out that this hasn’t caught up to ports yet. Given the maintenance cost of going without the package manager, I can give this a week to hit ports.
The Antinews for those of us who experience time backwards.
It is peak Emacs to have only a reverse changelog in their HTML documentation, but for a changelog making you either get the source tarball or read a file directly from their git repo. :/
An actual example of a peak Emacs thing is that the interactive help parses these NEWS.* files so that it can tell you how recently the function or variable was changed in a newsworthy way.
C-u C-h C-n ?
[Comment removed by author]
Glad to see this in the 30.1 release notes:
It really makes a night and day difference in terms of UI pauses.
Warning for people who get emacs off of homebrew tho, there was some issue with
libgccjit’s formula that means that native compliation was not being enabled there, and I have my doubts about it being the case with this either.I use this formula for my Mac: https://github.com/d12frosted/homebrew-emacs-plus
Can confirm that emacs with libgccjit, and Emacs 30, has been working just fine through emacs-plus for months (at least)
I had to
brew reinstall gcc libgccjitto make it install the latest Emacs. just fyi.I use these builds: https://github.com/jimeh/emacs-builds
No 30.1 yet but the recent nightly builds are 31.something.
while native compilation is fast, it creates another step in my workflow that was just painful enough. I move between boxes and bring my editor with me (I dont use tramp). So I found myself wanting to quickly spin up my editor on VMs. Enter emacs naitive compilation. After going through the lengthy doom install, opening the editor would fire off this native compilation mode which took a long time too.
It caused me to look reach for neovim and now that’s what i use on VMs. I still have my precious emacs on a couple machines but that’s about it, which is kind of a bummer.
TLDR: neovim can bootstrap in 1/4 or 1/5 the time of emacs. Wish I had a solution..
It’s totally fine to turn off nativecomp (either at build time or run time) in situations where it doesn’t make sense to you.
i’m not sure how to turn off native comp at runtime but I will look into it.
The problem with native comp is features dont always work right until they have been compiled. So I want to install and use the editor. Having such a slow install process with both doom and native comp is what’s painful.
That shouldn’t be the case, do you have any examples?
For disabling at runtime,
(setq native-comp-jit-compilation nil)before loading anything should do it. You could make it conditional onsystem-nameor similar to select it only on the machines in question. Emacs will still take advantage of anything already native-compiled but won’t try to compile in the background. There is alsonative-comp-jit-compilation-deny-listfor finer control.how about sshfs / edit files from the host os?
i’ve tried, I suspect the latency is too high. In addition it requires extra setup which i’d rather not deal with. since I have to use teleport and vpn in different occasions, i’d likely end up with hung sshfs procs all the time.
How portable is the eln-cache? (I would guess that same gcc-version and arch would be enough, then you can just copy that folder, mine is like 100M ie. less than what you download in a minute of doom-scrolling)
i’ve tried, and while that works I havn’t figured out all the inputs yet. Most of the VMs I run are different than my desktop or macbook too. A worthy experiment for sure but I have yet to figure it out.
I have a personal “hype document” where I chuck new features as I see them land on the main development branch, since I use that branch, fetch & rebuild regularly, and cannot rely on etc/NEWS to remind me of the subset of things I am excited about. Figure it cannot hurt to share.
“
:corepromotions”: packages that used to be third-party, now available out-of-the-box:which-keyfor key binding discovery: start a key sequence, get a cheatsheet popup.C-halready existed and still remains as an on-demand reference with a more explorable output, but IME which-key is a nice complement when you are in the middle of the learning curve for a new mode.visual-wrap(wasadaptive-wrapin GNU ELPA) for “nicer-looking” continuation lines: I have a weird fascination with this one.>for citation lines,#for comments blocks, appropriate stretches of whitespace for bullet-list items; purely decorative, not part of buffer text.>markers get the default face);adaptive-fill-regexpincludes-but not+.Better
visual-line-modeintegration in some modes that traditionally relied on hard-filling, which means more smooth & robust line re-flowing after text-scale or window-width updates.erc-fill-functiontoerc-fill-wrap.shr-fill-textto nil.Lots of love for
outline(generalized Org-like section-cycling & -navigation):outline-(show|hide)-by-heading-regexp: similar to Org’s “sparse tree” display;buffer-menuandtabulated-list-modeintegration.imenu-flatten: compile imenu (M-g i) indexes into a flat list ; lets completion frameworks shine, instead of requiring the user to “drill down” nested indexes.etags-regen-mode: automatically regenerate & reloadTAGSwhen saving files.completion-preview-mode: inserts an overlay after point to show the first completion candidate; saves a couple of speculativeM-TAB.toggle-option: what it says on the tin; very situational but not having to bring upM-:orM-x set-variableto flip a boolean is neat.read-passwd-toggle-visibility(TABwhile entering a password in the minibuffer): as someone who can barely string one word together without typos, I appreciate the ability to avoid the “Wrong 🙅 think about what you’ve done for a second and type better next time” punishment.toggle-window-dedicated(C-x w d): I never went into thedisplay-buffer-alistrabbit hole; instead I get by withC-x 4 [14]to nudge Emacs into popping stuff where I’d like. Happy to have a command to opportunistically tell Emacs “no touching this windows please”.This is great, thank you!
imenu-flattenmakes me irrationally happy. :)Ooooh! I’m running FreeBSD 14.2 on both laptop and desktop these days; looking forwards to this landing in FreeBSD ports 🤩. I have a moderately customized Emacs setup so don’t like being behind major versions.
you can compile the beast trivially yourself, and enjoy the latest release.
I fired off a
poudriererebuild yesterday when I saw this news but sadly I found out that this hasn’t caught up to ports yet. Given the maintenance cost of going without the package manager, I can give this a week to hit ports.Available as MacOS universal binary already: https://emacsformacos.com/emacs-builds/Emacs-30.1-universal.dmg