From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Yuya Minami Newsgroups: gmane.emacs.bugs Subject: bug#31808: [PATCH] customize how to display eww buffer. Date: Wed, 13 Jun 2018 16:53:47 +0900 Message-ID: <20180613075347.20981-1-yuya373@me.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE X-Trace: blaine.gmane.org 1528876394 28002 195.159.176.226 (13 Jun 2018 07:53:14 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 13 Jun 2018 07:53:14 +0000 (UTC) Cc: Yuya Minami To: 31808@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Jun 13 09:53:10 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fT0ac-0007Ck-68 for geb-bug-gnu-emacs@m.gmane.org; Wed, 13 Jun 2018 09:53:10 +0200 Original-Received: from localhost ([::1]:60494 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fT0ch-0000ie-IK for geb-bug-gnu-emacs@m.gmane.org; Wed, 13 Jun 2018 03:55:19 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45959) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fT0cT-0000ev-Du for bug-gnu-emacs@gnu.org; Wed, 13 Jun 2018 03:55:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fT0cQ-00062S-Ax for bug-gnu-emacs@gnu.org; Wed, 13 Jun 2018 03:55:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:37814) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fT0cQ-00062E-6x for bug-gnu-emacs@gnu.org; Wed, 13 Jun 2018 03:55:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1fT0cP-00023v-V7 for bug-gnu-emacs@gnu.org; Wed, 13 Jun 2018 03:55:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Yuya Minami Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Jun 2018 07:55:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 31808 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.15288764507862 (code B ref -1); Wed, 13 Jun 2018 07:55:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 13 Jun 2018 07:54:10 +0000 Original-Received: from localhost ([127.0.0.1]:45711 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fT0ba-00022k-GK for submit@debbugs.gnu.org; Wed, 13 Jun 2018 03:54:10 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:54710) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fT0bZ-00022Z-D3 for submit@debbugs.gnu.org; Wed, 13 Jun 2018 03:54:09 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fT0bT-00057c-4C for submit@debbugs.gnu.org; Wed, 13 Jun 2018 03:54:04 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:59386) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fT0bT-00057G-0G for submit@debbugs.gnu.org; Wed, 13 Jun 2018 03:54:03 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45675) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fT0bR-0008Vv-GQ for bug-gnu-emacs@gnu.org; Wed, 13 Jun 2018 03:54:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fT0bO-00053Z-DK for bug-gnu-emacs@gnu.org; Wed, 13 Jun 2018 03:54:01 -0400 Original-Received: from pv33p00im-asmtp003.me.com ([17.142.194.252]:38696) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fT0bO-000514-6P for bug-gnu-emacs@gnu.org; Wed, 13 Jun 2018 03:53:58 -0400 Original-Received: from process-dkim-sign-daemon.pv33p00im-asmtp003.me.com by pv33p00im-asmtp003.me.com (Oracle Communications Messaging Server 8.0.1.2.20170607 64bit (built Jun 7 2017)) id <0PA90090047NEC00@pv33p00im-asmtp003.me.com> for bug-gnu-emacs@gnu.org; Wed, 13 Jun 2018 07:53:55 +0000 (GMT) Original-Received: from icloud.com ([127.0.0.1]) by pv33p00im-asmtp003.me.com (Oracle Communications Messaging Server 8.0.1.2.20170607 64bit (built Jun 7 2017)) with ESMTPSA id <0PA9003EK4LR3800@pv33p00im-asmtp003.me.com> for bug-gnu-emacs@gnu.org; Wed, 13 Jun 2018 07:53:54 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=me.com; s=04042017; t=1528876435; bh=FlbRdORCZ4mMZT+OiliTvCbEXfXhBkv+IvL9TA4yYBk=; h=MIME-version:Content-type:From:To:Subject:Date:Message-id; b=s3sTV2YW8C+da6kZMGg97/P3pVVBsoi1V7KgR6ZAZpLPAz5cYH7qJAIWVgzxIMjme fOWaBacrZzsV8zq62ea7MSJANz9w1dJhqwADeOMaNZKJzOfXMJAyOCNirfpYJGnQ9n yg/iljh7UfqqQCRf6AnacC/ZjQ91wnAKMgGaD97XQYyo2l1bDKAnQWyHWnRSpdOdo9 NrNSMEUa69fsq6rkqNIAPYeY3t8U5lGeL/Nz6l0W9z6IEl6YPWdHhAitVwlToLjzaD WoTlT6/2f742AzHkmzxQ4zccccsWlLfjAuEnk3A051CG3D6eXyntSKsEGP1GOVwaDC eL36CbyR+fObQ== X-Mailer: git-send-email 2.17.1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-06-13_04:,, signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 clxscore=1011 suspectscore=4 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000 definitions=main-1806130092 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.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" Xref: news.gmane.org gmane.emacs.bugs:147360 Archived-At: Currently `eww` function using `pop-to-buffer-same-window` to display eww buffer. This changes make customizable how to display eww buffer. And using `with-current-buffer` to prevent functions that depend on the current buffer being eww-mode from being executed in other major-mode buffer. --- lisp/net/eww.el | 59 +++++++++++++++++++++++++++--------------------= -- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 97fdabd72b..a97d22ae2d 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -153,6 +153,11 @@ eww-form-checkbox-symbol (const "=E2=98=90") ; Unicode BALLOT BOX string)) =20 +(defcustom eww-display-buffer-function 'pop-to-buffer-same-window + "Function used to display eww buffer in `eww'." + :group 'eww + :type 'function) + (defface eww-form-submit '((((type x w32 ns) (class color))=09; Like default mode line :box (:line-width 2 :style released-button) @@ -257,33 +262,33 @@ eww =09=09=09 (if uris (format " (default %s)" (car uris)) "") =09=09=09 ": "))) (list (read-string prompt nil 'eww-prompt-history uris)))) - (setq url (eww--dwim-expand-url url)) - (pop-to-buffer-same-window - (if (eq major-mode 'eww-mode) - (current-buffer) - (get-buffer-create "*eww*"))) - (eww-setup-buffer) - ;; Check whether the domain only uses "Highly Restricted" Unicode - ;; IDNA characters. If not, transform to punycode to indicate tha= t - ;; there may be funny business going on. - (let ((parsed (url-generic-parse-url url))) - (when (url-host parsed) - (unless (puny-highly-restrictive-domain-p (url-host parsed)) - (setf (url-host parsed) (puny-encode-domain (url-host parsed= ))))) - ;; When the URL is on the form "http://a/../../../g", chop off a= ll - ;; the leading "/.."s. - (when (url-filename parsed) - (while (string-match "\\`/[.][.]/" (url-filename parsed)) - (setf (url-filename parsed) (substring (url-filename parsed)= 3)))) - (setq url (url-recreate-url parsed))) - (plist-put eww-data :url url) - (plist-put eww-data :title "") - (eww-update-header-line-format) - (let ((inhibit-read-only t)) - (insert (format "Loading %s..." url)) - (goto-char (point-min))) - (url-retrieve url 'eww-render - (list url nil (current-buffer)))) + (let ((buffer (if (eq major-mode 'eww-mode) + (current-buffer) + (get-buffer-create "*eww*")))) + (funcall eww-display-buffer-function buffer) + (with-current-buffer buffer + (eww-setup-buffer) + ;; Check whether the domain only uses "Highly Restricted" Unic= ode + ;; IDNA characters. If not, transform to punycode to indicate= that + ;; there may be funny business going on. + (let* ((expanded (eww--dwim-expand-url url)) + (parsed (url-generic-parse-url expanded))) + (when (url-host parsed) + (unless (puny-highly-restrictive-domain-p (url-host parsed= )) + (setf (url-host parsed) (puny-encode-domain (url-host pa= rsed))))) + ;; When the URL is on the form "http://a/../../../g", chop o= ff all + ;; the leading "/.."s. + (when (url-filename parsed) + (while (string-match "\\`/[.][.]/" (url-filename parsed)) + (setf (url-filename parsed) (substring (url-filename par= sed) 3)))) + (setq url (url-recreate-url parsed))) + (plist-put eww-data :url url) + (plist-put eww-data :title "") + (eww-update-header-line-format) + (let ((inhibit-read-only t)) + (insert (format "Loading %s..." url)) + (goto-char (point-min))) + (url-retrieve url 'eww-render (list url nil buffer))))) =20 (defun eww--dwim-expand-url (url) (setq url (string-trim url)) --=20 2.17.1