]> code.delx.au - gnu-emacs-elpa/commitdiff
company-files: Fix cache behavior for when we're backspacing
authorDmitry Gutov <dgutov@yandex.ru>
Sun, 28 Sep 2014 20:14:25 +0000 (00:14 +0400)
committerDmitry Gutov <dgutov@yandex.ru>
Sun, 28 Sep 2014 20:14:25 +0000 (00:14 +0400)
As discussed
in https://github.com/Lompik/company-mode/commit/528cd1b4c94e1d6b0009068be618bde2b27ec583#commitcomment-7953472.

company-files.el

index 5a77699da4b624abeacd6588e3d8622fb51700b1..0e2ab4d29808af895e74df75295f3a0073857ff4 100644 (file)
 
 (defun company-files--complete (prefix)
   (let* ((dir (file-name-directory prefix))
-         (key (cons (expand-file-name dir)
+         (key (list (file-name-nondirectory prefix)
+                    (expand-file-name dir)
                     (nth 5 (file-attributes dir))))
          (file (file-name-nondirectory prefix))
          candidates directories)
-    (unless (equal key (car company-files--completion-cache))
+    (unless (company-file--keys-match-p key (car company-files--completion-cache))
       (dolist (file (company-files--directory-files dir file))
         (setq file (concat dir file))
         (push file candidates)
     (all-completions prefix
                      (cdr company-files--completion-cache))))
 
+(defun company-file--keys-match-p (new old)
+  (and (string-prefix-p (car old) (car new))
+       (equal (cdr old) (cdr new))))
+
 ;;;###autoload
 (defun company-files (command &optional arg &rest ignored)
   "`company-mode' completion back-end existing file names.