anchor.diff:    ;; TODO: Add method that returns if there is only 1 source with no filter.
     (when prompt-buffer
       (push prompt-buffer (active-prompt-buffers (window prompt-buffer)))
  -    (erase-document prompt-buffer)      ; TODO: When to erase?
  -    (update-display prompt-buffer)
  +    (prompt-render prompt-buffer)
       (run-thread
         (watch-prompt prompt-buffer))
       (ffi-window-set-prompt-buffer-height
  
positive.code:     (funcall return-function))
    ;; Destroy prompter last, or else `return-function' may not work.
    (prompter:destroy prompt-buffer))
  
  (defmethod erase-document ((prompt-buffer prompt-buffer)) ; TODO: Remove, empty automatically when `content' is set?
    (ffi-prompt-buffer-evaluate-javascript-async (current-window) (ps:ps
                                                                    (ps:chain document (open))
                                                                    (ps:chain document (close)))))
  
  (defmethod generate-prompt-html ((prompt-buffer prompt-buffer))
    (markup:markup
     (:head (:style (style prompt-buffer)))
     (:body
      (:div :id "prompt-area"
            (:div :id "prompt" (prompter:prompt prompt-buffer))
            (:div :id "prompt-extra" "[?/?]")
            (:div (:input :type "text" :id "input" :value (prompter:input prompt-buffer))))
      (:div :id "suggestions"))))
  
  
  (export 'update-suggestion-html)
  (defmethod update-suggestion-html ((prompt-buffer prompt-buffer))
  
negative.code:                    (format nil "[~a]"
                             (length suggestions)))))))))))
  
  (defun erase-document (prompt-buffer)
    (ffi-prompt-buffer-evaluate-javascript-async
     (window prompt-buffer)
     (ps:ps
       (ps:chain document (open))
       (ps:chain document (close)))))
  
  (defun prompt-render-skeleton (prompt-buffer)
    (erase-document prompt-buffer)
    (ffi-prompt-buffer-evaluate-javascript-async
     (window prompt-buffer)
     (ps:ps (ps:chain document
                      (write
                       (ps:lisp (markup:markup
                                 (:head (:style (style prompt-buffer)))
                                 (:body
                                  (:div :id "prompt-area"
                                        (:div :id "prompt" (prompter:prompt prompt-buffer))
                                        (:div :id "prompt-extra" "[?/?]")
                                        (:div (:input :type "text" :id "input" :value (prompter:input prompt-buffer))))
                                  (:div :id "suggestions")))))))))
  
  (defun prompt-render-focus (prompt-buffer)
    (ffi-prompt-buffer-evaluate-javascript-async
     (window prompt-buffer)
     (ps:ps (ps:chain document
                      (get-element-by-id "input")
                      (focus)))))
  
  (defmethod prompt-render ((prompt-buffer prompt-buffer)) ; TODO: Merge into `show'?
    (prompt-render-skeleton prompt-buffer)
    (prompt-render-focus prompt-buffer)
    (update-suggestion-html prompt-buffer))
  
  (defun watch-prompt (prompt-buffer)
  