Package: emacs;
Reported by: Thierry Volpiatto <thievol <at> posteo.net>
Date: Sat, 7 Oct 2023 19:07:01 UTC
Severity: normal
Found in version 29.1
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: Thierry Volpiatto <thievol <at> posteo.net> Subject: bug#66394: closed (Re: bug#66394: 29.1; Make register-read-with-preview more useful) Date: Sat, 23 Dec 2023 10:50:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report #66394: 29.1; Make register-read-with-preview more useful which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 66394 <at> debbugs.gnu.org. -- 66394: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66394 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Eli Zaretskii <eliz <at> gnu.org> To: Thierry Volpiatto <thievol <at> posteo.net> Cc: michael_heerdegen <at> web.de, dmitry <at> gutov.dev, 66394-done <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca, stefankangas <at> gmail.com Subject: Re: bug#66394: 29.1; Make register-read-with-preview more useful Date: Sat, 23 Dec 2023 12:49:16 +0200> From: Thierry Volpiatto <thievol <at> posteo.net> > Cc: monnier <at> iro.umontreal.ca, stefankangas <at> gmail.com, dmitry <at> gutov.dev, > michael_heerdegen <at> web.de, 66394 <at> debbugs.gnu.org > Date: Thu, 21 Dec 2023 18:04:02 +0000 > > > Thanks, I have a question: > > > > The doc string of register-use-preview says: > > > > This has no effect when the value of `register--read-with-preview-function' > > is `register-read-with-preview-traditional'. > > > > However, customizing register-use-preview to the value 'traditional > > has the exact effect of setting register--read-with-preview-function > > to register-read-with-preview-traditional. OTOH, when > > register-use-preview is set to 'traditional, one can set it to a > > different value, and then the behavior will change. So I wonder what > > that sentence is about and what I missed? Is that perhaps a leftover > > from previous versions, and should now be deleted? > > Yes exactly, it can be deleted. > > > I updated the documentation and NEWS. I'd appreciate if you could > > spare a few minutes to review the changes and point out any > > inaccuracies or mistakes. > > About the documentation or register-use-preview in the manual: > > Another difference with the old behavior (traditional) is that the > preview is filtered according to type of registers used by command. For > example insert-register show only the registers that can be inserted, > not windows, markers etc... Same for jump. > > - "Returns a function to format a register for previewing. > -This according to the value of READ-PREVIEW-FUNCTION.") > + "Return a function to format a register for previewing. > +This is according to the value of `read-preview-function'.") > > Here READ-PREVIEW-FUNCTION is the argument of function and not a > variable, so IMO it should be upcased and not quoted. > > (cl-defstruct register-preview-info > "Store data for a specific register command. > -TYPES are the types of register supported. > -MSG is the minibuffer message to send when a register is selected. > +TYPES are the supported types of registers. > +MSG is the minibuffer message to show when a register is selected. > ACT is the type of action the command is doing on register. > -SMATCH accept a boolean value to say if command accept non matching register." > +SMATCH accept a boolean value to say if the command accepts non-matching > +registers." > types msg act smatch noconfirm) > > NOCONFIRM is not documented (my fault). > When set to nil don't request confirmation with RET. > > Otherwise all looks good to me, thanks. Thanks, I fixed all of the above, and I'm therefore closing this bug.
[Message part 3 (message/rfc822, inline)]
From: Thierry Volpiatto <thievol <at> posteo.net> To: bug-gnu-emacs <at> gnu.org Subject: 29.1; Make register-read-with-preview more useful Date: Sat, 07 Oct 2023 19:03:47 +0000When using `copy-to-register`, it is hard to see which register is already taken in the preview buffer. This patch highlight the register entered at prompt if it is already taken otherwise a minibuffer message is sent to notify user the register is available. If any interest here is the patch, feel free to modify if needed. Thanks. diff --git a/lisp/register.el b/lisp/register.el index ca6de450993..4c83264d4eb 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -154,27 +154,37 @@ listing existing registers after `register-preview-delay' seconds. If `help-char' (or a member of `help-event-list') is pressed, display such a window regardless." (let* ((buffer "*Register Preview*") - (timer (when (numberp register-preview-delay) - (run-with-timer register-preview-delay nil - (lambda () - (unless (get-buffer-window buffer) - (register-preview buffer)))))) - (help-chars (cl-loop for c in (cons help-char help-event-list) - when (not (get-register c)) - collect c))) + (pat "") + result timer) + (register-preview buffer) (unwind-protect - (progn - (while (memq (read-key (propertize prompt 'face 'minibuffer-prompt)) - help-chars) - (unless (get-buffer-window buffer) - (register-preview buffer 'show-empty))) - (when (or (eq ?\C-g last-input-event) - (eq 'escape last-input-event) - (eq ?\C-\[ last-input-event)) - (keyboard-quit)) - (if (characterp last-input-event) last-input-event - (error "Non-character input-event"))) - (and (timerp timer) (cancel-timer timer)) + (progn + (minibuffer-with-setup-hook + (lambda () + (setq timer + (run-with-idle-timer + 0.3 'repeat + (lambda () + (with-selected-window (minibuffer-window) + (let ((input (minibuffer-contents))) + (when (not (string= input pat)) + (setq pat input)))) + (with-current-buffer buffer + (let ((ov (make-overlay (point-min) (point-min)))) + (goto-char (point-min)) + (if (string= pat "") + (remove-overlays) + (if (re-search-forward (concat "^" pat) nil t) + (progn (move-overlay + ov + (match-beginning 0) (match-end 0)) + (overlay-put ov 'face 'helm-match)) + (with-selected-window (minibuffer-window) + (minibuffer-message + "Register `%s' is available" pat)))))))))) + (setq result (read-from-minibuffer prompt))) + (string-to-char result)) + (when timer (cancel-timer timer)) (let ((w (get-buffer-window buffer))) (and (window-live-p w) (delete-window w))) (and (get-buffer buffer) (kill-buffer buffer))))) In GNU Emacs 29.1 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw3d scroll bars) of 2023-10-01 built on IPad-S340 Windowing system distributor 'The X.Org Foundation', version 11.0.12101004 System Description: Linux Mint 21.2 Configured using: 'configure CFLAGS=-O8 --bindir=/usr/local/sbin/emacs-29.1 --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 bug-reference-prog-mode: t server-mode: t psession-mode: t psession-savehist-mode: t global-undo-tree-mode: t undo-tree-mode: t global-git-gutter-mode: t 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 shell-dirtrack-mode: t helm-popup-tip-mode: t async-bytecomp-package-mode: t dired-async-mode: t minibuffer-depth-indicate-mode: t gcmh-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 column-number-mode: t line-number-mode: t auto-fill-function: do-auto-fill transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (epa-mail face-remap addressbook-bookmark tv-mu4e-config config-w3m mu4e-contrib eshell esh-cmd generator esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util mu4e-patch mu4e mu4e-org 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 noutline outline ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs org-version org-compat org-macs mu4e-notification notifications mu4e-main 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 nnheader range appt diary-lib diary-loaddefs cal-menu calendar cal-loaddefs mu4e-headers mu4e-thread mu4e-compose mu4e-draft mu4e-actions smtpmail 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 mu4e-obsolete mailalias mailclient textsec uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check qp helm-dabbrev shadow mail-extr emacsbug message yank-media puny rfc822 mml mml-sec gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils smerge-mode whitespace cl-extra helm-command helm-x-files helm-for-files helm-bookmark bookmark 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-spc 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 helm-net tramp-archive tramp-gvfs tramp-cache time-stamp zeroconf dbus xml helm-ring helm-elisp helm-eval edebug debug backtrace find-func helm-info cl-indent helm-ls-git vc-git diff-mode vc vc-dispatcher jka-compr make-mode flymake-shellcheck cus-start flymake-proc flymake project warnings thingatpt sh-script smie treesit executable bug-reference naquadah-theme server imenu psession frameset undo-tree diff queue pcase git-gutter mule-util dired-extension time winner describe-variable help-fns radix-tree help-mode tv-utils tv-save-place.el advice init-helm epa derived epg rfc6068 epg-config helm-epa isl 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 xdg image-mode exif filenotify tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat rx shell pcomplete parse-time iso8601 time-date 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 gcmh all-the-icons-autoloads gcmh-autoloads info ledger-mode-autoloads markdown-mode-autoloads nerd-icons-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 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 make-network-process emacs) Memory information: ((conses 16 854462 334476) (symbols 48 35404 26) (strings 32 219034 39971) (string-bytes 1 6357489) (vectors 16 99232) (vector-slots 8 2128904 396764) (floats 8 1791 2270) (intervals 56 37515 32129) (buffers 976 138)) <#secure method=pgpmime mode=sign> -- Thierry
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.