Thursday, November 5, 2026

Emacs Carnival November 2026

Here's my contribution to this month's Emacs Carnival, which explores how we discover Emacs features.

Overview

  • What was the most recent feature that you adopted? [__]
  • How often do you discover an Emacs feature? [__]
  • Are you a "Set it and forget it" type of user? [__]
  • How do you discover new things to try? [__]

Latest Feature Adoption: bookmarks

I'm adding bookmarks into my workflow. I tend to get lost among multiple windows in which several Org files reside, as well as windows that browse the Internet (*eww*), or house *Help*, *Apropos*, *Messages*, *Customize* (or TBD). It's important that I can jump back to my main task. I'm tired of flailing away with other-window and next-buffer . I suppose I could globally bind C-c C-x C-j to org-clock-go -- that certainly would help. But I may need to access a window of secondary importance. Also, some windows have nothing to clock into, so I'd still need a mechanism that works outside of Org.1

Bookmark keybindings share a prefix with rectangle commands, namely C-x r . But since I use rectangle functions, too, I might devise a new set of keystrokes to divorce the bookmark commands from rectangle commands. This would make the C-x r C-h help window easier to understand. It makes sense that the rectangle editing commands are grouped under C-x r, but why are bookmarks shoved in there, too? Perhaps it's because C-x b already was dedicated to the switch-to-buffer function, so it had to go somewhere.2


Frequency of Feature Adoption

How often do I adopt a new feature? Based on the versioning of my init file, I make 0.65 changes on average every day. But perhaps 75% of the changes are minor adjustments due to preference or to not having grepped a new feature correctly. So let's say 0.16 changes per day, or about 5 every month.3 It would be higher, but I have to eat, too!


Set and Forget

When I was getting paid for my productivity, I belonged to the Set and Forget team. I would devise and validate workflows, trading that effort for the real work I was supposed to do. Other software programs forced updates on users. This annoyed me, especially when a feature was removed or a keystroke changed. I greatly appreciated Emacs for not doing that. I'd install a new Emacs version only when provided with a new computer.

Now that I answer to no one4 exploring Emacs features has become my past time.


Discovery Methods

I learn about Emacs from many sources. The following list of examples is not all-inclusive:

  • Deep dives into known commands
    • Wondering "how does org-capture put 'that thing' in the left fringe?" led me to bookmarks and their bitmaps.
  • Searching for a "How to Article"
    • Revealing a URL without using the mouse: [__]
    • Locating the active window: [__]
  • My Tip of the Day [__]
  • Mistyping a known command
    • org-toggle-timestamp-overlays, [__]
  • Customize
    • While in the Org customization group, "filter" caught my eye. Thus I realized I could filter *Org Agenda* and abandon some of my task lists.
  • package-list-packages
    • Occasionally a package name might catch my eye
    • I like to check out packages that have self-deprecating names, the best of which is DisMAL.
  • Emacs content aggregators
  • The subreddits for Emacs and Org.


Conclusion (Finally)

When you're committed to self-improvement and life-long learning as I am, discovering Emacs features becomes an obsession!


1 I've also started to use the mark-ring, popping mark to navigate within a buffer.

2 Buffer functions came first. I infer this from the initial copyright years of window.el and bookmark.el, which are 1985 and 1993, respectively. window.el provides the functions.

3 Here are the dates of my first and latest init file updates since I started the current versioning system:

  • emacs01: [2027-08-10 Tue]
  • emacs55: [2026-11-02 Mon]
  • to 9/10, 31 days; to 10/10, 30 days; to 11/02, 23 day; total days, 84; updates per day: (/ 55.0 84.0)0.6547619047619048
  • Realistic 25%: (/ (* 0.25 55.0) 84.0)0.1636904761904762
  • Surprisingly, I didn't make any changes while composing this post!

4 I answer to no one except for my wife.

Monday, November 2, 2026

Emacs Bookmark -- Just a Bitmap in the Fringe

You can set up a capture template that creates a new Org heading. If you define jump-to-captured to be non-nil, org-capture will jump to that new heading. It will also create a bookmark named org-capture-last-stored at that line.

Bookmarks can help you find your way back to a line of code or a line in an essay, and you don't have to be using Org. Before you navigate away to look something up, invoke bookmark-set ( C-x r m ) to save your place. This will place a character-sized image in the left fringe at the line. Invoke bookmark-jump ( C-x r b ) to return to your work.

If you have nothing better to do, you can change the shape of the bookmark.1 First, design it with define-fringe-bitmap. Then set the variable bookmark-fringe-mark to your new bitmap using customize.

The Lisp expression in the following source block defines a Z-shaped pattern that's 8 pixels wide and 8 pixels tall and names it bookmark-zeit. Figure 1 shows the default bookmark and this new bookmark for comparison.

(define-fringe-bitmap 'bookmark-zeit
[#b11111111
 #b01111111
 #b00001111
 #b00011100
 #b00111000
 #b11110000
 #b11111110
 #b11111111])
Figure 1 -- Above, default bookmark; below, custom, Z-shaped bookmark

The pattern can be a different size, but I'd recommend making it the same width as the fringe, which is 8 pixels by default. But you could make it taller. Figure 2 shows a Z-shaped pattern that's 12 pixels tall; note how well it stands out!


Figure 2 -- A Z-shaped bookmark 12 pixels tall

Recently I wrote about how to make the active window stand out. Originally, I thought to change the color of the left fringe to something much brighter. Now it occurs to me that one might leverage the bookmark system to fill the fringe with a pattern that's 64 pixels tall. Unfortunately it seems Emacs renders only the first 16 rows. In this case, adding eight 16-pixel-tall bookmarks on successive lines can fill up a 64-pixel vertical portion of the fringe. This is shown in Figure 3.

(define-fringe-bitmap 'bookmark-16
[#b01111110
 #b01111110
 #b01111110
 #b00011000
 #b00011000
 #b01111110
 #b01111110
 #b01111110
 #b01111110
 #b01111110
 #b01111110
 #b00011000
 #b00011000
 #b01111110
 #b01111110
 #b01111110])

Figure 3 -- Eight 16-pixel-tall bookmarks on consective lines

One important caveat to all this is that this re-defining of bookmarks affects all bookmarks everywhere, not just the latest one or the next one. At least that's true of Emacs version 30. Who knows, maybe we'll see a fringe-decor package eventually. As if there's isn't enough to play with now ....


1 But if you do have better things to do and want to change fringe bitmaps, you could check out the packages fringe-helper or modern-fringes on melpa.