From unknown Tue Jun 17 20:31:56 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#55426 <55426@debbugs.gnu.org> To: bug#55426 <55426@debbugs.gnu.org> Subject: Status: [PATCH] Add option to kill a shell buffer when the process ends Reply-To: bug#55426 <55426@debbugs.gnu.org> Date: Wed, 18 Jun 2025 03:31:56 +0000 retitle 55426 [PATCH] Add option to kill a shell buffer when the process en= ds reassign 55426 emacs submitter 55426 Philip Kaludercic severity 55426 normal tag 55426 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Sun May 15 04:14:09 2022 Received: (at submit) by debbugs.gnu.org; 15 May 2022 08:14:09 +0000 Received: from localhost ([127.0.0.1]:48486 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nq9OD-0000by-E6 for submit@debbugs.gnu.org; Sun, 15 May 2022 04:14:09 -0400 Received: from lists.gnu.org ([209.51.188.17]:44864) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nq9OB-0000br-Il for submit@debbugs.gnu.org; Sun, 15 May 2022 04:14:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39378) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nq9OB-0001yg-AA for bug-gnu-emacs@gnu.org; Sun, 15 May 2022 04:14:07 -0400 Received: from mout02.posteo.de ([185.67.36.66]:54443) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nq9O5-0004mc-Rr for bug-gnu-emacs@gnu.org; Sun, 15 May 2022 04:14:05 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id D8F97240107 for ; Sun, 15 May 2022 10:13:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1652602435; bh=xdsXnsM67VUK2IXCtZQuHSwR0Ta7NfCSmGbwHX6MwMU=; h=From:To:Subject:Autocrypt:Date:From; b=JtLMxM2g5ORBxiOsnuGVwJOBKAs+bVEBzTr6N1vPid8NilQM5B8JIgFC3UN+eemHh +pe7I8KoH4abKXTYAV2rSVIWXEVtIMQePIl8e1Qet9eCHfOnvZDDYdXZfA0J3RJ7n/ 8+9fIeG/7cMTTOfYJhhd3rL5W77gxbA+As3X3aKYyn/RGEFiiGYdXNQoDFpcL14Rpx zxCPuYqBtWd2NcJ9RTejm1e+uaTDwQcZyv0/mcOnGR5m04pvd50I9HtnggPH6Ntr9X UnPrGTo6Wo9GSgrh2nBPKfTnlphFxfbQ4OYOW3EbQaVQ6LA+hrV7JRGuxMCt7kgw5t wioliYoCrqTFg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4L1FX31z31z6tmJ for ; Sun, 15 May 2022 10:13:54 +0200 (CEST) From: Philip Kaludercic To: bug-gnu-emacs@gnu.org Subject: [PATCH] Add option to kill a shell buffer when the process ends 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 Date: Sun, 15 May 2022 08:13:49 +0000 Message-ID: <87czgfdxhe.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=185.67.36.66; envelope-from=philipk@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --=-=-= Content-Type: text/plain Tags: patch The below patch adds an option that has a *shell* buffer automatically killed when a shell process terminates. I find this useful, because it helps to avoid re-activating old shell buffers in the wrong `default-directory'. Eshell has a "similar" behaviour (setting aside that it doesn't have an inferior process), but term doesn't. If this patch is merged, perhaps something similar for term could be done too?` In GNU Emacs 29.0.50 (build 12, x86_64-pc-linux-gnu, GTK+ Version 2.24.33, cairo version 1.16.0) of 2022-05-11 built on icterid Repository revision: 474241f356c638bfd8d4eecb7138e3af76a8c036 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12011000 System Description: Debian GNU/Linux 11 (bullseye) Configured using: 'configure --with-tree-sitter' --=-=-= Content-Type: text/patch Content-Disposition: attachment; filename=0001-Add-option-to-kill-a-shell-buffer-when-the-process-e.patch >From 21962d1e55db25c3e31a7efc722f91667bcd2319 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Sun, 15 May 2022 02:09:46 +0200 Subject: [PATCH] Add option to kill a shell buffer when the process ends * shell.el (shell-kill-buffer-on-quit): Add new option. (shell): Respect `shell-kill-buffer-on-quit'. --- lisp/shell.el | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lisp/shell.el b/lisp/shell.el index 47887433d9..d7d0c487a0 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -331,6 +331,12 @@ shell-has-auto-cd :group 'shell-directories :version "28.1") +(defcustom shell-kill-buffer-on-quit t + "Kill shell buffer after the process terminates." + :type 'boolean + :group 'shell + :version "29.1") + (defvar shell-mode-map (let ((map (make-sparse-keymap))) (define-key map "\C-c\C-f" 'shell-forward-command) @@ -818,6 +824,16 @@ shell (with-temp-buffer (insert-file-contents startfile) (buffer-string))))))) + (when shell-kill-buffer-on-quit + (let* ((buffer (current-buffer)) + (sentinel (process-sentinel (get-buffer-process buffer)))) + (set-process-sentinel + (get-buffer-process (current-buffer)) + (lambda (proc event) + (unless (buffer-live-p proc) + (kill-buffer buffer)) + (when sentinel + (funcall sentinel proc event)))))) buffer) ;;; Directory tracking -- 2.30.2 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun May 15 04:30:41 2022 Received: (at 55426) by debbugs.gnu.org; 15 May 2022 08:30:41 +0000 Received: from localhost ([127.0.0.1]:48513 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nq9eD-000120-5c for submit@debbugs.gnu.org; Sun, 15 May 2022 04:30:41 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48352) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nq9eB-00011n-I1 for 55426@debbugs.gnu.org; Sun, 15 May 2022 04:30:39 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:44676) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nq9e5-0000Dn-Kn; Sun, 15 May 2022 04:30:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=pgJ1wDhEd5dKhK3dcqb92ZCeXXjCGOxd52mH6bGSjFE=; b=VOAqtOWaE/tk PYDYqsrfQA7rz/N9/Mqs3owcWnaCBh5p+KUC2OU5xJem+SyWYZzgu2RJTL81h3iyfCmczY8/82ITW WwT9LR0Kkh4sQTGNTUew2Yu71G3hk+7PVOkMAUIJRbP2UAVs2g9CUVZ11NfMAbhEkYNFKFX7/Eu4b KI68/VzmHldqpYmhuxcDl/R1k+idcJuIdgBjiNOINonYNFvEMp1PFaHDWGt1DsYSJVR/EhOaxwDWa uHVHJhWlHXDeXM21HDCidaqrulLiiIM7Ok7hJKyAO38mem3qOs/HOsGcUBHBbDVXSzHmpn9K6O5dH ugFnh1ifkuehoZOgaaEX9w==; Received: from [87.69.77.57] (port=2044 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nq9e3-0005WJ-ID; Sun, 15 May 2022 04:30:33 -0400 Date: Sun, 15 May 2022 11:30:17 +0300 Message-Id: <83pmkfjizq.fsf@gnu.org> From: Eli Zaretskii To: Philip Kaludercic In-Reply-To: <87czgfdxhe.fsf@posteo.net> (message from Philip Kaludercic on Sun, 15 May 2022 08:13:49 +0000) Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 55426 Cc: 55426@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Philip Kaludercic > Date: Sun, 15 May 2022 08:13:49 +0000 > > The below patch adds an option that has a *shell* buffer automatically > killed when a shell process terminates. I find this useful, because it > helps to avoid re-activating old shell buffers in the wrong > `default-directory'. Thanks, a few comments below. > +(defcustom shell-kill-buffer-on-quit t I think a better name is shell-kill-shell-buffer-on-exit. > + "Kill shell buffer after the process terminates." "Kill the shell buffer when the shell process terminates." > + (when shell-kill-buffer-on-quit > + (let* ((buffer (current-buffer)) > + (sentinel (process-sentinel (get-buffer-process buffer)))) > + (set-process-sentinel > + (get-buffer-process (current-buffer)) > + (lambda (proc event) > + (unless (buffer-live-p proc) > + (kill-buffer buffer)) > + (when sentinel > + (funcall sentinel proc event)))))) Shouldn't we call the previous sentinel before killing the buffer? That sentinel could not be prepared to the buffer being dead. Also, can you modify the code to call get-buffer-process only once? > If this patch is merged, perhaps something similar for term could be > done too? I'm not sure, but I don't use term frequently enough for my opinion to matter. From debbugs-submit-bounces@debbugs.gnu.org Sun May 15 05:49:47 2022 Received: (at 55426) by debbugs.gnu.org; 15 May 2022 09:49:47 +0000 Received: from localhost ([127.0.0.1]:48569 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqAsl-0002x8-Ci for submit@debbugs.gnu.org; Sun, 15 May 2022 05:49:47 -0400 Received: from eggs.gnu.org ([209.51.188.92]:59078) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqAsk-0002ww-4C for 55426@debbugs.gnu.org; Sun, 15 May 2022 05:49:46 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:45188) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nqAse-00056U-OC; Sun, 15 May 2022 05:49:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=md+0k+hlfFbkO6MlkMJmpz1+T1a7NSp/noGjEhVHF2c=; b=Ok1pdS6vk8/T qqx0n0QRB608Lk0Nk5zFiplR2ke8P/GosMqoqVy0dzPSZgWrt0GWGWiPFLt/Fp0yprOnEZFLXAZO1 3Kl4V4xjCxm6jW1aytBJwAonFyPwUEm3JfGPq/99B5Vl5tv9ujcVdeKHnIFCTA3WF9yynsVmZ0Pzl cArpikAxcFOrihd/8eH9HuIfPTRm6jY7aNKTuYoVe8tsKKH8J1dg+wfbdWUB6LwrOn0KvCVH6V14t +pwREU54P8fMqKh2E4bzYjdaf6oauw631zXuzP2CDs6bFPfSVD8gG6bI8ejlr6F6En+OqcOIzP30b MK0U19k+rwLsWyXm0WQsJg==; Received: from [87.69.77.57] (port=2886 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nqAsd-0003F2-Hm; Sun, 15 May 2022 05:49:40 -0400 Date: Sun, 15 May 2022 12:49:25 +0300 Message-Id: <83o7zzjfbu.fsf@gnu.org> From: Eli Zaretskii To: philipk@posteo.net In-Reply-To: <83pmkfjizq.fsf@gnu.org> (message from Eli Zaretskii on Sun, 15 May 2022 11:30:17 +0300) Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> <83pmkfjizq.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 55426 Cc: 55426@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 55426@debbugs.gnu.org > Date: Sun, 15 May 2022 11:30:17 +0300 > From: Eli Zaretskii > > > From: Philip Kaludercic > > Date: Sun, 15 May 2022 08:13:49 +0000 > > > > The below patch adds an option that has a *shell* buffer automatically > > killed when a shell process terminates. I find this useful, because it > > helps to avoid re-activating old shell buffers in the wrong > > `default-directory'. > > Thanks, a few comments below. Oh, and one more: I think this change warrants a NEWS entry. From debbugs-submit-bounces@debbugs.gnu.org Sun May 15 07:06:53 2022 Received: (at 55426) by debbugs.gnu.org; 15 May 2022 11:06:53 +0000 Received: from localhost ([127.0.0.1]:48606 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqC5M-00050e-MF for submit@debbugs.gnu.org; Sun, 15 May 2022 07:06:53 -0400 Received: from mout01.posteo.de ([185.67.36.65]:46353) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqC5K-00050P-Gl for 55426@debbugs.gnu.org; Sun, 15 May 2022 07:06:51 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 778EA240026 for <55426@debbugs.gnu.org>; Sun, 15 May 2022 13:06:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1652612804; bh=YEp5Meg3Y1i5DFStnqUx65eX7Nazj3vVzR9GRUd22CA=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=bTMNn7JDiTh0iLGwGYB5c0q8m/IamD8SBLMk2XDrNVq2CPDmgTOn4me9ApFEvMbNS Crr7FLuNSSzKBwGUnqgBoGynC8aANHxV5WneKEum4ablCHiSxAsNe4a5ApaJzr1FED NpcjRrumiok9sHNvQV0AYEXz96vDW2dpNCmdnAn8psFZn8KEQjZ53hZt1m3cZgbzxc ZWOSF2OcJTwXo+X37Vya6SRE+ZCu+pPPSRfVnxw7EBpUtg/3BqNa0zrBahX6TLSOyF 2VbzWOtue2/KrHwDPeaM8h9FSe7zkE0UX0Ws6QAAVwz/g+26VxS/vRb4vUEZWkqH3D NB8olOqIFt1fw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4L1KMR4szrz6tmB; Sun, 15 May 2022 13:06:43 +0200 (CEST) From: Philip Kaludercic To: Eli Zaretskii Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> <83pmkfjizq.fsf@gnu.org> 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 Date: Sun, 15 May 2022 11:06:42 +0000 In-Reply-To: <83pmkfjizq.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 15 May 2022 11:30:17 +0300") Message-ID: <877d6ndph9.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 55426 Cc: 55426@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Thank you for your comments, here is an improved version: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Add-option-to-kill-a-shell-buffer-when-the-process-e.patch >From 7337f6862cdb6954498282b9c9d22f6b2cd3457d Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Sun, 15 May 2022 02:09:46 +0200 Subject: [PATCH] Add option to kill a shell buffer when the process ends * shell.el (shell-kill-buffer-on-quit): Add new option (bug#55426). (shell): Respect 'shell-kill-buffer-on-quit'. * NEWS: Mention 'shell-kill-buffer-on-quit'. --- etc/NEWS | 7 +++++++ lisp/shell.el | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index a0164bbf3f..9ef83189dd 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1544,6 +1544,13 @@ values passed as a single token, such as '-oVALUE' or 'eshell-eval-using-options' macro. See "Defining new built-in commands" in the "(eshell) Built-ins" node of the Eshell manual. +** Shell + +--- +*** New user option 'shell-kill-buffer-on-exit' +Enabling this open will automatically kill a *shell* buffer as soon as +the shell session terminates. + ** Calc +++ diff --git a/lisp/shell.el b/lisp/shell.el index 47887433d9..7000d38255 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -331,6 +331,12 @@ shell-has-auto-cd :group 'shell-directories :version "28.1") +(defcustom shell-kill-buffer-on-exit t + "Kill a shell buffer after the shell process terminates." + :type 'boolean + :group 'shell + :version "29.1") + (defvar shell-mode-map (let ((map (make-sparse-keymap))) (define-key map "\C-c\C-f" 'shell-forward-command) @@ -818,6 +824,17 @@ shell (with-temp-buffer (insert-file-contents startfile) (buffer-string))))))) + (when shell-kill-buffer-on-exit + (let* ((buffer (current-buffer)) + (process (get-buffer-process buffer)) + (sentinel (process-sentinel process))) + (set-process-sentinel + process + (lambda (proc event) + (when sentinel + (funcall sentinel proc event)) + (unless (buffer-live-p proc) + (kill-buffer buffer)))))) buffer) ;;; Directory tracking -- 2.30.2 --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> From: Philip Kaludercic >> Date: Sun, 15 May 2022 08:13:49 +0000 >> >> The below patch adds an option that has a *shell* buffer automatically >> killed when a shell process terminates. I find this useful, because it >> helps to avoid re-activating old shell buffers in the wrong >> `default-directory'. > > Thanks, a few comments below. > >> +(defcustom shell-kill-buffer-on-quit t > > I think a better name is shell-kill-shell-buffer-on-exit. > >> + "Kill shell buffer after the process terminates." > > "Kill the shell buffer when the shell process terminates." ^ I replaced this with "a", to avoid confusion as to what specific shell buffer is meant (not only *shell*, but any shell-mode buffer). >> + (when shell-kill-buffer-on-quit >> + (let* ((buffer (current-buffer)) >> + (sentinel (process-sentinel (get-buffer-process buffer)))) >> + (set-process-sentinel >> + (get-buffer-process (current-buffer)) >> + (lambda (proc event) >> + (unless (buffer-live-p proc) >> + (kill-buffer buffer)) >> + (when sentinel >> + (funcall sentinel proc event)))))) > > Shouldn't we call the previous sentinel before killing the buffer? > That sentinel could not be prepared to the buffer being dead. > > Also, can you modify the code to call get-buffer-process only once? > >> If this patch is merged, perhaps something similar for term could be >> done too? > > I'm not sure, but I don't use term frequently enough for my opinion to > matter. Eli Zaretskii writes: >> Cc: 55426@debbugs.gnu.org >> Date: Sun, 15 May 2022 11:30:17 +0300 >> From: Eli Zaretskii >> >> > From: Philip Kaludercic >> > Date: Sun, 15 May 2022 08:13:49 +0000 >> > >> > The below patch adds an option that has a *shell* buffer automatically >> > killed when a shell process terminates. I find this useful, because it >> > helps to avoid re-activating old shell buffers in the wrong >> > `default-directory'. >> >> Thanks, a few comments below. > > Oh, and one more: I think this change warrants a NEWS entry. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun May 15 07:14:24 2022 Received: (at 55426) by debbugs.gnu.org; 15 May 2022 11:14:24 +0000 Received: from localhost ([127.0.0.1]:48612 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqCCe-0005Bf-Jp for submit@debbugs.gnu.org; Sun, 15 May 2022 07:14:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41658) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqCCb-0005BP-12 for 55426@debbugs.gnu.org; Sun, 15 May 2022 07:14:23 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:45982) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nqCCV-0006tM-QV; Sun, 15 May 2022 07:14:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=PZSK3ygI3pEBpIlRG2RsZckAjtgvWVxndCp4U1s1Oso=; b=rfohATlWiBkb WE5PMkvr1kPp0QmM68/w3GLLxXEVB1IJ3KGUfKKn33hCBbcpnUQgV3eyvmSRZHw8939MdteAKndH2 HVnH4guE7gJocvpv4Z4JOlgd3f4Fk7gqk4czY7V5kRBCXIMgaxYYVyTowOjUiTHwBMWOngrrQI79Y IiOSjPGQeByMjAOqXBAJi+IdtjhRK5q2BVRa5neKTZZjKkwGbCdQdnBDZzvovkFGfqJRWcPm9WC4Y 0T1ZwnkPDTiQikmA3L1vnk6zIoDCYvP1PqA4RP4ICTlCmAEnQaYRMzG/zUXhCJPnyJTvuwHnIR6WC 8YFk2dg+Z5/qLADWnA8tXw==; Received: from [87.69.77.57] (port=4076 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nqCCV-00042U-1B; Sun, 15 May 2022 07:14:15 -0400 Date: Sun, 15 May 2022 14:14:00 +0300 Message-Id: <83lev3jbev.fsf@gnu.org> From: Eli Zaretskii To: Philip Kaludercic In-Reply-To: <877d6ndph9.fsf@posteo.net> (message from Philip Kaludercic on Sun, 15 May 2022 11:06:42 +0000) Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> <83pmkfjizq.fsf@gnu.org> <877d6ndph9.fsf@posteo.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 55426 Cc: 55426@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Philip Kaludercic > Cc: 55426@debbugs.gnu.org > Date: Sun, 15 May 2022 11:06:42 +0000 > > Thank you for your comments, here is an improved version: Thanks. One nit: > +** Shell > + > +--- > +*** New user option 'shell-kill-buffer-on-exit' > +Enabling this open will automatically kill a *shell* buffer as soon as ^^^^ Seems like a leftover from a different version? From debbugs-submit-bounces@debbugs.gnu.org Sun May 15 07:19:43 2022 Received: (at 55426) by debbugs.gnu.org; 15 May 2022 11:19:44 +0000 Received: from localhost ([127.0.0.1]:48626 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqCHn-0005Ke-O9 for submit@debbugs.gnu.org; Sun, 15 May 2022 07:19:43 -0400 Received: from mail-out.m-online.net ([212.18.0.9]:59759) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqCHl-0005KU-FG for 55426@debbugs.gnu.org; Sun, 15 May 2022 07:19:42 -0400 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4L1KfN1w4fz1qyJC; Sun, 15 May 2022 13:19:40 +0200 (CEST) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4L1KfM6xGDz1qqkB; Sun, 15 May 2022 13:19:39 +0200 (CEST) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id 8L0CyWZRvbXw; Sun, 15 May 2022 13:19:39 +0200 (CEST) X-Auth-Info: seqWommtvGT7iZHW8rrZrRoQQDgndc78hCayNuTGdTE++2Atr3zMN+PhsBgm7TTr Received: from igel.home (ppp-46-244-185-206.dynamic.mnet-online.de [46.244.185.206]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Sun, 15 May 2022 13:19:39 +0200 (CEST) Received: by igel.home (Postfix, from userid 1000) id AEE512C39CD; Sun, 15 May 2022 13:19:38 +0200 (CEST) From: Andreas Schwab To: Philip Kaludercic Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> <83pmkfjizq.fsf@gnu.org> <877d6ndph9.fsf@posteo.net> X-Yow: I want to dress you up as TALLULAH BANKHEAD and cover you with VASELINE and WHEAT THINS.. Date: Sun, 15 May 2022 13:19:38 +0200 In-Reply-To: <877d6ndph9.fsf@posteo.net> (Philip Kaludercic's message of "Sun, 15 May 2022 11:06:42 +0000") Message-ID: <87a6bjjb5h.fsf@igel.home> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 55426 Cc: Eli Zaretskii , 55426@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.5 (-) On Mai 15 2022, Philip Kaludercic wrote: > diff --git a/lisp/shell.el b/lisp/shell.el > index 47887433d9..7000d38255 100644 > --- a/lisp/shell.el > +++ b/lisp/shell.el > @@ -331,6 +331,12 @@ shell-has-auto-cd > :group 'shell-directories > :version "28.1") > > +(defcustom shell-kill-buffer-on-exit t That should default to nil. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." From debbugs-submit-bounces@debbugs.gnu.org Sun May 15 07:52:06 2022 Received: (at 55426) by debbugs.gnu.org; 15 May 2022 11:52:06 +0000 Received: from localhost ([127.0.0.1]:48672 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqCn4-0008N2-JC for submit@debbugs.gnu.org; Sun, 15 May 2022 07:52:05 -0400 Received: from mout02.posteo.de ([185.67.36.66]:47123) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nqCn2-0008MG-Og for 55426@debbugs.gnu.org; Sun, 15 May 2022 07:52:01 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id A4912240109 for <55426@debbugs.gnu.org>; Sun, 15 May 2022 13:51:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1652615514; bh=zBfS2awUf6WGPolts68O+995PSeWEibLI+UGj2svVWk=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=fgVSRJVEigZHhqPrMFjppMZld/BFoTBD4cXWdrM0rNPj8ZKKz4utd9+f4LsnUpKTX kUAyCgqtH7w69lVECHzQrMurugHi/SUT6Mn7+KFw41wurdzKxNFZiNA0ko5FG+NlYI WL09x+kWGrvcIPOik0EFnxpW9YTgdF0OQCpNGEQzxXkPLeoUTBG6SvYCAiPnBSg9iv 73nKZuImzcYfneDSEqVPeasogAiGi2yWUQ8VCM+jdnQovxkY6YQJUuPvm9KPteeUiH pK4gwhhmJ/2jdoRZSf0dddYmmslVTsJQjbxF92wXVU644bhRWAHAZ+r6Cqbzqm9bXv h+nJAZjPU/qqA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4L1LMY6Hbhz9rxD; Sun, 15 May 2022 13:51:53 +0200 (CEST) From: Philip Kaludercic To: Eli Zaretskii Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> <83pmkfjizq.fsf@gnu.org> <877d6ndph9.fsf@posteo.net> <83lev3jbev.fsf@gnu.org> 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 Date: Sun, 15 May 2022 11:51:53 +0000 In-Reply-To: <83lev3jbev.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 15 May 2022 14:14:00 +0300") Message-ID: <87mtfjc8ti.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 55426 Cc: 55426@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Fixed both here: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Add-option-to-kill-a-shell-buffer-when-the-process-e.patch >From 6db6675c1f931b0eed6606227ecd4919a7052afd Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Sun, 15 May 2022 02:09:46 +0200 Subject: [PATCH] Add option to kill a shell buffer when the process ends * shell.el (shell-kill-buffer-on-quit): Add new option (bug#55426). (shell): Respect 'shell-kill-buffer-on-quit'. * NEWS: Mention 'shell-kill-buffer-on-quit'. --- etc/NEWS | 7 +++++++ lisp/shell.el | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index a0164bbf3f..27772dc54e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1544,6 +1544,13 @@ values passed as a single token, such as '-oVALUE' or 'eshell-eval-using-options' macro. See "Defining new built-in commands" in the "(eshell) Built-ins" node of the Eshell manual. +** Shell + +--- +*** New user option 'shell-kill-buffer-on-exit' +Enabling this will automatically kill a *shell* buffer as soon as the +shell session terminates. + ** Calc +++ diff --git a/lisp/shell.el b/lisp/shell.el index 47887433d9..4e65fccf9e 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -331,6 +331,12 @@ shell-has-auto-cd :group 'shell-directories :version "28.1") +(defcustom shell-kill-buffer-on-exit nil + "Kill a shell buffer after the shell process terminates." + :type 'boolean + :group 'shell + :version "29.1") + (defvar shell-mode-map (let ((map (make-sparse-keymap))) (define-key map "\C-c\C-f" 'shell-forward-command) @@ -818,6 +824,17 @@ shell (with-temp-buffer (insert-file-contents startfile) (buffer-string))))))) + (when shell-kill-buffer-on-exit + (let* ((buffer (current-buffer)) + (process (get-buffer-process buffer)) + (sentinel (process-sentinel process))) + (set-process-sentinel + process + (lambda (proc event) + (when sentinel + (funcall sentinel proc event)) + (unless (buffer-live-p proc) + (kill-buffer buffer)))))) buffer) ;;; Directory tracking -- 2.30.2 --=-=-= Content-Type: text/plain Should it push it? Eli Zaretskii writes: >> From: Philip Kaludercic >> Cc: 55426@debbugs.gnu.org >> Date: Sun, 15 May 2022 11:06:42 +0000 >> >> Thank you for your comments, here is an improved version: > > Thanks. One nit: > >> +** Shell >> + >> +--- >> +*** New user option 'shell-kill-buffer-on-exit' >> +Enabling this open will automatically kill a *shell* buffer as soon as > ^^^^ > Seems like a leftover from a different version? Andreas Schwab writes: > On Mai 15 2022, Philip Kaludercic wrote: > >> diff --git a/lisp/shell.el b/lisp/shell.el >> index 47887433d9..7000d38255 100644 >> --- a/lisp/shell.el >> +++ b/lisp/shell.el >> @@ -331,6 +331,12 @@ shell-has-auto-cd >> :group 'shell-directories >> :version "28.1") >> >> +(defcustom shell-kill-buffer-on-exit t > > That should default to nil. --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Wed May 18 19:13:15 2022 Received: (at 55426) by debbugs.gnu.org; 18 May 2022 23:13:15 +0000 Received: from localhost ([127.0.0.1]:33898 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nrSqx-0007rh-GQ for submit@debbugs.gnu.org; Wed, 18 May 2022 19:13:15 -0400 Received: from mout02.posteo.de ([185.67.36.66]:45035) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nrSqv-0007rS-7y for 55426@debbugs.gnu.org; Wed, 18 May 2022 19:13:13 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 459B6240107 for <55426@debbugs.gnu.org>; Thu, 19 May 2022 01:13:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1652915587; bh=L2LBq2CcmyTb3IKeKb60lzFxmGQu7tuR9dnEJpKLN8Q=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=FDnCn8HjD8R3dveUhXaQJngBZA4jpvZEWYA13sHvPZJHZ3DeL8oOyMt3X6v/MgWK3 K7je2kYSk+1HwPmw1hO32vCMrlMXelta/yoij62Q6++CPGqpYimJZRVoeFGrRgl3SW xauC8ZwFr1/NjdXkyC8KtzSVlEzChORPZBJJrnf+YrRj88N/ln8xjC22hL1ISc0tEu JzWCemTvOFxEIlSene6EnSFdtZXJaoxra/Ndpfa7V5PLzV9oj+cw9ef8/SI1+c6lNf aEjgrDDD4cmna+ebh2TwEsMkJi3ipQFIFIWwbQ1jP4yAGlkEfxlgWE6oA765ySBJfv 4WHHZfB4S5e9w== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4L3TLB2Crxz6tm4; Thu, 19 May 2022 01:13:06 +0200 (CEST) From: Philip Kaludercic To: Eli Zaretskii Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> <83pmkfjizq.fsf@gnu.org> <877d6ndph9.fsf@posteo.net> <83lev3jbev.fsf@gnu.org> <87mtfjc8ti.fsf@posteo.net> 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 Date: Wed, 18 May 2022 23:13:05 +0000 In-Reply-To: <87mtfjc8ti.fsf@posteo.net> (Philip Kaludercic's message of "Sun, 15 May 2022 11:51:53 +0000") Message-ID: <871qwqv3i6.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 55426 Cc: 55426@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) So is the patch fine? May I push it? Philip Kaludercic writes: > Fixed both here: > >>>From 6db6675c1f931b0eed6606227ecd4919a7052afd Mon Sep 17 00:00:00 2001 > From: Philip Kaludercic > Date: Sun, 15 May 2022 02:09:46 +0200 > Subject: [PATCH] Add option to kill a shell buffer when the process ends > > * shell.el (shell-kill-buffer-on-quit): Add new option (bug#55426). > (shell): Respect 'shell-kill-buffer-on-quit'. > * NEWS: Mention 'shell-kill-buffer-on-quit'. > --- > etc/NEWS | 7 +++++++ > lisp/shell.el | 17 +++++++++++++++++ > 2 files changed, 24 insertions(+) > > diff --git a/etc/NEWS b/etc/NEWS > index a0164bbf3f..27772dc54e 100644 > --- a/etc/NEWS > +++ b/etc/NEWS > @@ -1544,6 +1544,13 @@ values passed as a single token, such as '-oVALUE' or > 'eshell-eval-using-options' macro. See "Defining new built-in > commands" in the "(eshell) Built-ins" node of the Eshell manual. > > +** Shell > + > +--- > +*** New user option 'shell-kill-buffer-on-exit' > +Enabling this will automatically kill a *shell* buffer as soon as the > +shell session terminates. > + > ** Calc > > +++ > diff --git a/lisp/shell.el b/lisp/shell.el > index 47887433d9..4e65fccf9e 100644 > --- a/lisp/shell.el > +++ b/lisp/shell.el > @@ -331,6 +331,12 @@ shell-has-auto-cd > :group 'shell-directories > :version "28.1") > > +(defcustom shell-kill-buffer-on-exit nil > + "Kill a shell buffer after the shell process terminates." > + :type 'boolean > + :group 'shell > + :version "29.1") > + > (defvar shell-mode-map > (let ((map (make-sparse-keymap))) > (define-key map "\C-c\C-f" 'shell-forward-command) > @@ -818,6 +824,17 @@ shell > (with-temp-buffer > (insert-file-contents startfile) > (buffer-string))))))) > + (when shell-kill-buffer-on-exit > + (let* ((buffer (current-buffer)) > + (process (get-buffer-process buffer)) > + (sentinel (process-sentinel process))) > + (set-process-sentinel > + process > + (lambda (proc event) > + (when sentinel > + (funcall sentinel proc event)) > + (unless (buffer-live-p proc) > + (kill-buffer buffer)))))) > buffer) > > ;;; Directory tracking From debbugs-submit-bounces@debbugs.gnu.org Thu May 19 02:51:57 2022 Received: (at 55426) by debbugs.gnu.org; 19 May 2022 06:51:57 +0000 Received: from localhost ([127.0.0.1]:34279 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nra0q-0002mA-UU for submit@debbugs.gnu.org; Thu, 19 May 2022 02:51:57 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48834) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nra0o-0002lw-KD for 55426@debbugs.gnu.org; Thu, 19 May 2022 02:51:55 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52044) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nra0j-0001YE-9l; Thu, 19 May 2022 02:51:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=W4pjffTKx6lmKpKu7hywhxJKO/xkUuL1T0SwcokjlBE=; b=cJ6AvCvJJ/uw zcxJv8fZ64fX669zJqN5yTaOkiZRrELYGf2vSjdoLaJk/3GYJ1knj+7g9P1pUG2LJRtpqVmmqikhN xrQvXwcGJTHkQ9L5iM0WT/xCxOYsQPghcW4aIG0d9MliEsVAyuBujglFr1AVexBRPzCV+Iduok9qr bORv7xaGiRFXfgoI4rSwq7xhcJMbbivF37J642oSo896sCOYAtChzbz2aZ1+k6yNQ7fMYUE5Txrl9 AEJNFcE7PmpqCmtXpcTskDtIW7fHl+ztr7IBpQnPAb/TNJHaOjZWDMkX93snWGSslP8v8SmjSjVRQ +SzJmUJv555yi4SVNkzBNw==; Received: from [87.69.77.57] (port=2855 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nra0i-0005ab-SL; Thu, 19 May 2022 02:51:49 -0400 Date: Thu, 19 May 2022 09:51:44 +0300 Message-Id: <83bkvudngf.fsf@gnu.org> From: Eli Zaretskii To: Philip Kaludercic In-Reply-To: <87mtfjc8ti.fsf@posteo.net> (message from Philip Kaludercic on Sun, 15 May 2022 11:51:53 +0000) Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> <83pmkfjizq.fsf@gnu.org> <877d6ndph9.fsf@posteo.net> <83lev3jbev.fsf@gnu.org> <87mtfjc8ti.fsf@posteo.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 55426 Cc: 55426@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Philip Kaludercic > Cc: 55426@debbugs.gnu.org > Date: Sun, 15 May 2022 11:51:53 +0000 > > +*** New user option 'shell-kill-buffer-on-exit' This should end with a period, to be a full sentence. Otherwise, LGTM, thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu May 19 02:53:14 2022 Received: (at 55426) by debbugs.gnu.org; 19 May 2022 06:53:14 +0000 Received: from localhost ([127.0.0.1]:34284 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nra26-0002oQ-7h for submit@debbugs.gnu.org; Thu, 19 May 2022 02:53:14 -0400 Received: from eggs.gnu.org ([209.51.188.92]:49328) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nra23-0002o9-LM for 55426@debbugs.gnu.org; Thu, 19 May 2022 02:53:12 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52062) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nra1y-0001q6-Bx; Thu, 19 May 2022 02:53:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=c+fcFybuurRP1T/p7lrERH098+H0HJbcSou3UFv9/gY=; b=EwE6pAY6wke3 XsX9PMxgs2ZNuzY8BDStNj+VWhjayza4ZI4VbcbF6m6aJI4Q2HmX9H06JCzm/bqx4DhZEEDY06ZB6 Btpq2zqyXw+gSoTDnPYKe8quZkGU+TiA8mzenmBCrIMXEeoZEvLWyYS376dLGvF44dJjJisbJqpHB 4QLUYSlibLN+IHXKePEC6uMhcG8XIbP36EOfuZwtTe8eiVKzBnHyXhhnkW25GYMOkZOoA2X2PYIp5 tfw2K3C4IW9TBqFtBW5etkRQGgLEmmHZKDc5iM1FRACXjDJPnMFq0Un0IZrSqHE6qwfrf62vmLwQQ y/HtA6r3Tk9MshxtwVCrnw==; Received: from [87.69.77.57] (port=2933 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nra1w-0005fF-U5; Thu, 19 May 2022 02:53:05 -0400 Date: Thu, 19 May 2022 09:53:01 +0300 Message-Id: <83a6bednea.fsf@gnu.org> From: Eli Zaretskii To: Philip Kaludercic In-Reply-To: <871qwqv3i6.fsf@posteo.net> (message from Philip Kaludercic on Wed, 18 May 2022 23:13:05 +0000) Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> <83pmkfjizq.fsf@gnu.org> <877d6ndph9.fsf@posteo.net> <83lev3jbev.fsf@gnu.org> <87mtfjc8ti.fsf@posteo.net> <871qwqv3i6.fsf@posteo.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 55426 Cc: 55426@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Philip Kaludercic > Cc: 55426@debbugs.gnu.org > Date: Wed, 18 May 2022 23:13:05 +0000 > > > So is the patch fine? May I push it? Sorry for the delay. I've posted a response just now with a small correction; feel free to install after fixing that nit. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Fri May 20 04:24:01 2022 Received: (at 55426-done) by debbugs.gnu.org; 20 May 2022 08:24:01 +0000 Received: from localhost ([127.0.0.1]:37496 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nrxvV-0003nq-Iv for submit@debbugs.gnu.org; Fri, 20 May 2022 04:24:01 -0400 Received: from mout01.posteo.de ([185.67.36.65]:54057) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nrxvT-0003nF-5X for 55426-done@debbugs.gnu.org; Fri, 20 May 2022 04:24:00 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 468DB240026 for <55426-done@debbugs.gnu.org>; Fri, 20 May 2022 10:23:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1653035033; bh=wO3ZLUbQmrmq5BjdEPf9COO77KpI/B7yXV+IagV2+OQ=; h=From:To:Cc:Subject:Autocrypt:Date:From; b=Q084TGEWihXryNcuuv9RPNC2M6v80SNawFxnOvixmd56rGg8Ju7oKvvdNyCTKK9z5 9FvwoUCoiUkOpuFLagJ/S6E8c9zukwyIQA1Obp2McbRbJCuuze5Hz/t6i6ZYTTGRdn AUXThFiYVEEaBx83kiSVg/2psHI0TU01E6FmqOFbAtLAA4UnMw152/Ose/Apxd2x/d pyYZ0/j+yul2KtgtDMBV5XfXnexEkrXiy8yqv6abyjWEbN3IG6Zz14HIyVTinPw4Ah UGjAa61+K28IaKLSKeAT82tYajhcxiiu6lR6w97weo5wudsd08bOrqdcRKORjDmQAb ikyrWq9cBtToA== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4L4KWD3Pm9z9rxb; Fri, 20 May 2022 10:23:52 +0200 (CEST) From: Philip Kaludercic To: Eli Zaretskii Subject: Re: bug#55426: [PATCH] Add option to kill a shell buffer when the process ends References: <87czgfdxhe.fsf@posteo.net> <83pmkfjizq.fsf@gnu.org> <877d6ndph9.fsf@posteo.net> <83lev3jbev.fsf@gnu.org> <87mtfjc8ti.fsf@posteo.net> <83bkvudngf.fsf@gnu.org> X-Hashcash: 1:20:220520:eliz@gnu.org::Yw2TwLvODXO/vD0T:000003aRc X-Hashcash: 1:20:220520:55426@debbugs.gnu.org::d38XF79x43D4aP1P:00000000000000000000000000000000000000004o1L 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 Date: Fri, 20 May 2022 08:23:51 +0000 In-Reply-To: <83bkvudngf.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 19 May 2022 09:51:44 +0300") Message-ID: <87mtfc1ujs.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 55426-done Cc: 55426-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Eli Zaretskii writes: >> From: Philip Kaludercic >> Cc: 55426@debbugs.gnu.org >> Date: Sun, 15 May 2022 11:51:53 +0000 >> >> +*** New user option 'shell-kill-buffer-on-exit' > > This should end with a period, to be a full sentence. > > Otherwise, LGTM, thanks. Eli Zaretskii writes: >> From: Philip Kaludercic >> Cc: 55426@debbugs.gnu.org >> Date: Wed, 18 May 2022 23:13:05 +0000 >> >> >> So is the patch fine? May I push it? > > Sorry for the delay. I've posted a response just now with a small > correction; feel free to install after fixing that nit. Done. > Thanks. Thank you for your help. From unknown Tue Jun 17 20:31:56 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 17 Jun 2022 11:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator