]> code.delx.au - gnu-emacs-elpa/commitdiff
Support lambda values in grouped backends list
authorDmitry Gutov <dgutov@yandex.ru>
Sat, 23 Mar 2013 00:45:48 +0000 (04:45 +0400)
committerDmitry Gutov <dgutov@yandex.ru>
Sat, 23 Mar 2013 00:45:48 +0000 (04:45 +0400)
company-tests.el
company.el

index 691e3ae2486ad4793c7a7fb5861b6ffc0cfa00b8..7bcc0a076652ae49d7425673b8d2063148090849 100644 (file)
     (should (eq nil (company--good-prefix-p 'stop)))
     (should (eq t (company--good-prefix-p '("foo" . 5))))
     (should (eq nil (company--good-prefix-p '("foo" . 4))))))
+
+(ert-deftest company-multi-backend-with-lambdas ()
+  (let ((company-backend
+         (list (lambda (command &optional arg &rest ignore)
+                 (case command
+                   (prefix "z")
+                   (candidates '("a" "b"))))
+               (lambda (command &optional arg &rest ignore)
+                 (case command
+                   (prefix "z")
+                   (candidates '("c" "d")))))))
+    (should (equal (company-call-backend 'candidates "z") '("a" "b" "c" "d")))))
index b60db361d3325306996e0b1288e85edf70d88755..5d64f3a730c2df6183e14e91b34f28e1c17ffa34 100644 (file)
@@ -655,7 +655,9 @@ keymap during active completions (`company-active-map'):
     (apply 'company--multi-backend-adapter company-backend args)))
 
 (defun company--multi-backend-adapter (backends command &rest args)
-  (let ((backends (remove-if (lambda (b) (eq 'failed (get b 'company-init)))
+  (let ((backends (remove-if (lambda (b)
+                               (and (symbolp b)
+                                    (eq 'failed (get b 'company-init))))
                              backends)))
     (case command
       (candidates