Converting Org Mode Text To Markdown In The Clipboard

A couple of weeks ago I wrote about Charles Choi’s post on converting Markdown in the clipboard to Org mode. Now Choi is back with the inverse operation: converting Org mode text to Markdown in the clipboard. This time the code comes from Marcin Borkowski in a post from 2021.

As Choi says, Borkowski’s post provides a nice symmetry with his own. Despite my own—probably irrational—belief that there’s little reason for an Emacs user to be messing around with Markdown, I do admit that at the very least collaboration may require conversion between the two formats. You can always do this directly with Pandoc, of course, but the two methods from Choi and Borkowski are much easier.

If you often find yourself needed to convert between Org mode and Markdown, take a look at these two posts for an easy way of doing so.

Posted in General | Tagged , |

The Annoying Usefulness Of Emacs

Tsoding has an interesting—possibly tongue in cheek—video that argues that Emacs is annoyingly useful. He begins by saying that he doesn’t like Emacs because it is “yanky and hacky”. Part of the problem, he says, is that Emacs has been around for a long time and thousands of people have contributed code to it. The reason it’s so useful, he speculates, is because it’s extensible. He illustrates the point by extending Emacs with a Hello World function and makes it callable with a keypress.

After a lot of thought he’s decided that Emacs’ secret is the buffer, which deals exclusively with text. He illustrates this with Dired. You call Dired and it puts an ls listing into a buffer. This is just text and you can treat it the same way you treat any text buffer. A special feature of Dired is that you can save the edits back to the file system. In particular, you can change the names of a file in a Dired buffer and have those changes take effect in the file system.

Now for the real secret. Dired was written by one developer and the multiple-cursors package was written by another. Neither had the other in mind when they wrote their packages yet it’s easy to compose the two packages because they both deal with text in a buffer. Tsoding illustrates this by bringing up a Dired listing, using multiple-cursors to change the names of a group of files, and then save those changes back to the file system.

He ends the video by warning that if you’re looking for a cool customizable editor, stay away from Emacs because you’ll never be able to get rid of it. It’s too useful.

Update [2025-12-19 Fri 11:32]: Dried → Dired.

Posted in General | Tagged |

Normalizing C-w Between Terminal And Emacs

Another quickie for those of you who prefer using Emacs in the terminal. The default Emacs action for Ctrl+w is to delete the current region. In most shells, Ctrl+w deletes the previous word.

Srijan Choudhary found this a little disconcerting so he ginned up a bit of Elisp that makes Ctrl+w delete the previous word in Emacs unless the a region is active in which case it deletes the region. That helps ease muscle memory problems between the shell and Emacs.

This is not a problem for me for two reasons. First, I hardly ever use the shell anymore. Almost everything I do is in Emacs. Even when I am in the shell, I hardly ever remember to use Ctrl+w. More importantly, I long ago installed Steve Purcell’s whole-line-or-region, which, among other things, kills the active region if there is one or the current line if not. It’s a great package that I use many times a days. It’s bound to Ctrl+w so I wouldn’t want to change it.

If this is a problem for you, take a look at Choudhary’s post for the Elisp to fix things up.

Posted in General | Tagged |

Handwritten Notes With Emacs

Just a quickie today. This post addresses a niche need that most readers probably aren’t facing. Joar Alexander Pablo von Arndt’s girlfriend recently bought a Framework 12 laptop and stylus and wanted to use it to take handwritten notes that she could later organize in Org mode.

That’s the type of thing that sounds like it should be doable with Emacs and, of course, it is. The solution they settled on was to use Xournal++ to take the handwritten notes and org-xournalpp to interface it to Emacs.

Sadly, it didn’t work quite right on the Framework 12 so they wrote a bit of Elisp to do the interfacing. It turned out to be pretty easy. See Pablo von Arndt’s post for the details.

This is another nice example of how you can use Emacs to solve problems with just a little investigation into what’s available and perhaps a bit of Elisp.

Update [2025-12-17 Wed 11:28]: Added link to Pablo von Arndt’s post.

Posted in General | Tagged |

Problematic Key In Terminal Emacs

For those of you who like to run Emacs in the terminal, Adithya Kumar has some useful advice. One of the problems with using the terminal is that some key presses are not passed on to Emacs. In graphical mode, Emacs receives key presses directly from the OS while in terminal mode the key presses are processed by the terminal software first.

Kumar’s remedy for this is simple and ingenious. It has two stages. In the first stage, he specifies alternate bindings for the problem keys. For example, his terminal doesn’t do the right thing for Ctrl+/ so he rebound the undo command to Ctrl+c c u. By itself, that’s not a very good solution because it breaks your muscle memory. The second stage is to train the OS to send Ctrl+c c u instead of Ctrl+/.

You need a keyboard mapper to do this, of course, and Kumer suggests ones for Linux, macOS, and Windows. I suppose that this solution has the potential to interfere with other applications needing one of the problematic bindings but that strikes me as unlikely and Kumars suggestion seems like a good one to me. Take a look at his post for all the details. If you’re a terminal user, it will be worth your time.

Posted in General | Tagged |

What Happened To Abo-abo?

For a long time I have been a huge fan of abo-abo (Oleh Krehel). He wrote the Ivy, Avy, and Swiper packages that are probably my most used Emacs add ins. Eleven years ago I wrote, “When I get tired of blogging I’m going to write some Elisp that everyday will make a post that says, ‘Abo-abo has a great post today. Go read it.’”

A while ago, abo-abo suddenly disappeared. His programs are still being maintained but little has been heard from the man himself. The accepted story was that he had had a son and was devoting his time to being a father.

Now Patient_Chance_3795 over at the Emacs reddit asks what did happen to him? Someone pointed at this comment from abo-abo giving an update on his situation. The TL;DR is that his son is almost 4 years old and that he hopes to get back to maintaining his packages—and presumably writing others—soon.

Along with all his other users, I hope that fatherly duties will allow him to return to full engagement with our community. He is certainly one of our most prolific members and he has been missed. In the mean time, I salute him getting his priorities straight and devoting his time to his son and family.

Posted in General | Tagged |

Bending Emacs 8: Completing Read

Álvaro Ramírez is back with a new video in his Bending Emacs series. This time it’s about the super useful and flexible completing read function. The basic idea is that you supply a prompt and a list of possible answers. The user can scroll to select an answer or use fuzzy matching to pick the desired option.

There are, of course, various flags to fine tune its behavior. The most useful is probably a flag to insist that the option be from the list rather than anything the user wants to enter. To me, one of the nicest things about completing-read function is that it can—almost magically—automatically adjust to whatever framework you’re using. Ramírez and I both use the Ivy framework, which provides an nicer interface to the function. There are other frameworks as well and the completing-read function automatically adapts to the one in use. Ramírez demonstrates this by turning off Ivy and completing-read falls back to its default behavior. This is especially nice when you’re developing an application because you can just write to the default and Emacs will automatically adjust to whatever framework is active.

Ramírez covers all this and shows several applications of completing read that he uses on his system. He even shows how to use it for command line utilities.

I use completing-read all the time in my own development and can’t recommend it enough. The list of choices can be calculated on the fly so it’s very flexible and doesn’t depend on your knowing what the choices are in advance. If you aren’t already using it, give it a try.

The video is 17 minutes, 4 seconds long so plan accordingly.

Posted in General | Tagged |

Living In Flatland

Nathan Marz has an interesting post that makes use of the flatland metaphor to explain Lisp. For those who don’t know, the book Flatland: A Romance of Many Dimensions describes a two dimensional world inhabited by polygons of various sorts. One day a sphere visits the protagonist, a square, upsetting his world view and basic assumptions. Oddly, the book was written in 1884 as a satirical critique of Victorian culture but remains popular today as a sort of science fiction story.

Marz’s thesis is that many programmers live in their own flatland happily unaware of higher dimensions until a Lisp comes to visit an reveals the higher dimension that Lisp macros offer. The ability of the language to operate on itself at compile time and change the language itself is a bit like a square meeting a sphere.

The Lisp that Marz uses and discusses is Cloture but many Irreal readers may be more familiar with Elisp. It doesn’t matter. They both have macros and the ability to change the underlying language to suite the problem at hand. Part of the power of Emacs—contra those who would rewrite it in Python or whatever—is that it’s written in this higher dimensional language and makes it available to the user to extend or change its capabilities.

Marz remarks that the advantages of Lisp dwarfs its adoption and wonders why that is. His explanation is that the majority of programmers are living in flatland and simply can’t conceive of another dimension.

Posted in General | Tagged , |

Christian Tietze On Zettelkastens For Emacs Users

Christian Tietze gave a very nice talk at the EmacsConf 2025 about Zettelkastens and their implementation in Emacs. The first part of his talk is about Zettelkastens and why you should be using one. He also discusses what type of information to put in an entry and the purpose of forward and backward links.

The second part of the talk discusses how Tietze uses Protesilaos Stavrou’s Denote package to implement his own Zettelkasten and give a demonstration of it in action. There are, of course, some dedicated Zettlelkasten packages like org-roam and org-node but Denote seems like a more flexible solution although it may lack some of the features of org-roam and its brethren.

My main complaint about the video is that it moves too quickly and is hard to follow in places. That’s especially true of the demonstration. On the other hand, Tietze probably had at least a soft time restraint for his talk and had a lot to cover.

Before the talk, Tietze published a post that outlined what his talk was about at a philosophical level and has a link to the conference page for his talk that contains an transcript of the talk and some of the material he shows in the talk. It’s worthwhile taking a look at this resource before watching the video to help you follow along.

The talk is 23 minutes, 18 seconds long so plan accordingly.

Posted in General | Tagged , |

Unix Magic

Back in the 1980s Gary Overcare’s Unix Magic poster was a popular item at USENIX conferences. It depicts a Unix Wizard casting his spells in a giant shell surrounded by various Unix paraphernalia.

The meanings of the various parts of the poster have always been a bit mysterious but now David Rio has released an interactive annotated version of the poster. You can click on one of the items and get Rio’s explanation of what it is and what it means. These are Rio’s explanations not Overcare’s so we can’t consider them definitive but by and large they seem reasonable to me.

If you’re an old time unixhead and would like to have your own copy, they’re available.

Posted in General | Tagged |