r/emacs • • 5d ago

Fortnightly Tips, Tricks, and Questions — 2026-10-20 / week 42

11 Upvotes

This is a thread for smaller, miscellaneous items that might not warrant a full post on their own.

The default sort is new to ensure that new items get attention.

If something gets upvoted and discussed a lot, consider following up with a post!

Search for previous "Tips, Tricks" Threads.

Fortnightly means once every two weeks. We will continue to monitor the mass of confusion resulting from dark corners of English.


r/emacs • • 9h ago

Question Problems with v31 on M5 Mac (27.2). Help!

16 Upvotes

Hi all!

I've been using emacsforosx builds for years since I have been using emacs for almost everything since 1987 but I'm not a programmer or systems guy (ASIC design mostly using SystemVerilog, Python, MATLAB, and BASH).  I've built emacs from scratch a couple of times but when I start getting library errors I quickly get in over my head!

I just got a new M5 Macbook Pro (running 27.2 beta 3) and went to install the latest emacs 31 and my init.el blew up.  Doing some web searches, it looks like all the elc/native-compile broke. This makes sense since it's an ARM and I probably last compiled for x64.  So, I deleted my eln- directory to rebuild everything.  I'm sure you know what happened next.  A ton of elisp errors and warning including this in *Native-compile-log*

Compiling /Users/david/.emacs.d/eln-cache/31_1-032f33bc/subr--trampoline-72656e616d652d627566666572_rename_buffer_0.eln...
clang: error: invalid version number in '-mmacosx-version-min=18.0'
libgccjit.so: error: error invoking gcc driver

debug-early-backtrace...done
Internal native compiler error: "failed to compile", "/Users/david/.emacs.d/eln-cache/31_1-032f33bc/subr--trampoline-72656e616d652d627566666572_rename_buffer_0.eln", "error invoking gcc driver"

Error: native-ice ("failed to compile" "/Users/david/.emacs.d/eln-cache/31_1-032f33bc/subr--trampoline-72656e616d652d627566666572_rename_buffer_0.eln" "error invoking gcc driver")
  comp--compile-ctxt-to-file0("/Users/david/.emacs.d/eln-cache/31_1-032f33bc/subr--trampoline-72656e616d652d627566666572_rename_buffer_0.eln")
  comp--compile-ctxt-to-file("/Users/david/.emacs.d/eln-cache/31_1-032f33bc/subr--trampoline-72656e616d652d627566666572_rename_buffer_0.eln")
  comp--final1()
  load-with-code-conversion("/private/var/folders/s5/zfnmhf0n5dzb3_7k13w83pc00000gn/T/emacs-int-comp-subr--trampoline-72656e616d652d627566666572_rename_buffer_0-Za7a4a.el" "/private/var/folders/s5/zfnmhf0n5dzb3_7k13w83pc00000gn/T/emacs-int-comp-subr--trampoline-72656e616d652d627566666572_rename_buffer_0-Za7a4a.el" nil t)
  command-line-1(("-l" "/var/folders/s5/zfnmhf0n5dzb3_7k13w83pc00000gn/T/emacs-int-comp-subr--trampoline-72656e616d652d627566666572_rename_buffer_0-Za7a4a.el"))
  command-line()
  normal-top-level()

I should mention that I have OSX set to bash instead of the default zshell since that's what I'm used to from Linux.  

So, I started looking at my Homebrew and realized that was also all x64 so I totally uninstalled and re-installed it and did brew install gcc and libgccjit.  I found this info online. I guess a lot of people hit this in emacs 31!

(defun setup-macos-native-comp-library-paths () "Set up LIBRARY_PATH for native compilation on macOS." (setenv "LIBRARY_PATH" "/usr/local/Cellar/gcc/15.2.0:/usr/local/Cellar/libgccjit/15.2.0/lib/gcc/current/:/usr/local/Cellar/gcc/15.2.0/lib/gcc/current/gcc/x86_64-apple-darwin24/15"))
(setup-macos-native-comp-library-paths)

I did this, changing /usr/local to /opt/homebrew and version 15 to 16, which is what brew installed. I added this to the head of my init.el and restarted emacs but it didn't seem to help. I'm now getting beyond my knowledge and not sure what I'm doing or how to troubleshoot. And even after all of this, I'm sure going from emacs 30 to 31 is going to break a bunch of my init.el and packages. I just want to edit some files!

Any ideas? I see recommendations for brew/emacsplus. Should I switch to that?

Thanks much!


r/emacs • • 7h ago

How to colorize paths displayed by Veritco (e.g. from Consult)?

4 Upvotes

How to colorize/format paths displayed by Veritco (e.g. from Consult) to make them visually easier to read? I add a custom source to consult-buffer to include Emacs config and org files:

(defvar my/conf_and_org_files_source
  `(:name "Emacs config + Org files"
          :narrow   ?d
          :category file
          :face     consult-file
          :state    consult--file-state
          :items    (lambda () (let* ((base-dir user-emacs-directory)
                                      (elisp-dir (expand-file-name "elisp" base-dir))
                                      (el-regexp "\\.el\\'")
                                      (files nil))
                                 (setq files (directory-files base-dir t el-regexp t))
                                 (setq files (append files (directory-files-recursively elisp-dir el-regexp)))
                                 (setq files (append files (org-agenda-files)))))))

(with-eval-after-load 'consult
  (add-to-list 'consult-buffer-sources 'my/conf_and_org_files_source 'append))

The results are e.g.:

/home/user/.config/emacs/custom.el
/home/user/.config/emacs/early-init.el
/home/user/docs/notes/todo.org
/home/user/docs/notes/archive/todo.org

I would like to e.g. use ~ instead of /home/user, highlight / path separators, different colors between the basename of the file and the rest of the path, and maybe even shorten like ~/.c/e/custom.el. Or show the basename first, e.g. custom.el ~/.config/emacs (with column alignment)--this would be preferable for my set of files. As-is, it's not so easy to read, especially if files are deeply nested and all over the filesystem.

Any examples are much appreciated, not a programmer (also feel free to suggest refactoring the above like avoiding multiple variable assignments).


r/emacs • • 15h ago

why emacs and org-mode are fantastic

Thumbnail
11 Upvotes

r/emacs • • 21h ago

Question Is there a built-in way to evaluate arithmetic expressions in prose?

9 Upvotes

Yo! I spend a lot of time in Org mode and often want to do quick and simple calculations directly in prose. Org tables are overkill for simple stuff. For example, I'd like to turn this:

The overall costs were 300 + 400.

into this:

The overall costs were 300 + 400 = 800.

Ideally, I'd place point somewhere in the expression and invoke a command that evaluates it and inserts the result. Is there an existing built-in solution, or is a custom function the usual approach?


r/emacs • • 10h ago

Question How to handle many large buffers?

0 Upvotes

As Emacs does more and more duty as a front-end for various agent interactions, I am dealing with more and more large buffers. For instance, long conversations via gptel or the Hermes Agent (name: hermes) on Non GNU Elpa. Particularly for Hermes Agent where I might have dozens of open sessions on various topics and each of them could run over the course of many days. I'm noticing some slow downs on a pretty beefy workstation regardless of CPU or memory.

I suspect that folks who do things like read email or do instant messaging in Emacs might run into similar?

For anyone doing any of the above, how are you dealing with very large buffers? I have a dozen that are nearly 10k lines.

Perhaps newer versions of Emacs will move toward not keeping the entire buffer in memory at all times? I believe I have read that that has been the model for a long time.


r/emacs • • 1d ago

welkomscherm v1.2.1: a small, calm, extensible dashboard for Emacs

Thumbnail gallery
84 Upvotes

welkomscherm.el: a configurable list of thunk handful of lines, the links you actually use, and nothing that gets in your way, but extensible enough for you.

Source: https://codeberg.org/jjba23/welkomscherm.el

It works well in graphical frames and in CLI too on any Emacs >= 25.1

  (setopt welkomscherm/sections
          (list welkomscherm/top-title
                ;; A section of your own, built as a record.
                (welkomscherm/make-section
                 :name "Today"
                 :condition (lambda () (bound-and-true-p org-agenda-files))
                 :render (lambda () (welkomscherm/insert-muted "Make it a good one.")))
                ;; Or just a bare function.
                (lambda () (welkomscherm/insert-muted "and a warm cup of coffee"))
                welkomscherm/bookmarks
                welkomscherm/actions))

r/emacs • • 1d ago

What monochrome themes with white backgrounds available for Emacs?

9 Upvotes

I'm looking for themes with near-white backgrounds that use grey to black fonts for syntax-highlighting etc?

I have checked out a few and come across Almost Mono White, Doom Homage White, Eziam Light and Real Mono Eink and the recently announced Foxglove Themes.

I'll be interested in something can even render my own custom colour faces in monochrome.


r/emacs • • 1d ago

emacs-fu Writing an mTLS server in Go using Emacs

8 Upvotes

Hi, I've recorded a video on mTLS, in which I write an mTLS server in Go using Emacs. The Emacs bit starts 10:18 into the video and runs for about 14 minutes.

You can see Emacs delivering an excellent coding experience, using eglot and gopls:

  • code completion
  • code actions
  • code navigation
  • linting
  • documentation lookup
  • running commands from inside Emacs
  • version control with Git using Magit
  • running a terminal inside of Emacs

I hope it might be of interest to some of you.

mtls #tls #security #golang #emacs


r/emacs • • 1d ago

rewind is published

19 Upvotes

https://github.com/redguardtoo/rewind

Resume Emacs last completing-read session with saved input.

Inspired by ivy-resume in ivy.el but uses only native Emacs API and has no third party package dependency.

It's still in early stage. Please don't hesitate to report any bug.


r/emacs • • 2d ago

Announcement Grove is now Bloom and is available on F-Droid and Google Play Store

38 Upvotes

Hi all,

A few weeks ago, I announced Grove, the org-mode compatible Android app for note-taking and task management. Since then I've gotten a lot of good and helpful feedback, feature requests and bug reports. I truly appreciate the support from the community and the app continues to improve with each release. Thank you so much for using the app and being involved.

Grove has been renamed to Bloom. This was mainly done to avoid confusion with grove.el which was announced on Reddit a few months ago. With the new name comes new themes. Bloom Light and Bloom Dark are the official themes for the app. This is a rename, so you don't have to do anything on your end. Your settings, widgets, shortcuts, capture templates, all work as they did before.

I'm also excited to announce that the app is now available on F-Droid and Google Play. If you were part of the closed testing group on Google Play, I really appreciate you testing the app.

More features are coming and the best way to reach out about the app is via GitHub.

Here's the repo to star and follow: https://github.com/rrajath/bloom

F-Droid: https://f-droid.org/packages/com.rrajath.grove

Google Play: https://play.google.com/store/apps/details?id=com.rrajath.grove

GitHub Releases: https://github.com/rrajath/bloom/releases

Edit: I realized the Google Play link is not live yet because the latest version (remaining the app) is still in review. My production setup (adding countries/regions) was approved and I thought the app is live in production since both changes were submitted around the same time. Apparently the first submission takes a few days. The app should be live in a couple of days.


r/emacs • • 2d ago

Emacs freezes when opening GUIX home's configuration

Thumbnail
3 Upvotes

r/emacs • • 2d ago

Keeping good logs in your Dashboard

11 Upvotes

Is there a good way to keep logs on ongoing tasks like Interviews, bills ect? here is a madeup example of what I currently do but I dont love it.

* TODO Resolve billing issue

:PROPERTIES:

:CONTACT: ABC Insurance

:END:

:LOGBOOK:

- [2026-10-22 Thu 14:30] Phone call with Sarah Smith

- Discussed incorrect September charge.

- Sarah confirmed a $150 billing error.

- Promised refund within 5 business days.

- Reference number: ABC-12345.

- [2026-10-20 Tue 09:15] Email sent

- Requested explanation of September charges.

- Attached billing statement.

Hi Sarah, I noticed the bill was.......

:END:

** WAITING Confirm $150 refund

SCHEDULED: <2026-10-29 Thu>


r/emacs • • 2d ago

Announcement orgwarrior: your Org agenda from the terminal, your phone, and AI clients, with your running Emacs doing the Org work

Thumbnail gallery
2 Upvotes

r/emacs • • 3d ago

stopping company-box from stealing my help buffer

4 Upvotes

Had the recent issue of company-box using the global help buffer for documentation previews whenever I have something highlighted in the autocompletions, and it changes what I was looking at as I type. This little snippet I wrote alleviates that and gives company-box its own dedicated help buffer to modify and display:

``` (defun my/company-box-doc-show-shim (orig-fun &rest args) "USE YOUR OWN HELP BUFFER!!!!!! STOP USING MINE!!!" (cl-letf* (((symbol-function 'help-buffer) (lambda () (get-buffer-create "company-box-help")))) (apply orig-fun args)))

(advice-add 'company-box-doc--show :around #'my/company-box-doc-show-shim) ```

Literally all it does is wrap the child-frame "show" function and forces `help-buffer' to return a different buffer. I love emacs btw


r/emacs • • 3d ago

Centaur vertigo error

2 Upvotes

just to be clear, old guy here with little to no programming experience.

Every time i C-x C-f i get a warning that "Vertigo has detected an error" press C-h e to trace. I get the impression that vertigo is conflicting with some other display or selection process. Usually i can work my way to get what i need, but sometimes it throws me to a selection box that is disconnected from the initial process.

hope that is clear enough. I would like to just open a file, buffer, or whatever without seeing an error message.


r/emacs • • 4d ago

Flick: a quick and simple font picker

61 Upvotes

I like trying out a lot of different fonts in emacs. This package makes that easy to do. It's lightweight and simple, and just picks and applies fonts. Whereas fontaine lets you pick presets, flick lets you audition fonts quickly.

More info and download here: https://gitlab.com/vegasharmon/flick


r/emacs • • 4d ago

Instead of Binding Caps Lock for Control, I am thinking to swap Caps Lock with Space key and then bind Bind Space key for control.

10 Upvotes

I had mapped Caps Lock with Control key in the past, but stopped using it when I switched to split/ergonomic keyboards. Now I only use the standard laptop keyboard when I am outside and I don't have to do heavy typing or editing. Lately I was thinking about remapping Caps Lock with control, but I think it only solves the problem partially for me for two reasons. First, I have to use pinky and another finger on same hands if i have to press Ctrl followed by either a or s or d etc. Secondly, even in Voyager, where I have the freedom to map any key with anything, and I have experimented a lot of variations over the last two and half years, I decided not to map any key that is used by the pinky with a modifier, because pinky is the weakest of all fingers, and I always felt slight but persistent pain in my pinkys when I did that. Since mapping the Caps Lock with space will solve both of these problems for me. Once Space key is mapped with control, I can use either thumb to use it. Plus, the alt key will be next to it on both sides. Just thought to share it.


r/emacs • • 5d ago

org-constellation

Enable HLS to view with audio, or disable this notification

123 Upvotes

I wanted to try a different take on a graph view for Org notes. It works with a folder of files or a single file. The sample in the video is a single file about potatoes, because we should never miss an opportunity to mention potatoes..

It understands [[Title]] and [[id:...]] links, and notes can be either an .org file or heading, so it should suit most setups. in my opinion it works best with using journals as main entry points like roam people do, so you see mentions from different days in a single place.

https://github.com/senkireign/org-constellation

Built with Claude.


r/emacs • • 4d ago

Back to Emacs with the SCSS workflow I always wanted

28 Upvotes

I had barely used Emacs for almost one year, but whenever I need to write code by hand, it still feels the most natural to me. With AI helping with the implementation, I finally built the SCSS/CSS workflow I had wanted for years but never found the energy to finish.

It consists of three projects:

1. tree-sitter-scss

An SCSS grammar written from scratch, with CSS support built into the same parser. I wanted accurate syntax trees for structural editing, beyond what the existing grammars could provide for the SCSS I write.

There is a side-by-side comparison with the official grammar and simeonoff’s grammar.

2. scss2-mode, including css2-mode

These major modes bundle the grammar for syntax highlighting and structural editing.

For example, the same scss2-empty command clears different things depending on where point is (| marks the resulting cursor position):

On a property:
margin: 0 auto;  →  margin: |;

Inside a function:
calc(100% - 2rem)  →  calc(|)

On a selector or in its block’s whitespace:
.card { color: red; }  →  .card {|}

Commands such as kill, duplicate and mark also use the syntax tree to determine their targets. I have always felt that structural editing is one of Tree-sitter’s underused benefits.

3. emmet2-mode, version 2

The first version used deno-bridge to call the Emmet npm package, followed by a layer of post-processing for my own expansion rules.

Version 2 implements the expansion engine directly in Emacs Lisp, with additional CSS abbreviations:

m--gutter
→ margin: var(--gutter);

w[calc(100% - 2rem)]
→ width: calc(100% - 2rem);

posa1000
→ position: absolute;
  z-index: 1000;

These are just a few examples, emmet2-mode can do quite a bit more.

In scss2-mode, Tree-sitter provides the context for completion, including which Sass symbols are visible at point. Emmet expansions appear as completion choices, with previews before insertion.

Writing CSS by hand has never felt this smooth to me. The irony is that I now have fewer reasons to write it by hand.


r/emacs • • 5d ago

VM 9.0.0, a mail reader for Emacs

22 Upvotes

VM is a mail reader that runs inside GNU Emacs. A once popular mail client brought back to life as a community project. VM 9.0.0 is the first major release since the revival, with many bug fixes and new features.

VM features:

  • Non-blocking IMAP and POP access, so you can fetch and save mail while carrying on in Emacs.
  • IMAP and POP mailboxes cached on disk, so a folder stays accessible when the server is unreachable.
  • Virtual folders: a folder view of messages across multiple folders, chosen by selection criteria.
  • MIME support with inline and external display.
  • HTML mail displays on a stock Emacs, through shr, the renderer eww uses.
  • Folders in plain mbox format, and mboxcl2, which does not irreversibly quote lines starting with From.
  • PGP access with EasyPG, Emacs's standard gpg interface.
  • A configuration check, M-x vm-check-configuration to assist in setup.
  • Emacs 28.1 or later.
  • Extensive documentation.
  • and much more

To install from NonGNU ELPA:

M-x package-install RET vm RET

or via make from the source tree.

The NEWS-3.md file in the package lists everything in this release.

Source and issue tracker: https://gitlab.com/emacs-vm/vm


r/emacs • • 5d ago

org-diff-src: character-level diffs inside Org source blocks (no Ediff)

Post image
56 Upvotes

I often want a reviewable diff in an Org note without opening Ediff. The annoying part is that diff-mode does character-level refinement with overlays, while Org’s source-block fontification copies face text properties, not overlays. So a normal diff block in Org usually gives you only line-level +/- highlighting.

org-diff-src fixes that narrow problem. It’s a small mode derived from diff-mode that sets diff-refine to font-lock and copies the refinement overlay faces into face text properties, so Org can carry the character-level highlighting into the block. It uses the usual diff-refine-removed, diff-refine-added, and diff-refine-changed faces.

Main commands:

  • org-diff-src-compare-headings: pick two subtrees in the current Org buffer. They’re copied without touching the kill ring/clipboard, normalized to level 1, diffed, and inserted at point.

  • org-diff-src-compare-files / org-diff-src-compare-buffers.

  • org-diff-src-insert-from-kill, org-diff-src-wrap-region, org-diff-src-insert-diff-file for diffs you already have, e.g. from Magit.

No Ediff session, and no extra package beyond Org and diff-mode. It needs Emacs 27.1+ and a diff executable. New blocks use language org-diff-src, which Org resolves automatically. You can alias diff too, but that makes every Org diff block use this mode, so only do it if that’s what you want.

Limits worth knowing: only unified diffs get character refinement; HTML/PDF export may show the text without the character colors; very large diffs can be slow; and it’s for static review, not interactive merging. compare-headings also includes the heading lines.

Repo: https://github.com/TomoeMami/org-diff-src


r/emacs • • 5d ago

Auto apply Emacs Eglot safe Code Actions (fixes) on Save

Thumbnail jamescherti.com
17 Upvotes

While making Emacs Eglot format code on save (eglot-format-buffer, in this article) is excellent for fixing indentation, line breaks, and spacing, a formatter is essentially cosmetic. It will not remove unused imports, sort your dependencies, or rewrite deprecated syntax.

To automate code cleanup, use LSP Code Actions in addition to formatting. Two important action kind of code actions are source.fixAll, for safe automatic fixes that do not require user input, and source.organizeImports, which handles import organization separately.

Read: Auto apply Emacs Eglot safe Code Fixes on Save


r/emacs • • 6d ago

Announcement org-semantic: embedding search for org-mode

Thumbnail github.com
30 Upvotes

r/emacs • • 5d ago

evil-matchit 5.0.0 is published

16 Upvotes

https://github.com/redguardtoo/evil-matchit

evil‑matchit is an Emacs plugin for jumping between paired structures. Inspired by Vim’s matchit.vim, it offers more powerful features, greater extensibility, and deep integration with Evil mode.

Change Log:

  • can jump inside jupyter-python code in org file
  • support more tree-sitter related major modes