14 Jul 2026
Search and replace across multiple documents in Emacs
This is not something I do every day, so I end up forgetting it and having to relearn it again. Here's a workflow based on consult‑ripgrep and Embark.
consult-ripgrepto search across the filesCtrl-.to activate EmbarkEto export the list of matchesCtrl-c Ctrl-pto runwgrep-change-to-wgrep-modeand enter edit mode- Once I'm satisfied,
Ctrl-x Ctrl-sto save each of the involved buffers
Tags:
19 Feb 2026
Emacs config size
Let’s Play How Big Is Your Emacs Config?
In my case:
wc -l .emacs.d/lisp/larsen-* .emacs.d/init.el | ag total
2400 total
Also
Tags:
17 Jan 2026
A dedicated blog instance for links
I decided to separate normal posts and links posts into two separate blog instances: blog and linkage.
Managing multiple blog instances with org-static-blog
By itself, org-static-blog does not support multiple blog instances, but it's quite easy to obtain a similar feature.
(defvar +my-blogs+
'((blog . ((org-static-blog-publish-title . "Stefano Rodighiero — Stream")
(org-static-blog-publish-url . "https://stefanorodighiero.net/blog/")
;; ... and so on ...
))
(linkage . ((org-static-blog-publish-title . "Stefano Rodighiero — Linkage")
(org-static-blog-publish-url . "https://stefanorodighiero.net/linkage/")
;; ... and so on ...
))))
(defun select-active-blog (blog-name)
(interactive (list (intern (completing-read "Select active blog for publication: "
(mapcar #'car +my-blogs+)))))
(let ((blog-options (cdr (assoc blog-name +my-blogs+))))
(message "Setting active blog: %s" blog-name)
(dolist (option-name (mapcar #'car blog-options))
(set option-name (cdr (assoc option-name blog-options))))))
Then org-static-blog functions can be advised so that select-active-blog is called before the operations.
(advice-add 'org-static-blog-publish :before (lambda (&rest args)
(call-interactively 'select-active-blog)))
Tags:
31 Dec 2025
My Emacs configuration changes in 2025
$ git diff tags/2024...tags/2025 --stat | ag changed 38 files changed, 540 insertions(+), 409 deletions(-)
A list of the main changes (introducing or eliminating packages, structural changes, important changes in the interface).
0441b30 |
2025-01-04 | dired-subtree configuration |
4fc34aa |
2025-02-04 | switch to doom-tomorrow-night as default |
3100c81 |
2025-02-05 | + forge |
90dfc96 |
2025-02-05 | + org-sidebar |
5318eb6 |
2025-02-16 | switch to sqlformat |
6eddac8 |
2025-02-16 | + vertico + corfu + marginalia + orderless + consult |
291089c |
2025-02-16 | combo for consult-line |
0de118b |
2025-02-21 | trying treesit-fold instead of yafolding |
e54719f |
2025-02-21 | sideline + minimap (WIP) |
a030077 |
2025-03-07 | + colorful package |
bf09612 |
2025-03-08 | using hideshow instead of treesit-fold, more versatile |
801fddf |
2025-03-15 | git in fringes |
d91e87d |
2025-03-15 | Personalized fringe bitmap for Flymake |
1e56038 |
2025-03-15 | Integration with Ollama (Ellama) |
169efab |
2025-06-15 | minimal init messages |
f42b4b6 |
2025-06-20 | Jira integration (using auth-info) |
9000572 |
2025-09-17 | renamed larsen-ibuffer -> larsen-buffer; added bufferlo package |
eedc448 |
2025-09-19 | better configuration for the background |
4db8195 |
2025-10-08 | new work projects agenda view |
2c0cb99 |
2025-11-20 | Switch to Sly (from Slime) |
d65d153 |
2025-11-20 | more adjustments for Sly |
147e53c |
2025-11-20 | + embark |
1123bd1 |
2025-11-20 | setup for using and exporting GPX files |
8f2db38 |
2025-12-30 | extending image-dired to show image size |
Tags: