From a08e00c4d440ef3b78175a1e042f75f9a0f60047 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 2 Apr 2019 14:03:27 -0400 Subject: [PATCH] Refactor aspell/hunspell initialization --- modules/tools/flyspell/config.el | 74 ++++++++++++++++---------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/modules/tools/flyspell/config.el b/modules/tools/flyspell/config.el index bb211be43..f5783e86b 100644 --- a/modules/tools/flyspell/config.el +++ b/modules/tools/flyspell/config.el @@ -13,48 +13,48 @@ Since spellchecking can be slow in some buffers, this can be disabled with: (after! ispell (setq-default ispell-dictionary "english") + (add-to-list 'ispell-extra-args "--dont-tex-check-comments") - (let ((no-flags (and (not (featurep! +aspell)) (not (featurep! +hunspell))))) - ;; Enable either aspell or hunspell. - ;; If no module flags are given, enable either aspell or hunspell if their - ;; ... binary is found. - ;; If one of the flags `+aspell' or `+hunspell' is given, try to only - ;; ... enable that spell checker and not the other. - (cond - ((and (or no-flags (featurep! +aspell)) - (executable-find "aspell")) - (setq ispell-program-name "aspell" - ispell-extra-args '("--sug-mode=ultra" "--run-together")) + ;; Enable either aspell or hunspell. + ;; If no module flags are given, enable either aspell or hunspell if their + ;; binary is found. + ;; If one of the flags `+aspell' or `+hunspell' is given, only enable that + ;; spell checker. + (pcase (cond ((featurep! +aspell) 'aspell) + ((featurep! +hunspell) 'hunspell) + ((executable-find "aspell") 'aspell) + ((executable-find "hunspell") 'hunspell)) + (`aspell + (setq ispell-program-name "aspell" + ispell-extra-args '("--sug-mode=ultra" "--run-together")) - (setq-hook! 'text-mode-hook - ispell-extra-args (remove "--run-together" ispell-extra-args)) + (defun +flyspell|remove-run-together-switch-for-aspell () + (setq-local ispell-extra-args (remove "--run-together" ispell-extra-args))) + (add-hook 'text-mode-hook #'+flyspell|remove-run-together-switch-for-aspell) - (defun +flyspell*setup-ispell-extra-args (orig-fun &rest args) - (let ((ispell-extra-args (remove "--run-together" ispell-extra-args))) - (ispell-kill-ispell t) - (apply orig-fun args) - (ispell-kill-ispell t))) - (advice-add #'ispell-word :around #'+flyspell*setup-ispell-extra-args) - (advice-add #'flyspell-auto-correct-word :around #'+flyspell*setup-ispell-extra-args)) + (defun +flyspell*setup-ispell-extra-args (orig-fun &rest args) + (let ((ispell-extra-args (remove "--run-together" ispell-extra-args))) + (ispell-kill-ispell t) + (apply orig-fun args) + (ispell-kill-ispell t))) + (advice-add #'ispell-word :around #'+flyspell*setup-ispell-extra-args) + (advice-add #'flyspell-auto-correct-word :around #'+flyspell*setup-ispell-extra-args)) - ((and (or no-flags (featurep! +hunspell)) - (executable-find "hunspell")) - (setq ispell-program-name "hunspell" - ;; Don't use `ispell-cmd-args', it isn't respected with hunspell. - ;; Hack ispell-local-dictionary-alist instead. - ispell-dictionary-alist - `((,ispell-local-dictionary - "[[:alpha:]]" - "[^[:alpha:]]" - "[']" - nil - ("-d" ,ispell-local-dictionary) - nil - utf-8)))) - - t (user-error "Spell checker not found. Either install `aspell' of `hunspell'"))) + (`hunspell + (setq ispell-program-name "hunspell" + ;; Don't use `ispell-cmd-args', it isn't respected with hunspell. + ;; Hack ispell-local-dictionary-alist instead. + ispell-dictionary-alist + `((,ispell-local-dictionary + "[[:alpha:]]" + "[^[:alpha:]]" + "[']" + nil + ("-d" ,ispell-local-dictionary) + nil + utf-8)))) - (add-to-list 'ispell-extra-args "--dont-tex-check-comments")) + (_ (warn "Spell checker not found. Either install `aspell' of `hunspell'")))) ;; `flyspell' (built-in)