Is there a popup input dialogue box for Emacs, which returns the string that a user enters? Maybe something that can be launched through the mini-buffer? Or through an elisp command/function?


yes-or-no-p provides this for yes/no answers (and it's often used cousin y-or-no-p).

Several arguments to the interactive macro can allow prompting for arguments when a function is called interactively (using M-x to call the function, binding a key to the function, or using call-interactively).

As mentioned in the documentation for interactive above, read-string will prompt the minibuffer for a string and return it to the caller.

Finally, completing-read can be used to prompt the user with options for completion. For instance, switch-to-buffer and find-file use wrapper functions around completing-read that provide a list of current buffers or the files in the current directory as candidate completions. completing-read then uses that list of candidates to prompt the user on what file or buffer to open.

  • 2
    Just to add to @dgtized answer, there are a bunch of read-* that will help do things like completion in the minibuffer. read-file-name for example will autocomplete a path like you'd see with C-x C-f (find-file). – elarson Oct 7 '14 at 20:02
  • A minor detail: y-or-n-p does not use the minibuffer. It reads an event (keypress). – Drew Oct 7 '14 at 21:21

interactive has several code characters which can be what you are looking for. If you write a function, you can specify that the user needs to provide a plain string, a buffer name, etc. All from the minibuffer.

If you want to provide completion look at ido-completing-read, from ido, to request user input anywhere in your function (and it's easy to use IMHO).

Your Answer

