From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andrey Kotlarski Newsgroups: gmane.emacs.bugs Subject: bug#19130: 25.0.50; [PATCH] eww.el: Allow user to easily follow link in fresh eww buffer Date: Fri, 21 Nov 2014 00:57:05 +0200 Message-ID: <8761e9jxa6.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1416524372 16458 80.91.229.3 (20 Nov 2014 22:59:32 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 20 Nov 2014 22:59:32 +0000 (UTC) To: 19130@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Nov 20 23:59:25 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Xrah9-0004sm-S2 for geb-bug-gnu-emacs@m.gmane.org; Thu, 20 Nov 2014 23:59:24 +0100 Original-Received: from localhost ([::1]:37686 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xrah9-0006uu-IX for geb-bug-gnu-emacs@m.gmane.org; Thu, 20 Nov 2014 17:59:23 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52226) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xragx-0006ul-8q for bug-gnu-emacs@gnu.org; Thu, 20 Nov 2014 17:59:20 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xrago-00045C-3L for bug-gnu-emacs@gnu.org; Thu, 20 Nov 2014 17:59:11 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:42737) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xragn-000457-VM for bug-gnu-emacs@gnu.org; Thu, 20 Nov 2014 17:59:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Xragn-0003TG-Ne for bug-gnu-emacs@gnu.org; Thu, 20 Nov 2014 17:59:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Andrey Kotlarski Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 20 Nov 2014 22:59:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 19130 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.141652428213278 (code B ref -1); Thu, 20 Nov 2014 22:59:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 20 Nov 2014 22:58:02 +0000 Original-Received: from localhost ([127.0.0.1]:39950 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xrafp-0003S5-Sh for submit@debbugs.gnu.org; Thu, 20 Nov 2014 17:58:02 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:50319) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xrafo-0003Rh-75 for submit@debbugs.gnu.org; Thu, 20 Nov 2014 17:58:00 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xrafe-0003qm-Rw for submit@debbugs.gnu.org; Thu, 20 Nov 2014 17:57:59 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:35345) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xrafe-0003qi-Ox for submit@debbugs.gnu.org; Thu, 20 Nov 2014 17:57:50 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:51874) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XrafT-0006hC-1T for bug-gnu-emacs@gnu.org; Thu, 20 Nov 2014 17:57:50 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xraf5-0003Tu-JE for bug-gnu-emacs@gnu.org; Thu, 20 Nov 2014 17:57:38 -0500 Original-Received: from mail-wg0-x235.google.com ([2a00:1450:400c:c00::235]:39249) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xraf5-0003TZ-8V for bug-gnu-emacs@gnu.org; Thu, 20 Nov 2014 17:57:15 -0500 Original-Received: by mail-wg0-f53.google.com with SMTP id l18so5013038wgh.40 for ; Thu, 20 Nov 2014 14:57:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:mime-version:content-type; bh=Sdk2hSKNLFUR/LyBA84Rs2iwAhgTJk3yK1AlOWK83SM=; b=okldRmAtEwiYyNX0hmJsIj0PEBH5LUAWqcVn500YYPuTcjdO1Ggz3p7lFgWwuu/4ry LhBcRaUk56u9NxyMSr57YivnUP35KQ9tdBOcSic4mo4dmUoNkGN6RTS0wP6dWj6RAX3+ ezVBgM7ZLliECmhTOju2GIhtdmTaCP2zVCarOJLigrj2JPnGnAMZ3Wu+YyhG+GAxDOF1 KR0aYZvhwtCVyI5yQRUVdxQ3+p4+w148sl5pGdqIjrngPJtVG7vtbA0jMuR+LZsLYVYb ux4PaXidFLTQeNYSLZ96usBR1YhAPuBhWHaFFYMOzxaLaW+Ox7VBs3uusjbChcK1z2XR Ouqw== X-Received: by 10.194.2.141 with SMTP id 13mr1348966wju.9.1416524233925; Thu, 20 Nov 2014 14:57:13 -0800 (PST) Original-Received: from andrexhe ([79.100.238.136]) by mx.google.com with ESMTPSA id fl1sm8620341wib.15.2014.11.20.14.57.11 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Nov 2014 14:57:13 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:96344 For eww-browse-url to be proper alternative in/as browse-url-browser-function, it should implement opening in new buffer, just like w3m-browse-url, w3-browse-url etc. Following patch also changes eww-follow-link to optionally make use of this. Changed single prefix to open in new eww buffer and double prefix to open externally, because it seems like natural progression. --- lisp/ChangeLog | 6 ++++++ lisp/net/eww.el | 23 ++++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 473a1f8..59afb2e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2014-11-20 Andrey Kotlarski + + * net/eww.el (eww-browse-url): Optionally create new eww buffer. + (eww-follow-link): Follow in new buffer in case of prefix + argument, open externally with double prefix. + 2014-11-20 Eric S. Raymond * vc/vc-bzr.el, vc/vc-cvs.el, vc/vc-dav.el, vc/vc-git.el, diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 6746668..9b6f779 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -624,10 +624,18 @@ the like." (setq buffer-read-only t)) ;;;###autoload -(defun eww-browse-url (url &optional _new-window) - (when (and (equal major-mode 'eww-mode) - (plist-get eww-data :url)) - (eww-save-history)) +(defun eww-browse-url (url &optional new-window) + (cond (new-window + (let ((new-buffer "*eww*") + (num 0)) + (while (get-buffer new-buffer) + (setq num (1+ num) + new-buffer (format "*eww*<%d>" num))) + (switch-to-buffer new-buffer)) + (eww-mode)) + ((and (equal major-mode 'eww-mode) + (plist-get eww-data :url)) + (eww-save-history))) (eww url)) (defun eww-back-url () @@ -1238,7 +1246,8 @@ The browser to used is specified by the `shr-external-browser' variable." (defun eww-follow-link (&optional external mouse-event) "Browse the URL under point. -If EXTERNAL, browse the URL using `shr-external-browser'." +If EXTERNAL is single prefix, browse in new buffer. +If EXTERNAL is double prefix, browse the URL using `shr-external-browser'." (interactive (list current-prefix-arg last-nonmenu-event)) (mouse-set-point mouse-event) (let ((url (get-text-property (point) 'shr-url))) @@ -1247,7 +1256,7 @@ If EXTERNAL, browse the URL using `shr-external-browser'." (message "No link under point")) ((string-match "^mailto:" url) (browse-url-mail url)) - (external + ((and (consp external) (< 4 (car external))) (funcall shr-external-browser url)) ;; This is a #target url in the same page as the current one. ((and (url-target (url-generic-parse-url url)) @@ -1256,7 +1265,7 @@ If EXTERNAL, browse the URL using `shr-external-browser'." (eww-display-html 'utf-8 url (plist-get eww-data :url) nil (current-buffer))) (t - (eww-browse-url url))))) + (eww-browse-url url external))))) (defun eww-same-page-p (url1 url2) "Return non-nil if both URLs represent the same page. -- 2.1.3