dotfiles/emacs/.config/emacs/init.org
Tom Willemse 9b7417f6c6 Update GNUmakefile
- Add the ‘dunst’, ‘zsh’, ‘mcron’, and ‘mbsync’ modules.

- Tell Make that any ‘*.el’ files ar “precious”, meaning that when a ‘.elc’ file
  was generated from a ‘.el’ file that was itself generated from a ‘.org’ file,
  the ‘.el’ file isn't just an intermediate file and should not be deleted.

- Change the ‘install’ and ‘clean’ to use the ‘*-stow’ and ‘*-clean’ rules set
  up for each module.

- Add configuration for ‘outline-minor-mode’ and change the headings to adhere
  to that configuration.

- Stop using the ‘build/’ directory, tangle all the files to the same directory
  as the source files, and use stow, not cp, to install them. The only exception
  is the XDG files, which now have their specific ‘xdg-stow’ rule. This is
  necessary because programs using these files will overwrite a symbolic link
  they find and replace it with a new file, overwriting my settings.

- Add some files that were missing, and rename some files to follow the existing
  convention to make them easy to tangle.
2022-01-30 23:12:22 -08:00

2.3 KiB
Raw Blame History

Emacs Configuration

First, lexical binding must be enabled. This is better for performance, but also makes variable binding behave more as expected, and allows the creation of closures.

  ;; -*- lexical-binding: t; -*-
  (require 'oni-core)
  (require 'oni-gui)

Store all auto-save files in $XDG_DATA_HOME/emacs/auto-save-list to prevent them from clogging up $XDG_CONFIG_HOME/emacs/. The XDG specification says that if XDG_DATA_HOME hasn't been specified a default of ~/.local/share should be used.

  (add-to-list
   'auto-save-file-name-transforms
   `(,(rx (zero-or-more any))
     ,(concat (or (getenv "XDG_DATA_HOME")
                  (expand-file-name "~/.local/share"))
              "/emacs/auto-save-list")
     t)
   t)

Use hunspell instead of the default aspell. Hunspell is used by LibreOffice and other programs too. So far (at least through Emacs) it doesn't recognize the as an apostrophe and I have to use ' in org-mode if I want spell checking to accept word contractions in English.

  (eval-when-compile (require 'ispell))
  (with-eval-after-load 'ispell
    (setq ispell-program-name "hunspell"
          ispell-really-hunspell t))

Electric quote uses pretty quoting characters , , , and instead of ' and ", but when I'm in the middle of a word I don't want to use (right single quotation mark), but ' (apostrophe), which provides better results with spellchecking. So here is a function that checks whether the character before the previous is a word character.

  (defun oni-in-word-p ()
    "Check whether the character just typed was part of a word."
    (save-excursion
      (backward-char)
      (looking-back (rx word) (1- (point)))))

Now that I can check whether or not I'm typing a word, I can tell electric-quote-mode not to use in that case.

  (with-eval-after-load 'electric
    (add-hook 'electric-quote-inhibit-functions #'oni-in-word-p))

So now that that's settled, I should be writing ' in words like “shouldn't'' and otherwise. And spellchecking should work just fine.