From 1612aa4f9a5c1d4afa9e0d97b959c9623c400ce2 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Thu, 9 Dec 2021 17:36:14 +0100 Subject: [PATCH 3/3] Switch back to minibuffer when quitting completion buffer * lisp/simple.el (completion-quit): Add new command (completion-kill-buffer): Add new command (completion-list-mode-map): Bind completion-quit and rebind kill-current-buffer to completion-kill-buffer --- lisp/simple.el | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lisp/simple.el b/lisp/simple.el index 6a7d7ba918..c9ddca7b0a 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -8971,6 +8971,19 @@ set-variable ;; Define the major mode for lists of completions. +(defun completion-quit () + "Close the completion buffer and return to the minibuffer." + (interactive) + (quit-window) + (switch-to-minibuffer)) + +(defun completion-kill-buffer () + "Close the completion buffer and return to the minibuffer." + (interactive) + (let ((win (get-buffer-window "*Completions*"))) + (when win (quit-window t win))) + (switch-to-minibuffer)) + (defvar completion-list-mode-map (let ((map (make-sparse-keymap))) (set-keymap-parent map special-mode-map) @@ -8984,10 +8997,12 @@ completion-list-mode-map (define-key map [right] 'next-completion) (define-key map [?\t] 'next-completion) (define-key map [backtab] 'previous-completion) - (define-key map "z" 'kill-current-buffer) (define-key map "n" 'next-completion) (define-key map "p" 'previous-completion) (define-key map "\M-g\M-c" 'switch-to-minibuffer) + (define-key map "z" #'completion-kill-buffer) + (define-key map [remap keyboard-quit] #'delete-completion-window) + (define-key map [remap quit-window] #'completion-quit) map) "Local map for completion list buffers.") -- 2.30.2