[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ivy-explorer f9e3b7a 07/29: Add auto-init-avy option, a
From: |
Clemens Radermacher |
Subject: |
[elpa] externals/ivy-explorer f9e3b7a 07/29: Add auto-init-avy option, and improve avy exit behaviour |
Date: |
Tue, 12 Mar 2019 09:04:34 -0400 (EDT) |
branch: externals/ivy-explorer
commit f9e3b7a197c7ee1c470c60fe0380a776b9c1c103
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>
Add auto-init-avy option, and improve avy exit behaviour
---
ivy-explorer.el | 108 +++++++++++++++++++++++++++++++++++++++++---------------
1 file changed, 79 insertions(+), 29 deletions(-)
diff --git a/ivy-explorer.el b/ivy-explorer.el
index 993ded0..3b001d3 100644
--- a/ivy-explorer.el
+++ b/ivy-explorer.el
@@ -82,6 +82,11 @@ Line is drawn between the ivy explorer window and the Echo
Area."
:group 'ivy-explorer
:type 'function)
+(defcustom ivy-explorer-auto-init-avy nil
+ "Whether to load grid views with avy selection enabled by default."
+ :group 'ivy-explorer
+ :type 'boolean)
+
(defface ivy-explorer-separator
(if (featurep 'lv)
'((t (:inherit lv-separator)))
@@ -92,6 +97,37 @@ Only the background color is significant."
:group 'ivy-explorer)
+(defvar ivy-explorer-map
+ (let ((map (make-sparse-keymap)))
+ (prog1 map
+ (define-key map (kbd "DEL") 'ivy-explorer-backward-delete-char)
+ (define-key map (kbd "C-j") 'ivy-explorer-alt-done)
+ (define-key map (kbd "C-x d") 'ivy-explorer-dired)
+
+ (define-key map (kbd "C-x o") 'ivy-explorer-select-lv)
+ (define-key map (kbd "'") 'ivy-explorer-select-lv)
+
+ (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)
+ ;; TODO: create C-o ivy-explorer-hydra
+ (define-key map (kbd "C-f") 'ivy-explorer-forward)
+ (define-key map (kbd "C-b") 'ivy-explorer-backward)
+ (define-key map (kbd "C-M-f") 'ivy-explorer-forward-and-call)
+ (define-key map (kbd "C-M-b") 'ivy-explorer-backward-and-call)
+
+ (define-key map (kbd "C-a") 'ivy-explorer-bol)
+ (define-key map (kbd "C-e") 'ivy-explorer-eol)
+ (define-key map (kbd "C-M-a") 'ivy-explorer-bol-and-call)
+ (define-key map (kbd "C-M-e") 'ivy-explorer-eol-and-call)
+
+ (define-key map (kbd "C-n") 'ivy-explorer-next)
+ (define-key map (kbd "C-p") 'ivy-explorer-previous)
+ (define-key map (kbd "C-M-n") 'ivy-explorer-next-and-call)
+ (define-key map (kbd "C-M-p") 'ivy-explorer-previous-and-call)))
+ "Keymap used in the minibuffer for function/`ivy-explorer-mode'.")
+
;; * Ivy explorer menu
(defvar ivy-explorer--col-n nil
@@ -234,6 +270,27 @@ menu string as `cdr'."
;; * Minibuffer commands
+(defun ivy-explorer--ace-handler (char)
+ "Execute buffer-expose action for CHAR."
+ (cond ((memq char '(27 ?\C-g ?,))
+ ;; exit silently
+ (throw 'done 'exit))
+ ((mouse-event-p char)
+ (signal 'user-error (list "Mouse event not handled" char)))
+ (t
+ (require 'edmacro)
+ (let* ((key (kbd (edmacro-format-keys (vector char))))
+ (cmd (or (lookup-key ivy-explorer-map key)
+ (key-binding key))))
+ (if (commandp cmd)
+ (progn (call-interactively cmd)
+ (run-at-time 0 nil #'ivy--exhibit)
+ (throw 'done 'exit))
+ (message "No such candidate: %s, hit `C-g' to quit."
+ (if (characterp char) (string char) char))
+ (throw 'done 'restart))))))
+
+
;; Ivy explorer avy, adapted from ivy-avy
(defun ivy-explorer-avy (&optional action)
"Jump to one of the current candidates using `avy'.
@@ -251,6 +308,7 @@ in this case `avy' is not invoked again."
(let* ((avy-all-windows nil)
(avy-keys (or (cdr (assq 'ivy-avy avy-keys-alist))
avy-keys))
+ (avy-handler-function #'ivy-explorer--ace-handler)
(avy-style (or (cdr (assq 'ivy-avy
avy-styles-alist))
avy-style))
@@ -440,6 +498,25 @@ Call the permanent action if possible."
(defalias 'ivy-explorer-backward #'ivy-previous-line
"Move cursor backward ARG candidates.")
+(defun ivy-explorer-alt-done ()
+ "Like `ivy-alt-done' but respecting `ivy-explorer-auto-init-avy'."
+ (interactive)
+ (with-selected-window (minibuffer-window)
+ (call-interactively 'ivy-alt-done)
+ (when ivy-explorer-auto-init-avy
+ (ivy-explorer-avy))))
+
+(defun ivy-explorer-backward-delete-char ()
+ "Like `ivy-backward-delete-char' but respecting
`ivy-explorer-auto-init-avy'."
+ (interactive)
+ (with-selected-window (minibuffer-window)
+ (if (and ivy--directory (= (minibuffer-prompt-end) (point)))
+ (progn (call-interactively 'ivy-backward-delete-char)
+ (when ivy-explorer-auto-init-avy
+ (ivy-explorer-avy)))
+ (call-interactively 'ivy-backward-delete-char))))
+
+
(defalias 'ivy-explorer-forward-and-call #'ivy-next-line-and-call
"Move cursor forward ARG candidates.
Call the permanent action if possible.")
@@ -454,35 +531,6 @@ Call the permanent action if possible.")
(interactive)
(select-window (get-buffer-window " *ivy-explorer*")))
-(defvar ivy-explorer-map
- (let ((map (make-sparse-keymap)))
- (prog1 map
- (define-key map (kbd "C-x d") 'ivy-explorer-dired)
-
- (define-key map (kbd "C-x o") 'ivy-explorer-select-lv)
- (define-key map (kbd "'") 'ivy-explorer-select-lv)
-
- (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)
- ;; TODO: create C-o ivy-explorer-hydra
- (define-key map (kbd "C-f") 'ivy-explorer-forward)
- (define-key map (kbd "C-b") 'ivy-explorer-backward)
- (define-key map (kbd "C-M-f") 'ivy-explorer-forward-and-call)
- (define-key map (kbd "C-M-b") 'ivy-explorer-backward-and-call)
-
- (define-key map (kbd "C-a") 'ivy-explorer-bol)
- (define-key map (kbd "C-e") 'ivy-explorer-eol)
- (define-key map (kbd "C-M-a") 'ivy-explorer-bol-and-call)
- (define-key map (kbd "C-M-e") 'ivy-explorer-eol-and-call)
-
- (define-key map (kbd "C-n") 'ivy-explorer-next)
- (define-key map (kbd "C-p") 'ivy-explorer-previous)
- (define-key map (kbd "C-M-n") 'ivy-explorer-next-and-call)
- (define-key map (kbd "C-M-p") 'ivy-explorer-previous-and-call)))
- "Keymap used in the minibuffer for function/`ivy-explorer-mode'.")
-
(defun ivy-explorer-max ()
"Default for `ivy-explorer-max-function'."
(* 2 (frame-height)))
@@ -509,6 +557,8 @@ Call the permanent action if possible.")
(ivy-wrap nil)
(ivy-minibuffer-map (make-composed-keymap
ivy-explorer-map ivy-minibuffer-map)))
+ (when ivy-explorer-auto-init-avy
+ (run-at-time 0 nil 'ivy-explorer-avy))
(apply f args)))
- [elpa] externals/ivy-explorer e7e2e4e 12/29: Improve posframe support, (continued)
- [elpa] externals/ivy-explorer e7e2e4e 12/29: Improve posframe support, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 918c133 11/29: Add row counter variable, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 35ee473 13/29: Skip first line when parsing posframe buffer for avy, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer af08f55 03/29: Refactoring, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 5475145 01/29: Add Elpa badge, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 1da2e48 16/29: Increase default number of columns to 5, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 4c19171 22/29: Add ivy-explorer-read function to read any colledtion with the grid, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer a30fc60 15/29: Actually respect the setting of `ivy-explorer-max-columns`, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 4a48ec4 17/29: Add posframe screenshot, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer bc207da 10/29: Add basic posframe support for #7, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer f9e3b7a 07/29: Add auto-init-avy option, and improve avy exit behaviour,
Clemens Radermacher <=
- [elpa] externals/ivy-explorer 9af0805 27/29: Improve ivy-explorer-read function again, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer e4bb026 26/29: Allow specifying height of grid display, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 5fb5512 20/29: Only parse visible window part for avy selection with posframe, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 6245f34 28/29: Change some frame paramaters for better posframe display, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 72a511e 21/29: Don't keep avy on after first use, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 384e241 18/29: Use ivy posframe dispatching done when using posframe, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 5f9dafc 29/29: Version bump, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 6481247 08/29: Refactor ivy-explorer-avy, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer 2badbe3 09/29: Bytec. fixes for free avy vars, Clemens Radermacher, 2019/03/12
- [elpa] externals/ivy-explorer c2ef475 19/29: Update ivy explorere avy dispatch for posframe, Clemens Radermacher, 2019/03/12