[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 14a3dd6a30f: New user option browse-url-transform-alist
From: |
Stefan Kangas |
Subject: |
master 14a3dd6a30f: New user option browse-url-transform-alist |
Date: |
Tue, 17 Dec 2024 22:15:42 -0500 (EST) |
branch: master
commit 14a3dd6a30f7a720f29d51f2df8f8ab8138989a0
Author: Stefan Kangas <stefankangas@gmail.com>
Commit: Stefan Kangas <stefankangas@gmail.com>
New user option browse-url-transform-alist
* lisp/net/browse-url.el (browse-url-transform-alist): New user option.
(browse-url): Transform URL before loading if above new option is set.
---
etc/NEWS | 6 ++++++
lisp/net/browse-url.el | 21 +++++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/etc/NEWS b/etc/NEWS
index d73d654d5fb..f9ed0dd17e7 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -331,6 +331,12 @@ modal editing packages.
** Browse URL
+*** New user option 'browse-url-transform-alist'.
+This user option is an alist that allows transforming URLs before asking
+a web browser to load them. For example, it could be used like this:
+ (add-to-list 'browse-url-transform-alist
+ '("www.google.com" . "www.duckduckgo.com"))
+
*** New function 'browse-url-qutebrowser' for the Qutebrowser.
For better integration with the Qutebrowser, set
'browse-url(-secondary)-browser-function' to 'browse-url-qutebrowser'.
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index 8d9046f77b0..b83a9db61aa 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -263,6 +263,23 @@ be used instead."
:version "31.1"
:type 'regexp)
+(defcustom browse-url-transform-alist nil
+ "Alist of transformations to apply to URLs before loading it.
+Each element has the form (ORIG . REPLACEMENT), where ORIG is a regular
+expression and REPLACEMENT is the replacement text. Every element will
+be tested in turn, allowing more than one transformation to be made.
+
+Note that ORIG and REPLACEMENT are passed as arguments to
+`string-match', so you can, for example, use match groups in ORIG and
+backreferences in REPLACEMENT."
+ :type '(choice
+ (const :tag "None" nil)
+ (alist
+ :tag "Alist mapping from regexp to replacement"
+ :key-type (regexp :tag "Regexp")
+ :value-type (regexp :tag "Replacement")))
+ :version "31.1")
+
(defcustom browse-url-browser-display nil
"The X display for running the browser, if not same as Emacs's."
:type '(choice string (const :tag "Default" nil)))
@@ -923,6 +940,10 @@ invert the prefix arg instead."
(interactive (browse-url-interactive-arg "URL: "))
(unless (called-interactively-p 'interactive)
(setq args (or args (list browse-url-new-window-flag))))
+ (when browse-url-transform-alist
+ (dolist (trans browse-url-transform-alist)
+ (when (string-match (car trans) url)
+ (setq url (replace-match (cdr trans) nil t url)))))
(when (and url-handler-mode
(not (file-name-absolute-p url))
(not (string-match "\\`[a-z]+:" url)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 14a3dd6a30f: New user option browse-url-transform-alist,
Stefan Kangas <=