From: Antero Mejr via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Juri Linkov <juri@linkov.net>
Cc: 62800@debbugs.gnu.org
Subject: bug#62800: [PATCH] eww: Use completion in URL/keyword prompt.
Date: Thu, 13 Apr 2023 17:16:53 +0000 [thread overview]
Message-ID: <87bkjrbt2y.fsf@mailbox.org> (raw)
In-Reply-To: <86jzygjndv.fsf@mail.linkov.net> (Juri Linkov's message of "Thu, 13 Apr 2023 09:40:28 +0300")
[-- Attachment #1: Type: text/plain, Size: 1403 bytes --]
Juri Linkov <juri@linkov.net> writes:
>>> Emacs 29 has a new command 'minibuffer-complete-history'
>>> that completes on the history.
>>
>> I don't understand. The patch adds the ability to use
>> minibuffer-complete-history by pressing the TAB key while typing a
>> URL. The behavior I'm seeing now (in version 29.0.50), is when I type in
>> a URL and press tab, instead of completing, it inserts a tab
>> character.
>
> I just noted that this is already possible by typing less convenient key
> 'C-x up'. But if you think 'TAB' could do the same, this is fine.
> Maybe even eww-suggested-uris could be added to the list of history
> completions as well. Because browsers show completions not only for
> previously visited urls from the history, but also for suggested urls.
New patches are attached. The first adds tab completion and is just
slightly reworded. The second adds "eww-suggested-uris" to the
completion options, and adds bookmark URIs to the "eww-suggest-uris"
list, since browsers suggest bookmarks too.
If there is "http://example.com" in the bookmarks, and "example.com" in
the history, both will be provided as a completion. I think this
behavior is correct because those two URLs may not point to the same
place, but browsers sometimes remove the URL scheme component and assume
http:// or https://. I don't think matching that behavior would be good
so I didn't implement it.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: v3-0001-eww-Enable-completion-in-URL-keyword-prompt.patch --]
[-- Type: text/x-patch, Size: 2449 bytes --]
From c2e4f72f21af20afdc2fc2f5ebe6bffcb61c2f5d Mon Sep 17 00:00:00 2001
From: Antero Mejr <antero@mailbox.org>
Date: Wed, 12 Apr 2023 17:56:01 +0000
Subject: [PATCH v3 1/2] eww: Enable completion in URL/keyword prompt.
* lisp/net/eww.el (eww): Use 'completing-read' when prompting for a URL
or keywords.
(eww-minibuffer-url-keymap): New keymap for use in the URL/keyword
prompt.
* etc/NEWS (EWW): Add NEWS entry for the change.
---
etc/NEWS | 5 +++++
lisp/net/eww.el | 16 ++++++++++++----
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/etc/NEWS b/etc/NEWS
index 5e1fd76e99e..2df0d969991 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -219,6 +219,11 @@ the new argument NEW-BUFFER non-nil, it will use a new buffer instead.
Interactively, invoke 'eww-open-file' with a prefix argument to
activate this behavior.
++++
+*** 'eww' URL or keyword prompt now has tab completion.
+The interactive minibuffer prompt when invoking 'eww' now has support
+for tab completion.
+
** go-ts-mode
+++
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 11be20b68db..7f0c9167c6a 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -329,6 +329,12 @@ parameter, and should return the (possibly) transformed URL."
:parent shr-map
"RET" #'eww-follow-link)
+(defvar-keymap eww-minibuffer-url-keymap
+ :doc "Keymap used in the minibuffer prompt for URLs or keywords."
+ :parent minibuffer-local-completion-map
+ "SPC" #'self-insert-command
+ "?" #'self-insert-command)
+
(defun eww-suggested-uris nil
"Return the list of URIs to suggest at the `eww' prompt.
This list can be customized via `eww-suggest-uris'."
@@ -377,10 +383,12 @@ killed after rendering.
For more information, see Info node `(eww) Top'."
(interactive
- (let ((uris (eww-suggested-uris)))
- (list (read-string (format-prompt "Enter URL or keywords"
- (and uris (car uris)))
- nil 'eww-prompt-history uris)
+ (let ((uris (eww-suggested-uris))
+ (minibuffer-local-completion-map eww-minibuffer-url-keymap))
+ (list (completing-read (format-prompt "Enter URL or keywords"
+ (and uris (car uris)))
+ eww-prompt-history nil nil nil
+ 'eww-prompt-history uris)
current-prefix-arg)))
(setq url (eww--dwim-expand-url url))
(pop-to-buffer-same-window
--
2.39.2
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: v3-0002-eww-Provide-completions-for-bookmarks-and-suggest.patch --]
[-- Type: text/x-patch, Size: 3128 bytes --]
From 1c635c024a9b7e01c29704af0939c7a39583ee9c Mon Sep 17 00:00:00 2001
From: Antero Mejr <antero@mailbox.org>
Date: Thu, 13 Apr 2023 15:59:54 +0000
Subject: [PATCH v3 2/2] eww: Provide completions for bookmarks and suggested
URIs.
* lisp/net/eww.el (eww): Add the result of 'eww-suggest-uris' to the
completion collection argument.
(eww-bookmark-urls): New procedure.
(eww-suggest-uris): Add "eww-bookmark-urls" to the default list.
* etc/NEWS (EWW): Add NEWS entry for the change.
---
etc/NEWS | 6 ++++++
lisp/net/eww.el | 16 ++++++++++++----
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/etc/NEWS b/etc/NEWS
index 2df0d969991..41880208c7e 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -224,6 +224,12 @@ activate this behavior.
The interactive minibuffer prompt when invoking 'eww' now has support
for tab completion.
++++
+*** 'eww' URL and keyword prompt now completes suggested URIs and bookmarks.
+The interactive minibuffer prompt when invoking 'eww' now provides
+completions from 'eww-suggest-uris'. 'eww-suggest-uris' now includes
+bookmark URIs.
+
** go-ts-mode
+++
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 7f0c9167c6a..48a1813c92d 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -94,7 +94,8 @@ no parameters) that returns a directory name."
(defcustom eww-suggest-uris
'(eww-links-at-point
thing-at-point-url-at-point
- eww-current-url)
+ eww-current-url
+ eww-bookmark-urls)
"List of functions called to form the list of default URIs for `eww'.
Each of the elements is a function returning either a string or a list
of strings. The results will be joined into a single list with
@@ -104,7 +105,8 @@ duplicate entries (if any) removed."
:type 'hook
:options '(eww-links-at-point
thing-at-point-url-at-point
- eww-current-url))
+ eww-current-url
+ eww-bookmark-urls))
(defcustom eww-bookmarks-directory user-emacs-directory
"Directory where bookmark files will be stored."
@@ -387,8 +389,8 @@ For more information, see Info node `(eww) Top'."
(minibuffer-local-completion-map eww-minibuffer-url-keymap))
(list (completing-read (format-prompt "Enter URL or keywords"
(and uris (car uris)))
- eww-prompt-history nil nil nil
- 'eww-prompt-history uris)
+ (seq-uniq (append eww-prompt-history uris))
+ nil nil nil 'eww-prompt-history uris)
current-prefix-arg)))
(setq url (eww--dwim-expand-url url))
(pop-to-buffer-same-window
@@ -2235,6 +2237,12 @@ If ERROR-OUT, signal user-error if there are no bookmarks."
'eww-bookmark)))
(eww-browse-url (plist-get bookmark :url))))
+(defun eww-bookmark-urls ()
+ "Get the URLs from the current list of bookmarks."
+ (interactive nil eww-boomark-mode)
+ (eww-read-bookmarks)
+ (mapcar (lambda (x) (plist-get x :url)) eww-bookmarks))
+
(defvar-keymap eww-bookmark-mode-map
"C-k" #'eww-bookmark-kill
"C-y" #'eww-bookmark-yank
--
2.39.2
next prev parent reply other threads:[~2023-04-13 17:16 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-12 18:10 bug#62800: [PATCH] eww: Use completion in URL/keyword prompt Antero Mejr via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-12 18:32 ` Juri Linkov
2023-04-12 19:44 ` Antero Mejr via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-12 21:43 ` Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-13 1:31 ` Antero Mejr via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-13 6:41 ` Juri Linkov
2023-04-13 6:40 ` Juri Linkov
2023-04-13 17:16 ` Antero Mejr via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2023-04-22 9:03 ` Eli Zaretskii
2023-04-23 18:03 ` Antero Mejr via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-04-23 18:31 ` Eli Zaretskii
2023-04-24 11:56 ` Eli Zaretskii
2023-04-25 14:33 ` Eli Zaretskii
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=87bkjrbt2y.fsf@mailbox.org \
--to=bug-gnu-emacs@gnu.org \
--cc=62800@debbugs.gnu.org \
--cc=antero@mailbox.org \
--cc=juri@linkov.net \
/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.