diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-11-07 00:45:01 +0100 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-11-07 00:45:01 +0100 |
commit | 55fa6a2655972017c692b515b8c476bb9705747d (patch) | |
tree | 16995de8f2f896a3233837c435354af4017c96a2 /lisp/net/eww.el | |
parent | 9d54b1222cfbd8d64dcd93ec1a76863ae42ee339 (diff) | |
download | emacs-55fa6a2655972017c692b515b8c476bb9705747d.tar.gz emacs-55fa6a2655972017c692b515b8c476bb9705747d.tar.bz2 emacs-55fa6a2655972017c692b515b8c476bb9705747d.zip |
Add new user option eww-url-transformers
* doc/misc/eww.texi (Advanced): Document it.
* lisp/net/eww.el (eww-url-transformers): New user option.
(eww-remove-tracking): New default function.
(eww--transform-url): Helper function.
(eww-follow-link): Use it.
(eww): Ditto.
Diffstat (limited to 'lisp/net/eww.el')
-rw-r--r-- | lisp/net/eww.el | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 94a5890ef56..61c7801b102 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -231,6 +231,13 @@ See also `eww-form-checkbox-selected-symbol'." (const "☐") ; Unicode BALLOT BOX string)) +(defcustom eww-url-transformers '(eww-remove-tracking) + "This is a list of transforming functions applied to an URL before usage. +The functions will be called with the URL as the single +parameter, and should return the (possibly) transformed URL." + :type '(repeat function) + :version "29.1") + (defface eww-form-submit '((((type x w32 ns) (class color)) ; Like default mode line :box (:line-width 2 :style released-button) @@ -385,6 +392,7 @@ killed after rendering." (while (string-match "\\`/[.][.]/" (url-filename parsed)) (setf (url-filename parsed) (substring (url-filename parsed) 3)))) (setq url (url-recreate-url parsed))) + (setq url (eww--transform-url url)) (plist-put eww-data :url url) (plist-put eww-data :title "") (eww--after-page-change) @@ -1831,6 +1839,17 @@ The browser to used is specified by the (funcall browse-url-secondary-browser-function (or url (plist-get eww-data :url)))) +(defun eww-remove-tracking (url) + "Remove the commong utm_ tracking cookies from URLs." + (replace-regexp-in-string ".utm_.*" "" url)) + +(defun eww--transform-url (url) + "Appy `eww-url-transformers'." + (when url + (dolist (func eww-url-transformers) + (setq url (funcall func url))) + url)) + (defun eww-follow-link (&optional external mouse-event) "Browse the URL under point. If EXTERNAL is single prefix, browse the URL using @@ -1841,7 +1860,8 @@ If EXTERNAL is double prefix, browse in new buffer." (list current-prefix-arg last-nonmenu-event) eww-mode) (mouse-set-point mouse-event) - (let ((url (get-text-property (point) 'shr-url))) + (let* ((orig-url (get-text-property (point) 'shr-url)) + (url (eww--transform-url orig-url))) (cond ((not url) (message "No link under point")) @@ -1860,7 +1880,7 @@ If EXTERNAL is double prefix, browse in new buffer." (plist-put eww-data :url url) (eww-display-html 'utf-8 url dom nil (current-buffer)))) (t - (eww-browse-url url external))))) + (eww-browse-url orig-url external))))) (defun eww-same-page-p (url1 url2) "Return non-nil if URL1 and URL2 represent the same page. |