all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer
       [not found] <20200211144941.godmcifegapmqg6i.ref@Ergus>
@ 2020-02-11 14:49 ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2020-02-11 15:50   ` Eli Zaretskii
                     ` (4 more replies)
  0 siblings, 5 replies; 15+ messages in thread
From: Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2020-02-11 14:49 UTC (permalink / raw)
  To: 39564

read-key function not display the prompt if called from
read-from-minibuffer

In the current emacs master this issue breaks a package like ivy.

This has been discused in: https://github.com/abo-abo/swiper/issues/2444

As a test code provided by the ivy developer Oleh Krehel:

```
(let ((map (make-sparse-keymap)))
   (define-key map (kbd "C-f") (lambda ()
                                 (interactive)
                                 (message "%S" (read-key "line1\nline2\nline3\nTest2: "))
                                 (minibuffer-keyboard-quit)))
   (read-from-minibuffer "Test1: " nil map))
```


In GNU Emacs 28.0.50 (build 22, x86_64-pc-linux-gnu, GTK+ Version 3.24.13, cairo version 1.17.3)
  of 2020-02-07 built on Ergus
Repository revision: 30abcda54e1b0e15fc10b3db1c2b9f89ca521bfa
Repository branch: master
System Description: Arch Linux

Recent messages:
Loading /home/ergo/.emacs.d/custom.el (source)...done
Source file ‘/home/ergo/.emacs.d/elpa/xclip-1.9/xclip.el’ newer than byte-compiled file; using older file
Starting new Ispell process /usr/bin/aspell with default dictionary...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Load time 0.978641

Configured using:
  'configure --prefix=/mnt/casa/install_arch/emacs --with-mailutils'

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

Important settings:
   value of $LANG: en_GB.utf8
   locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
   counsel-projectile-mode: t
   projectile-mode: t
   counsel-mode: t
   ivy-mode: t
   which-function-mode: t
   electric-pair-mode: t
   highlight-numbers-mode: t
   flyspell-mode: t
   flymake-mode: t
   global-company-mode: t
   company-mode: t
   composable-mark-mode: t
   composable-mode: t
   which-key-mode: t
   winner-mode: t
   xterm-mouse-mode: t
   xclip-mode: t
   show-paren-mode: t
   override-global-mode: t
   minibuffer-depth-indicate-mode: t
   save-place-mode: t
   delete-selection-mode: t
   savehist-mode: t
   global-display-fill-column-indicator-mode: t
   display-fill-column-indicator-mode: t
   global-display-line-numbers-mode: t
   display-line-numbers-mode: t
   global-auto-revert-mode: t
   tooltip-mode: t
   global-eldoc-mode: t
   eldoc-mode: t
   electric-indent-mode: t
   mouse-wheel-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t
   size-indication-mode: t
   column-number-mode: t
   line-number-mode: t
   transient-mark-mode: t

Load-path shadows:
/usr/share/emacs/site-lisp/cmake-mode hides /home/ergo/.emacs.d/elpa/cmake-mode-20190710.1319/cmake-mode
~/gits/emacs-counsel-gtags/counsel-gtags hides /home/ergo/.emacs.d/elpa/counsel-gtags-20200101.1701/counsel-gtags
/usr/share/emacs/site-lisp/notmuch-crypto hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-crypto
/usr/share/emacs/site-lisp/notmuch-compat hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-compat
/usr/share/emacs/site-lisp/notmuch-hello hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-hello
/usr/share/emacs/site-lisp/notmuch hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch
/usr/share/emacs/site-lisp/notmuch-show hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-show
/usr/share/emacs/site-lisp/notmuch-maildir-fcc hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-maildir-fcc
/usr/share/emacs/site-lisp/coolj hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/coolj
/usr/share/emacs/site-lisp/notmuch-draft hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-draft
/usr/share/emacs/site-lisp/notmuch-tree hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-tree
/usr/share/emacs/site-lisp/notmuch-parser hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-parser
/usr/share/emacs/site-lisp/notmuch-lib hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-lib
/usr/share/emacs/site-lisp/notmuch-mua hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-mua
/usr/share/emacs/site-lisp/notmuch-message hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-message
/usr/share/emacs/site-lisp/notmuch-address hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-address
/usr/share/emacs/site-lisp/notmuch-wash hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-wash
/usr/share/emacs/site-lisp/notmuch-tag hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-tag
/usr/share/emacs/site-lisp/notmuch-print hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-print
/usr/share/emacs/site-lisp/notmuch-query hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-query
/usr/share/emacs/site-lisp/notmuch-jump hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-jump
/usr/share/emacs/site-lisp/notmuch-company hides /home/ergo/.emacs.d/elpa/notmuch-20200109.114/notmuch-company

Features:
(shadow sort notmuch-address notmuch-company notmuch-lib notmuch-version
notmuch-compat mm-view mml-smime smime dig mailcap notmuch-parser cl
company-elisp find-func mail-extr emacsbug message rmc puny format-spec
rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail
rmail-loaddefs text-property-search mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils ido-completing-read+
memoize minibuf-eldef ido amx s counsel-projectile ibuffer-projectile
projectile grep ibuf-ext ibuffer ibuffer-loaddefs counsel xdg xref
project dired-x dired dired-loaddefs swiper ivy colir color ivy-overlay
time-date term/screen term/xterm xterm which-func imenu elec-pair
highlight-numbers parent-mode flyspell ispell flymake-proc flymake
compile comint ansi-color warnings thingatpt company-keywords
company-gtags company-dabbrev-code company-dabbrev company-files
company-capf company-semantic company-template company-tng company pcase
init composable composable-mark hydra lv cmake-font-lock ein which-key
advice winner ring cc-styles cc-align cc-engine cc-vars cc-defs xt-mouse
xclip paren cus-edit cus-start cus-load wid-edit diminish
use-package-hydra use-package use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode configmail cl-extra help-mode
use-package-ensure use-package-core mb-depth saveplace delsel savehist
display-fill-column-indicator display-line-numbers autorevert filenotify
info ede/auto eieio-base tex-site edmacro kmacro slime-autoloads rx
package easymenu browse-url url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
early-init tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type 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 elisp-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame minibuffer cl-generic
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 charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 217173 70557)
  (symbols 48 20877 1)
  (strings 32 68737 2253)
  (string-bytes 1 2241052)
  (vectors 16 26004)
  (vector-slots 8 292356 7356)
  (floats 8 175 1042)
  (intervals 56 1240 0)
  (buffers 1000 12))





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

* bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer
  2020-02-11 14:49 ` bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2020-02-11 15:50   ` Eli Zaretskii
  2020-02-11 16:17   ` Oleh Krehel
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 15+ messages in thread
From: Eli Zaretskii @ 2020-02-11 15:50 UTC (permalink / raw)
  To: Ergus; +Cc: 39564

> Date: Tue, 11 Feb 2020 15:49:41 +0100
> From: Ergus via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> read-key function not display the prompt if called from
> read-from-minibuffer
> 
> In the current emacs master this issue breaks a package like ivy.
> 
> This has been discused in: https://github.com/abo-abo/swiper/issues/2444
> 
> As a test code provided by the ivy developer Oleh Krehel:
> 
> ```
> (let ((map (make-sparse-keymap)))
>    (define-key map (kbd "C-f") (lambda ()
>                                  (interactive)
>                                  (message "%S" (read-key "line1\nline2\nline3\nTest2: "))
>                                  (minibuffer-keyboard-quit)))
>    (read-from-minibuffer "Test1: " nil map))
> ```

I tried this, but without instructions how to reproduce the problem, I
cannot be sure I did the required gestures.  Just evaluating the above
in *scratch* and then typing C-f does show the prompt, IIUC what is
meant by that.

So please provide more detailed instructions to reproduce the issue.

Thanks.





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

* bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer
  2020-02-11 14:49 ` bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2020-02-11 15:50   ` Eli Zaretskii
@ 2020-02-11 16:17   ` Oleh Krehel
  2020-02-11 17:36     ` Eli Zaretskii
  2020-02-12 22:37   ` bug#39564: 28.0.50; read-key function do not display the prompt Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Oleh Krehel @ 2020-02-11 16:17 UTC (permalink / raw)
  To: 39564

Hello,

Here's an updated code that works as intended on 26.3 and unexpected on 28.

(defun make-lines (n)
  (mapconcat #'number-to-string
             (number-sequence 0 n) "\n"))

(let ((map (make-sparse-keymap)))
  (define-key map (kbd "C-f") (lambda ()
                                (interactive)
                                (let ((inhibit-field-text-motion t))
                                  (goto-char (point-min)))
                                (message "%S"
                                         (read-key
                                          (concat
                                           (make-lines 10)
                                           "\nTest2")))
                                (minibuffer-keyboard-quit)))
  (read-from-minibuffer (concat (make-lines 10) "\nTest1: ") nil map))

The idea here is that the read-key hint will occupy as much space as
the initial read-from-minibuffer.

regards,
Oleh





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

* bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer
  2020-02-11 16:17   ` Oleh Krehel
@ 2020-02-11 17:36     ` Eli Zaretskii
  2020-02-12 13:21       ` Oleh Krehel
  0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2020-02-11 17:36 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: 39564

> From: Oleh Krehel <ohwoeowho@gmail.com>
> Date: Tue, 11 Feb 2020 17:17:02 +0100
> 
> Here's an updated code that works as intended on 26.3 and unexpected on 28.
> 
> (defun make-lines (n)
>   (mapconcat #'number-to-string
>              (number-sequence 0 n) "\n"))
> 
> (let ((map (make-sparse-keymap)))
>   (define-key map (kbd "C-f") (lambda ()
>                                 (interactive)
>                                 (let ((inhibit-field-text-motion t))
>                                   (goto-char (point-min)))
>                                 (message "%S"
>                                          (read-key
>                                           (concat
>                                            (make-lines 10)
>                                            "\nTest2")))
>                                 (minibuffer-keyboard-quit)))
>   (read-from-minibuffer (concat (make-lines 10) "\nTest1: ") nil map))
> 
> The idea here is that the read-key hint will occupy as much space as
> the initial read-from-minibuffer.

Thanks, but I still don't understand what should one do with this
snippet (after evaluating it) to see the problem.  Please tell more.





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

* bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer
  2020-02-11 17:36     ` Eli Zaretskii
@ 2020-02-12 13:21       ` Oleh Krehel
  2020-02-12 17:22         ` Eli Zaretskii
  0 siblings, 1 reply; 15+ messages in thread
From: Oleh Krehel @ 2020-02-12 13:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 39564

> Thanks, but I still don't understand what should one do with this
> snippet (after evaluating it) to see the problem.  Please tell more.

Here's the behavior in 26.3: the minibuffer is 10 lines tall for
read-from-minibuffer. I'd like read-key to keep the same window height
as not to distract the user, and to have the whole contents of
read-key hint to take over the 10 lines of the minibuffer. Right now,
on 28, the hint is only partially visible. While the behavior on 26.3
and earlier is exactly what I want.





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

* bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer
  2020-02-12 13:21       ` Oleh Krehel
@ 2020-02-12 17:22         ` Eli Zaretskii
  0 siblings, 0 replies; 15+ messages in thread
From: Eli Zaretskii @ 2020-02-12 17:22 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: 39564

> From: Oleh Krehel <ohwoeowho@gmail.com>
> Date: Wed, 12 Feb 2020 14:21:35 +0100
> Cc: 39564@debbugs.gnu.org
> 
> > Thanks, but I still don't understand what should one do with this
> > snippet (after evaluating it) to see the problem.  Please tell more.
> 
> Here's the behavior in 26.3: the minibuffer is 10 lines tall for
> read-from-minibuffer.

Sorry, I still don't understand: are you saying that you get a 10-line
mini-window after just evaluating the code snippet you posted?  If so,
then I cannot reproduce that: I see a 9-line mini-window, both in
Emacs 26.3 and the current emacs-27 branch (Emacs 27.0.60).

Do I need to do anything after evaluating the code you posted?  (I
think I do, because otherwise I don't understand, for example, why you
bind C-f to some function there.)

Thanks.





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

* bug#39564: 28.0.50; read-key function do not display the prompt
  2020-02-11 14:49 ` bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2020-02-11 15:50   ` Eli Zaretskii
  2020-02-11 16:17   ` Oleh Krehel
@ 2020-02-12 22:37   ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2020-02-26 20:04   ` bug#39564: Matt Kramer
  2020-02-28 17:33   ` bug#39564: Matt Kramer
  4 siblings, 0 replies; 15+ messages in thread
From: Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2020-02-12 22:37 UTC (permalink / raw)
  To: 39564; +Cc: eliz, ohwoeowho

> Sorry, I still don't understand: are you saying that you get a 10-line
> mini-window after just evaluating the code snippet you posted?  If so,
> then I cannot reproduce that: I see a 9-line mini-window, both in
> Emacs 26.3 and the current emacs-27 branch (Emacs 27.0.60).
> 
> Do I need to do anything after evaluating the code you posted?  (I
> think I do, because otherwise I don't understand, for example, why you
> bind C-f to some function there.)
> 
> Thanks.

I also evaluated the latest code and I get exactly the same behaviour in
emacs 26.3, 27 and 28 (actual master).





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

* bug#39564:
  2020-02-11 14:49 ` bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
                     ` (2 preceding siblings ...)
  2020-02-12 22:37   ` bug#39564: 28.0.50; read-key function do not display the prompt Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2020-02-26 20:04   ` Matt Kramer
  2020-02-28  7:26     ` bug#39564: Eli Zaretskii
  2020-02-28 17:33   ` bug#39564: Matt Kramer
  4 siblings, 1 reply; 15+ messages in thread
From: Matt Kramer @ 2020-02-26 20:04 UTC (permalink / raw)
  To: 39564

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

In my case I *do* get different behavior in emacs -Q between 26.3 and
27.0.60 (75a9eee8b). I had to replace minibuffer-keyboard-quit with
abort-recursive-edit, since the former doesn't exist in 26.3. The initial
minibuffer hint looks the same in both cases:

0
1
2
3
4
5
6
7
8
9
10
Test1:
       ^
       |--- cursor

After pressing C-f, 26.3 gives the expected result:

0
1
2
3
4
5
6
7
8
9
10
Test2
     ^
     |--- cursor

However, 27.0.60 gives me the following bizarre content in the minibuffer
(where did that square bracket come from?):

0
1
2
3
4
5
6
7
8
9
10
Test1:  [0
1
2
3
4

in which the cursor is on the 0 at the very top. The read-key function
appears to be identical between the two revisions, aside from a trivial
change to support tab-bar, so I have no idea where the culprit may lie.

[-- Attachment #2: Type: text/html, Size: 2861 bytes --]

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

* bug#39564:
  2020-02-26 20:04   ` bug#39564: Matt Kramer
@ 2020-02-28  7:26     ` Eli Zaretskii
  0 siblings, 0 replies; 15+ messages in thread
From: Eli Zaretskii @ 2020-02-28  7:26 UTC (permalink / raw)
  To: Matt Kramer; +Cc: 39564

> From: Matt Kramer <mccleetus@gmail.com>
> Date: Wed, 26 Feb 2020 12:04:25 -0800
> 
> In my case I *do* get different behavior in emacs -Q between 26.3 and 27.0.60 (75a9eee8b). I had to replace
> minibuffer-keyboard-quit with abort-recursive-edit, since the former doesn't exist in 26.3.

Please show the code you used, and please describe the exact sequence
of keys you type to reproduce the problem in Emacs 27.

Thanks.





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

* bug#39564:
  2020-02-11 14:49 ` bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
                     ` (3 preceding siblings ...)
  2020-02-26 20:04   ` bug#39564: Matt Kramer
@ 2020-02-28 17:33   ` Matt Kramer
  2020-02-29  8:16     ` bug#39564: Eli Zaretskii
  4 siblings, 1 reply; 15+ messages in thread
From: Matt Kramer @ 2020-02-28 17:33 UTC (permalink / raw)
  To: 39564

Code I used:

(defun make-lines (n)
  (mapconcat #'number-to-string
             (number-sequence 0 n) "\n"))

(let ((map (make-sparse-keymap)))
  (define-key map (kbd "C-f") (lambda ()
                                (interactive)
                                (let ((inhibit-field-text-motion t))
                                  (goto-char (point-min)))
                                (message "%S"
                                         (read-key
                                          (concat
                                           (make-lines 10)
                                           "\nTest2")))
                                (abort-recursive-edit)))
  (read-from-minibuffer (concat (make-lines 10) "\nTest1: ") nil map))

With this code in the clipboard, I start emacs -Q (again, 27.0.60
commit 75a9eee8b), and immediately hit the following sequence of keys:

C-y
M-x eval-buffer RET
C-f

The eval-buffer results are initially as expected. However, after
hitting C-f, the minibuffer then becomes:

0
1
2
3
4
5
6
7
8
9
10
Test1:  [0
1
2
3
4

with point at the very beginning of the minibuffer (first 0).





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

* bug#39564:
  2020-02-28 17:33   ` bug#39564: Matt Kramer
@ 2020-02-29  8:16     ` Eli Zaretskii
  2020-03-01 22:26       ` bug#39564: Matt Kramer
  0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2020-02-29  8:16 UTC (permalink / raw)
  To: Matt Kramer; +Cc: 39564

> From: Matt Kramer <mccleetus@gmail.com>
> Date: Fri, 28 Feb 2020 09:33:57 -0800
> 
> Code I used:
> 
> (defun make-lines (n)
>   (mapconcat #'number-to-string
>              (number-sequence 0 n) "\n"))
> 
> (let ((map (make-sparse-keymap)))
>   (define-key map (kbd "C-f") (lambda ()
>                                 (interactive)
>                                 (let ((inhibit-field-text-motion t))
>                                   (goto-char (point-min)))
>                                 (message "%S"
>                                          (read-key
>                                           (concat
>                                            (make-lines 10)
>                                            "\nTest2")))
>                                 (abort-recursive-edit)))
>   (read-from-minibuffer (concat (make-lines 10) "\nTest1: ") nil map))
> 
> With this code in the clipboard, I start emacs -Q (again, 27.0.60
> commit 75a9eee8b), and immediately hit the following sequence of keys:
> 
> C-y
> M-x eval-buffer RET
> C-f
> 
> The eval-buffer results are initially as expected. However, after
> hitting C-f, the minibuffer then becomes:
> 
> 0
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
> Test1:  [0
> 1
> 2
> 3
> 4
> 
> with point at the very beginning of the minibuffer (first 0).

Looks like the intended behavior for this code: the "[0 ..." part is
the text of the message displayed by the command bound to C-f; it is
enclosed in brackets to indicate that it is a message text separate
from the rest of the prompt.  This display of echo-area messages that
attempts not to overwrite the minibuffer prompt in an active
minibuffer is a new feature of Emacs 27.  By default, Emacs will not
let the mini-window grow enough to show the entire combined text of
the prompt and the message, but if you set max-mini-window-height to a
value 22 or greater, you will see this:

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
  Test1:  [0
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
  Test2]

which is what I would expect, given the code you presented.

Going back to the original report, what is the bug here?

Thanks.





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

* bug#39564:
  2020-02-29  8:16     ` bug#39564: Eli Zaretskii
@ 2020-03-01 22:26       ` Matt Kramer
  2020-03-02  7:20         ` bug#39564: Matt Kramer
  0 siblings, 1 reply; 15+ messages in thread
From: Matt Kramer @ 2020-03-01 22:26 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 39564

Thanks Eli for the explanation. Sorry for the trouble. It looks like
Ivy (at least, in ivy-dispatching-done) assumes the old behavior, to
wit, that echo-area messages will overwrite the minibuffer prompt,
leading to the regression discussed in
https://github.com/abo-abo/swiper/issues/2444. The conversation will
continue over there, I guess.

On Sat, Feb 29, 2020 at 12:17 AM Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Matt Kramer <mccleetus@gmail.com>
> > Date: Fri, 28 Feb 2020 09:33:57 -0800
> >
> > Code I used:
> >
> > (defun make-lines (n)
> >   (mapconcat #'number-to-string
> >              (number-sequence 0 n) "\n"))
> >
> > (let ((map (make-sparse-keymap)))
> >   (define-key map (kbd "C-f") (lambda ()
> >                                 (interactive)
> >                                 (let ((inhibit-field-text-motion t))
> >                                   (goto-char (point-min)))
> >                                 (message "%S"
> >                                          (read-key
> >                                           (concat
> >                                            (make-lines 10)
> >                                            "\nTest2")))
> >                                 (abort-recursive-edit)))
> >   (read-from-minibuffer (concat (make-lines 10) "\nTest1: ") nil map))
> >
> > With this code in the clipboard, I start emacs -Q (again, 27.0.60
> > commit 75a9eee8b), and immediately hit the following sequence of keys:
> >
> > C-y
> > M-x eval-buffer RET
> > C-f
> >
> > The eval-buffer results are initially as expected. However, after
> > hitting C-f, the minibuffer then becomes:
> >
> > 0
> > 1
> > 2
> > 3
> > 4
> > 5
> > 6
> > 7
> > 8
> > 9
> > 10
> > Test1:  [0
> > 1
> > 2
> > 3
> > 4
> >
> > with point at the very beginning of the minibuffer (first 0).
>
> Looks like the intended behavior for this code: the "[0 ..." part is
> the text of the message displayed by the command bound to C-f; it is
> enclosed in brackets to indicate that it is a message text separate
> from the rest of the prompt.  This display of echo-area messages that
> attempts not to overwrite the minibuffer prompt in an active
> minibuffer is a new feature of Emacs 27.  By default, Emacs will not
> let the mini-window grow enough to show the entire combined text of
> the prompt and the message, but if you set max-mini-window-height to a
> value 22 or greater, you will see this:
>
>   0
>   1
>   2
>   3
>   4
>   5
>   6
>   7
>   8
>   9
>   10
>   Test1:  [0
>   1
>   2
>   3
>   4
>   5
>   6
>   7
>   8
>   9
>   10
>   Test2]
>
> which is what I would expect, given the code you presented.
>
> Going back to the original report, what is the bug here?
>
> Thanks.





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

* bug#39564:
  2020-03-01 22:26       ` bug#39564: Matt Kramer
@ 2020-03-02  7:20         ` Matt Kramer
  2020-03-02  8:46           ` bug#39564: Eli Zaretskii
  0 siblings, 1 reply; 15+ messages in thread
From: Matt Kramer @ 2020-03-02  7:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 39564

Followup: The regression in Ivy appears to be fixed when
set-message-function is bound to nil at the top of the misbehaving
function. In general, it seems like, given the new defaults defined in
http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=485b423e8f0df2711a850be7f254665f64ab0bdb,
it will be necessary to make a similar change to any existing function
that, say, calls read-key under the assumption that the prompt will
take over the mini-window. (At least when the prompt contains multiple
lines). I guess that's the fundamental issue here. The new behavior
may be a nice improvement, but it's unclear how much code there is out
there that relies on the old behavior.

(For the record, it looks like the Ivy discussion has moved to
https://github.com/abo-abo/swiper/issues/2397)

On Sun, Mar 1, 2020 at 2:26 PM Matt Kramer <mccleetus@gmail.com> wrote:
>
> Thanks Eli for the explanation. Sorry for the trouble. It looks like
> Ivy (at least, in ivy-dispatching-done) assumes the old behavior, to
> wit, that echo-area messages will overwrite the minibuffer prompt,
> leading to the regression discussed in
> https://github.com/abo-abo/swiper/issues/2444. The conversation will
> continue over there, I guess.
>
> On Sat, Feb 29, 2020 at 12:17 AM Eli Zaretskii <eliz@gnu.org> wrote:
> >
> > > From: Matt Kramer <mccleetus@gmail.com>
> > > Date: Fri, 28 Feb 2020 09:33:57 -0800
> > >
> > > Code I used:
> > >
> > > (defun make-lines (n)
> > >   (mapconcat #'number-to-string
> > >              (number-sequence 0 n) "\n"))
> > >
> > > (let ((map (make-sparse-keymap)))
> > >   (define-key map (kbd "C-f") (lambda ()
> > >                                 (interactive)
> > >                                 (let ((inhibit-field-text-motion t))
> > >                                   (goto-char (point-min)))
> > >                                 (message "%S"
> > >                                          (read-key
> > >                                           (concat
> > >                                            (make-lines 10)
> > >                                            "\nTest2")))
> > >                                 (abort-recursive-edit)))
> > >   (read-from-minibuffer (concat (make-lines 10) "\nTest1: ") nil map))
> > >
> > > With this code in the clipboard, I start emacs -Q (again, 27.0.60
> > > commit 75a9eee8b), and immediately hit the following sequence of keys:
> > >
> > > C-y
> > > M-x eval-buffer RET
> > > C-f
> > >
> > > The eval-buffer results are initially as expected. However, after
> > > hitting C-f, the minibuffer then becomes:
> > >
> > > 0
> > > 1
> > > 2
> > > 3
> > > 4
> > > 5
> > > 6
> > > 7
> > > 8
> > > 9
> > > 10
> > > Test1:  [0
> > > 1
> > > 2
> > > 3
> > > 4
> > >
> > > with point at the very beginning of the minibuffer (first 0).
> >
> > Looks like the intended behavior for this code: the "[0 ..." part is
> > the text of the message displayed by the command bound to C-f; it is
> > enclosed in brackets to indicate that it is a message text separate
> > from the rest of the prompt.  This display of echo-area messages that
> > attempts not to overwrite the minibuffer prompt in an active
> > minibuffer is a new feature of Emacs 27.  By default, Emacs will not
> > let the mini-window grow enough to show the entire combined text of
> > the prompt and the message, but if you set max-mini-window-height to a
> > value 22 or greater, you will see this:
> >
> >   0
> >   1
> >   2
> >   3
> >   4
> >   5
> >   6
> >   7
> >   8
> >   9
> >   10
> >   Test1:  [0
> >   1
> >   2
> >   3
> >   4
> >   5
> >   6
> >   7
> >   8
> >   9
> >   10
> >   Test2]
> >
> > which is what I would expect, given the code you presented.
> >
> > Going back to the original report, what is the bug here?
> >
> > Thanks.





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

* bug#39564:
  2020-03-02  7:20         ` bug#39564: Matt Kramer
@ 2020-03-02  8:46           ` Eli Zaretskii
  2022-02-20 15:13             ` bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer Lars Ingebrigtsen
  0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2020-03-02  8:46 UTC (permalink / raw)
  To: Matt Kramer; +Cc: 39564

> From: Matt Kramer <mccleetus@gmail.com>
> Date: Sun, 1 Mar 2020 23:20:23 -0800
> Cc: 39564@debbugs.gnu.org
> 
> Followup: The regression in Ivy appears to be fixed when
> set-message-function is bound to nil at the top of the misbehaving
> function.

That is indeed the simplest solution, but it is not the best one.  It
would be better for Ivy to provide its own set-message-function which
plays by the new Emacs 27 rules, i.e. presents the message text in a
way that doesn't completely obscure the original prompt.

> In general, it seems like, given the new defaults defined in
> http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=485b423e8f0df2711a850be7f254665f64ab0bdb,
> it will be necessary to make a similar change to any existing function
> that, say, calls read-key under the assumption that the prompt will
> take over the mini-window. (At least when the prompt contains multiple
> lines). I guess that's the fundamental issue here. The new behavior
> may be a nice improvement, but it's unclear how much code there is out
> there that relies on the old behavior.

Relying on the old behavior was always not a future-proof assumption,
so I see no way around the problem except fixing the code which makes
such assumptions, sorry.





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

* bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer
  2020-03-02  8:46           ` bug#39564: Eli Zaretskii
@ 2022-02-20 15:13             ` Lars Ingebrigtsen
  0 siblings, 0 replies; 15+ messages in thread
From: Lars Ingebrigtsen @ 2022-02-20 15:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 39564, Matt Kramer

Eli Zaretskii <eliz@gnu.org> writes:

> Relying on the old behavior was always not a future-proof assumption,
> so I see no way around the problem except fixing the code which makes
> such assumptions, sorry.

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

Reading this bug report, it seems the conclusion was that this was a
problem in Ivy, and not in Emacs?  So I'm therefore closing this bug
report.  If something should be done on the Emacs side, please respond
to the debbugs address and we'll reopen.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

end of thread, other threads:[~2022-02-20 15:13 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20200211144941.godmcifegapmqg6i.ref@Ergus>
2020-02-11 14:49 ` bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-02-11 15:50   ` Eli Zaretskii
2020-02-11 16:17   ` Oleh Krehel
2020-02-11 17:36     ` Eli Zaretskii
2020-02-12 13:21       ` Oleh Krehel
2020-02-12 17:22         ` Eli Zaretskii
2020-02-12 22:37   ` bug#39564: 28.0.50; read-key function do not display the prompt Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-02-26 20:04   ` bug#39564: Matt Kramer
2020-02-28  7:26     ` bug#39564: Eli Zaretskii
2020-02-28 17:33   ` bug#39564: Matt Kramer
2020-02-29  8:16     ` bug#39564: Eli Zaretskii
2020-03-01 22:26       ` bug#39564: Matt Kramer
2020-03-02  7:20         ` bug#39564: Matt Kramer
2020-03-02  8:46           ` bug#39564: Eli Zaretskii
2022-02-20 15:13             ` bug#39564: 28.0.50; read-key function do not display the prompt if called from read-from-minibuffer Lars Ingebrigtsen

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.