branch: master commit a5289c533c7a5445b2add25b7bf784cfa0f1f23c Author: Dmitry Gutov <dgu...@yandex.ru> Commit: Dmitry Gutov <dgu...@yandex.ru>
Fix backspacing into a "bad" prefix Fixes #667. --- company.el | 5 +++-- test/core-tests.el | 23 ++++++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/company.el b/company.el index 153b1f5..fbf0315 100644 --- a/company.el +++ b/company.el @@ -1509,8 +1509,9 @@ prefix match (same case) will be prioritized." (setq company-prefix new-prefix) (company-update-candidates c) c) - ((company-auto-complete-p (buffer-substring-no-properties - (point) company-point)) + ((and (> (point) company-point) + (company-auto-complete-p (buffer-substring-no-properties + (point) company-point))) ;; auto-complete (save-excursion (goto-char company-point) diff --git a/test/core-tests.el b/test/core-tests.el index 977f1cf..6c846d2 100644 --- a/test/core-tests.el +++ b/test/core-tests.el @@ -157,16 +157,16 @@ (let ((one (lambda (command &optional _) (cl-case command (prefix "a") - (candidates '("aa" "ca" "ba"))))) + (candidates (list "aa" "ca" "ba"))))) (two (lambda (command &optional _) (cl-case command (prefix "a") - (candidates '("bb" "ab"))))) + (candidates (list "bb" "ab"))))) (tri (lambda (command &optional _) (cl-case command (prefix "a") (sorted t) - (candidates '("cc" "bc" "ac")))))) + (candidates (list "cc" "bc" "ac")))))) (let ((company-backend (list one two tri :separate))) (should (company-call-backend 'sorted)) (should-not (company-call-backend 'duplicates)) @@ -315,6 +315,23 @@ (company-call 'backward-delete-char 1) (should (eq 2 company-candidates-length)))))) +(ert-deftest company-backspace-into-bad-prefix () + (with-temp-buffer + (insert "ab") + (company-mode) + (let (company-frontends + (company-minimum-prefix-length 2) + (company-backends + (list (lambda (command &optional _) + (cl-case command + (prefix (buffer-substring (point-min) (point))) + (candidates '("abcd" "abef"))))))) + (let ((company-idle-delay 'now)) + (company-auto-begin)) + (company-call 'backward-delete-char-untabify 1) + (should (string= "a" (buffer-string))) + (should (null company-candidates))))) + (ert-deftest company-auto-complete-explicit () (with-temp-buffer (insert "ab")