The Complete Computer

Spell-checking with Flyspell Mode

LifeTechEmacsArcology

I use flyspell-correct for spell-checking my buffers.

emacs-lisp source: 
(use-package flyspell-correct :after flyspell :bind (:map flyspell-mode-map ("C-;" . flyspell-correct-wrapper)) (:map evil-normal-state-map ("z=" . flyspell-correct-wrapper))) (use-package flyspell :ensure nil :init (add-hook 'text-mode-hook 'flyspell-mode) :config (diminish 'flyspell-mode) (setq ispell-program-name (executable-find "hunspell")))
nix source: :tangle ~/arroyo-nix/hm/spell-check.nix
{config, pkgs,...}: { home.packages = [ pkgs.hunspell pkgs.hunspellDicts.en-us-large ]; }

I have cce/append-hunspell-current modified from EmacsWiki which I can call to add the current word at point to my personal dictionary.

emacs-lisp source: 
(eval-when-compile (require 'cl)) (defun cce/append-hunspell-word (new-word) (let ((file-name (substitute-in-file-name "$HOME/.hunspell_en_US")) (read-words (lambda (file-name) (let ((all-lines (with-temp-buffer (insert-file-contents file-name) (split-string (buffer-string) "\n" t)))) (if (null all-lines) "" (split-string (mapconcat 'identity all-lines "\n") nil t)))))) (when (file-readable-p file-name) (let* ((cur-words (apply read-words (list file-name))) (all-words (cons new-word cur-words)) (words (delq nil (remove-duplicates all-words :test 'string=)))) (with-temp-file file-name (insert (mapconcat 'identity (sort words #'string<) "\n"))))) (unless (file-readable-p file-name) (with-temp-file file-name (insert new-word "\n")))) (ispell-kill-ispell t) ; restart ispell (flyspell-mode-off) (flyspell-mode-on)) (defun cce/append-hunspell-current () "Add current word to aspell dictionary" (interactive) (cce/append-hunspell-word (thing-at-point 'word t))) (evil-define-key 'normal 'flyspell-mode-map (kbd "zi") #'cce/append-hunspell-current)