emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 395f846 159/173: Revert "Remove completions without annota


From: Dmitry Gutov
Subject: [elpa] master 395f846 159/173: Revert "Remove completions without annotations when considering duplicates"
Date: Thu, 23 Jun 2016 00:28:47 +0000 (UTC)

branch: master
commit 395f846b05fa37be4d00247941a370e6e0b7790e
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>

    Revert "Remove completions without annotations when considering duplicates"
    
    This reverts commit 777982049314af306a020b7de2ca6cb00b428822.
    
    Closes #509.
---
 NEWS.md            |    3 ---
 company.el         |   54 +++++++++++++++++++++-------------------------------
 test/core-tests.el |   14 ++++++--------
 3 files changed, 28 insertions(+), 43 deletions(-)

diff --git a/NEWS.md b/NEWS.md
index 6612ca2..96e72e8 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -14,9 +14,6 @@
   the selected tooltip line.
 * `company-clang-objc-templatify` has been renamed to
   `company-template-objc-templatify`.
-* When duplicates are removed, completions without annotations are also removed
-  in favor of completions with equal names that have annotations (experimental
-  change) ([#432](https://github.com/company-mode/company-mode/issues/432)).
 * New user option `company-etags-everywhere`.
 * `company-yasnippet` supports `yas-key-syntaxes` better. But we use them in 
the
   reverse order, preferring the longest key prefix that matches anything. And 
we
diff --git a/company.el b/company.el
index 23ed09a..e35d7e5 100644
--- a/company.el
+++ b/company.el
@@ -1205,7 +1205,7 @@ can retrieve meta-data for them."
   (unless (company-call-backend 'sorted)
     (setq candidates (sort candidates 'string<)))
   (when (company-call-backend 'duplicates)
-    (setq candidates (company--strip-duplicates candidates)))
+    (company--strip-duplicates candidates))
   candidates)
 
 (defun company--postprocess-candidates (candidates)
@@ -1216,37 +1216,27 @@ can retrieve meta-data for them."
   (company--transform-candidates candidates))
 
 (defun company--strip-duplicates (candidates)
-  (let* ((annos 'unk)
-         (str (car candidates))
-         (ref (cdr candidates))
-         res str2 anno2)
-    (while ref
-      (setq str2 (pop ref))
-      (if (not (equal str str2))
-          (progn
-            (push str res)
-            (setq str str2)
-            (setq annos 'unk))
-        (setq anno2 (company-call-backend
-                     'annotation str2))
-        (cond
-         ((null anno2))             ; Skip it.
-         ((when (eq annos 'unk)
-            (let ((ann1 (company-call-backend 'annotation str)))
-              (if (null ann1)
-                  ;; No annotation on the earlier element, drop it.
-                  t
-                (setq annos (list ann1))
-                nil)))
-          (setq annos (list anno2))
-          (setq str str2))
-         ((member anno2 annos))     ; Also skip.
-         (t
-          (push anno2 annos)
-          (push str res)            ; Maintain ordering.
-          (setq str str2)))))
-    (when str (push str res))
-    (nreverse res)))
+  (let ((c2 candidates)
+        (annos 'unk))
+    (while c2
+      (setcdr c2
+              (let ((str (pop c2)))
+                (while (let ((str2 (car c2)))
+                         (if (not (equal str str2))
+                             (progn
+                               (setq annos 'unk)
+                               nil)
+                           (when (eq annos 'unk)
+                             (setq annos (list (company-call-backend
+                                                'annotation str))))
+                           (let ((anno2 (company-call-backend
+                                         'annotation str2)))
+                             (if (member anno2 annos)
+                                 t
+                               (push anno2 annos)
+                               nil))))
+                  (pop c2))
+                c2)))))
 
 (defun company--transform-candidates (candidates)
   (let ((c candidates))
diff --git a/test/core-tests.el b/test/core-tests.el
index 46d1709..666ed80 100644
--- a/test/core-tests.el
+++ b/test/core-tests.el
@@ -408,11 +408,9 @@
                 ("a" . "b")
                 ("a" . "c")
                 ("a" . "b")
-                ("b" . nil)
                 ("b" . "c")
-                ("a" . "b")
-                ("c" . nil)
-                ("c" . nil)))
+                ("b" . nil)
+                ("a" . "b")))
          (fn (lambda (kvs)
                (mapcar (lambda (kv) (propertize (car kv) 'ann (cdr kv)))
                        kvs)))
@@ -424,18 +422,18 @@
               (`duplicates t)
               (`annotation (get-text-property 0 'ann arg)))))
          (reference '(("a" . "b")
+                      ("a" . nil)
                       ("a" . "c")
                       ("b" . "c")
-                      ("a" . "b")
-                      ("c" . nil))))
+                      ("b" . nil)
+                      ("a" . "b"))))
     (let ((ct-sorted t))
       (should (ct-equal-including-properties
                (company--preprocess-candidates (funcall fn kvs))
                (funcall fn reference))))
     (should (ct-equal-including-properties
              (company--preprocess-candidates (funcall fn kvs))
-             (funcall fn (append (butlast reference 2)
-                                 (last reference)))))))
+             (funcall fn (butlast reference))))))
 
 ;;; Row and column
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]