1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-05 22:20:24 -08:00

* lisp/url/url-queue.el: Better compatibility with 'url-retrieve'

(url-queue): New slots to hold request related variables.
(url-queue-retrieve): Capture the request related variables.
(url-queue-start-retrieve): Let bind the request related
variables.  (Bug#78928)

* etc/NEWS: Announce changes.
This commit is contained in:
Rahguzar 2025-06-30 14:58:06 +05:00 committed by Eli Zaretskii
parent a2d71cecae
commit bd9d8c20f7
2 changed files with 28 additions and 11 deletions

View file

@ -1402,6 +1402,15 @@ HTML 'doctype' declaration to have context-type "text/html".
When there is no EWW buffer, 'eww-switch-to-buffer' falls back to When there is no EWW buffer, 'eww-switch-to-buffer' falls back to
calling 'eww'. calling 'eww'.
** Url Queue
---
*** 'url-queue-retrieve' now makes use of some url request variables
The variables 'url-request-data', 'url-request-method', and
'url-request-extra-headers' can now be bound around a call to
'url-queue-retrieve'. Binding them has the same effect as for
'url-retrieve'.
** CC mode ** CC mode
+++ +++

View file

@ -53,7 +53,8 @@
(cl-defstruct url-queue (cl-defstruct url-queue
url callback cbargs silentp url callback cbargs silentp
buffer start-time pre-triggered buffer start-time pre-triggered
inhibit-cookiesp context-buffer) inhibit-cookiesp context-buffer
request-data request-method request-extra-headers)
;;;###autoload ;;;###autoload
(defun url-queue-retrieve (url callback &optional cbargs silent inhibit-cookies) (defun url-queue-retrieve (url callback &optional cbargs silent inhibit-cookies)
@ -63,13 +64,17 @@ but with limits on the degree of parallelism. The variable
`url-queue-parallel-processes' sets the number of concurrent processes. `url-queue-parallel-processes' sets the number of concurrent processes.
The variable `url-queue-timeout' sets a timeout." The variable `url-queue-timeout' sets a timeout."
(setq url-queue (setq url-queue
(append url-queue (append url-queue
(list (make-url-queue :url url (list (make-url-queue
:callback callback :url url
:cbargs cbargs :callback callback
:silentp silent :cbargs cbargs
:inhibit-cookiesp inhibit-cookies :silentp silent
:context-buffer (current-buffer))))) :inhibit-cookiesp inhibit-cookies
:context-buffer (current-buffer)
:request-data url-request-data
:request-method url-request-method
:request-extra-headers url-request-extra-headers))))
(url-queue-setup-runners)) (url-queue-setup-runners))
;; To ensure asynch behavior, we start the required number of queue ;; To ensure asynch behavior, we start the required number of queue
@ -155,13 +160,16 @@ The variable `url-queue-timeout' sets a timeout."
(defun url-queue-start-retrieve (job) (defun url-queue-start-retrieve (job)
(setf (url-queue-buffer job) (setf (url-queue-buffer job)
(ignore-errors (ignore-errors
(with-current-buffer (if (buffer-live-p (with-current-buffer (if (buffer-live-p
(url-queue-context-buffer job)) (url-queue-context-buffer job))
(url-queue-context-buffer job) (url-queue-context-buffer job)
(current-buffer)) (current-buffer))
(let ((url-request-noninteractive t) (let ((url-request-noninteractive t)
(url-allow-non-local-files t)) (url-allow-non-local-files t)
(url-request-data (url-queue-request-data job))
(url-request-method (url-queue-request-method job))
(url-request-extra-headers (url-queue-request-extra-headers job)))
(url-retrieve (url-queue-url job) (url-retrieve (url-queue-url job)
#'url-queue-callback-function (list job) #'url-queue-callback-function (list job)
(url-queue-silentp job) (url-queue-silentp job)