]> code.delx.au - gnu-emacs-elpa/blobdiff - company.el
company--multi-backend-adapter: Skip backends that failed init
[gnu-emacs-elpa] / company.el
index f728ca2c5e243dbcb5af297762f5ec03806a563e..174f1295930fbc0131e86efdc2597de2f07f8280 100644 (file)
@@ -727,17 +727,19 @@ keymap during active completions (`company-active-map'):
     (apply 'company--multi-backend-adapter company-backend args)))
 
 (defun company--multi-backend-adapter (backends command &rest args)
-  (case command
-    (candidates
-     (apply 'append (mapcar (lambda (backend) (apply backend command args))
-                            backends)))
-    (sorted nil)
-    (duplicates t)
-    (otherwise
-     (let (value)
-       (dolist (backend backends)
-         (when (setq value (apply backend command args))
-           (return value)))))))
+  (let ((backends (remove-if (lambda (b) (eq 'failed (get b 'company-init)))
+                             backends)))
+    (case command
+      (candidates
+       (apply 'append (mapcar (lambda (backend) (apply backend command args))
+                              backends)))
+      (sorted nil)
+      (duplicates t)
+      (otherwise
+       (let (value)
+         (dolist (backend backends)
+           (when (setq value (apply backend command args))
+             (return value))))))))
 
 ;;; completion mechanism ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;