如何阻止request.el输出过多内容在minibuffer

win10 emacs27.1,用request.el发起http请求可以得到网页返回的内容,但会输出一堆内容在minibuffer和message buffer,如何让request.el在后台安静的执行,什么也不要输出,不影响当前emacs操作。

代码

(request
  "http://localhost"
  ;;:parser 'buffer-string
  :success
  (cl-function (lambda (&key data &allow-other-keys)
                 (when data
                   (insert data) ) ) )
  :error
  (cl-function (lambda (&key error-thrown &allow-other-keys&rest _)
                 (message "Got error: %S" error-thrown)))
  :complete (lambda (&rest _) (message "Finished!"))
  :status-code '(
                 (400 . (lambda (&rest _) (message "Got 400.")))
                 )
  )

得到结果同时输出在minibuffer的内容

 #s(request-response nil nil nil nil nil "http://localhost" nil (:success (lambda (&rest --cl-rest--) "
(fn &key DATA &allow-other-keys)" (let* ... ...)) :error (lambda (&rest --cl-rest--) "
(fn &key ERROR-THROWN &allow-other-keys&rest ##)" (let* ... ...)) :complete (lambda (&rest _) 
:status-code ((400 lambda ... ...) ) :url "http://localhost" :response #0 ...) 
#<buffer  *request curl*> nil nil ...)

这是提示我要装curl吗?但我看文档说curl并不是必须的

request 必定返回一个 response 对象。除非作者愿意改变,否则,只能是你改变代码,不要把 (request ...) 作为最后一条返回语句。

修改 request-backend,它默认是 curl

确定我电脑上是有curl的,(setq request-curl "D:/msys/usr/bin/curl.exe")request-backend默认就是用的这个curl结果就是这个情况

修改 request-backend (setq request-backend 'url-retrieve),这样就不工作了,报的错误是

#s(request-response nil nil nil nil nil "http://localhost" nil (:success (lambda (&rest --cl-rest--) "
(fn &key DATA &allow-other-keys)" (let* ... ...)) 
:error (lambda (&rest --cl-rest--) "
(fn &key ERROR-THROWN &allow-other-keys&rest ##)" (let* ... ...)) 
:complete (lambda (&rest _) (message "Finished!")) 
:status-code ((400 lambda ... ...) ) 
:url "http://localhost" :response #0 ...) #<buffer  *http localhost:80*> nil nil ...)

你1楼的结果应该是没错的,我只是说可以修改 backend。

这个不是输出,是返回值,是 C-x C-e 显示的。这个返回值是一个结构体(cl-defstruct)对象。

没有

只是自动往一个buffer里插入http请求的结果,stackexchange找到了另一个更简单的方法来实现

(url-insert-file-contents "http://localhost")