Update.
[elisp.git] / selector.el
index 17a5b23..bf9a852 100644 (file)
@@ -63,6 +63,11 @@ Otherwise use the mode-line."
   :type 'bool
   :group 'selector)
 
+(defcustom selector/add-to-file-name-history t
+  "If non-nil, file selected with selector/quick-pick-recent will be added to the mini-buffer filename history."
+  :type 'bool
+  :group 'selector)
+
 (defcustom selector/mode-hook nil
   "Hook called at the end of the selector mode initialization."
   :type 'hook
@@ -330,32 +335,60 @@ There seems to be header-line refreshing problems with emacs21."
    (if (file-remote-p s)
        "          "
      (propertize
-      (format-time-string   "%a %b %e" (elt (file-attributes s) 5))
+      (format-time-string   "%b %a %e" (elt (file-attributes s) 5))
       'face 'selector/date))
 
-   " -- "
+   ;; " -- "
+
+   " "
 
    (if (string-match abbreviated-home-dir s)
        (concat (propertize
                 (substring s 0 (match-end 0)) 'face 'selector/dim)
                (substring s (match-end 0)))
      s)
+
+   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+   ;; (if (and (boundp 'selector/previous-filename) selector/previous-filename)
+   ;;     (let ((l (abs (compare-strings
+   ;;                    selector/previous-filename nil nil
+   ;;                    filename nil nil))))
+   ;;       ;; (if (> l 0) (setq l 
+   ;;       (setq selector/previous-filename filename)
+   ;;       (concat (propertize
+   ;;                (substring s 0 l) 'face 'selector/dim)
+   ;;               (substring s l))
+   ;;       )
+   ;;   filename
+   ;;   )
+   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
    )
   )
 
 (defun selector/find-file (filename)
+  (if selector/add-to-file-name-history
+      (add-to-history 'file-name-history
+                      (replace-regexp-in-string
+                       abbreviated-home-dir "~/" filename)
+                      )
+    )
+
+  (find-file filename))
+
+(defun selector/pick-file (filename)
   "Callback function for `selector/quick-pick-recent'. When
 called with a universal argument, allows the user to edit the
 filename."
   (interactive)
   (if current-prefix-arg
-      (find-file (read-file-name
-                  "Find file: "
-                  (file-name-directory filename)
-                  nil
-                  nil
-                  (file-name-nondirectory filename)))
-    (find-file filename)))
+      (selector/find-file (read-file-name
+                           "Find file: "
+                           (file-name-directory filename)
+                           nil
+                           nil
+                           (file-name-nondirectory filename)))
+    (selector/find-file filename)))
 
 (defun selector/quick-pick-recent ()
   "Open a file picked in `recentf-list' with the dynamic
@@ -366,6 +399,8 @@ prefix argument, allows to edit the filename after selection."
   (unless (and (boundp recentf-mode) recentf-mode)
     (error "recentf mode must be turned on"))
 
+  ;; (setq selector/previous-filename "")
+
   (selector/select
 
    (mapcar
@@ -373,7 +408,7 @@ prefix argument, allows to edit the filename after selection."
       (cons (selector/filename-to-string s) s))
     recentf-list)
 
-   'selector/find-file
+   'selector/pick-file
    "*selector find-file*"
    ))