all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Thierry Volpiatto <thievol@posteo.net>
To: Eli Zaretskii <eliz@gnu.org>
Cc: kun.liu@gmail.com, me@eshelyaron.com, 67702@debbugs.gnu.org
Subject: bug#67702: 30.0.50; insert-register can no longer be used in minibuffer
Date: Fri, 08 Dec 2023 12:40:18 +0000	[thread overview]
Message-ID: <87v898hnpp.fsf@posteo.net> (raw)
In-Reply-To: <83wmtozyxg.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 08 Dec 2023 14:00:43 +0200 (39 minutes, 4 seconds ago)")


[-- Attachment #1.1: Type: text/plain, Size: 46 bytes --]


Here the patches, sorry.


-- 
Thierry

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-Exit-with-no-confirmation-RET-when-register-use-prev.patch --]
[-- Type: text/x-diff, Size: 2251 bytes --]

From ff8f43a39e2cee1f71629194d44c7459f2b90d79 Mon Sep 17 00:00:00 2001
From: Thierry Volpiatto <thievol@posteo.net>
Date: Sun, 3 Dec 2023 15:21:50 +0100
Subject: [PATCH 1/3] Exit with no confirmation (RET) when register-use-preview

is non nil and .

This is done by exiting minibuffer when selected register is empty or
when just jumping or inserting.

* lisp/register.el (register-read-with-preview): Do it.
---
 lisp/register.el | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/lisp/register.el b/lisp/register.el
index 46ec38821e5..a38b531dfc9 100644
--- a/lisp/register.el
+++ b/lisp/register.el
@@ -385,12 +385,16 @@ display such a window regardless."
                                         (minibuffer-message
                                          "Register `%s' is empty" pat))))))
                             (unless (string= pat "")
-                              (if (member pat strs)
-                                  (with-selected-window (minibuffer-window)
-                                    (minibuffer-message msg pat))
-                                (with-selected-window (minibuffer-window)
-                                  (minibuffer-message
-                                   "Register `%s' is empty" pat)))))))))
+                              (with-selected-window (minibuffer-window)
+                                (if (and (member pat strs) (memq act '(set modify)))
+                                    (with-selected-window (minibuffer-window)
+                                      (minibuffer-message msg pat))
+                                  ;; An empty register or an existing
+                                  ;; one but the action is insert or
+                                  ;; jump, don't ask for confirmation
+                                  ;; and exit immediately (bug#66394).
+                                  (setq result pat)
+                                  (exit-minibuffer)))))))))
              (setq result (read-from-minibuffer
                            prompt nil map nil nil (register-preview-get-defaults act))))
            (cl-assert (and result (not (string= result "")))
-- 
2.34.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: 0002-Allow-inserting-registers-in-minibuffer-bug-67702.patch --]
[-- Type: text/x-diff, Size: 903 bytes --]

From 09c00dd82d377972bb9cc8b789156993f27c1026 Mon Sep 17 00:00:00 2001
From: Thierry Volpiatto <thievol@posteo.net>
Date: Fri, 8 Dec 2023 08:09:38 +0100
Subject: [PATCH 2/3] Allow inserting registers in minibuffer (bug#67702)

* lisp/register.el (register-read-with-preview): Bind
`enable-recursive-minibuffers`.
---
 lisp/register.el | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lisp/register.el b/lisp/register.el
index a38b531dfc9..ba00f296af9 100644
--- a/lisp/register.el
+++ b/lisp/register.el
@@ -315,6 +315,7 @@ display such a window regardless."
                 (set-keymap-parent m minibuffer-local-map)
                 m))
          (data (register-command-info this-command))
+         (enable-recursive-minibuffers t)
          types msg result timer act win strs smatch)
     (if data
         (setq types  (register-preview-info-types data)
-- 
2.34.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.4: 0003-Add-more-options-to-register-use-preview.patch --]
[-- Type: text/x-diff, Size: 3625 bytes --]

From 633fa5245072a746d122eb6eba11751033749afc Mon Sep 17 00:00:00 2001
From: Thierry Volpiatto <thievol@posteo.net>
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 "<down>") 'register-preview-next)
     (define-key map (kbd "<up>")   '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


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 686 bytes --]

  parent reply	other threads:[~2023-12-08 12:40 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-07 22:33 bug#67702: 30.0.50; insert-register can no longer be used in minibuffer Kun Liu
2023-12-08  6:32 ` Eli Zaretskii
2023-12-08  7:04   ` Thierry Volpiatto
2023-12-08  7:14     ` Thierry Volpiatto
2023-12-08  7:15     ` Eli Zaretskii
2023-12-08  7:31       ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-08  7:52         ` Eli Zaretskii
2023-12-08  8:27           ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-08  8:51             ` Eli Zaretskii
2023-12-08  9:07               ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-08 10:23               ` Thierry Volpiatto
2023-12-08 10:16             ` Thierry Volpiatto
2023-12-08 10:40               ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-08 12:00               ` Eli Zaretskii
2023-12-08 12:11                 ` Thierry Volpiatto
2023-12-08 12:39                 ` Thierry Volpiatto
2023-12-08 12:40                 ` Thierry Volpiatto [this message]
2023-12-08 16:37                   ` Thierry Volpiatto
2023-12-08  8:46           ` Thierry Volpiatto

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87v898hnpp.fsf@posteo.net \
    --to=thievol@posteo.net \
    --cc=67702@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=kun.liu@gmail.com \
    --cc=me@eshelyaron.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.