From bdd4657e23d9525e98dbe4fbf7e52f508800b1da Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 17 May 2020 20:31:51 -0400 Subject: [PATCH] Prevent company-abort side-effects suppressing echo-area e.g. some sly commands (like sly-compile-defun) log to the echo area, but company-abort was being called every time normal mode is invoked (which happens more often than you'd think). It would be fine if company-abort noop'ed if company wasn't active, but it doesn't; side effects ensue. --- modules/completion/company/config.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/completion/company/config.el b/modules/completion/company/config.el index 0a5486de9..31db4b849 100644 --- a/modules/completion/company/config.el +++ b/modules/completion/company/config.el @@ -37,7 +37,14 @@ (unless (featurep! +childframe) ;; Don't persist company popups when switching back to normal mode. ;; `company-box' aborts on mode switch so it doesn't need this. - (add-hook 'evil-normal-state-entry-hook #'company-abort)) + (add-hook! 'evil-normal-state-entry-hook + (defun +company-abort-h () + ;; HACK `company-abort' doesn't no-op if company isn't active; causing + ;; unwanted side-effects, like the suppression of messages in the + ;; echo-area. + ;; REVIEW Revisit this to refactor; shouldn't be necessary! + (when company-candidates + (company-abort))))) ;; Allow users to switch between backends on the fly. E.g. C-x C-s followed ;; by C-x C-n, will switch from `company-yasnippet' to ;; `company-dabbrev-code'.