From 633fa5245072a746d122eb6eba11751033749afc Mon Sep 17 00:00:00 2001 From: Thierry Volpiatto Date: Fri, 8 Dec 2023 11:34:08 +0100 Subject: [PATCH 3/3] Add more options to register-use-preview This allow showing a basic preview buffer or no preview buffer at all. * lisp/register.el (register-use-preview): Use choice with three options. (register-read-with-preview): Use a basic buffer without navigation, highlighting etc... when register-use-preview is nil, and no buffer at all when set to 'never. --- lisp/register.el | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/lisp/register.el b/lisp/register.el index ba00f296af9..ade65b5bdc2 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -107,8 +107,17 @@ If nil, do not show register previews, unless `help-char' (or a member of :type '(repeat string)) (defcustom register-use-preview t - "Always show register preview when non nil." - :type 'boolean) + "Maybe show register preview. + +When set to `t' show a preview buffer with navigation and highlighting. +When nil show a basic preview buffer and exit minibuffer +immediately after insertion in minibuffer. +When set to \\='never behave as above but with no preview buffer at +all." + :type '(choice + (const :tag "Use preview" t) + (const :tag "Use quick preview" nil) + (const :tag "Never use preview" never))) (defun get-register (register) "Return contents of Emacs register named REGISTER, or nil if none." @@ -310,6 +319,8 @@ Prompt with the string PROMPT. If `help-char' (or a member of `help-event-list') is pressed, display such a window regardless." (let* ((buffer "*Register Preview*") + (buffer1 "*Register quick preview*") + (buf (if register-use-preview buffer buffer1)) (pat "") (map (let ((m (make-sparse-keymap))) (set-keymap-parent m minibuffer-local-map) @@ -334,15 +345,16 @@ display such a window regardless." (define-key map (vector k) (lambda () (interactive) - (unless (get-buffer-window buffer) + ;; Do nothing when buffer1 is in use. + (unless (get-buffer-window buf) (with-selected-window (minibuffer-selected-window) (register-preview buffer 'show-empty types)))))) (define-key map (kbd "") 'register-preview-next) (define-key map (kbd "") 'register-preview-previous) (define-key map (kbd "C-n") 'register-preview-next) (define-key map (kbd "C-p") 'register-preview-previous) - (unless (or executing-kbd-macro (null register-use-preview)) - (register-preview buffer nil types)) + (unless (or executing-kbd-macro (eq register-use-preview 'never)) + (register-preview buf nil types)) (unwind-protect (progn (minibuffer-with-setup-hook @@ -402,9 +414,9 @@ display such a window regardless." nil "No register specified") (string-to-char result)) (when timer (cancel-timer timer)) - (let ((w (get-buffer-window buffer))) + (let ((w (get-buffer-window buf))) (and (window-live-p w) (delete-window w))) - (and (get-buffer buffer) (kill-buffer buffer))))) + (and (get-buffer buf) (kill-buffer buf))))) (defun point-to-register (register &optional arg) "Store current location of point in REGISTER. -- 2.34.1