elisp: Object from Minibuffer

 
 19.3 Reading Lisp Objects with the Minibuffer
 =============================================
 
 This section describes functions for reading Lisp objects with the
 minibuffer.
 
  -- Function: read-minibuffer prompt &optional initial
      This function reads a Lisp object using the minibuffer, and returns
      it without evaluating it.  The arguments PROMPT and INITIAL are
      used as in ‘read-from-minibuffer’.
 
      This is a simplified interface to the ‘read-from-minibuffer’
      function:
 
           (read-minibuffer PROMPT INITIAL)
           ≡
           (let (minibuffer-allow-text-properties)
             (read-from-minibuffer PROMPT INITIAL nil t))
 
      Here is an example in which we supply the string ‘"(testing)"’ as
      initial input:
 
           (read-minibuffer
            "Enter an expression: " (format "%s" '(testing)))
 
           ;; Here is how the minibuffer is displayed:
 
           ---------- Buffer: Minibuffer ----------
           Enter an expression: (testing)★
           ---------- Buffer: Minibuffer ----------
 
      The user can type <RET> immediately to use the initial input as a
      default, or can edit the input.
 
  -- Function: eval-minibuffer prompt &optional initial
      This function reads a Lisp expression using the minibuffer,
      evaluates it, then returns the result.  The arguments PROMPT and
      INITIAL are used as in ‘read-from-minibuffer’.
 
      This function simply evaluates the result of a call to
      ‘read-minibuffer’:
 
           (eval-minibuffer PROMPT INITIAL)
           ≡
           (eval (read-minibuffer PROMPT INITIAL))
 
  -- Function: edit-and-eval-command prompt form
      This function reads a Lisp expression in the minibuffer, evaluates
      it, then returns the result.  The difference between this command
      and ‘eval-minibuffer’ is that here the initial FORM is not optional
      and it is treated as a Lisp object to be converted to printed
      representation rather than as a string of text.  It is printed with
      ‘prin1’, so if it is a string, double-quote characters (‘"’) appear
      in the initial text.  SeeOutput Functions.
 
      In the following example, we offer the user an expression with
      initial text that is already a valid form:
 
           (edit-and-eval-command "Please edit: " '(forward-word 1))
 
           ;; After evaluation of the preceding expression,
           ;;   the following appears in the minibuffer:
 
           ---------- Buffer: Minibuffer ----------
           Please edit: (forward-word 1)★
           ---------- Buffer: Minibuffer ----------
 
      Typing <RET> right away would exit the minibuffer and evaluate the
      expression, thus moving point forward one word.