The Emacs 30 Release Cycle Has Started

Eli Zaretskii has announced the start of the Emacs 30 release cycle. What that means is that Eli has created the emacs-30 release branch and restricted commits to it to bug fixes that don’t affect low level code. This is the start of the process where what will become Emacs 30 starts undergoing refinement and polish.

Eli says that he hopes to release the first pretest in about a month. After that, barring any show stoppers, the release of Emacs 30.1 won’t be far behind.

If you don’t mind living on the bleeding edge, download and install the emacs-30 branch and report any problems to the development team. You’ll be helping all of us get a better Emacs 30.1 faster by doing so.

I know I always say this but it can’t be said enough: thanks to Eli and the other devs who work so hard to benefit us all. I’d double their salary but it would stay the same.

Posted in General | Tagged | Leave a comment

PSA: Emergency Emacs/Org Release

Stefan Kangas writes to tell us about an emergency Emacs release to version 29.4. This is the result of a recently discovered Org mode problem, that you can read about here. Both projects have offered updates. The Org mode announcement says that you should update either Org or Emacs. The Emacs announcement says you should update both so I am updating both.

I’ve updated Emacs and am in the process of updating Org. Right now it is stuck “checking Org-2.7.5” so I fired up my old version of Emacs to write this.

If you’re an Org user, you need to do something. The safest thing, I guess, is to update both. That’s what I’m doing and when I’m done, I will have the latest Emacs and Org. This is a pain but, really, we hardly ever have this sort of thing with Emacs or Org. Compared with my other apps that have an update every week or so, that’s not bad.

Afterword

Org finally finished but then Org wouldn’t run correctly. I blew away my Elpa directory and let Emacs rebuild everything on startup. Still no joy. Finally, I removed the new Org from Elpa, started Emacs with a -q to prevent it from loading the builtin Org, and installed the new Org. That worked and everything is fine now. You’d think I’d remember about doing that when I have problems with loading a package, but no. Maybe next time.

Update [2024-06-23 Sun 12:08];

Ihor Radchenko has clarified that the fix is entirely in the Org code so there is no need to update Emacs unless you want to run the builtin Org. You need only update one or the other.

Posted in General | Tagged , | Leave a comment

The Hours That Programmers Keep

An enduring stereotype about hackers—as opposed to those who program only as a day job—is that they get up at noon, start programming in the late afternoon, and keep programming for most of the night. Many of us, me included, are preternaturally night people. But that mostly works for young people. Once you get a bit older and start your own family, keeping those hours is a non-starter.

But the question arises: is this stereotype accurate or is it a legend perpetrated by a few outliers? Ivan Bessarabov decided to find out. That’s not as hard as you might think. His idea was to check the times that some famous open source programmers made commits to GitHub.

The results weren’t surprising. They were, in fact, just what you’d expect. Some, perhaps many, programmers from this subset did adhere to the stereotype but others—Linus Torvalds, for example—work on a normal day schedule.

None of this really matters at all except as a cautionary tale for those anal micromanagers who want everybody to be in the office for a set of fixed hours. Still, it is interesting and I’d be interested in a wider survey. One could, of course, just look at all the GitHub repositories and parse out the individual contributors but some of those will doubtless be people working at places like Red Hat and contributing as part of their day jobs.

I’m not sure how you’d filter for those programmers who can work whatever hours they choose. Even then, you’d get lots of people, like Linus, who can theoretically work whenever they like but have family responsibilities that limit their actual available work times.

I’m sure, that with enough effort, this could be done but it’s probably not important enough to be worth the effort. As for me, I’d be working into the night except that, you know, family.

Posted in General | Tagged | Leave a comment

🥩 Red Meat Friday: Is Emacs Slow For You

Over at the Emacs subreddit, MarkieAurelius has a mini-poll that asks: Is Emacs Slow For You? That’s a perennial question, of course. I last wrote about it a year ago. Not much has changed since then.

The same uninformed people are opining at the top of their lungs about how slow and unusable Emacs is and, of course, the ankle biters are as active as ever. The best contrary opinion was from danderzei who said “Emacs works as fast as I can type and think.” That’s been my experience too. Emacs is more than able to keep up with my typing even though I’m a reasonably good touch typist.

Many of the comments blame LSP for any perceived slowness. I program in C and Lisp so I’ve never seen the point of LSP and have never used it. It may be that it does slow things down. How this compares to other editors, if it actually happens, I don’t know. In this case, I’m able to get away with saying “I don’t care.”

The other cause of slowness appears to be running on Windows. Some commenters report that running Emacs under WSL resolves the problem for window users. I’m happy to say that I really don’t care about any Windows related problems.

Some commenters suggest that maybe having a lot of packages slows things down. I have a a moderate number—probably about 80—of packages installed and it doesn’t seem to affect the speed of my Emacs. It’s hard to see why having a lot of packages, per se, would have much effect unless they’re something like LSP that has to look at every keystroke.

So that’s it for another year. Emacs is (still) not slow in any way that matters for most users and you folks claiming otherwise are going to have to find something else to complain about.

Posted in General | Tagged , | Leave a comment

Which-key Moves To Core

I’ve been following the discussion on Emacs Devel about moving the excellent which-key app to Emacs core. Moving it to core was non-controversial. The only issue was whether they could get all the which-key contributors to assign their rights to the FSF before the Emacs 30 freeze. Happily, that appears to have happened and which-key will be part of Emacs version 30.

In a sense, it doesn’t really matter. As I’ve said before, the difference between core and third party packages is mostly political rather than practical. Still, there are some advantages to being in core. First, some users install Emacs on minimal systems or have to run old versions for one reason or another so they have to depend on whatever comes prepackaged with Emacs. Second, and more important to my mind, having a package in core aids in discoverability. It’s a lot easier to discover, say, which-key if it’s builtin and doesn’t have to be installed.

Regardless, if you aren’t already using which-key, you should start. It mostly stays out of the way but if you start a key sequence but don’t complete it within a preset time interval, which-key will pop up a menu in the minibuffer with the possible completions. It’s really great because you don’t have to worry about, say, all the rectangle commands. If you type Ctrl+x r and stop, which-key will tell you all the possible completions.

I’ve been using it for years and wouldn’t want to live without it. I’m happy to see it moved to core if only because a few more people will discover it.

Posted in General | Tagged | Leave a comment

Creative Writing With Emacs

Chris Maiorana has an interesting post on using Emacs for creative writing. The TL;DR was that a friend criticized his writing as being too “choppy” and speculated that it was because Emacs made it too easy to rearrange blocks of text. He took that criticism to heart and tried using Libreoffice Writer for his writing instead. The results were the same. It turns out that the problem was his and not his writing instrument. He solved the problem without reference to his editor and returned to Emacs.

It was an interesting story but it got me thinking about professional writers and the mechanics of their writing. Professional writers are notoriously fussy about their writing environment and have strongly held views on what’s right and works for them.

Some—Neal Stephensen and Tess Gerritsen, for example—write their stories in long hand and only later transcribe them with some sort of editor. Stephensen says he types so fast that he doesn’t have time to think carefully about what he’s writing. Gerritsen says she types faster than anyone she knows and that if she wrote on a word processor she would spend her time editing instead of writing.

Others, such as Vernor Vinge, Jerry Pournelle, and Charlie Stross use their editors exclusively. Pournelle, in particular, wrote several BYTE articles on the various editors he used for writing.

I don’t write novels but I do have strong opinions about the proper tools for writing. With all due respect to Stephensen and Gerritsen, two of my favorite writers, I could never write anything in longhand. First of all, my writing is terrible so I have to print, and that is so slow I’d get about 50 words a day done that way. I don’t do too much editing as I’m writing. Sometimes I’ll rewrite a sentence as I’m dong the initial draft but mostly editing happens on separate editing passes. Regardless, every bit of it happens in Emacs.

I’ve been fascinated by the writing process for as long as I can remember. Feel free to share your process.

Posted in General | Tagged | Leave a comment

Everything Is a Command

Daniel de Haas has a post that I really like. In it, he sings the praises of the Emacs idea that everything is a command. If you’re an Emacser that may seem obvious but imagine not being familiar with Emacs and deciding to write an editor. Chances are you’d have a hard coded table that mapped keystrokes to actions or perhaps even some giant switch on key input with the appropriate code right there. That’s not just another legitimate alternative, it a terrible choice but one that the majority of editors make.

For example how would you enable the user to change the bindings if they need or want to? It’s virtually impossible. And it’s not just the basic navigation commands that can’t be remapped. There is no way to define and map alternative commands for more complicated editing commands. All that’s is easy in Emacs because

  1. Everything is a command, and
  2. Keybindings are kept in runtime editable structures.

In Emacs, even inserting a character into the current buffer when a key is pressed is a command. That means that if the user wants to perform some sort of filtering or translation of text input, it’s easy to do.

It also means, as de Haas says, that with Emacs you have a universal command palette. Every command, and therefore every action, can be brought up in a list to choose from. And it’s easy to combine those commands into a more complex action without knowing more than a modicum of Elisp.

The reddit comments to his post are also interesting. There’s a ton of ankle biting and uninformed commentary but there are also a lot of interesting comments that are on point and worth reading. Take a look at de Haas’ post and, if you have some spare time, the comments. It’s really interesting.

Posted in General | Tagged | Leave a comment

Emacs Documentation

Over at the Emacs subreddit, WarmToiletSeat0 posts an all-too-rare thank you for a part of Emacs that we all take for granted: documentation. Emacs is famously the self-documenting editor, of course, but most of us probably don’t think very deeply about what that means or how it happens.

When I hear that term, I usually think about docstrings. They make it possible to add easily accessed documentation to even your private Emacs code. Done well, as they most often are, a docstring tells you everything you need to know about a function. Like every other Emacs user, I call them up all the time through the help system.

But docstrings are just the beginning. Like every other big project, Emacs has one or more comprehensive manuals that document the system and how to use it. In the case of Emacs, those manuals are available in printed form, online, and—most importantly—as Info files accessible from Emacs itself. That means that an Emacs user can call up the Emacs manual or any of the auxiliary manuals from within Emacs and have the (hypertext) results displayed in an Emacs buffer.

That last phrase is, I think, important. When you call up Emacs documentation, it doesn’t fire up a PDF reader or shunt you off to some other application to read it. The results are right there in an Emacs buffer just like any other.

The point of WarmToiletSeat0’s post is to say thank you to the folks who provide that documentation. Sometimes it’s a developer but other times it’s just someone who steps up to perform a necessary and important function. I’d like to add my thanks to those unsung heroes who do the unglamorous work of documenting our editor and making it better for us all.

Posted in General | Tagged | Leave a comment

Lifehacker on Quitting Google

As a public service message and a followup to my previous post on quitting Google, I offer this article from Lifehacker on quitting Google. Lifehacker is not quite a site for the average person but neither is it a nerd site. It’s mostly a place where people can discover unique hacks to simplify their life. My major takeaway from the article is that quitting Google is more mainstream than I imagined. Nerds and privacy geeks are always talking about it but so, it seems, are “ordinary” people.

The article quotes Janet Vertesi, a sociology professor at Princeton and privacy export. She says that quitting Google is like getting divorced: it’s difficult but feels so good when you get through it.

The trick, she says, is to not try to do it all at once. The Google empire encompasses many areas and you’re likely using many of their services, so trying to replace everything at once can be overwhelming. Vertesi says to pick just one Google service—Chrome or Gmail, say—and find a replacement for that. Once you’ve successfully transitioned from that service, you can pick another to replace.

She also says that you shouldn’t just pick another company and replace all Google’s services with theirs. Rather, you want to experiment with new and better ways of performing the tasks that you used to use Google for. Just switching to another ecosystem won’t help you with that.

The article doesn’t suggest alternatives; it’s more about recommending a process for finding alternatives that suit you and integrating them into your workflow in a smooth and stressless way. It’s a quick and easy read and worth your time if you’re looking for a way to rid yourself of Google.

Posted in General | Tagged | Leave a comment

The Emacs From Scratch Cycle

Bsag over at but she’s a girl… has an interesting post on what she calls the Emacs from scratch cycle. She’s noticed that she goes through a roughly 3-year cycle of starting with a vanilla Emacs configuration, moving to one of the Emacs frameworks such as Doom, and then back again to vanilla Emacs. It is by no means a waste of time. In each cycle she learns a bit more about herself, her editing needs, and Emacs. As I put it before, it’s like tending a Japanese garden: a lifetime spent moving towards perfection but never achieving it.

In her latest cycle, she decided to resist adding packages unless she was irritated by not having their capability. Once installed, she makes a point of evaluating whether or not they actually improves things and deletes them if they don’t. She was, she said, surprised at how few packages she ended up keeping. I’m sort of like that except that I don’t have her culling discipline. I’m slow to add packages but once installed, I seldom delete them.

Bsag compares the process to making her own clothes. When you do that you end up with clothes that fit comfortably, are exactly the right length, are made from the fabrics you prefer, and even have the pockets exactly where you want them. But, making your clothes is, you know, a pain. It’s a lot of work and sometimes it seems easier to just go out and buy a premade garment.

My innate inertia and, let’s face it, laziness has saved me from this. I started out with a bare Emacs and added configuration items when I found I needed them or discovered something that appealed to me. That configuration has been expanding ever since. As I said, I seldom bother to prune it. Nor have I ever felt the need to declare Emacs configuration bankruptcy and start over. Currently, my configuration is about 2,500 lines so it’s still under control and probably will be for the rest of my life. I hardly ever restart Emacs and when I do it starts quickly so I see no need to change my ways.

Bsag has an interesting perspective. It’s worth spending a few minutes on her post.

Posted in General | Tagged | Leave a comment