From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.bugs Subject: bug#20489: 25.0.50; next-error-find-buffer chooses non-current buffer without good reason Date: Wed, 28 Feb 2018 23:17:25 +0200 Organization: LINKOV.NET Message-ID: <87zi3s7r16.fsf@mail.linkov.net> References: <86wq0q602w.fsf@yandex.ru> <877ev36pmr.fsf@mail.linkov.net> <87sha1nbjy.fsf@mail.linkov.net> <23fd061a-9b83-742a-6083-6d2f090b8f22@yandex.ru> <81d36dbe-f563-187a-ec16-df4b051ae204@yandex.ru> <87efl6smxb.fsf@mail.linkov.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1519854265 22918 195.159.176.226 (28 Feb 2018 21:44:25 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 28 Feb 2018 21:44:25 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) Cc: 20489@debbugs.gnu.org To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Feb 28 22:44:21 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 1er9WN-0005ZO-T5 for geb-bug-gnu-emacs@m.gmane.org; Wed, 28 Feb 2018 22:44:20 +0100 Original-Received: from localhost ([::1]:47196 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9YQ-0003zH-6f for geb-bug-gnu-emacs@m.gmane.org; Wed, 28 Feb 2018 16:46:26 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52987) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1er9Y7-0003tt-Nf for bug-gnu-emacs@gnu.org; Wed, 28 Feb 2018 16:46:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1er9Y2-0007Hs-HB for bug-gnu-emacs@gnu.org; Wed, 28 Feb 2018 16:46:07 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:58283) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1er9Y2-0007H7-9I for bug-gnu-emacs@gnu.org; Wed, 28 Feb 2018 16:46:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1er9Y1-0007Gd-Uw for bug-gnu-emacs@gnu.org; Wed, 28 Feb 2018 16:46:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 28 Feb 2018 21:46:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 20489 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 20489-submit@debbugs.gnu.org id=B20489.151985433627876 (code B ref 20489); Wed, 28 Feb 2018 21:46:01 +0000 Original-Received: (at 20489) by debbugs.gnu.org; 28 Feb 2018 21:45:36 +0000 Original-Received: from localhost ([127.0.0.1]:37941 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1er9Xc-0007FY-41 for submit@debbugs.gnu.org; Wed, 28 Feb 2018 16:45:36 -0500 Original-Received: from sub3.mail.dreamhost.com ([69.163.253.7]:38331 helo=homiemail-a15.g.dreamhost.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1er9Xa-0007FQ-7p for 20489@debbugs.gnu.org; Wed, 28 Feb 2018 16:45:34 -0500 Original-Received: from homiemail-a15.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a15.g.dreamhost.com (Postfix) with ESMTP id AF0CA76C069; Wed, 28 Feb 2018 13:45:33 -0800 (PST) Original-Received: from localhost.linkov.net (m91-129-98-215.cust.tele2.ee [91.129.98.215]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by homiemail-a15.g.dreamhost.com (Postfix) with ESMTPSA id CA82176C065; Wed, 28 Feb 2018 13:45:32 -0800 (PST) In-Reply-To: (Dmitry Gutov's message of "Wed, 28 Feb 2018 04:13:54 +0200") 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:143769 Archived-At: > Anyway, I've fixed the current problem (see below), so this is a matter of > opinion. If you still consider this feature to be important, I think > ideally we'd abstract it away behind a new -function variable as well. Please clarify what do you have in mind. In what place in code such function could be called? > This way, someone would also be able to implement window-local navigation > relationship instead of buffer-local (you've mentioned this option before). Window-local navigation could be implemented by something like below. But maybe window-local specific code in next-error and next-error-internal could be abstracted away in a function that you proposed above? diff --git a/lisp/simple.el b/lisp/simple.el index edcb73c..c0da57d 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -174,6 +174,8 @@ next-error-find-buffer-function "Function called to find a `next-error' capable buffer." :type '(choice (const :tag "Single next-error capable buffer on selected frame" next-error-buffer-on-selected-frame) + (const :tag "Previous next-error capable buffer on selected window" + next-error-buffer-on-selected-window) (const :tag "No default" ignore) (function :tag "Other function")) :group 'next-error @@ -195,6 +197,12 @@ next-error-buffer-on-selected-frame (if (eq (length window-buffers) 1) (car window-buffers)))) +(defun next-error-buffer-on-selected-window (&optional _avoid-current + _extra-test-inclusive + _extra-test-exclusive) + "Return the previous next-error buffer used in the selected window." + (window-parameter nil 'next-error-buffer)) + (defun next-error-find-buffer (&optional avoid-current extra-test-inclusive extra-test-exclusive) @@ -285,6 +293,9 @@ next-error ;; Override possible change of next-error-last-buffer in next-error-function (setq next-error-last-buffer buffer) (setq-default next-error-last-buffer buffer) + (when (eq next-error-find-buffer-function + 'next-error-buffer-on-selected-window) + (set-window-parameter nil 'next-error-buffer buffer)) (when next-error-recenter (recenter next-error-recenter)) (message "%s error from %s" @@ -306,6 +317,9 @@ next-error-internal ;; Override possible change of next-error-last-buffer in next-error-function (setq next-error-last-buffer buffer) (setq-default next-error-last-buffer buffer) + (when (eq next-error-find-buffer-function + 'next-error-buffer-on-selected-window) + (set-window-parameter nil 'next-error-buffer buffer)) (when next-error-recenter (recenter next-error-recenter)) (message "Current error from %s" next-error-last-buffer)