branch: master commit c96626f35c3a7886b49c34d5f2986c991dda29be Author: Dmitry Gutov <dgu...@yandex.ru> Commit: Dmitry Gutov <dgu...@yandex.ru>
Add a workaround for sit-for conflict with flyspell Closes #760 --- NEWS.md | 4 ++++ company.el | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index 2db3dcf..48aa592 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,9 @@ # History of user-visible changes +## Next + +* Workaround for Emacs bug#23980 triggered in combination with flyspell. + ## 2018-02-18 (0.9.5) * The most common case of tooltip flickering with asynchronous backends (and diff --git a/company.el b/company.el index 3e276d9..6b294f2 100644 --- a/company.el +++ b/company.el @@ -1240,8 +1240,12 @@ can retrieve meta-data for them." (when (eq res 'none) (push 'company-foo unread-command-events)) (setq res candidates))) - (while (and (eq res 'none) - (sit-for 0.5 t))) + (if (company--flyspell-workaround-p) + (while (and (eq res 'none) + (not (input-pending-p))) + (sleep-for company-async-wait)) + (while (and (eq res 'none) + (sit-for 0.5 t)))) (while (member (car unread-command-events) '(company-foo (t . company-foo))) (pop unread-command-events)) @@ -1249,6 +1253,11 @@ can retrieve meta-data for them." (and (consp res) res) (setq res 'exited)))))) +(defun company--flyspell-workaround-p () + ;; https://debbugs.gnu.org/23980 + (and (bound-and-true-p flyspell-mode) + (version< emacs-version "27"))) + (defun company--preprocess-candidates (candidates) (cl-assert (cl-every #'stringp candidates)) (unless (company-call-backend 'sorted)