From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Spencer Baugh Newsgroups: gmane.emacs.bugs Subject: bug#62974: 29.0.60; New buffers created with project-switch-to-buffer aren't in the project Date: Fri, 21 Apr 2023 12:25:49 -0400 Message-ID: References: <83ttxa4c3m.fsf@gnu.org> <1e68f5ff-63aa-4dc4-9a92-02f3e6d4641a@gutov.dev> <83pm7x4woq.fsf@gnu.org> <83a5z14f94.fsf@gnu.org> <87v8hpl6gt.fsf@catern.com> <06aff731-1196-5c27-b66d-01f79117283e@gutov.dev> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="27828"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: sbaugh@catern.com, Eli Zaretskii , 62974@debbugs.gnu.org To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Apr 21 19:03:16 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ppuAG-00070p-Sf for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 21 Apr 2023 19:03:16 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ppu9y-0000Gm-R5; Fri, 21 Apr 2023 13:02:58 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ppu9x-0000GN-Ge for bug-gnu-emacs@gnu.org; Fri, 21 Apr 2023 13:02:57 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ppu9x-0006Mn-85 for bug-gnu-emacs@gnu.org; Fri, 21 Apr 2023 13:02:57 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pptaE-0005T8-2h for bug-gnu-emacs@gnu.org; Fri, 21 Apr 2023 12:26:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Spencer Baugh Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 21 Apr 2023 16:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 62974 X-GNU-PR-Package: emacs Original-Received: via spool by 62974-submit@debbugs.gnu.org id=B62974.168209435621012 (code B ref 62974); Fri, 21 Apr 2023 16:26:02 +0000 Original-Received: (at 62974) by debbugs.gnu.org; 21 Apr 2023 16:25:56 +0000 Original-Received: from localhost ([127.0.0.1]:41048 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ppta8-0005Sp-Cg for submit@debbugs.gnu.org; Fri, 21 Apr 2023 12:25:56 -0400 Original-Received: from mxout1.mail.janestreet.com ([38.105.200.78]:56979) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ppta6-0005SW-LV for 62974@debbugs.gnu.org; Fri, 21 Apr 2023 12:25:55 -0400 In-Reply-To: <06aff731-1196-5c27-b66d-01f79117283e@gutov.dev> (Dmitry Gutov's message of "Fri, 21 Apr 2023 18:56:46 +0300") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:260405 Archived-At: Dmitry Gutov writes: > On 21/04/2023 16:17, sbaugh@catern.com wrote: >> Eli Zaretskii writes: >>>> From: Spencer Baugh >>>> Date: Fri, 21 Apr 2023 07:46:14 -0400 >>>> Cc: Dmitry Gutov,62974@debbugs.gnu.org >>>> >>>> But if it is in a subdirectory of the root, it also belongs to the >>>> project, doesn't it? Exactly like the buffer from which this command >>>> is invoked, whose default-directory was a subdirectory of the root. >>>> No? >>>> >>>> That's fine, I wouldn't want to change that behavior, the behavior I'd want to change is when invoking >>>> the command from a buffer which is not in a project, or by invoking it after C-x p p to switch projects. >>> The recipe you posted didn't include "C-x p p", though. >> My recipe was an example of "command from a buffer which is not in a >> project". Here's a recipe for the issue using C-x p p: >> 1. (setq project-switch-use-entire-map t) >> 2. Be in a buffer in project A >> 3. C-x p p b to switch to project B and select a buffer in project B >> 4. Type a buffer name which doesn't exist >> 5. The resulting buffer is in project A, not B > > Thanks. > > How does this look? > > diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el > index a18b918db62..94c7f8f547a 100644 > --- a/lisp/progmodes/project.el > +++ b/lisp/progmodes/project.el > @@ -1314,13 +1314,17 @@ project--read-project-buffer > (and (memq (cdr buffer) buffers) > (not > (project--buffer-check > - (cdr buffer) project-ignore-buffer-conditions)))))) > - (read-buffer > - "Switch to buffer: " > - (when (funcall predicate (cons other-name other-buffer)) > - other-name) > - nil > - predicate))) > + (cdr buffer) project-ignore-buffer-conditions))))) > + (buffer (read-buffer > + "Switch to buffer: " > + (when (funcall predicate (cons other-name other-buffer)) > + other-name) > + nil > + predicate))) > + (if (get-buffer buffer) > + buffer > + (let ((default-directory (project-root pr))) > + (get-buffer-create buffer))))) > > ;;;###autoload > (defun project-switch-to-buffer (buffer-or-name) That looks good and it fixes all the bug cases I mentioned. But what about the case where the old buffer was already in the project? 1. In a buffer visiting project-a/some/dir/file.el 2. C-x p b nonexisting-buffer RET Existing behavior, and possibly desirable behavior: 3. default-directory in new buffer: project-a/some/dir/ With your change: 3. default-directory in new buffer: project-a/