From c9b6e02ba09b6c4bc5b68c9e647fe2cea53e08b9 Mon Sep 17 00:00:00 2001 From: Damien Cassou Date: Thu, 7 Apr 2016 14:28:43 +0200 Subject: [PATCH] Make sure user keybindings are respected * 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 #466. --- ivy-test.el | 10 ++++++++++ ivy.el | 32 ++++++++++++++++---------------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/ivy-test.el b/ivy-test.el index 866eaa722..a654ad62e 100644 --- a/ivy-test.el +++ b/ivy-test.el @@ -20,6 +20,10 @@ ;; see . (require 'ert) + +;; useful for #'ivy-read-remap. It must arrive before (require 'ivy) +(define-key global-map (kbd "") #'end-of-buffer) + (require 'ivy) (require 'counsel) @@ -79,6 +83,12 @@ "can C-m") "can"))) +(ert-deftest ivy-read-remap () + (should (equal + (ivy-with '(ivy-read "pattern: " '("blue" "yellow" "red")) + " C-m") + "red"))) + (ert-deftest swiper--re-builder () (setq swiper--width 4) (should (string= (swiper--re-builder "^") diff --git a/ivy.el b/ivy.el index 16e7d7fce..762e50a1b 100644 --- a/ivy.el +++ b/ivy.el @@ -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 "") 'ivy-next-line) - (define-key map (kbd "") '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) @@ -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) -- 2.39.2