[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master abf95f7 19/66: company-update-candidates: Don't be fooled
From: |
Dmitry Gutov |
Subject: |
[elpa] master abf95f7 19/66: company-update-candidates: Don't be fooled by a few prefix completions |
Date: |
Tue, 13 Jan 2015 02:44:49 +0000 |
branch: master
commit abf95f731b3184431602db3e760364553b9d0782
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>
company-update-candidates: Don't be fooled by a few prefix completions
...among non-prefix ones.
Obsoletes https://github.com/abingham/emacs-ycmd/pull/92.
`company-complete-common' was likewise too eager; this fixes it.
---
company-tests.el | 14 ++++++++++++++
company.el | 9 +++------
2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/company-tests.el b/company-tests.el
index 26e98e2..08b8463 100644
--- a/company-tests.el
+++ b/company-tests.el
@@ -90,6 +90,20 @@
(should (eq t (company--good-prefix-p "abc")))
(should (eq t (company--good-prefix-p '("bar" . t)))))))
+(ert-deftest company-common-with-non-prefix-completion ()
+ (let ((company-backend #'ignore)
+ (company-prefix "abc")
+ company-candidates
+ company-candidates-length
+ company-candidates-cache
+ company-common)
+ (company-update-candidates '("abc" "def-abc"))
+ (should (null company-common))
+ (company-update-candidates '("abc" "abe-c"))
+ (should (null company-common))
+ (company-update-candidates '("abcd" "abcde" "abcdf"))
+ (should (equal "abcd" company-common))))
+
(ert-deftest company-multi-backend-with-lambdas ()
(let ((company-backend
(list (lambda (command &optional arg &rest ignore)
diff --git a/company.el b/company.el
index a44f150..6ad5c66 100644
--- a/company.el
+++ b/company.el
@@ -1084,14 +1084,11 @@ can retrieve meta-data for them."
;; We want to support non-prefix completion, so filtering is the
;; responsibility of each respective backend, not ours.
;; On the other hand, we don't want to replace non-prefix input in
- ;; `company-complete-common'.
+ ;; `company-complete-common', unless it's the sole candidate.
(setq company-common
(if (cdr company-candidates)
- (let ((common (try-completion company-prefix
company-candidates)))
- (if (eq common t)
- ;; Mulple equal strings, probably with different
- ;; annotations.
- company-prefix
+ (let ((common (try-completion "" company-candidates)))
+ (when (string-prefix-p company-prefix common)
common))
(car company-candidates)))))
- [elpa] master 79d4b0d 10/66: company-cmake: Support G77/Fortran distinction, (continued)
- [elpa] master 79d4b0d 10/66: company-cmake: Support G77/Fortran distinction, Dmitry Gutov, 2015/01/12
- [elpa] master 4375685 14/66: company-complete-number: Handle keypad events, Dmitry Gutov, 2015/01/12
- [elpa] master e692260 15/66: Show numbers in tooltip irrespective of scrolling, Dmitry Gutov, 2015/01/12
- [elpa] master c97666c 18/66: company-files--complete: Ignore case on appropriate systems, Dmitry Gutov, 2015/01/12
- [elpa] master 4d8ac8c 17/66: Support multiple-width chars in annotations, Dmitry Gutov, 2015/01/12
- [elpa] master ea5c4fd 05/66: More cleanup, Dmitry Gutov, 2015/01/12
- [elpa] master b188c49 07/66: Inline company-cmake--find-match, Dmitry Gutov, 2015/01/12
- [elpa] master 556ee69 16/66: Bump the version for development, Dmitry Gutov, 2015/01/12
- [elpa] master ccc08c9 08/66: Eliminate one `setq', Dmitry Gutov, 2015/01/12
- [elpa] master ed86ad5 20/66: company-update-candidates: Fix WRT ignore-case, Dmitry Gutov, 2015/01/12
- [elpa] master abf95f7 19/66: company-update-candidates: Don't be fooled by a few prefix completions,
Dmitry Gutov <=
- [elpa] master 98477e7 21/66: Reword comment, Dmitry Gutov, 2015/01/12
- [elpa] master 660cafc 22/66: company-input-noop: Use a symbol for the dummy event binding, Dmitry Gutov, 2015/01/12
- [elpa] master 7d3c5d4 23/66: company-backends: Clarify that responding to `match' is never mandatory, Dmitry Gutov, 2015/01/12
- [elpa] master bb0badd 25/66: Edit NEWS, Dmitry Gutov, 2015/01/12
- [elpa] master 67e74ce 26/66: company-backends: Add "to this command", Dmitry Gutov, 2015/01/12
- [elpa] master 0cdcd07 27/66: company-capf: Pass `sole' or 'finished' to exit-function, not `exact', Dmitry Gutov, 2015/01/12
- [elpa] master cecf6a9 29/66: company--window-width: Make it a defun, Dmitry Gutov, 2015/01/12
- [elpa] master 8196ff6 30/66: Work around http://debbugs.gnu.org/18384, Dmitry Gutov, 2015/01/12
- [elpa] master 62d1f37 28/66: company-clang--start-process: Bind process-adaptive-read-buffering to nil, Dmitry Gutov, 2015/01/12
- [elpa] master 3b622c4 31/66: Define customize group for company-bbdb, Dmitry Gutov, 2015/01/12