branch: master
commit 32a8963873016804c792a4f23fa6d83decac5803
Author: Oleh Krehel <[email protected]>
Commit: Oleh Krehel <[email protected]>

    Allow to customize the dotted directories
    
    * ivy.el (ivy-extra-directories): New defcustom.
    (ivy--sorted-files): Update.
    
    Re #38
---
 ivy.el |   29 ++++++++++++++++++-----------
 1 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/ivy.el b/ivy.el
index ed96dc9..791b46b 100644
--- a/ivy.el
+++ b/ivy.el
@@ -64,6 +64,11 @@ Set this to nil if you don't want the count."
 This is usually meant as a quick exit out of the minibuffer."
   :type 'function)
 
+(defcustom ivy-extra-directories '("../" "./")
+  "Add this to the front of the list when completing file names.
+Only \"./\" and \"../\" apply here. They appear in reverse order."
+  :type 'list)
+
 ;;* User Visible
 ;;** Keymap
 (require 'delsel)
@@ -221,17 +226,19 @@ Directories come first."
          (seq (all-completions "" 'read-file-name-internal)))
     (if (equal dir "/")
         seq
-      (cons "./" (cons "../"
-                       (cl-sort
-                        (delete "./" (delete "../" seq))
-                        (lambda (x y)
-                          (if (file-directory-p x)
-                              (if (file-directory-p y)
-                                  (string< x y)
-                                t)
-                            (if (file-directory-p y)
-                                nil
-                              (string< x y))))))))))
+      (setq seq (cl-sort
+                 (delete "./" (delete "../" seq))
+                 (lambda (x y)
+                   (if (file-directory-p x)
+                       (if (file-directory-p y)
+                           (string< x y)
+                         t)
+                     (if (file-directory-p y)
+                         nil
+                       (string< x y))))))
+      (dolist (dir ivy-extra-directories)
+        (push dir seq))
+      seq)))
 
 ;;** Entry Point
 (defun ivy-read (prompt collection

Reply via email to