From: Juri Linkov <juri@linkov.net>
To: 50680@debbugs.gnu.org
Subject: bug#50680: eww-retrieve-synchronously
Date: Sun, 19 Sep 2021 19:12:39 +0300 [thread overview]
Message-ID: <874kagmv98.fsf@mail.linkov.net> (raw)
[-- Attachment #1: Type: text/plain, Size: 634 bytes --]
Tags: patch
This is a spin-off from bug#50497.
>> What do you think about supporting synchronous mode in eww?
>> When adding a variable that causes eww-retrieve to use
>> url-retrieve-synchronously, isearch part could look like this:
>>
>> (defun eww-isearch-next-buffer (&optional _buffer wrap)
>> (let ((eww-synchronous t))
>> (if wrap
>> (condition-case nil
>> (eww-top-url)
>> (error nil))
>> (if isearch-forward
>> (eww-next-url)
>> (eww-previous-url))))
>> (current-buffer))
>
> Sure, makes sense to me.
Here is a patch that implements this:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: eww-retrieve-synchronously.patch --]
[-- Type: text/x-diff, Size: 2648 bytes --]
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index c1202974f4..7ae44fdc71 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -143,11 +143,13 @@ eww-history-limit
(defcustom eww-retrieve-command nil
"Command to retrieve an URL via an external program.
-If nil, `url-retrieve' is used to download the data. If non-nil,
-this should be a list where the first item is the program, and
-the rest are the arguments."
+If nil, `url-retrieve' is used to download the data.
+If `sync', `url-retrieve-synchronously' is used.
+For other non-nil values, this should be a list where the first item
+is the program, and the rest are the arguments."
:version "28.1"
:type '(choice (const :tag "Use `url-retrieve'" nil)
+ (const :tag "Use `url-retrieve-synchronously'" sync)
(repeat string)))
(defcustom eww-use-external-browser-for-content-type
@@ -366,9 +368,16 @@ eww
(list url nil (current-buffer))))))
(defun eww-retrieve (url callback cbargs)
- (if (null eww-retrieve-command)
- (url-retrieve url #'eww-render
- (list url nil (current-buffer)))
+ (cond
+ ((null eww-retrieve-command)
+ (url-retrieve url #'eww-render
+ (list url nil (current-buffer))))
+ ((eq eww-retrieve-command 'sync)
+ (let ((orig-buffer (current-buffer))
+ (data-buffer (url-retrieve-synchronously url)))
+ (with-current-buffer data-buffer
+ (eww-render nil url nil orig-buffer))))
+ (t
(let ((buffer (generate-new-buffer " *eww retrieve*"))
(error-buffer (generate-new-buffer " *eww error*")))
(with-current-buffer buffer
@@ -388,7 +397,7 @@ eww-retrieve
(with-current-buffer buffer
(goto-char (point-min))
(insert "Content-type: text/html; charset=utf-8\n\n")
- (apply #'funcall callback nil cbargs))))))))))
+ (apply #'funcall callback nil cbargs)))))))))))
(function-put 'eww 'browse-url-browser-kind 'internal)
@@ -2398,13 +2407,14 @@ eww-restore-desktop
(defun eww-isearch-next-buffer (&optional _buffer wrap)
"Go to the next page to search using `rel' attribute for navigation."
- (if wrap
- (condition-case nil
- (eww-top-url)
- (error nil))
- (if isearch-forward
- (eww-next-url)
- (eww-previous-url)))
+ (let ((eww-retrieve-command 'sync))
+ (if wrap
+ (condition-case nil
+ (eww-top-url)
+ (error nil))
+ (if isearch-forward
+ (eww-next-url)
+ (eww-previous-url))))
(current-buffer))
(provide 'eww)
next reply other threads:[~2021-09-19 16:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-19 16:12 Juri Linkov [this message]
2021-09-20 5:49 ` bug#50680: eww-retrieve-synchronously Lars Ingebrigtsen
2021-09-20 7:16 ` Juri Linkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874kagmv98.fsf@mail.linkov.net \
--to=juri@linkov.net \
--cc=50680@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.