with apologies

Sabbatical Diary: Week 2

Richard Mortier · 2 min read · October 18, 2025 · #academic #cambridge #sabbatical #emacs

As predicted, this week was some Emacs configuration polishing interspersed with some writing using typst. I quite like typst I think – it seems pretty capable, it’s pretty sensible, and it’s certainly easier to read than LaTeX. And there’s even runes available to invoke pandoc to allow production of body text in Markdown, to be rendered using typst as the backend. The piece of writing in question didn’t go as fast as I wanted, but it did start in earnest. Which is, at least, a start :)

First cut at configuration polishing is also now done I think – now into tweaking and refining as the different packages actually get used. Probably the biggest improvement noticed so far is the use of jinx the “enchanted spell checker” which does seem considerably better than the various ispell/hunspell incantation packages I’ve historically used:


(use-package jinx
  :diminish jinx-mode
  :hook (emacs-startup . global-jinx-mode)
  :bind (("C-;" . jinx-correct) ("C-M-$" . jinx-languages))
  :config
  (vertico-multiform-mode)
  (add-to-list
   'vertico-multiform-categories
   '(jinx grid (vertico-grid-annotate . 20) (vertico-count . 4))))

The :config block integrates it with the vertico vertical completion system that I’ve recently started using; simply remove if you don’t use that. This did also require the NixOS package to be installed already:

  programs.emacs.extraPackages = epkgs: with epkgs; ([ jinx ]);

The biggest visible change though was finally getting an auto-formatter for my elisp code, specifically init.el configured:

(use-package elisp-autofmt
  :commands (elisp-autofmt-mode elisp-autofmt-buffer)
  :hook (emacs-lisp-mode . elisp-autofmt-mode))

Ensuring it is applied to init.el simply required adding the (currently empty, might become configuration in future apparently) flag file .elisp-autofmt to my ~/.emacs.d/, and adding the following trailer to my init.el:

;; Local variables:
;; elisp-autofmt-load-packages-local: ("use-package" "use-package-core")
;; end:

The other big change has been moving to tree-sitter and eglot for language support, but that’ll be a longer post so more on that later.