💾 Archived View for l-3.space › log-201206-1.gmi captured on 2023-09-08 at 15:58:38. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-11-30)

-=-=-=-=-=-=-

Time-stamp: <2020-12-06 22h30 UTC>

Emacs + gemini ==> automatic footnotes

Here's a snippet i found i needed to write after laboriously using `C-x 8 RET' for the umpteenth time to insert footnote markers. Throw it in your config, bind it to a something⁰ and enjoy! The code should more-or-less speak for itself, but to be sure:

Actually, in the process of writing this article, i noticed a possibly unfortunate gap in the logic: it doesn't distinguish between verbatim blocks (```) and the rest of the body. I can't tell how i feel about this, for now though, WONTFIX :)

(defvar gemini-footnote-symbols '("⁰" "¹" "²" "³" "⁴" "⁵" "⁶" "⁷" "⁸" "⁹" "ᵃ" "ᵇ" "ᶜ" "ᵈ" "ᵉ" "ᶠ"))

(defun gemini-insert-footnote ()
  (interactive)
  (let ((symb (car gemini-footnote-symbols))
        (n 0))
    (while (and symb (save-excursion (beginning-of-buffer) (search-forward symb nil t)))
      (setq n (1+ n)
            symb (nth n gemini-footnote-symbols)))
    (if (not symb) (message "Ran out of footnote symbols. Customise `gemini-footnote-symbols'.")
      (insert symb)
      (end-of-buffer)
      (unless (= (point) (point-at-bol)) (newline))
      (insert symb " "))))

⁰ I have it bound to `C-c C-f' in gemini-mode.