From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Philip Kaludercic Newsgroups: gmane.emacs.bugs Subject: bug#58839: [Patch] Re: bug#58839: 29.0.50; project-kill-buffer fails when Eglot is running Date: Tue, 01 Nov 2022 18:44:44 +0000 Message-ID: <87bkpqecpv.fsf@posteo.net> References: <87sfj8umwb.fsf@posteo.net> <213f3549-de4e-25a7-5e27-d13893e557bc@yandex.ru> <87zgdfwkle.fsf@gmail.com> <8e31a89d-e35e-6dd0-a8e3-f0b9684c8bfa@yandex.ru> <87v8o3wgq1.fsf@gmail.com> <87ilk2x1si.fsf@gmail.com> <871qqq7l9p.fsf@posteo.net> <87eduqwekz.fsf@gmail.com> <87wn8invbx.fsf@posteo.net> <877d0iw8iq.fsf@gmail.com> <837d0hhlke.fsf@gnu.org> <46ff0065-5645-ef1e-2621-242fb6a73f98@yandex.ru> <87v8o0uxn5.fsf@gmail.com> <787a4362-7ff5-7dbb-9118-16e4bee5f328@yandex.ru> <87edunvhf2.fsf@gmail.com> <6d4d9e72-1bae-4d64-b7c1-c2b9c11e396f@yandex.ru> <87tu3jgdbv.fsf@posteo.net> <87h6zihq3q.fsf@posteo.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="2933"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , 58839@debbugs.gnu.org, manuel.uberti@inventati.org, =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Nov 01 19:45:28 2022 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 1opwGO-0000ZI-8V for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 01 Nov 2022 19:45:28 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1opwG2-0004mJ-Tk; Tue, 01 Nov 2022 14:45:06 -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 1opwFy-0004j6-Tf for bug-gnu-emacs@gnu.org; Tue, 01 Nov 2022 14:45:03 -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 1opwFy-0005AS-LV for bug-gnu-emacs@gnu.org; Tue, 01 Nov 2022 14:45:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1opwFy-0006Pf-5w for bug-gnu-emacs@gnu.org; Tue, 01 Nov 2022 14:45:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 01 Nov 2022 18:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58839 X-GNU-PR-Package: emacs Original-Received: via spool by 58839-submit@debbugs.gnu.org id=B58839.166732829724626 (code B ref 58839); Tue, 01 Nov 2022 18:45:02 +0000 Original-Received: (at 58839) by debbugs.gnu.org; 1 Nov 2022 18:44:57 +0000 Original-Received: from localhost ([127.0.0.1]:44240 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1opwFs-0006P7-Ud for submit@debbugs.gnu.org; Tue, 01 Nov 2022 14:44:57 -0400 Original-Received: from mout01.posteo.de ([185.67.36.65]:42093) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1opwFq-0006Ot-OD for 58839@debbugs.gnu.org; Tue, 01 Nov 2022 14:44:55 -0400 Original-Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id CD692240026 for <58839@debbugs.gnu.org>; Tue, 1 Nov 2022 19:44:46 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1667328288; bh=mEhE/62hKYoX/8kmrd60brjjblsL3yWmXLZnu4rCmac=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=PZBVW1udyIv9n3gnyuyGxU6xi2Eqnt93MgTrzPpSrO0ObpbPt3MMoAxanSAPIjDAF hU8rr9Y+Fquyu6VRHxOk7o4/cKXWrJIg1VL+WrbF5+6yGtHSMwA1hdOVwwG+r+n257 8xZJfHryfmlznmurLE1qMDQnyJCUlu6nOJIbUxxvyB9ePVhYhpptirLrpv8vPLYufl T2jAxuy3DDj1MTTyx89dGZePRbnxcDMfp3y1uiZxb7UZgWB0GdUjf65cM12YKG5w// OvhemhpiF3NKoH22+Lld/bOgGp3ajJszBaLJSlHL0kYb7AE5smwFp87XWd5shmyxkw C3baw0Tuv1sUQ== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4N1zTT2dnxz6tmf; Tue, 1 Nov 2022 19:44:45 +0100 (CET) In-Reply-To: (Dmitry Gutov's message of "Tue, 1 Nov 2022 17:26:26 +0200") Autocrypt: addr=philipk@posteo.net; prefer-encrypt=nopreference; keydata= mDMEYHHqUhYJKwYBBAHaRw8BAQdAp3GdmYJ6tm5McweY6dEvIYIiry+Oz9rU4MH6NHWK0Ee0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiQBBMWCAA4FiEEDM2H44ZoPt9Ms0eHtVrAHPRh1FwFAmBx6lICGwMFCwkIBwIGFQoJ CAsCBBYCAwECHgECF4AACgkQtVrAHPRh1FyTkgEAjlbGPxFchvMbxzAES3r8QLuZgCxeAXunM9gh io0ePtUBALVhh9G6wIoZhl0gUCbQpoN/UJHI08Gm1qDob5zDxnIHuDgEYHHqUhIKKwYBBAGXVQEF AQEHQNcRB+MUimTMqoxxMMUERpOR+Q4b1KgncDZkhrO2ql1tAwEIB4h4BBgWCAAgFiEEDM2H44Zo Pt9Ms0eHtVrAHPRh1FwFAmBx6lICGwwACgkQtVrAHPRh1Fw1JwD/Qo7kvtib8jy7puyWrSv0MeTS g8qIxgoRWJE/KKdkCLEA/jb9b9/g8nnX+UcwHf/4VfKsjExlnND3FrBviXUW6NcB 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: , Original-Sender: "bug-gnu-emacs" Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:246802 Archived-At: Dmitry Gutov writes: > On 01.11.2022 13:27, Philip Kaludercic wrote: > >> I am biased, but I believe that the language could even find more use in >> project.el, by having `project-buffers' just call `match-buffers' with a >> special `buffer-match-p' predicate. Here is a sketch of how that could >> look like (I haven't tested it yet): > > Sure, but only after we're ready to drop project.el support for Emacs > older than 29. The functionality can be provided using Compat[0], as is already done for a few core package that are distributed on GNU ELPA (ERC, python-mode). [0] https://elpa.gnu.org/packages/compat.html >> diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el >> index ac278edd40..b55c245368 100644 >> --- a/lisp/progmodes/project.el >> +++ b/lisp/progmodes/project.el >> @@ -352,15 +352,28 @@ project--remote-file-names >> (concat remote-id file)) >> local-files)))) >> +(defun project-includes-buffer-p (buffer dir) >> + "Return non-nil if the `default-directory' of BUFFER is below DIR." >> + (file-in-directory-p >> + (buffer-local-value 'default-directory buffer) >> + dir)) > > Not an optimal name, given that we have made project-buffers a generic > function, so that a custom project backend can define their own > buffer-listing strategy. And this one implies that matching by > default-directory is universal. Right, as I said this is just a sketch. But as the diff showed, I think any more specific implementation ought to extend the generic implementation, by using `cl-call-next-method' instead of `buffer-list'. >> +(defcustom project-buffer-conditions > > Why not keep considering unknown buffers as part of project by default? What are "unknown buffers"? > We'll just stop killing them on cleanup. > > Otherwise, we'll really need an extensible mechanism for major modes > all around the ecosystem to tag themselves as project-visible. Wouldn't a simple buffer local variable suffice? >> + '(and (or buffer-file-name >> + (derived-mode . compilation-mode) >> + (derived-mode . dired-mode) >> + (derived-mode . diff-mode) >> + (derived-mode . comint-mode) >> + (derived-mode . eshell-mode) >> + (derived-mode . change-log-mode)) >> + project-includes-buffer-p) >> + "A buffer predicate for matching what buffers belong to a project." >> + :type 'buffer-predicate) > > Let's not forget Xref, Occur, VC-Dir, Log-View. Maybe some others. This is my point, I think Jo=C3=A3o is right that this ought to be an enumeration of major modes that are related to projects. As this is a user option, users can add or remove whatever modes they disagree on and that behaviour would ideally be propagated to all projects.