Suppose that I have this function, that inserts some stuff into the minibuffer:

(defun foobar ()
      (lambda ()
        (let ((resize-mini-windows t))
            (insert "foo\nbar")
    (read-from-minibuffer "string: ")))
(global-set-key (kbd "M-RET") 'foobar)

It works fine if I call it from any buffer, except when I'm already in the minibuffer.

For example, if I eval (read-from-minibuffer "test: "), and then press M-RET, my minibuffer becomes string: foo (note the 1 line height). After I press any character, I see that bar is also in the minibuffer. The problem is that the minibuffer height won't update until I press any character.

Why does this happen and how to get around it?

  • Your example in the question behaves fine (I can see both foo and bar). But I know that issue you are talking about and I have seen that frequently with ido, since last 2 or so weeks. But the issue doesn't repeat after the first few times you enter something in the minibuffer to increase its height. I am looking forward to the cause for this. I am using emacs built from master branch in git. – Kaushal Modi May 11 '15 at 18:48
  • What version of emacs are you using? I'm using 24.4.1 (from Debian unstable) and it works OK for me. When I go M-x foobar, I see string: foo[newline]bar. – edam Jun 24 '15 at 8:08
  • I tried 24.5 and 25. – abo-abo Jun 24 '15 at 8:22
  • You're right, it's a regression. It still works fine on 24.3.1, but is broken on 24.5 – abo-abo Jun 24 '15 at 8:26
  • It sounds like the consensus is that this is bug in 24.5. Someone please report it (M-x report-emacs-bug). And then post that as an answer (and OP please then accept that answer). – Drew Dec 4 '15 at 17:48

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.