]> code.delx.au - gnu-emacs-elpa/commitdiff
company-files-complete: move files in subdirs to the end
authorDmitry Gutov <dgutov@yandex.ru>
Mon, 26 May 2014 18:39:23 +0000 (21:39 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Mon, 26 May 2014 18:39:23 +0000 (21:39 +0300)
#116

company-files.el

index a839f799ee5cafe6ab3a167f50baeb628d9de174..3dc4d867f8b67fb925e68a05fd6e65dc5b54bd36 100644 (file)
 (defun company-files-complete (prefix)
   (let* ((dir (file-name-directory prefix))
          (file (file-name-nondirectory prefix))
-         candidates)
+         candidates directories)
     (unless (equal dir (car company-files-completion-cache))
       (dolist (file (company-files-directory-files dir file))
         (setq file (concat dir file))
         (push file candidates)
         (when (file-directory-p file)
-          ;; Add one level of children.
-          (dolist (child (company-files-directory-files file ""))
-            (push (concat file
-                          (unless (eq (aref file (1- (length file))) ?/) "/")
-                          child) candidates))))
+          (push file directories)))
+      (dolist (directory (reverse directories))
+        ;; Add one level of children.
+        (dolist (child (company-files-directory-files directory ""))
+          (push (concat directory
+                        (unless (eq (aref directory (1- (length directory))) ?/) "/")
+                        child) candidates)))
       (setq company-files-completion-cache (cons dir (nreverse candidates))))
     (all-completions prefix
                      (cdr company-files-completion-cache))))