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

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

[elpa] externals/ivy-explorer 863391e 3/7: Allow switching to lv-window


From: Clemens Radermacher
Subject: [elpa] externals/ivy-explorer 863391e 3/7: Allow switching to lv-window and allow modal navigation in it
Date: Wed, 16 Jan 2019 10:08:26 -0500 (EST)

branch: externals/ivy-explorer
commit 863391ee64271a6589372dd3d0df87651c917188
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>

    Allow switching to lv-window and allow modal navigation in it
---
 ivy-explorer.el | 43 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

diff --git a/ivy-explorer.el b/ivy-explorer.el
index ae02151..736016b 100644
--- a/ivy-explorer.el
+++ b/ivy-explorer.el
@@ -140,6 +140,35 @@ menu string as `cdr'."
   "When non-nil, `ivy-explorer--lv-message' will refresh.
 Even for the same string.")
 
+
+(defmacro ivy-explorer--lv-command (cmd)
+  `(defun ,(intern (format "%s-lv" (symbol-name cmd))) ()
+     (interactive)
+     (with-selected-window (minibuffer-window)
+       (call-interactively ',cmd)
+       (ivy--exhibit))))
+
+(defvar ivy-explorer-lv-mode-map
+  (let ((map (make-sparse-keymap)))
+    (prog1 map
+      (define-key map (kbd "C-g") (defun ivy-explorer-lv-quit ()
+                                    (interactive)
+                                    (with-selected-window (minibuffer-window)
+                                      (minibuffer-keyboard-quit))))
+      (define-key map "n" (ivy-explorer--lv-command ivy-explorer-next))
+      (define-key map "p" (ivy-explorer--lv-command ivy-explorer-previous))
+      (define-key map "f" (ivy-explorer--lv-command ivy-explorer-forward))
+      (define-key map "b" (ivy-explorer--lv-command ivy-explorer-backward))
+      (define-key map (kbd "RET") (ivy-explorer--lv-command ivy-alt-done))
+      (define-key map (kbd "DEL") (ivy-explorer--lv-command 
ivy-backward-delete-char))
+      (define-key map "," (ivy-explorer--lv-command ivy-explorer-avy))
+      (define-key map (kbd "C-x o") (defun ivy-explorer-select-mini ()
+                                      (interactive)
+                                      (select-window (minibuffer-window)))))))
+
+(define-minor-mode ivy-explorer-lv-mode
+  "Mode for buffer showing the grid.")
+
 (defun ivy-explorer--lv ()
   "Ensure that ivy explorer window is live and return it."
   (if (window-live-p ivy-explorer--window)
@@ -155,6 +184,7 @@ Even for the same string.")
             (switch-to-buffer buf)
           (switch-to-buffer " *ivy-explorer*")
           (set-window-hscroll ivy-explorer--window 0)
+          (ivy-explorer-lv-mode 1)
           (setq window-size-fixed t)
           (setq mode-line-format nil)
           (setq cursor-type nil)
@@ -392,7 +422,7 @@ Call the permanent action if possible.")
   (let ((map (make-sparse-keymap)))
     (prog1 map
       (define-key map (kbd "C-x d") 'ivy-explorer-dired)
-
+      (define-key map (kbd "M-o") 'ivy-explorer-dispatching-done)
       (define-key map (kbd "C-'") 'ivy-explorer-avy)
       (define-key map (kbd ",") 'ivy-explorer-avy)
       (define-key map (kbd ";") 'ivy-explorer-avy-dispatch)
@@ -434,6 +464,17 @@ Call the permanent action if possible.")
     (apply f args)))
 
 
+(defun ivy-explorer-dispatching-done ()
+  "Select one of the available actions and call `ivy-done'."
+  (interactive)
+  (let ((window (selected-window)))
+    (unwind-protect
+        (when (ivy-read-action)
+          (ivy-done))
+      (when (window-live-p window)
+        (window-resize nil (- 1 (window-height)))))))
+
+
 (defun ivy-explorer (&rest args)
   "Function to be used as `read-file-name-function'.
 



reply via email to

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