Improve flyspell support

+ Make flyspell more selective about what to scan in markdown buffers.
+ Don't mark duplicates when proseline or langtool are present.
+ Add set-flyspell-predicate! for seeing mode-specific word predicates.
This commit is contained in:
Henrik Lissner 2019-02-26 16:46:26 -05:00
parent d83ba452ef
commit db2949ff32
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
4 changed files with 57 additions and 6 deletions

View file

@ -0,0 +1,16 @@
;;; tools/flyspell/autoload.el -*- lexical-binding: t; -*-
(defvar +flyspell--predicate-alist nil
"TODO")
;;;###autodef
(defun set-flyspell-predicate! (modes predicate)
"TODO"
(dolist (mode (doom-enlist modes) +flyspell--predicate-alist)
(add-to-list '+flyspell--predicate-alist (cons mode predicate))))
;;;###autoload
(defun +flyspell|init-predicate ()
"TODO"
(when-let* ((pred (assq major-mode +flyspell--predicate-alist)))
(setq-local flyspell-generic-check-word-predicate (cdr pred))))

View file

@ -47,13 +47,26 @@ Since spellchecking can be slow in some buffers, this can be disabled with:
;; `flyspell' (built-in)
(setq flyspell-issue-welcome-flag nil)
(progn
(setq flyspell-issue-welcome-flag nil)
(defun +flyspell|immediately ()
"Spellcheck the buffer when `flyspell-mode' is enabled."
(when (and flyspell-mode +flyspell-immediately)
(flyspell-buffer)))
(add-hook 'flyspell-mode-hook #'+flyspell|immediately)
(defun +flyspell|inhibit-duplicate-detection-maybe ()
"Don't mark duplicates when style/grammar linters are present.
e.g. proselint and langtool."
(when (or (executable-find "proselint")
(featurep 'langtool))
(setq-local flyspell-mark-duplications-flag nil)))
(add-hook 'flyspell-mode-hook #'+flyspell|inhibit-duplicate-detection-maybe)
(defun +flyspell|immediately ()
"Spellcheck the buffer when `flyspell-mode' is enabled."
(when (and flyspell-mode +flyspell-immediately)
(flyspell-buffer)))
(add-hook 'flyspell-mode-hook #'+flyspell|immediately)
;; Ensure mode-local predicates declared with `set-flyspell-predicate!' are
;; used in their respective major modes.
(add-hook 'flyspell-mode-hook #'+flyspell|init-predicate))
(def-package! flyspell-correct