Skip to content

Commit

Permalink
Make sure user keybindings are respected
Browse files Browse the repository at this point in the history
* ivy.el: Make sure user keybindings are reused in ivy-minibuffer-map.
  Without this patch, if the user specifies his own keybinding for a
  standard command (e.g., `beginning-of-buffer`, normally bound to
  `M-<`), ivy keeps using the default keybinding (e.g., `M-<`) in
  ivy-minibuffer-map instead of the user-specified one.

* ivy-test.el: Add corresponding test

Fix issue abo-abo#466.
  • Loading branch information
DamienCassou committed Apr 7, 2016
1 parent 341b5a2 commit c9b6e02
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 16 deletions.
10 changes: 10 additions & 0 deletions ivy-test.el
Expand Up @@ -20,6 +20,10 @@
;; see <http://www.gnu.org/licenses/>.

(require 'ert)

;; useful for #'ivy-read-remap. It must arrive before (require 'ivy)
(define-key global-map (kbd "<S-right>") #'end-of-buffer)

(require 'ivy)
(require 'counsel)

Expand Down Expand Up @@ -79,6 +83,12 @@
"can C-m")
"can")))

(ert-deftest ivy-read-remap ()
(should (equal
(ivy-with '(ivy-read "pattern: " '("blue" "yellow" "red"))
"<S-right> C-m")
"red")))

(ert-deftest swiper--re-builder ()
(setq swiper--width 4)
(should (string= (swiper--re-builder "^")
Expand Down
32 changes: 16 additions & 16 deletions ivy.el
Expand Up @@ -223,25 +223,25 @@ Example:
(define-key map (kbd "C-j") 'ivy-alt-done)
(define-key map (kbd "C-M-j") 'ivy-immediate-done)
(define-key map (kbd "TAB") 'ivy-partial-or-done)
(define-key map (kbd "C-n") 'ivy-next-line)
(define-key map (kbd "C-p") 'ivy-previous-line)
(define-key map (kbd "<down>") 'ivy-next-line)
(define-key map (kbd "<up>") 'ivy-previous-line)
(define-key map [remap next-line] 'ivy-next-line)
(define-key map [remap previous-line] 'ivy-previous-line)
(define-key map [remap next-line] 'ivy-next-line)
(define-key map [remap previous-line] 'ivy-previous-line)
(define-key map (kbd "C-s") 'ivy-next-line-or-history)
(define-key map (kbd "C-r") 'ivy-reverse-i-search)
(define-key map (kbd "SPC") 'self-insert-command)
(define-key map (kbd "DEL") 'ivy-backward-delete-char)
(define-key map (kbd "M-DEL") 'ivy-backward-kill-word)
(define-key map (kbd "C-d") 'ivy-delete-char)
(define-key map (kbd "C-f") 'ivy-forward-char)
(define-key map (kbd "M-d") 'ivy-kill-word)
(define-key map (kbd "M-<") 'ivy-beginning-of-buffer)
(define-key map (kbd "M->") 'ivy-end-of-buffer)
(define-key map [remap backward-delete-char] 'ivy-backward-delete-char)
(define-key map [remap backward-kill-word] 'ivy-backward-kill-word)
(define-key map [remap delete-char] 'ivy-delete-char)
(define-key map [remap forward-char] 'ivy-forward-char)
(define-key map [remap kill-word] 'ivy-kill-word)
(define-key map [remap beginning-of-buffer] 'ivy-beginning-of-buffer)
(define-key map [remap end-of-buffer] 'ivy-end-of-buffer)
(define-key map (kbd "M-n") 'ivy-next-history-element)
(define-key map (kbd "M-p") 'ivy-previous-history-element)
(define-key map (kbd "C-g") 'minibuffer-keyboard-quit)
(define-key map (kbd "C-v") 'ivy-scroll-up-command)
(define-key map (kbd "M-v") 'ivy-scroll-down-command)
(define-key map [remap scroll-up-command] 'ivy-scroll-up-command)
(define-key map [remap scroll-down-command] 'ivy-scroll-down-command)
(define-key map (kbd "C-M-n") 'ivy-next-line-and-call)
(define-key map (kbd "C-M-p") 'ivy-previous-line-and-call)
(define-key map (kbd "M-q") 'ivy-toggle-regexp-quote)
Expand All @@ -250,14 +250,14 @@ Example:
(define-key map (kbd "C-o") 'hydra-ivy/body)
(define-key map (kbd "M-o") 'ivy-dispatching-done)
(define-key map (kbd "C-M-o") 'ivy-dispatching-call)
(define-key map (kbd "C-k") 'ivy-kill-line)
(define-key map [remap kill-line] 'ivy-kill-line)
(define-key map (kbd "S-SPC") 'ivy-restrict-to-matches)
(define-key map (kbd "M-w") 'ivy-kill-ring-save)
(define-key map [remap kill-ring-save] 'ivy-kill-ring-save)
(define-key map (kbd "C-'") 'ivy-avy)
(define-key map (kbd "C-M-a") 'ivy-read-action)
(define-key map (kbd "C-c C-o") 'ivy-occur)
(define-key map (kbd "C-c C-a") 'ivy-toggle-ignore)
(define-key map (kbd "C-h m") 'ivy-help)
(define-key map [remap describe-mode] 'ivy-help)
map)
"Keymap used in the minibuffer.")
(autoload 'hydra-ivy/body "ivy-hydra" "" t)
Expand Down

0 comments on commit c9b6e02

Please sign in to comment.