Refactor aspell/hunspell initialization
This commit is contained in:
parent
76f98043f1
commit
a08e00c4d4
1 changed files with 37 additions and 37 deletions
|
@ -13,48 +13,48 @@ Since spellchecking can be slow in some buffers, this can be disabled with:
|
||||||
|
|
||||||
(after! ispell
|
(after! ispell
|
||||||
(setq-default ispell-dictionary "english")
|
(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.
|
||||||
;; Enable either aspell or hunspell.
|
;; If no module flags are given, enable either aspell or hunspell if their
|
||||||
;; If no module flags are given, enable either aspell or hunspell if their
|
;; binary is found.
|
||||||
;; ... binary is found.
|
;; If one of the flags `+aspell' or `+hunspell' is given, only enable that
|
||||||
;; If one of the flags `+aspell' or `+hunspell' is given, try to only
|
;; spell checker.
|
||||||
;; ... enable that spell checker and not the other.
|
(pcase (cond ((featurep! +aspell) 'aspell)
|
||||||
(cond
|
((featurep! +hunspell) 'hunspell)
|
||||||
((and (or no-flags (featurep! +aspell))
|
((executable-find "aspell") 'aspell)
|
||||||
(executable-find "aspell"))
|
((executable-find "hunspell") 'hunspell))
|
||||||
(setq ispell-program-name "aspell"
|
(`aspell
|
||||||
ispell-extra-args '("--sug-mode=ultra" "--run-together"))
|
(setq ispell-program-name "aspell"
|
||||||
|
ispell-extra-args '("--sug-mode=ultra" "--run-together"))
|
||||||
|
|
||||||
(setq-hook! 'text-mode-hook
|
(defun +flyspell|remove-run-together-switch-for-aspell ()
|
||||||
ispell-extra-args (remove "--run-together" ispell-extra-args))
|
(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)
|
(defun +flyspell*setup-ispell-extra-args (orig-fun &rest args)
|
||||||
(let ((ispell-extra-args (remove "--run-together" ispell-extra-args)))
|
(let ((ispell-extra-args (remove "--run-together" ispell-extra-args)))
|
||||||
(ispell-kill-ispell t)
|
(ispell-kill-ispell t)
|
||||||
(apply orig-fun args)
|
(apply orig-fun args)
|
||||||
(ispell-kill-ispell t)))
|
(ispell-kill-ispell t)))
|
||||||
(advice-add #'ispell-word :around #'+flyspell*setup-ispell-extra-args)
|
(advice-add #'ispell-word :around #'+flyspell*setup-ispell-extra-args)
|
||||||
(advice-add #'flyspell-auto-correct-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))
|
(`hunspell
|
||||||
(executable-find "hunspell"))
|
(setq ispell-program-name "hunspell"
|
||||||
(setq ispell-program-name "hunspell"
|
;; Don't use `ispell-cmd-args', it isn't respected with hunspell.
|
||||||
;; Don't use `ispell-cmd-args', it isn't respected with hunspell.
|
;; Hack ispell-local-dictionary-alist instead.
|
||||||
;; Hack ispell-local-dictionary-alist instead.
|
ispell-dictionary-alist
|
||||||
ispell-dictionary-alist
|
`((,ispell-local-dictionary
|
||||||
`((,ispell-local-dictionary
|
"[[:alpha:]]"
|
||||||
"[[:alpha:]]"
|
"[^[:alpha:]]"
|
||||||
"[^[:alpha:]]"
|
"[']"
|
||||||
"[']"
|
nil
|
||||||
nil
|
("-d" ,ispell-local-dictionary)
|
||||||
("-d" ,ispell-local-dictionary)
|
nil
|
||||||
nil
|
utf-8))))
|
||||||
utf-8))))
|
|
||||||
|
|
||||||
t (user-error "Spell checker not found. Either install `aspell' of `hunspell'")))
|
|
||||||
|
|
||||||
(add-to-list 'ispell-extra-args "--dont-tex-check-comments"))
|
(_ (warn "Spell checker not found. Either install `aspell' of `hunspell'"))))
|
||||||
|
|
||||||
|
|
||||||
;; `flyspell' (built-in)
|
;; `flyspell' (built-in)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue