From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ivan Shmakov Newsgroups: gmane.emacs.bugs Subject: bug#18550: eww-history-browse may end up calling eww-restore-history in an arbitrary buffer Date: Wed, 24 Sep 2014 21:19:07 +0000 Message-ID: <87tx3wn2d0.fsf@violet.siamics.net> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1411594884 32344 80.91.229.3 (24 Sep 2014 21:41:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 24 Sep 2014 21:41:24 +0000 (UTC) To: 18550@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Sep 24 23:41:17 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 1XWuJ8-0004mZ-7A for geb-bug-gnu-emacs@m.gmane.org; Wed, 24 Sep 2014 23:41:06 +0200 Original-Received: from localhost ([::1]:35006 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XWuJ7-0008Q5-SZ for geb-bug-gnu-emacs@m.gmane.org; Wed, 24 Sep 2014 17:41:05 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35713) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XWuIz-0008Pm-RJ for bug-gnu-emacs@gnu.org; Wed, 24 Sep 2014 17:41:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XWuIv-0003kY-8W for bug-gnu-emacs@gnu.org; Wed, 24 Sep 2014 17:40:57 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:59530) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XWuIu-0003jw-Mb for bug-gnu-emacs@gnu.org; Wed, 24 Sep 2014 17:40:53 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1XWtym-0004Kh-M9 for bug-gnu-emacs@gnu.org; Wed, 24 Sep 2014 17:20:04 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ivan Shmakov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 24 Sep 2014 21:20:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 18550 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: submit@debbugs.gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.141159356216587 (code B ref -1); Wed, 24 Sep 2014 21:20:04 +0000 Original-Received: (at submit) by debbugs.gnu.org; 24 Sep 2014 21:19:22 +0000 Original-Received: from localhost ([127.0.0.1]:51082 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XWty4-0004JR-QG for submit@debbugs.gnu.org; Wed, 24 Sep 2014 17:19:21 -0400 Original-Received: from fely.am-1.org ([78.47.74.50]:34098) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XWty1-0004JH-V5 for submit@debbugs.gnu.org; Wed, 24 Sep 2014 17:19:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=siamics.net; s=a2013295; h=Content-Type:MIME-Version:Message-ID:Date:Sender:Subject:To:From; bh=ztNt6WG/zsPDICQ8sqbI1w++BSvn7MZ+dzszZjxzEdM=; b=CjE0ekarIaAfM8z/5ugDKnJu/TsrQYIYkpkDeaf6n9PdLCvqxzEJUxWsrqcIi0AHpS0yC3ofxqV0aSp0JN5tIFlRTAwJ5ajhUZFL74pIgaaMMul0n8qZtx98bhedpOjp9LJhHkTZHxPu0ZRKrcSagT4wUzNGI+nWQSrlykVOCtA=; Original-Received: from [2a02:2560:6d4:26ca::1:1d] (helo=violet.siamics.net) by fely.am-1.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1XWtxz-0007IU-Uf for submit@debbugs.gnu.org; Wed, 24 Sep 2014 21:19:16 +0000 Original-Received: from localhost ([::1] helo=violet.siamics.net) by violet.siamics.net with esmtps (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1XWtxs-0004N8-8X for submit@debbugs.gnu.org; Thu, 25 Sep 2014 04:19:08 +0700 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) 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:93704 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Package: emacs Severity: normal Shortly: go to *eww*, H, C-x 1, C-x b *foo* RET, C-x b RET, RET, =E2=80=93 the EWW history entry will be rendered in *foo*, /not/ *eww*. As of 0ee10aff098b, eww-history-browse uses quit-window to leave the history buffer, switching to the =E2=80=9Cnext=E2=80=9D buffer =E2=80= =93 as per (buffer-list), =E2=80=93 and calls eww-restore-history right there. While the user may generally be expected to use M-x eww-history (which makes the current *eww* buffer the =E2=80=9Cnext=E2=80=9D one), sel= ect an entry, and M-x eww-history-browse it, =E2=80=93 it=E2=80=99s also possible= for the user to switch buffers arbitrarily between the calls. This way, quit-window may select a completely unrelated buffer, and eww-restore-history will then call (erase-buffer) for it. (Naturally, that gets much worse if the buffer that the user choose to take a look at actually has some important data.) As for #16211, my suggestion would be to employ a separate buffer-local variable to track the current =E2=80=9Cbrowsing=E2=80=9D buff= er. In the patch MIMEd, I assume that it=E2=80=99s named eww-current-buffer (just like in the #16211 patch), although eww-browsing-buffer seems like a more appropriate name to me now. As suggested, the code behaves as before when the variable is nil. It may make sense to raise an error in that case instead, so to avoid possible corruption of an arbitrary buffer. PS. Beware of the loose line numbers in the diff. --=20 FSF associate member #7257 http://boycottsystemd.org/ =E2=80=A6 3013 B6A0= 230E 334A --=-=-= Content-Type: text/diff Content-Disposition: inline --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -1290,9 +1290,11 @@ defun eww-list-histories () (interactive) (when (null eww-history) (error "No eww-histories are defined")) - (let ((eww-history-trans eww-history)) + (let ((eww-history-trans eww-history) + (buffer (current-buffer))) (set-buffer (get-buffer-create "*eww history*")) (eww-history-mode) + (setq-local eww-current-buffer buffer) (let ((inhibit-read-only t) (domain-length 0) (title-length 0) @@ -1302,6 +1304,9 @@ defun eww-history-browse () (unless history (error "No history on the current line")) - (quit-window) + (let ((buffer eww-current-buffer)) + (quit-window) + (when buffer + (switch-to-buffer buffer))) (eww-restore-history history))) (defvar eww-history-mode-map --=-=-=--