           provider))))
 
 (defun +lookup--symbol-or-region (&optional initial)
-  (cond (initial)
+  (cond ((stringp initial)
+         initial)
         ((use-region-p)
          (buffer-substring-no-properties (region-beginning)
                                          (region-end)))

              ;; reliably, so we set up the new window ahead of time.
              (switch-to-buffer-other-window (current-buffer))
              (goto-char (marker-position origin)))
            (call-interactively hook)
            t)
        (save-window-excursion
          (when (or (if (commandp hook)
                        (call-interactively hook)
                      (funcall hook identifier))
                    (/= (point-marker) origin))
            (point-marker))))
    ((error user-error)

  (interactive
   (list (+lookup--symbol-or-region)
         current-prefix-arg))
  (cond ((+lookup--jump-to :documentation identifier t))

        ((user-error "Couldn't find documentation for '%s'" identifier))))

