unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#68654: 30.0.50; Add new option to register-use-preview
@ 2024-01-22  6:15 Thierry Volpiatto
  2024-01-27 10:54 ` Eli Zaretskii
  0 siblings, 1 reply; 3+ messages in thread
From: Thierry Volpiatto @ 2024-01-22  6:15 UTC (permalink / raw)
  To: 68654

[-- Attachment #1: Type: text/plain, Size: 8588 bytes --]


The new option is called 'insist', it allows pressing the same key as
the register name to exit minibuffer.  This would ease adoption of the
new preview by users not wanting to press RET.

Examples:

To insert register "a", you can do C-x r i a a
To overwrite register "z", you can do C-x r x z z

See attached patch.

Thanks.




In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.16.0, Xaw3d scroll bars) of 2024-01-20 built on IPad-S340
Repository revision: d3fe2de10e17d5a2c619728dbcb52feb326ccb36
Repository branch: fix_bug#67882
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Linux Mint 21.3

Configured using:
 'configure --bindir=/usr/local/sbin/emacs-30.0.50 --with-cairo
 --with-x-toolkit=lucid --with-modules --without-tree-sitter
 --without-native-compilation'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS
X11 XAW3D XDBE XIM XINPUT2 XPM LUCID ZLIB

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

Major mode: 

Minor modes in effect:
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  server-mode: t
  psession-mode: t
  psession-savehist-mode: t
  global-git-gutter-mode: t
  display-time-mode: t
  winner-mode: t
  tv-save-place-mode: t
  helm-epa-mode: t
  helm-descbinds-mode: t
  helm-top-poll-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  helm-ff-icon-mode: t
  helm-popup-tip-mode: t
  async-bytecomp-package-mode: t
  dired-async-mode: t
  minibuffer-depth-indicate-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow epa-mail face-remap mail-extr emacsbug addressbook-bookmark
tv-mu4e-config config-w3m mu4e-contrib mu4e-patch mu4e mu4e-org
mu4e-notification notifications mu4e-main smtpmail mu4e-view
mu4e-mime-parts gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls
dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap
nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range gnus-win gnus
mu4e-headers mu4e-thread mu4e-actions mu4e-compose nnheader range
mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message shr
pixel-fill kinsoku url-file svg dom flow-fill hl-line mu4e-contacts
mu4e-update mu4e-folders mu4e-context mu4e-query-items mu4e-server
mu4e-modeline mu4e-vars mu4e-helpers mu4e-config mu4e-window ido message
sendmail yank-media puny rfc822 mml mml-sec gnus-util mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
mu4e-obsolete smerge-mode diff whitespace char-fold image-file
image-converter emms-config emms-mpris emms-librefm-stream
emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history
emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks
emms-cue emms-mode-line-icon emms-browser sort emms-volume
emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse
emms-volume-amixer emms-playlist-sort emms-last-played emms-player-xine
emms-player-mpd tq emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-cache
emms-info-native emms-info-native-spc emms-info-native-mp3
emms-info-native-ogg emms-info-native-opus emms-info-native-flac
emms-info-native-vorbis bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms-playing-time emms-info emms-later-do emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat emms-auto helm-external tramp-sh
helm-bookmark helm-net bookmark cl-extra tramp-archive tramp-gvfs
tramp-cache time-stamp zeroconf dbus xml helm-command helm-elisp
helm-eval edebug debug backtrace helm-info helm-ls-git vc-git diff-mode
vc vc-dispatcher make-mode flymake-shellcheck cus-start flymake project
warnings sh-script smie treesit executable conf-mode ledger-mode
ledger-check ledger-texi ledger-test ledger-sort ledger-report
ledger-reconcile ledger-occur ledger-fonts ledger-fontify ledger-state
ledger-complete ledger-schedule ledger-init ledger-xact ledger-post
ledger-exec ledger-navigate eshell esh-cmd generator esh-ext esh-opt
esh-proc esh-io esh-arg esh-module esh-groups esh-util ledger-context
ledger-commodities org-config ob-gnuplot org-crypt org-protocol org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint
org-pcomplete org-list org-footnote org-faces org-entities org-version
ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold
org-fold-core org-keys oc org-loaddefs find-func org-compat org-macs
ledger-regex bug-reference thingatpt texinfo texinfo-loaddefs
emacs-news-mode noutline outline naquadah-theme solar cal-dst holidays
holiday-loaddefs appt diary-lib diary-loaddefs cal-menu calendar
cal-loaddefs server imenu psession frameset pcase git-gutter mule-util
dired-extension time winner describe-variable help-fns radix-tree
tv-utils tv-save-place.el advice init-helm epa derived epg rfc6068
epg-config helm-epa helm-descbinds cus-edit pp icons wid-edit helm-sys
popup helm-adaptive helm-mode helm-misc helm-files image-dired
image-dired-tags image-dired-external image-dired-util image-mode exif
filenotify tramp rx trampver tramp-integration files-x tramp-message
help-mode tramp-compat xdg shell pcomplete parse-time iso8601 time-date
tramp-loaddefs helm-buffers all-the-icons all-the-icons-faces
data-material data-weathericons data-octicons data-fileicons
data-faicons data-alltheicons helm-occur helm-tags helm-locate helm-grep
wgrep-helm wgrep grep compile text-property-search comint ansi-osc ring
helm-regexp format-spec ansi-color helm-utils helm-help helm-types
helm-extensions-autoloads helm-autoloads helm helm-global-bindings
helm-easymenu edmacro kmacro helm-core easy-mmode async-bytecomp
helm-source helm-multi-match helm-lib dired-async async dired-aux dired
dired-loaddefs mb-depth avoid cus-load all-the-icons-autoloads
ledger-mode-autoloads markdown-mode-autoloads info sly-autoloads
w3m-load w3m-autoloads yaml-mode-autoloads package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo x-toolkit xinput2 x multi-tty move-toolbar
make-network-process emacs)

Memory information:
((conses 16 592482 85967) (symbols 48 36173 7)
 (strings 32 201919 8354) (string-bytes 1 6423915) (vectors 16 77829)
 (vector-slots 8 1737710 136698) (floats 8 2595 1590)
 (intervals 56 5642 1931) (buffers 976 132))
<#secure method=pgpmime mode=sign>

-- 
Thierry

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Add-new-option-to-register-use-preview.patch --]
[-- Type: text/x-diff, Size: 4739 bytes --]

From ab056940f0159a9d41ff1ed1b84c7af0011cd8d9 Mon Sep 17 00:00:00 2001
From: Thierry Volpiatto <thievol@posteo.net>
Date: Mon, 8 Jan 2024 15:08:01 +0100
Subject: [PATCH] Add new option to register-use-preview

When set to 'insist, exit minibuffer with same key as register instead
of pressing RET, e.g Pressing "a" select register "a" and press again
"a" exit minibuffer.

* lisp/register.el (register-use-preview): New option 'insist'.
(register-read-with-preview-fancy): Handle new register-use-preview
'insist option.
* doc/emacs/regs.texi: Document it.
* etc/NEWS: Mention 'insist'.
---
 doc/emacs/regs.texi |  5 +++++
 etc/NEWS            |  2 +-
 lisp/register.el    | 18 ++++++++++++++++--
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi
index fdcddbbc739..c30bcc37999 100644
--- a/doc/emacs/regs.texi
+++ b/doc/emacs/regs.texi
@@ -71,6 +71,11 @@ by @code{insert-register} will only show registers whose values can be
 inserted into the buffer, omitting registers which hold window
 configurations, positions, and other un-insertable values.
 
+@item insist
+This value is like @code{t}, but in addition of pressing @key{RET} to
+exit with the choosen value, you can press the same key as the name of
+register.
+
 @item nil
 This value requests behavior similar to @code{traditional}, but the
 preview is shown without delay, and is filtered according to the
diff --git a/etc/NEWS b/etc/NEWS
index 967d8a94113..d1c5b57897a 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -610,7 +610,7 @@ This allows to customize different switches for different remote machines.
 +++
 *** New mode of prompting for register names and showing preview.
 The new user option 'register-use-preview' can be customized to the
-value t to request a different user interface of prompting for
+value t or insist to request a different user interface of prompting for
 register names and previewing the registers: Emacs will require
 confirmation for overwriting the value of a register, and will show
 the preview of registers without delay.  You can also customize this
diff --git a/lisp/register.el b/lisp/register.el
index f5b0365dec2..73d1b24b231 100644
--- a/lisp/register.el
+++ b/lisp/register.el
@@ -131,7 +131,11 @@ to the value of `register--read-with-preview-function'.")
 (defcustom register-use-preview 'traditional
   "Whether to show register preview when modifying registers.
 
-When set to `t', show a preview buffer with navigation and highlighting.
+When set to `t', show a preview buffer with navigation and
+highlighting.
+When set to \\='insist behave as with `t' but allow exiting minibuffer
+by pressing a second time the selected register, e.g pressing \"a\"
+select register \"a\" and pressing again \"a\" exit minibuffer.
 When nil, show a preview buffer without navigation and highlighting, and
 exit the minibuffer immediately after inserting response in minibuffer.
 When set to \\='never, behave as with nil, but with no preview buffer at
@@ -141,6 +145,7 @@ according to `register-preview-delay'; this preserves the traditional
 behavior of Emacs 29 and before."
   :type '(choice
           (const :tag "Use preview" t)
+          (const :tag "Use preview and exit on second hit" insist)
           (const :tag "Use quick preview" nil)
           (const :tag "Never use preview" never)
           (const :tag "Basic preview like Emacs-29" traditional))
@@ -541,7 +546,12 @@ or \\='never."
                                              (member new strs))
                                          new old))
                          (delete-minibuffer-contents)
-                         (insert input)))
+                         (insert input)
+                         ;; Exit minibuffer on second hit
+                         ;; when *-use-preview == insist.
+                         (when (and (string= new old)
+                                    (eq register-use-preview 'insist))
+                           (setq noconfirm t))))
                      (when (and smatch (not (string= input ""))
                                 (not (member input strs)))
                        (setq input "")
@@ -551,6 +561,10 @@ or \\='never."
                        (setq pat input))))
                  (if (setq win (get-buffer-window buffer))
                      (with-selected-window win
+                       (when noconfirm
+                         ;; Happen only when
+                         ;; *-use-preview == insist.
+                         (exit-minibuffer))
                        (let ((ov (make-overlay
                                   (point-min) (point-min)))
                              ;; Allow upper-case and lower-case letters
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#68654: 30.0.50; Add new option to register-use-preview
  2024-01-22  6:15 bug#68654: 30.0.50; Add new option to register-use-preview Thierry Volpiatto
@ 2024-01-27 10:54 ` Eli Zaretskii
  2024-01-27 12:25   ` Thierry Volpiatto
  0 siblings, 1 reply; 3+ messages in thread
From: Eli Zaretskii @ 2024-01-27 10:54 UTC (permalink / raw)
  To: Thierry Volpiatto; +Cc: 68654-done

> From: Thierry Volpiatto <thievol@posteo.net>
> Date: Mon, 22 Jan 2024 06:15:15 +0000
> 
> The new option is called 'insist', it allows pressing the same key as
> the register name to exit minibuffer.  This would ease adoption of the
> new preview by users not wanting to press RET.
> 
> Examples:
> 
> To insert register "a", you can do C-x r i a a
> To overwrite register "z", you can do C-x r x z z
> 
> See attached patch.

Thanks, installed on master.





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#68654: 30.0.50; Add new option to register-use-preview
  2024-01-27 10:54 ` Eli Zaretskii
@ 2024-01-27 12:25   ` Thierry Volpiatto
  0 siblings, 0 replies; 3+ messages in thread
From: Thierry Volpiatto @ 2024-01-27 12:25 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 68654-done

[-- Attachment #1: Type: text/plain, Size: 563 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Thierry Volpiatto <thievol@posteo.net>
>> Date: Mon, 22 Jan 2024 06:15:15 +0000
>> 
>> The new option is called 'insist', it allows pressing the same key as
>> the register name to exit minibuffer.  This would ease adoption of the
>> new preview by users not wanting to press RET.
>> 
>> Examples:
>> 
>> To insert register "a", you can do C-x r i a a
>> To overwrite register "z", you can do C-x r x z z
>> 
>> See attached patch.
>
> Thanks, installed on master.

Great, thanks.

-- 
Thierry

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-01-27 12:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-22  6:15 bug#68654: 30.0.50; Add new option to register-use-preview Thierry Volpiatto
2024-01-27 10:54 ` Eli Zaretskii
2024-01-27 12:25   ` Thierry Volpiatto

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).