emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/ivy-hydra f1472ef 266/395: ivy.el: When completing file


From: Basil L. Contovounesios
Subject: [elpa] externals/ivy-hydra f1472ef 266/395: ivy.el: When completing files, make "RET" reverse "DEL"
Date: Thu, 25 Feb 2021 08:32:17 -0500 (EST)

branch: externals/ivy-hydra
commit f1472ef26f5b9506d1f23fc713046feb708ed5cc
Author: Oleh Krehel <ohwoeowho@gmail.com>
Commit: Oleh Krehel <ohwoeowho@gmail.com>

    ivy.el: When completing files, make "RET" reverse "DEL"
    
    Re #1424
---
 ivy.el | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/ivy.el b/ivy.el
index 52ee616..e77e5a7 100644
--- a/ivy.el
+++ b/ivy.el
@@ -561,6 +561,10 @@ of `history-length'.")
 (defvar ivy--directory nil
   "Current directory when completing file names.")
 
+(defvar ivy--directory-hist nil
+  "Store the history of directories.
+This allows RET to reverse consecutive DEL.")
+
 (defvar ivy--length 0
   "Store the amount of viable candidates.")
 
@@ -1680,7 +1684,15 @@ If so, move to that directory, while keeping only the 
file name."
               #'string<))))
     (ivy-set-text "")
     (setf (ivy-state-directory ivy-last) dir)
-    (delete-minibuffer-contents)))
+    (delete-minibuffer-contents)
+    (when (equal dir (car ivy--directory-hist))
+      (pop ivy--directory-hist)
+      (setf (ivy-state-preselect ivy-last)
+            (if ivy--directory-hist
+                (file-name-nondirectory
+                 (directory-file-name
+                  (car ivy--directory-hist)))
+              nil)))))
 
 (defun ivy--parent-dir (filename)
   "Return parent directory of absolute FILENAME."
@@ -1693,10 +1705,12 @@ there is no more text to delete at the beginning of the
 minibuffer."
   (interactive)
   (if (and ivy--directory (= (minibuffer-prompt-end) (point)))
-      (if (fboundp 'counsel-up-directory)
-          (counsel-up-directory)
-        (ivy--cd (ivy--parent-dir (expand-file-name ivy--directory)))
-        (ivy--exhibit))
+      (progn
+        (push ivy--directory ivy--directory-hist)
+        (if (fboundp 'counsel-up-directory)
+            (counsel-up-directory)
+          (ivy--cd (ivy--parent-dir (expand-file-name ivy--directory)))
+          (ivy--exhibit)))
     (setq prefix-arg current-prefix-arg)
     (condition-case nil
         (call-interactively #'delete-backward-char)
@@ -2347,6 +2361,7 @@ This is useful for recursive `ivy-read'."
          (def (ivy-state-def state)))
     (setq ivy--extra-candidates (ivy--compute-extra-candidates caller))
     (setq ivy--directory nil)
+    (setq ivy--directory-hist nil)
     (setq ivy-case-fold-search ivy-case-fold-search-default)
     (setf (ivy-state-re-builder ivy-last)
           (setq ivy--regex-function



reply via email to

[Prev in Thread] Current Thread [Next in Thread]