From unknown Fri Sep 05 07:33:23 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#51377 <51377@debbugs.gnu.org> To: bug#51377 <51377@debbugs.gnu.org> Subject: Status: Automatically exit server when it has no remaining clients Reply-To: bug#51377 <51377@debbugs.gnu.org> Date: Fri, 05 Sep 2025 14:33:23 +0000 retitle 51377 Automatically exit server when it has no remaining clients reassign 51377 emacs submitter 51377 Gregory Heytings severity 51377 wishlist tag 51377 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 11:15:11 2021 Received: (at submit) by debbugs.gnu.org; 24 Oct 2021 15:15:12 +0000 Received: from localhost ([127.0.0.1]:40570 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mefDL-0005vF-KD for submit@debbugs.gnu.org; Sun, 24 Oct 2021 11:15:11 -0400 Received: from lists.gnu.org ([209.51.188.17]:37674) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mefDK-0005v6-Cv for submit@debbugs.gnu.org; Sun, 24 Oct 2021 11:15:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34208) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mefDK-0008HF-5x for bug-gnu-emacs@gnu.org; Sun, 24 Oct 2021 11:15:10 -0400 Received: from heytings.org ([95.142.160.155]:36892) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mefDG-0007Fz-VQ for bug-gnu-emacs@gnu.org; Sun, 24 Oct 2021 11:15:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635088505; bh=QlTdFVWNDqe751BiXX/eA4JgepmDDFM7UZ7PA0K1Aik=; h=Date:From:To:Subject:Message-ID:From; b=xECKVFtC+E7BIw3h3+WC2NedxWcpMgorkTr44sSS88RvSWKu7QWWw2pe5VcvmBdoM MQI5KTjJf45F84vXpUqwAgkJUVwMt+xAFGh/rHJNmNmsSRI3p8039egscsFWW7HIvj Hesn57OGI4mwOz6VoWZKaj5ff4W4YUT4TdvALBElod66aZ2C5EevHmHUyeaZei2H7f zqdQiacyWMsXisoEN0cHpYiKwuIkQSa0SXGHyGSf8NsxYNz27qwT2S2Lgv/IStxZEQ YKAFbfF/uj0SnSAHt4OFrs16QlRYROpKdPksHBkV+rQQaxGvE/+rPfvrgwHRJ/M+o3 9kM3ns2BfuXPw== Date: Sun, 24 Oct 2021 15:15:04 +0000 From: Gregory Heytings To: bug-gnu-emacs@gnu.org Subject: Automatically exit server when it has no remaining clients Message-ID: <90ba36dccc00d6f0d62d@heytings.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1EBbQmLk5p" Received-SPF: pass client-ip=95.142.160.155; envelope-from=gregory@heytings.org; helo=heytings.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 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 (--) --1EBbQmLk5p Content-Type: text/plain; format=flowed; charset=us-ascii As discussed in https://lists.gnu.org/archive/html/emacs-devel/2021-10/msg01465.html , an option to stop the Emacs server when it has no clients anymore (which is similar to what some other apps do, for example browsers) would be useful. Patch attached. --1EBbQmLk5p Content-Type: text/x-diff; name=Option-to-stop-emacs-server-when-it-has-no-clients-a.patch Content-Transfer-Encoding: base64 Content-ID: <90ba36dcccfc61ca04a8@heytings.org> Content-Description: Content-Disposition: attachment; filename=Option-to-stop-emacs-server-when-it-has-no-clients-a.patch RnJvbSBkMzg2MGQ2Y2U5YzBkNTViNDE2YjI5NGNmZjZiZTY3ZjczNGQ5Yjg0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBTdW4sIDI0IE9j dCAyMDIxIDE1OjA4OjMxICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIE9wdGlv biB0byBzdG9wIGVtYWNzIHNlcnZlciB3aGVuIGl0IGhhcyBubyBjbGllbnRz IGFueW1vcmUuDQoNCiogbGlzcC9zZXJ2ZXIuZWwgKHNlcnZlci1zdG9wLXdo ZW4tbm8tY2xpZW50cyk6IE5ldyBmdW5jdGlvbi4NCiogZG9jL2VtYWNzL21p c2MudGV4aSAoRW1hY3MgU2VydmVyKTogRG9jdW1lbnQgdGhlIG5ldyBmdW5j dGlvbiwNCmFuZCBtZW50aW9uIHRoYXQgYW4gRW1hY3Mgc2VydmVyIGNhbiBi ZSBzdGFydGVkIHdpdGggZW1hY3NjbGllbnQuDQotLS0NCiBkb2MvZW1hY3Mv bWlzYy50ZXhpIHwgMTAgKysrKysrKysrKw0KIGxpc3Avc2VydmVyLmVsICAg ICAgfCAgOSArKysrKysrKysNCiAyIGZpbGVzIGNoYW5nZWQsIDE5IGluc2Vy dGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9taXNjLnRleGkg Yi9kb2MvZW1hY3MvbWlzYy50ZXhpDQppbmRleCA4MTBkMjEyMDIxLi5hNjg2 MzI4MzFhIDEwMDY0NA0KLS0tIGEvZG9jL2VtYWNzL21pc2MudGV4aQ0KKysr IGIvZG9jL2VtYWNzL21pc2MudGV4aQ0KQEAgLTE2OTcsNiArMTY5NywxMSBA QCBFbWFjcyBTZXJ2ZXINCiBjYWxscyBAY29kZXtzZXJ2ZXItc3RhcnR9IGFm dGVyIGluaXRpYWxpemF0aW9uIGFuZCBkb2VzIG5vdCBvcGVuIGFuDQogaW5p dGlhbCBmcmFtZS4gIEl0IHRoZW4gd2FpdHMgZm9yIGVkaXQgcmVxdWVzdHMg ZnJvbSBjbGllbnRzLg0KIA0KK0BpdGVtDQorUnVuIHRoZSBjb21tYW5kIEBj b2Rle2VtYWNzY2xpZW50fSB3aXRoIHRoZSBAc2FtcHstLWFsdGVybmF0ZS1l ZGl0b3I9IiJ9DQorY29tbWFuZC1saW5lIG9wdGlvbi4gIFRoaXMgc3RhcnRz IGFuIEVtYWNzIGRhZW1vbiBvbmx5IGlmIG5vIEVtYWNzIGRhZW1vbg0KK2lz IGFscmVhZHkgcnVubmluZy4NCisNCiBAY2luZGV4IHN5c3RlbWQgdW5pdCBm aWxlDQogQGl0ZW0NCiBJZiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gdXNlcyBA Y29tbWFuZHtzeXN0ZW1kfSB0byBtYW5hZ2Ugc3RhcnR1cCwNCkBAIC0xNzYz LDYgKzE3NjgsMTEgQEAgRW1hY3MgU2VydmVyDQogICBlbWFjcyAtLWRhZW1v bj1mb28NCiBAZW5kIGV4YW1wbGUNCiANCitAZmluZGV4IHNlcnZlci1zdG9w LXdoZW4tbm8tY2xpZW50cw0KKyAgSWYgeW91IHdhbnQgdG8gYXV0b21hdGlj YWxseSBzdG9wIHRoZSBFbWFjcyBzZXJ2ZXIgd2hlbiBpdCBoYXMgbm8NCitj bGllbnRzIGFueW1vcmUsIHB1dCB0aGUgZXhwcmVzc2lvbiBAY29kZXsoc2Vy dmVyLXN0b3Atd2hlbi1uby1jbGllbnRzKX0NCitpbiB5b3VyIGluaXQgZmls ZSAoQHB4cmVme0luaXQgRmlsZX0pLg0KKw0KIEBmaW5kZXggc2VydmVyLWV2 YWwtYXQNCiAgIElmIHlvdSBoYXZlIGRlZmluZWQgYSBzZXJ2ZXIgYnkgYSB1 bmlxdWUgc2VydmVyIG5hbWUsIGl0IGlzIHBvc3NpYmxlDQogdG8gY29ubmVj dCB0byB0aGUgc2VydmVyIGZyb20gYW5vdGhlciBFbWFjcyBpbnN0YW5jZSBh bmQgZXZhbHVhdGUgTGlzcA0KZGlmZiAtLWdpdCBhL2xpc3Avc2VydmVyLmVs IGIvbGlzcC9zZXJ2ZXIuZWwNCmluZGV4IDYzNTlhNzYxOTkuLmZiMWNiODg2 ZTEgMTAwNjQ0DQotLS0gYS9saXNwL3NlcnZlci5lbA0KKysrIGIvbGlzcC9z ZXJ2ZXIuZWwNCkBAIC0xNzQ2LDYgKzE3NDYsMTUgQEAgc2VydmVyLXNhdmUt YnVmZmVycy1raWxsLXRlcm1pbmFsDQogCSAgICAgKHNlcnZlci1kZWxldGUt Y2xpZW50IHByb2MpKSkNCiAJICAodCAoZXJyb3IgIkludmFsaWQgY2xpZW50 IGZyYW1lIikpKSkpDQogDQorOzs7IyMjYXV0b2xvYWQNCisoZGVmdW4gc2Vy dmVyLXN0b3Atd2hlbi1uby1jbGllbnRzICgpDQorICAiQXV0b21hdGljYWxs eSBzdG9wIHNlcnZlciB3aGVuIGl0IGhhcyBubyByZW1haW5pbmcgY2xpZW50 cy4NCitUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIHB1dCBpbiBpbml0 IGZpbGVzLiINCisgICh3aGVuIChkYWVtb25wKQ0KKyAgICAocnVuLXdpdGgt dGltZXIgMTAgMiAobGFtYmRhICgpDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAodW5sZXNzIChjZHIgKGZyYW1lLWxpc3QpKQ0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc2F2ZS1idWZmZXJzLWtpbGwtZW1hY3MpKSkp KSkNCisNCiAoZGVmaW5lLWtleSBjdGwteC1tYXAgIiMiICdzZXJ2ZXItZWRp dCkNCiANCiAoZGVmdW4gc2VydmVyLXVubG9hZC1mdW5jdGlvbiAoKQ0KLS0g DQoyLjMzLjANCg0K --1EBbQmLk5p-- From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 12:03:22 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 16:03:22 +0000 Received: from localhost ([127.0.0.1]:40603 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mefxy-00078N-9J for submit@debbugs.gnu.org; Sun, 24 Oct 2021 12:03:22 -0400 Received: from mail-pf1-f177.google.com ([209.85.210.177]:46897) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mefxw-000789-Ao for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 12:03:20 -0400 Received: by mail-pf1-f177.google.com with SMTP id x66so8354776pfx.13 for <51377@debbugs.gnu.org>; Sun, 24 Oct 2021 09:03:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:references:from:message-id:date:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=uCuoIftyzzvL3bV/AwWt2TZaI5K+zTeLPFaxoJAdJsg=; b=qEeipSMQWOyuMCOIXEL9bIrgWQmqflzuATq/AmIMunUqezeon4Pjz7FasbcBZmiSpL aJm7r0iDP+4i1qXPZWGTDUy9drjgdAz9d4JegRCxmAwHhaF2sOq0Ro3Qv/vGoSKwTFoX OgiE5wOLiuqe0sCcEx6yHFwKjK+jYuXMQWmgkYYmhdeopG2utOHYkhX4fNjTxI2zvneW 6d053ErwM8gxqhCJSzxq2YeNmkx/NUnkd84Dcf3YRwKny5PNliMDIQ9N6+ZSBsuUE4wB lqOUSgMgUY6vVvqImt4TbJQupOB7DBcjmlaLorI/dKDLooHta794x2LP/8TyhoPt59V2 zYEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:references:from:message-id:date :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=uCuoIftyzzvL3bV/AwWt2TZaI5K+zTeLPFaxoJAdJsg=; b=FtvmxvD6V2ebBf3yez9dnY7BaBcUbt6REwBMYtPh0wEc/PbvdDMqHNq+Wi6lSERR0C fwhKRA98+6QMH490CsCqaQVKuPsMKEThjP97OpoMyfhajdbiErAOzcfV3FJu2t/KSHrE 1RwNhKcMUOWReirydfpn9m8trDUpJPUTtzED8ga8bOY1xgH7deaA8rPQFf6TSESrbUnN Cf+nv6jujk8tYQDHAsRymX/+7bA52dP1R7Nx/Q3afzKpfhyHbwqnS/7GklCiCmj3YbQz 42D3lMSjRv1OS/n+s/NWnAF9vcsNWv8U6oAegx7/jibLRCBOJek4IRR3kkO0qoeAXkFz q6BQ== X-Gm-Message-State: AOAM533MIxHAk/bNgCCbtilbfjFEjINFMjweg8m4Y9dmxIGxScLY4qi/ M9HSbUYRkrfZBfytvUS7rA46XJ/TIHI= X-Google-Smtp-Source: ABdhPJyGjg7fb+PxbOnnxSFFFfyqQl2BQvxLuNnvXVvXAkZ3lS6iEEMTaFcRwvH7mMC8fKe0wlnxgQ== X-Received: by 2002:a05:6a00:acc:b0:44b:ff29:621b with SMTP id c12-20020a056a000acc00b0044bff29621bmr12656506pfl.32.1635091393277; Sun, 24 Oct 2021 09:03:13 -0700 (PDT) Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id s30sm19400446pfg.17.2021.10.24.09.03.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 24 Oct 2021 09:03:12 -0700 (PDT) Subject: Re: bug#51377: Automatically exit server when it has no remaining clients To: Gregory Heytings , 51377@debbugs.gnu.org References: <90ba36dccc00d6f0d62d@heytings.org> From: Jim Porter Message-ID: <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> Date: Sun, 24 Oct 2021 09:03:13 -0700 MIME-Version: 1.0 In-Reply-To: <90ba36dccc00d6f0d62d@heytings.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 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.0 (-) On 10/24/2021 8:15 AM, Gregory Heytings wrote: > > As discussed in > https://lists.gnu.org/archive/html/emacs-devel/2021-10/msg01465.html , > an option to stop the Emacs server when it has no clients anymore (which > is similar to what some other apps do, for example browsers) would be > useful. > > Patch attached. I'm not sure I understand the patch; `save-buffers-kill-emacs' prompts the user to save buffers before killing Emacs, but how would that work in a daemon when there are no frames remaining? I use a slightly-modified form of the following in my configuration, which I'm working on hooking up to a flag to remember if the daemon was started lazily: -------------------------------------------------- (defun save-buffers-kill-terminal (&optional arg) "Offer to save each buffer, then kill the current connection. If the current frame has no client or is the last client of a daemon, kill Emacs itself using `save-buffers-kill-emacs'. With prefix ARG, silently save all file-visiting buffers, then kill. If emacsclient was started with a list of filenames to edit, then only these files will be asked to be saved." (interactive "P") ;; Only kill the terminal if the current frame is a client. However, if ;; Emacs was started as a daemon and this is the last client, kill Emacs ;; entirely. (if-let ((this-client (frame-parameter nil 'client)) ((not (and (daemonp) (equal server-clients (list this-client)))))) (server-save-buffers-kill-terminal arg) (save-buffers-kill-emacs arg))) (defun server-kill-emacs-query-function () "Ask before exiting Emacs if it has live clients. If Emacs was started as a daemon and the only live client is the current frame's client, don't bother asking." (let ((ignored-client (and (daemonp) (frame-parameter nil 'client)))) (or (not (seq-some (lambda (client) (unless (eq ignored-client client) (seq-some #'buffer-live-p (process-get client 'buffers)))) server-clients)) (yes-or-no-p "This Emacs session has clients; exit anyway? ")))) -------------------------------------------------- From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 12:14:32 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 16:14:32 +0000 Received: from localhost ([127.0.0.1]:40608 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1meg8m-0007Nh-DL for submit@debbugs.gnu.org; Sun, 24 Oct 2021 12:14:32 -0400 Received: from mail-pg1-f170.google.com ([209.85.215.170]:33687) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1meg8k-0007NU-Pi for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 12:14:31 -0400 Received: by mail-pg1-f170.google.com with SMTP id r28so4142525pga.0 for <51377@debbugs.gnu.org>; Sun, 24 Oct 2021 09:14:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:from:to:references:message-id:date:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=yGRy/rK0YH7YpoK8/MB4Mq15mmd35o7RSq4IyeH93hk=; b=ajOJ5PDADrQJTMsn1J1VLsLTSPN3h0wiWzOwgeOo2hHv8ZN5CuoNsWSVS3gpBdLeMY pdGaRKz+zC4RIvIVUWx4pfhbogSgfgLjeGX37USe4V2bmnuaXF53U/wm1k1x4Qg8HWD8 LzOU6NF+14S5a81USkfJaI03PUt7PNmbkhr9oEDvAYuwN+MU0UX185g/TnvjVZ6LwTqR gESZGtS99RNuaVvBfxMs3/FE76eKyFaGt2PYBPS26UmMaL/+PFO251G5ZhFIi5EaZ4pY Mm73jMkLrtt8Vl4eonCcoeiUfGHb5Xy7e5+QY1uS4kfIkvcYWIH8QiVtuiBi31i5/loS 40zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:from:to:references:message-id:date :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=yGRy/rK0YH7YpoK8/MB4Mq15mmd35o7RSq4IyeH93hk=; b=IjFSE8qQ1huk751xjflpcCZWvYx6xP4fnkH6kXhDJAoPkcIw0fYqCIWHHPa/ehQX5m J41MZbGfCfEebyV6M3S4xWmX7Qz2AauTjE5B3KbeVUFTNzlPOst5YFTaKR1C6ZYbahAh Likgh6XTM3oWrANx1dw1R5U4yI4d+sG6DFs8nzHLLSdMaWfU37Ka1ps2vW2bXVmfkIiq i7RDy7xLlb2Awm0NsR8sJyxVqFpcbUi0O85UJnyuEFpDUdTeVcEiGbwjSOrPzrciIePA Lf/z07E5ehHrlSWzDucQjzYxfk7SwOmfmYLS2OMoHkgoHlsoIKIfKdu8hBfgDXyz7Rdw G48w== X-Gm-Message-State: AOAM531lWaeasOpcmvGPqed9+WJWINR4rLUluuIohF0/0FQ/Y507sBCe yWNG+w39rcoY5YdOSmlOosgI+McuD+8= X-Google-Smtp-Source: ABdhPJzVkiAG6TM+oTjHKf7WSfNue1Q3e7mep4XLmN5KMehvvC9G8dcK2PLbyktkVBMgo92TtAi+Iw== X-Received: by 2002:a05:6a00:13a1:b0:44c:f60d:5fe6 with SMTP id t33-20020a056a0013a100b0044cf60d5fe6mr12894790pfg.48.1635092064961; Sun, 24 Oct 2021 09:14:24 -0700 (PDT) Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id q8sm17378811pfu.167.2021.10.24.09.14.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 24 Oct 2021 09:14:24 -0700 (PDT) Subject: Re: bug#51377: Automatically exit server when it has no remaining clients From: Jim Porter To: Gregory Heytings , 51377@debbugs.gnu.org References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> Message-ID: <3f5ce4b6-f396-168b-d87b-75ac7d01cf88@gmail.com> Date: Sun, 24 Oct 2021 09:14:25 -0700 MIME-Version: 1.0 In-Reply-To: <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 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.0 (-) On 10/24/2021 9:03 AM, Jim Porter wrote: > I use a slightly-modified form of the following in my configuration, > which I'm working on hooking up to a flag to remember if the daemon was > started lazily: [snip] Note: the code I posted doesn't handle `emacsclient -n' (I don't use that option, so it doesn't come up in my configuration), but it shouldn't be hard to handle that case once I have a real patch put together. From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 12:32:57 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 16:32:58 +0000 Received: from localhost ([127.0.0.1]:40626 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1megQb-0007r7-Ob for submit@debbugs.gnu.org; Sun, 24 Oct 2021 12:32:57 -0400 Received: from heytings.org ([95.142.160.155]:33200) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1megQa-0007qz-Cw for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 12:32:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635093175; bh=M99cjHoNxfSDe4/HBE2oEhLrNnEZ9D+/evhoeBHe7TM=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=Efldycg1d2qXzBXZ3lnSdYagjTbuQf004+pFb3ukwGpfdRVoC47m2iiK3sM66s74E LZbguyoqZ7lMlHgxGn4DjN+rh0aSctqxfR39djnIHqUaFqOGRup6hVgXtE1YIbXARr yLZT6ECL/LB4C5V+P+Ya6eCUmDiZqr3i6uH8OFk49Up9rzO5y64gAPz38TeMm/MSgM V1OPidtmH52Edsd2UwDruBCxZqGeO8IlUWRPt5dkZ4XYifp/cB+6i7HICK0BaqsbGH b8WUEuSd7GrVsyZhCR0DoLdDIjnstvo3AfJF6YbPDicvOeF0SsYxejy0dM2AH0jied LKHpIp+IWlReQ== Date: Sun, 24 Oct 2021 16:32:55 +0000 From: Gregory Heytings To: Jim Porter Subject: Re: bug#51377: Automatically exit server when it has no remaining clients In-Reply-To: <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> Message-ID: <90ba36dcccc2abc8dec1@heytings.org> References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) > > I'm not sure I understand the patch; `save-buffers-kill-emacs' prompts > the user to save buffers before killing Emacs, but how would that work > in a daemon when there are no frames remaining? > There is one (invisible) frame remaining: the daemon frame. And when there are no other frames (graphical or non-graphical) ones, there's nothing to save, save-buffer-kill-emacs just kills emacs. The patch just checks every two seconds if there are remaining frames (apart from the daemon one), and if not, it kills emacs. And it works with and without -n. From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 14:09:05 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 18:09:05 +0000 Received: from localhost ([127.0.0.1]:40776 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mehvd-0006H1-CN for submit@debbugs.gnu.org; Sun, 24 Oct 2021 14:09:05 -0400 Received: from mail-pl1-f180.google.com ([209.85.214.180]:44766) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mehva-0006GW-Bj for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 14:09:03 -0400 Received: by mail-pl1-f180.google.com with SMTP id t11so6335546plq.11 for <51377@debbugs.gnu.org>; Sun, 24 Oct 2021 11:09:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=idRMFJ+adBU/K0NZ3E8Cjs8TyqyBWrLgwCFCVl3X3Wg=; b=WWelIwUy3kY6H++iO10wEmcnIuY/wnFid6uIHaHCJTumkx7EwaZUW41FQg5Gr+yhmj qm3fRJGJXaz5KjpkAvWNuZGC+x4CFcLDB74By5BIjnAiRBgFadpknyiPr/PlcMatwR0v tEIYFTH50BjZoISXI0UC8bVjosLArk82pG8yOJRoXwACfj8Fh/OwA4TTNCkBZSg66m+2 LnGfAxWltTNXYXjtn2bjuuq/kxmS9S725C23HNt74bD0P2OcnK0FuElLRGbrwcxwKPOW CRaK0buz46VVxT7QHathRHDSgFmjY9RtJYXzaINcHX3tU9mW2TaVdUgKgMdjbKMCppJD X3WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=idRMFJ+adBU/K0NZ3E8Cjs8TyqyBWrLgwCFCVl3X3Wg=; b=IepLKtkF4JlXJcLY42DoSSd1M8eaKnbkyGbTjnUcCGUrXn/+m8GEBdniSc0NVbjNvu 3WGhEnFBjlie4wSQt85YPQj39zrb3wukCL/0dc0OLTsD6Huo+qqGobOv8uGOO/R3q1/G Sx0a7vDhpzBJX9PUCZV+Ostqyl55RjU+KSptsIOVQokqygjWChuIgAeXsu+Mu3qvNpeL zhk+x737XZdL0aFxbYC4a5bF60GsQ/VONc+DIT390on5Lx0dXwRm70Ntl102QJeFv8wq XT2kFzb/xgqzqZBz+KD/9tC++l2flvotQQ5weNlqOFT6AmnIXkbDHyDXK4WEoJr1/CGJ hAqA== X-Gm-Message-State: AOAM533tj2z5hEOR0BxD8/7dfGe9vj0YDqxb2cY2UYvE4F3ZAUGG6Jhq Xo/S88kyrzZuS5ur6XahOC2CAvqOs/g= X-Google-Smtp-Source: ABdhPJzVpCXT8ve/1zjccgDZ2ayqpZT2nnInswbcB7229hEIKYA4Rw0jBHFi14xUTtM/MguujUcgsQ== X-Received: by 2002:a17:90b:1d06:: with SMTP id on6mr29783679pjb.119.1635098936565; Sun, 24 Oct 2021 11:08:56 -0700 (PDT) Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id v18sm2629212pjn.55.2021.10.24.11.08.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 24 Oct 2021 11:08:56 -0700 (PDT) Subject: Re: bug#51377: Automatically exit server when it has no remaining clients To: Gregory Heytings References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> From: Jim Porter Message-ID: <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> Date: Sun, 24 Oct 2021 11:08:57 -0700 MIME-Version: 1.0 In-Reply-To: <90ba36dcccc2abc8dec1@heytings.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) On 10/24/2021 9:32 AM, Gregory Heytings wrote: >> I'm not sure I understand the patch; `save-buffers-kill-emacs' prompts >> the user to save buffers before killing Emacs, but how would that work >> in a daemon when there are no frames remaining? > > There is one (invisible) frame remaining: the daemon frame.  And when > there are no other frames (graphical or non-graphical) ones, there's > nothing to save, save-buffer-kill-emacs just kills emacs. I don't think this is true in general. The docstring for `server-save-buffers-kill-terminal' says: "If emacsclient was started with a list of filenames to edit, then only these files will be asked to be saved." As a result, some files with unsaved changes may still exist, so we'd want to prompt about those *before* the last frame is closed. To see this in action: $ emacs -Q --daemon $ emacsclient foo.txt C-x C-f bar.txt ;; Make some edits C-x C-c ;; Exits immediately without prompting about saving bar.txt If `save-buffers-kill-emacs' were called after that, the Emacs daemon would be killed, losing the edits to bar.txt. From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 14:43:11 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 18:43:11 +0000 Received: from localhost ([127.0.0.1]:40871 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1meiSd-00033N-Cp for submit@debbugs.gnu.org; Sun, 24 Oct 2021 14:43:11 -0400 Received: from heytings.org ([95.142.160.155]:33392) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1meiSb-00033D-0Y for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 14:43:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635100986; bh=boOlTXuJKUqPfEQgDkuOEvybdJa2HLpLaNKSEAV9pbI=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=qeFL3yzOAV1KmZYMeF09Wg50Iz2z0Y0d2QcuzrMBxgw7CakhQ509HVWAU5+j2htRA D5O/pmx+92d2j9OmL3tO9jmcAxyyy5UI2tTyqHHqDS/AjEQ0iYpK7Obokc6b2nUc9i sFQoGxk3sIV1/k14gKWn6LLIO/Cq5WpNFAL1kusgsI3/teZerwfzcBbzNHzCIAPd7h TKK9nB9WldJjfxpCar/1ZhTkrts3J4D4sSrEdRfWio5tPf/DwTQhysKIqvd25uyOAr hA1vRXYH5ky7jK6Xn7L3PxiDdb19laUu66zMnAbO6uq5wJD9Xl5uLitKtLKrQQoN7o l/e8Fivs1VNDQ== Date: Sun, 24 Oct 2021 18:43:06 +0000 From: Gregory Heytings To: Jim Porter Subject: Re: bug#51377: Automatically exit server when it has no remaining clients In-Reply-To: <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> Message-ID: <90ba36dcccdc40168c93@heytings.org> References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="VL4ixSaVsU" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) --VL4ixSaVsU Content-Type: text/plain; charset=us-ascii; format=flowed > > If `save-buffers-kill-emacs' were called after that, the Emacs daemon > would be killed, losing the edits to bar.txt. > Indeed, you are correct. Updated patch attached, which also takes care of running processes. --VL4ixSaVsU Content-Type: text/x-diff; name=Option-to-automatically-stop-Emacs-server.patch Content-Transfer-Encoding: base64 Content-ID: <90ba36dcccbda67c77ff@heytings.org> Content-Description: Content-Disposition: attachment; filename=Option-to-automatically-stop-Emacs-server.patch RnJvbSBiNjk5YzE2YmFjMzg5MjNlNDM5OTJlZGYyNzAzOWE1ZDliY2NhNGYx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBTdW4sIDI0IE9j dCAyMDIxIDE4OjQwOjM5ICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIE9wdGlv biB0byBhdXRvbWF0aWNhbGx5IHN0b3AgRW1hY3Mgc2VydmVyLg0KDQoqIGxp c3Avc2VydmVyLmVsIChzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5KTogTmV3 IGZ1bmN0aW9uLg0KKiBkb2MvZW1hY3MvbWlzYy50ZXhpIChFbWFjcyBTZXJ2 ZXIpOiBEb2N1bWVudCB0aGUgbmV3IGZ1bmN0aW9uLg0KQWxzbyBtZW50aW9u IHRoYXQgYW4gRW1hY3Mgc2VydmVyIGNhbiBiZSBzdGFydGVkIHdpdGggZW1h Y3NjbGllbnQuDQotLS0NCiBkb2MvZW1hY3MvbWlzYy50ZXhpIHwgMTEgKysr KysrKysrKysNCiBsaXNwL3NlcnZlci5lbCAgICAgIHwgMjMgKysrKysrKysr KysrKysrKysrKysrKysNCiAyIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlv bnMoKykNCg0KZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9taXNjLnRleGkgYi9k b2MvZW1hY3MvbWlzYy50ZXhpDQppbmRleCA1MTIzYTcxNmRjLi44OTNlNWYx ODQzIDEwMDY0NA0KLS0tIGEvZG9jL2VtYWNzL21pc2MudGV4aQ0KKysrIGIv ZG9jL2VtYWNzL21pc2MudGV4aQ0KQEAgLTE2OTcsNiArMTY5NywxMSBAQCBF bWFjcyBTZXJ2ZXINCiBjYWxscyBAY29kZXtzZXJ2ZXItc3RhcnR9IGFmdGVy IGluaXRpYWxpemF0aW9uIGFuZCBkb2VzIG5vdCBvcGVuIGFuDQogaW5pdGlh bCBmcmFtZS4gIEl0IHRoZW4gd2FpdHMgZm9yIGVkaXQgcmVxdWVzdHMgZnJv bSBjbGllbnRzLg0KIA0KK0BpdGVtDQorUnVuIHRoZSBjb21tYW5kIEBjb2Rl e2VtYWNzY2xpZW50fSB3aXRoIHRoZSBAc2FtcHstLWFsdGVybmF0ZS1lZGl0 b3I9IiJ9DQorY29tbWFuZC1saW5lIG9wdGlvbi4gIFRoaXMgc3RhcnRzIGFu IEVtYWNzIGRhZW1vbiBvbmx5IGlmIG5vIEVtYWNzIGRhZW1vbg0KK2lzIGFs cmVhZHkgcnVubmluZy4NCisNCiBAY2luZGV4IHN5c3RlbWQgdW5pdCBmaWxl DQogQGl0ZW0NCiBJZiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gdXNlcyBAY29t bWFuZHtzeXN0ZW1kfSB0byBtYW5hZ2Ugc3RhcnR1cCwNCkBAIC0xNzYzLDYg KzE3NjgsMTIgQEAgRW1hY3MgU2VydmVyDQogICBlbWFjcyAtLWRhZW1vbj1m b28NCiBAZW5kIGV4YW1wbGUNCiANCitAZmluZGV4IHNlcnZlci1zdG9wLWF1 dG9tYXRpY2FsbHkNCisgIElmIHlvdSB3YW50IHRvIGF1dG9tYXRpY2FsbHkg c3RvcCB0aGUgRW1hY3Mgc2VydmVyIHdoZW4gaXQgaGFzIG5vDQorY2xpZW50 cywgbm8gdW5zYXZlZCBidWZmZXJzIGFuZCBubyBydW5uaW5nIHByb2Nlc3Nl cyBhbnltb3JlLCBwdXQgdGhlDQorZXhwcmVzc2lvbiBAY29kZXsoc2VydmVy LXN0b3AtYXV0b21hdGljYWxseSl9IGluIHlvdXIgaW5pdCBmaWxlDQorKEBw eHJlZntJbml0IEZpbGV9KS4NCisNCiBAZmluZGV4IHNlcnZlci1ldmFsLWF0 DQogICBJZiB5b3UgaGF2ZSBkZWZpbmVkIGEgc2VydmVyIGJ5IGEgdW5pcXVl IHNlcnZlciBuYW1lLCBpdCBpcyBwb3NzaWJsZQ0KIHRvIGNvbm5lY3QgdG8g dGhlIHNlcnZlciBmcm9tIGFub3RoZXIgRW1hY3MgaW5zdGFuY2UgYW5kIGV2 YWx1YXRlIExpc3ANCmRpZmYgLS1naXQgYS9saXNwL3NlcnZlci5lbCBiL2xp c3Avc2VydmVyLmVsDQppbmRleCA2MzU5YTc2MTk5Li45NDRmMWEzZGNlIDEw MDY0NA0KLS0tIGEvbGlzcC9zZXJ2ZXIuZWwNCisrKyBiL2xpc3Avc2VydmVy LmVsDQpAQCAtMTc0Niw2ICsxNzQ2LDI5IEBAIHNlcnZlci1zYXZlLWJ1ZmZl cnMta2lsbC10ZXJtaW5hbA0KIAkgICAgIChzZXJ2ZXItZGVsZXRlLWNsaWVu dCBwcm9jKSkpDQogCSAgKHQgKGVycm9yICJJbnZhbGlkIGNsaWVudCBmcmFt ZSIpKSkpKQ0KIA0KKzs7OyMjI2F1dG9sb2FkDQorKGRlZnVuIHNlcnZlci1z dG9wLWF1dG9tYXRpY2FsbHkgKCkNCisgICJBdXRvbWF0aWNhbGx5IHN0b3Ag c2VydmVyIHdoZW4gcG9zc2libGUuDQorVGhlIHNlcnZlciBpcyBzdG9wcGVk IHdoZW4gaXQgaGFzIG5vIHJlbWFpbmluZyBjbGllbnRzLCBubyByZW1haW5p bmcNCit1bnNhdmVkIGJ1ZmZlcnMsIGFuZCBubyBydW5uaW5nIHByb2Nlc3Nl cyB3aXRoIGEgcXVlcnktb24tZXhpdCBmbGFnLg0KK1RoaXMgZnVuY3Rpb24g aXMgbWVhbnQgdG8gYmUgcHV0IGluIGluaXQgZmlsZXMuIg0KKyAgKHdoZW4g KGRhZW1vbnApDQorICAgIChydW4td2l0aC10aW1lcg0KKyAgICAgMTAgMg0K KyAgICAgKGxhbWJkYSAoKQ0KKyAgICAgICAodW5sZXNzIChjZHIgKGZyYW1l LWxpc3QpKQ0KKyAgICAgICAgICh3aGVuIChhbmQNCisgICAgICAgICAgICAg ICAgKG5vdCAobWVtcSB0IChtYXBjYXIgKGxhbWJkYSAoYikNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChidWZmZXIt ZmlsZS1uYW1lIGIpDQorCQkJICAgICAgICAgICAgICAgICAgICAoYnVmZmVy LW1vZGlmaWVkLXAgYikpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYnVmZmVyLWxpc3QpKSkpDQorICAgICAgICAgICAgICAg IChub3QgKG1lbXEgdCAobWFwY2FyIChsYW1iZGEgKHApDQorCQkgICAgICAg ICAgICAgICAgICAgICAgIChhbmQgKG1lbXEgKHByb2Nlc3Mtc3RhdHVzIHAp DQorCQkJCSAgICAgICAgICAgICAgICAgICcocnVuIHN0b3Agb3BlbiBsaXN0 ZW4pKQ0KKwkJCSAgICAgICAgICAgICAgICAgICAgKHByb2Nlc3MtcXVlcnkt b24tZXhpdC1mbGFnIHApKSkNCisJCSAgICAgICAgICAgICAgICAgICAgIChw cm9jZXNzLWxpc3QpKSkpKQ0KKyAgICAgICAgICAgKGtpbGwtZW1hY3MpKSkp KSkpDQorDQogKGRlZmluZS1rZXkgY3RsLXgtbWFwICIjIiAnc2VydmVyLWVk aXQpDQogDQogKGRlZnVuIHNlcnZlci11bmxvYWQtZnVuY3Rpb24gKCkNCi0t IA0KMi4zMy4wDQoNCg== --VL4ixSaVsU-- From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 15:39:12 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 19:39:12 +0000 Received: from localhost ([127.0.0.1]:41000 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mejKp-0000MA-SW for submit@debbugs.gnu.org; Sun, 24 Oct 2021 15:39:12 -0400 Received: from mail-pl1-f180.google.com ([209.85.214.180]:33484) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mejKn-0000Lu-Lo for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 15:39:10 -0400 Received: by mail-pl1-f180.google.com with SMTP id s24so2447797plp.0 for <51377@debbugs.gnu.org>; Sun, 24 Oct 2021 12:39:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language; bh=bdiO6Aot9vjJxLPSXDDh5Um2n4mF3eUxvDffZmcMVjs=; b=S70jBiF606UWiLp4k/0MZM5pD4dW50dkvQQruZhtdHY20RSibdWEZ33/6UJPHzTwfP uTb8E5A1BqCflAeltgoLv3QIg2qgeLKDHiruhNN7L5qBLIE52hS1IsxrXUe9/xaGGtCG pAKvWloZha2kdg/cp2vkD4orUhDauIygQk779WICjJeeKtVo1cAAM+x4/YFdtGFZHroL A6WaPbPJy67pIvV6/RJpGMf3hdI74AGz0D7t9/b8Cb/Mlbcv5Z62O0o4n9paJq0ZSm0H FKIHf7dUYGTn6/DIPiBWH6QFzyZ3Vzf4NtYPZHhKE2ssVCnpo6dY3sYct5OGWoXaBzCN LIWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language; bh=bdiO6Aot9vjJxLPSXDDh5Um2n4mF3eUxvDffZmcMVjs=; b=z8MIkrs2E7R3pHEskmvDuVAY3yo6bXU9UCqTwVnf14vliFIod81FgturMAVsiZc4+A NdTyCIrXz98wbsLt1TagvcdKzMDT4tlXy6NyaW2EKjtb/d7F+Ant058daGMQlaO6prvN TcSzncosl8y0i/dBYdw8ODSw6+YdXd/PDVYfvuTWelwVitmQjb3DiujgekZUObX34mHA BCEN1oZ5pcV0+n2DDNYG/VT64ZG3AQcirx+CF8WW0aGxI4Jp1NcZlS2M2FTZ2f+aluAs iD24nNZ/dmIYttK2LASnOdPG9e8TPwrnvVdAHGc3Qoi5tlJwZnIe8y9d+CooG91naBZR hP+g== X-Gm-Message-State: AOAM530Bg2ocbWHe9/OJu/hybBDlQaIMe2zm72XF8qToehqXJj0ugFI6 28B/QLQ1YGf0/tiY8c2uT/S7lg6uc+I= X-Google-Smtp-Source: ABdhPJxeK4rN+504APtwkfVGlK8nb+iB4E3S3gn4xlWrbKMZyqV8VJ2wzpJ9sM6EIcuyoZAwW9HZjQ== X-Received: by 2002:a17:902:778a:b0:13f:672c:103a with SMTP id o10-20020a170902778a00b0013f672c103amr12612835pll.55.1635104343768; Sun, 24 Oct 2021 12:39:03 -0700 (PDT) Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id oc12sm205117pjb.17.2021.10.24.12.39.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 24 Oct 2021 12:39:03 -0700 (PDT) Subject: Re: bug#51377: Automatically exit server when it has no remaining clients To: Gregory Heytings References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> From: Jim Porter Message-ID: Date: Sun, 24 Oct 2021 12:39:02 -0700 MIME-Version: 1.0 In-Reply-To: <90ba36dcccdc40168c93@heytings.org> Content-Type: multipart/mixed; boundary="------------E9A014C7D5337F7546185B79" Content-Language: en-US X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) This is a multi-part message in MIME format. --------------E9A014C7D5337F7546185B79 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit On 10/24/2021 11:43 AM, Gregory Heytings wrote: >> >> If `save-buffers-kill-emacs' were called after that, the Emacs daemon >> would be killed, losing the edits to bar.txt. > > Indeed, you are correct.  Updated patch attached, which also takes care > of running processes. Yeah, that looks like it should avoid any data loss. However, it's not the behavior I'd personally expect. As I understand it, this will just keep the Emacs daemon alive if there are any unsaved files. I'd find it easier to use if Emacs warned the user about unsaved files before killing the last client. Then, Emacs can safely kill the daemon once I've confirmed that that's what I want. I've attached a lightly-tested patch series that implements things in the way that I'd be happiest with. There are a few points I should explain though. First, I chose to add a new --lazy-daemon option (I'm not sure about the name; feel free to suggest a better one). This makes it possible to distinguish whether the daemon was started on demand via `emacsclient'. I chose a command-line option rather than a command accepted by the server protocol because all the other server protocol commands can be used any time a new `emacsclient' is started; this option only makes sense when starting the daemon (since it describes how the daemon was started). I also chose to add this as a "third" daemon type rather than an entirely separate flag since I don't think there's any reason to support a lazily-created foreground daemon. In the second patch, I added a minor performance optimization to `server-kill-emacs-query-function'. Now it stops once it finds the first live client. This patch isn't strictly required though, and I could rework things to exclude it. Next, I updated `server-save-buffers-kill-terminal' to check if the server is a lazy daemon and if the current client is the last one: if so, it calls `save-buffers-kill-emacs', which then calls an improved `server-kill-emacs-query-function' that knows to avoid prompting unnecessarily when this is the last client. Notably, the change to `server-save-buffers-kill-terminal' alters the behavior of killing a frame created by `emacsclient -n'. Looking at the code before, I don't see how it could possibly have been the right behavior: if there were multiple frames open, it only closed *one* frame, even if all of those frames were created after a single call of `emacsclient -n' (e.g. by calling `make-frame-command'). If it was the *last* frame, it killed Emacs, even if the user explicitly called `emacs --daemon' on system boot and wants the daemon to live forever. I've changed the behavior so that when you call this from a `nowait' frame, it kills Emacs if a) it's a lazy daemon and b) there are no other clients. That's a lot closer to the behavior when calling this from a "normal" client frame. Finally, these patches would all require documentation improvements to merge. However, it didn't seem like a good use of my time to do that until people agree that this is the right strategy overall. --------------E9A014C7D5337F7546185B79 Content-Type: text/plain; charset=UTF-8; name="0001-Add-lazy-daemon-option-used-to-start-a-daemon-on-dem.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0001-Add-lazy-daemon-option-used-to-start-a-daemon-on-dem.pa"; filename*1="tch" >From ffa4fb0843a4db7a09519099e304e72cbffaf4b7 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Sun, 24 Oct 2021 10:42:28 -0700 Subject: [PATCH 1/3] Add --lazy-daemon option, used to start a daemon on-demand via emacsclient src/emacs.c (main, Fdaemon_initialized): Handle '--lazy-daemon'. (Fdaemon_type): New function. (syms_of_emacs): Add Sdaemon_type. lib-src/emacsclient.c (start_daemon_and_retry_set_socket): Use '--lazy-daemon' when starting daemon. --- lib-src/emacsclient.c | 8 ++++---- src/emacs.c | 46 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 43 insertions(+), 11 deletions(-) diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index cff3cec2a7..40ebfa0513 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -1756,7 +1756,7 @@ start_daemon_and_retry_set_socket (void) else { char emacs[] = "emacs"; - char daemon_option[] = "--daemon"; + char daemon_option[] = "--lazy-daemon"; char *d_argv[3]; d_argv[0] = emacs; d_argv[1] = daemon_option; @@ -1764,8 +1764,8 @@ start_daemon_and_retry_set_socket (void) # ifdef SOCKETS_IN_FILE_SYSTEM if (socket_name != NULL) { - /* Pass --daemon=socket_name as argument. */ - const char *deq = "--daemon="; + /* Pass --lazy-daemon=socket_name as argument. */ + const char *deq = "--lazy-daemon="; char *daemon_arg = xmalloc (strlen (deq) + strlen (socket_name) + 1); strcpy (stpcpy (daemon_arg, deq), socket_name); @@ -1790,7 +1790,7 @@ start_daemon_and_retry_set_socket (void) it is ready to accept client connections, by asserting an event whose name is known to the daemon (defined by nt/inc/ms-w32.h). */ - if (!CreateProcess (NULL, (LPSTR)"emacs --daemon", NULL, NULL, FALSE, + if (!CreateProcess (NULL, (LPSTR)"emacs --lazy-daemon", NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) { char* msg = NULL; diff --git a/src/emacs.c b/src/emacs.c index a24543a586..e41b4abc49 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -245,6 +245,9 @@ #define MAIN_PROGRAM --chdir DIR change to directory DIR\n\ --daemon, --bg-daemon[=NAME] start a (named) server in the background\n\ --fg-daemon[=NAME] start a (named) server in the foreground\n\ +--lazy-daemon[=NAME] start a (named) server in the background\ + and record that it was started on-demand\n\ + by emacsclient\n\ --debug-init enable Emacs Lisp debugger for init file\n\ --display, -d DISPLAY use X server DISPLAY\n\ ", @@ -1635,12 +1638,17 @@ main (int argc, char **argv) { daemon_type = 2; /* background */ } + else if (argmatch (argv, argc, "-lazy-daemon", "--lazy-daemon", 12, NULL, &skip_args) + || argmatch (argv, argc, "-lazy-daemon", "--lazy-daemon", 12, &dname_arg, &skip_args)) + { + daemon_type = 3; /* background, lazy */ + } if (daemon_type > 0) { #ifndef DOS_NT - if (daemon_type == 2) + if (daemon_type == 2 || daemon_type == 3) { /* Start as a background daemon: fork a new child process which will run the rest of the initialization code, then exit. @@ -1668,7 +1676,7 @@ main (int argc, char **argv) fputs ("Cannot pipe!\n", stderr); exit (1); } - } /* daemon_type == 2 */ + } /* daemon_type == 2 || daemon_type == 3 */ #ifdef HAVE_LIBSYSTEMD /* Read the number of sockets passed through by systemd. */ @@ -1692,7 +1700,7 @@ main (int argc, char **argv) stderr); #endif /* USE_GTK */ - if (daemon_type == 2) + if (daemon_type == 2 || daemon_type == 3) { pid_t f; #ifndef DAEMON_MUST_EXEC @@ -1747,8 +1755,9 @@ main (int argc, char **argv) char fdStr[80]; int fdStrlen = snprintf (fdStr, sizeof fdStr, - "--bg-daemon=\n%d,%d\n%s", daemon_pipe[0], - daemon_pipe[1], dname_arg ? dname_arg : ""); + "--%s-daemon=\n%d,%d\n%s", daemon_pipe[0], + daemon_type == 2 ? "bg" : "lazy", daemon_pipe[1], + dname_arg ? dname_arg : ""); if (! (0 <= fdStrlen && fdStrlen < sizeof fdStr)) { @@ -1785,7 +1794,7 @@ main (int argc, char **argv) emacs_close (daemon_pipe[0]); setsid (); - } /* daemon_type == 2 */ + } /* daemon_type == 2 || daemon_type == 3 */ #elif defined(WINDOWSNT) /* Indicate that we want daemon mode. */ w32_daemon_event = CreateEvent (NULL, TRUE, FALSE, W32_DAEMON_EVENT); @@ -2372,6 +2381,7 @@ main (int argc, char **argv) { "-daemon", "--daemon", 99, 0 }, { "-bg-daemon", "--bg-daemon", 99, 0 }, { "-fg-daemon", "--fg-daemon", 99, 0 }, + { "-lazy-daemon", "--lazy-daemon", 99, 0 }, { "-help", "--help", 90, 0 }, { "-nl", "--no-loadup", 70, 0 }, { "-nsl", "--no-site-lisp", 65, 0 }, @@ -3128,6 +3138,27 @@ DEFUN ("daemonp", Fdaemonp, Sdaemonp, 0, 0, 0, return Qnil; } +DEFUN ("daemon-type", Fdaemon_type, Sdaemon_type, 0, 0, 0, + doc: /* If emacs was started as a daemon, return the type of daemon. +The result is one of `foreground', `background', or `lazy'. */) + (void) +{ + switch (abs (daemon_type)) + { + case 0: + return Qnil; + case 1: + return intern_c_string ("foreground"); + case 2: + return intern_c_string ("background"); + case 3: + return intern_c_string ("lazy"); + default: + error ("Unrecognized daemon type"); + } +} + + DEFUN ("daemon-initialized", Fdaemon_initialized, Sdaemon_initialized, 0, 0, 0, doc: /* Mark the Emacs daemon as being initialized. This finishes the daemonization process by doing the other half of detaching @@ -3153,7 +3184,7 @@ DEFUN ("daemon-initialized", Fdaemon_initialized, Sdaemon_initialized, 0, 0, 0, #endif /* HAVE_LIBSYSTEMD */ } - if (daemon_type == 2) + if (daemon_type == 2 || daemon_type == 3) { int nfd; @@ -3211,6 +3242,7 @@ syms_of_emacs (void) defsubr (&Sinvocation_name); defsubr (&Sinvocation_directory); defsubr (&Sdaemonp); + defsubr (&Sdaemon_type); defsubr (&Sdaemon_initialized); DEFVAR_LISP ("command-line-args", Vcommand_line_args, -- 2.25.1 --------------E9A014C7D5337F7546185B79 Content-Type: text/plain; charset=UTF-8; name="0002-Stop-searching-for-live-clients-once-we-find-one.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0002-Stop-searching-for-live-clients-once-we-find-one.patch" >From df292aeaa73c01a7685ff34c9e0265df859d2d42 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Sun, 24 Oct 2021 11:21:23 -0700 Subject: [PATCH 2/3] Stop searching for live clients once we find one lisp/server.el (server-kill-emacs-query-function): Use 'seq-some' to search for live clients. --- lisp/server.el | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lisp/server.el b/lisp/server.el index 5306a54776..5988560c83 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -1581,12 +1581,10 @@ server-done (defun server-kill-emacs-query-function () "Ask before exiting Emacs if it has live clients." - (or (not (let (live-client) - (dolist (proc server-clients) - (when (memq t (mapcar #'buffer-live-p - (process-get proc 'buffers))) - (setq live-client t))) - live-client)) + (or (not (seq-some (lambda (proc) + (seq-some #'buffer-live-p + (process-get proc 'buffers))) + server-clients)) (yes-or-no-p "This Emacs session has clients; exit anyway? "))) (defun server-kill-buffer () -- 2.25.1 --------------E9A014C7D5337F7546185B79 Content-Type: text/plain; charset=UTF-8; name="0003-When-killing-the-last-client-attached-to-a-lazy-daem.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0003-When-killing-the-last-client-attached-to-a-lazy-daem.pa"; filename*1="tch" >From 26777b5fc13b15b33571617378001f9f0600f733 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Sun, 24 Oct 2021 12:11:37 -0700 Subject: [PATCH 3/3] When killing the last client attached to a lazy daemon, kill the daemon too lisp/server.el (server-save-buffers-kill-terminal): Kill Emacs when connected to a lazy daemon and there are no other clients. (server-kill-emacs-query-function): Don't warn about killing Emacs when not necessary. --- lisp/server.el | 61 +++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/lisp/server.el b/lisp/server.el index 5988560c83..0cbabba621 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -1580,12 +1580,17 @@ server-done (server-buffer-done (current-buffer)))) (defun server-kill-emacs-query-function () - "Ask before exiting Emacs if it has live clients." - (or (not (seq-some (lambda (proc) - (seq-some #'buffer-live-p - (process-get proc 'buffers))) - server-clients)) - (yes-or-no-p "This Emacs session has clients; exit anyway? "))) + "Ask before exiting Emacs if it has live clients. +If Emacs was started as a lazy daemon and the only live client is the +current frame's client, don't bother asking." + (let ((ignored-proc (and (eq (daemon-type) 'lazy) + (frame-parameter nil 'client)))) + (or (not (seq-some (lambda (proc) + (unless (eq ignored-proc proc) + (seq-some #'buffer-live-p + (process-get proc 'buffers)))) + server-clients)) + (yes-or-no-p "This Emacs session has clients; exit anyway? ")))) (defun server-kill-buffer () "Remove the current buffer from its clients' buffer list. @@ -1721,28 +1726,32 @@ server-save-buffers-kill-terminal With ARG non-nil, silently save all file-visiting buffers, then kill. If emacsclient was started with a list of filenames to edit, then -only these files will be asked to be saved." +only these files will be asked to be saved. + +If Emacs was started as a lazy daemon and this is the last client +connected to it, this will call `save-buffers-kill-emacs'." (let ((proc (frame-parameter nil 'client))) - (cond ((eq proc 'nowait) + (unless (or (eq proc 'nowait) (processp proc)) + (error "Invalid client frame")) + (if (and (eq (daemon-type) 'lazy) + (equal server-clients (unless (eq proc 'nowait) (list proc)))) + ;; If we're the last client connected to a lazy daemon, kill Emacs. + (save-buffers-kill-emacs arg) + (if (eq proc 'nowait) ;; Nowait frames have no client buffer list. - (if (cdr (frame-list)) - (progn (save-some-buffers arg) - (delete-frame)) - ;; If we're the last frame standing, kill Emacs. - (save-buffers-kill-emacs arg))) - ((processp proc) - (let ((buffers (process-get proc 'buffers))) - (save-some-buffers - arg (if buffers - ;; Only files from emacsclient file list. - (lambda () (memq (current-buffer) buffers)) - ;; No emacsclient file list: don't override - ;; `save-some-buffers-default-predicate' (unless - ;; ARG is non-nil), since we're not killing - ;; Emacs (unlike `save-buffers-kill-emacs'). - (and arg t))) - (server-delete-client proc))) - (t (error "Invalid client frame"))))) + (progn (save-some-buffers arg) + (delete-frame)) + (let ((buffers (process-get proc 'buffers))) + (save-some-buffers + arg (if buffers + ;; Only files from emacsclient file list. + (lambda () (memq (current-buffer) buffers)) + ;; No emacsclient file list: don't override + ;; `save-some-buffers-default-predicate' (unless ARG + ;; is non-nil), since we're not killing Emacs (unlike + ;; `save-buffers-kill-emacs'). + (and arg t))) + (server-delete-client proc)))))) (define-key ctl-x-map "#" 'server-edit) -- 2.25.1 --------------E9A014C7D5337F7546185B79-- From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 16:42:17 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 20:42:17 +0000 Received: from localhost ([127.0.0.1]:41077 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mekJt-00045V-9X for submit@debbugs.gnu.org; Sun, 24 Oct 2021 16:42:17 -0400 Received: from heytings.org ([95.142.160.155]:33560) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mekJq-00045L-88 for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 16:42:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635108133; bh=v5ZIQkRbPrW4IrNqTffTX9gSpOQRxEPW6xnDT9/nZkY=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=lE6MOqsDMPjNEu5hmqwhhSc0EiE1B6tneFF6VtaslRLa9s3l4JMsltD9x/ctEAN8y dLaKN07Exiaj+IN4DHWBVYsv26XDK0B6KC6MQfmCuerRCxjsmpo1W+zybcFzdFiQfB GI42XA7vDP6M4J78Lx9PQ5Y/MoTxwIv6umOgi7vgsK8gAAfObpemAkr9GW37J6pfto WLzIRo6D+/ecAMCSwODWaIIUMwneYoE2y+BLuGmOcDqwDBFisAZvUvCa7t0kmr+GEc bSKBvCIbQFv1PkSVD4SGfXQRqb3LBrLGWuR7UoEdufhaNITwwjbs9S+im0JRrhtVVe 1tnnl0hRs1S+A== Date: Sun, 24 Oct 2021 20:42:12 +0000 From: Gregory Heytings To: Jim Porter Subject: Re: bug#51377: Automatically exit server when it has no remaining clients In-Reply-To: Message-ID: <90ba36dcccde742a3c60@heytings.org> References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) > > Yeah, that looks like it should avoid any data loss. However, it's not > the behavior I'd personally expect. As I understand it, this will just > keep the Emacs daemon alive if there are any unsaved files. > Indeed. And if there are any running processes. This is I think the least surprising behavior for users who use the Emacs daemon. > > I'd find it easier to use if Emacs warned the user about unsaved files > before killing the last client. Then, Emacs can safely kill the daemon > once I've confirmed that that's what I want. > I'm not sure I understand why this would be better. If want you want is to save unsaved buffers and stop the daemon when you close the last frame, you can simply use: (defun save-buffers-kill-terminal (&optional arg) (interactive "P") (if (and (frame-parameter nil 'client) (cddr (frame-list))) (server-save-buffers-kill-terminal arg) (save-buffers-kill-emacs arg))) From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 17:19:51 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 21:19:51 +0000 Received: from localhost ([127.0.0.1]:41109 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mekuF-0005DK-0S for submit@debbugs.gnu.org; Sun, 24 Oct 2021 17:19:51 -0400 Received: from mail-pj1-f48.google.com ([209.85.216.48]:55938) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mekuD-0005D8-Hj for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 17:19:49 -0400 Received: by mail-pj1-f48.google.com with SMTP id om14so6748253pjb.5 for <51377@debbugs.gnu.org>; Sun, 24 Oct 2021 14:19:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=crt8InJVflFFLMd+XoNVkvMeQYYtI5W1pjAExA4dcuc=; b=jtYcvMxMhE2fx260XD/ly3tTm4XnrsqoDdVEtIvqIuYWnEJ1Wt0YovVV7d7wWLA96c i2FZcmVqq6I4QmzfgJE56gIeNkuHdfgFM7BA/dkDCT+UAgf4uRY/8ocOlN1CZQi/LcEk y64r44MSlBM9bG0rjOFIq3XUO5WnEPtyUulTPIPaA2IwGIifM895e2yVcjcGSulNWXP9 tk2CbPRaFVCLLXTWck3r/yRJ9kMEbTk0BliJkI3ZHboSVM60FzLAQxZfxs0QZJpyBhel pGfYm1WpwmCzb4DsgrJLK4X0hs6Hpuy9ELHkZbZGku3xPpIQkifaTJow14OJDFUu+FUm ikIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=crt8InJVflFFLMd+XoNVkvMeQYYtI5W1pjAExA4dcuc=; b=Up5HUxssp4gUcL7V9/oYIQgRHC/gnJfj8HRQowjs7Lj8o5k2UREg8nkP53IIifh1un iuDqqC76mqd2I/DZB+GSEnylZyxil62GLSMbzIeTB0Ee9mVsPtDMYLMyqGzrOhHnWMnn 5x1qNSLWw6MJi55BPa/+v3Iu8SlTVHvz4nLRp/HyQOpqdq3D89XehY8vJCluzsphMir6 dXBNElEf0phoWbT0cvCZZZ2/+I14KfA8GmRjG1+rLdQ2c13bIZuigECDRVPRABi28jJT LIVmsFDhehXvUkvkwmCPOwnRtokMwNbGbqv0ZNc1fmpkadSmxCtrNpllN/CJ7A6GtShm H8oQ== X-Gm-Message-State: AOAM530pCwLvBBDlKcRPPyaZ+MDfiaiOx7fvI00hIZqLNvudDXChCU3E MMWvUwo6/EMpwUc23DWR8tbruNHAfvw= X-Google-Smtp-Source: ABdhPJweHpS1FkVDl9EGVlWLANidHL3XnYlk4f73OQvP1j0gc3Nt/y4auYkV5fNoktYXeBXIhXb4Gg== X-Received: by 2002:a17:90b:1e01:: with SMTP id pg1mr15745906pjb.81.1635110383269; Sun, 24 Oct 2021 14:19:43 -0700 (PDT) Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id h14sm12650714pfv.182.2021.10.24.14.19.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 24 Oct 2021 14:19:42 -0700 (PDT) Subject: Re: bug#51377: Automatically exit server when it has no remaining clients To: Gregory Heytings References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> <90ba36dcccde742a3c60@heytings.org> From: Jim Porter Message-ID: <2fb21ea4-0b95-a76b-8c5f-f8a6c7c1fc9b@gmail.com> Date: Sun, 24 Oct 2021 14:19:42 -0700 MIME-Version: 1.0 In-Reply-To: <90ba36dcccde742a3c60@heytings.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) On 10/24/2021 1:42 PM, Gregory Heytings wrote: > >> >> Yeah, that looks like it should avoid any data loss. However, it's not >> the behavior I'd personally expect. As I understand it, this will just >> keep the Emacs daemon alive if there are any unsaved files. >> > > Indeed.  And if there are any running processes.  This is I think the > least surprising behavior for users who use the Emacs daemon. I'd find it quite surprising, since an errant edit to any open file would prevent the server from exiting after the last client stops. While leaving the server running isn't the worst thing ever (indeed, that's how it works now), I'd want the logic for when the server exits to be as simple as possible, i.e. "when there are no more clients, exit" (provided the user has confirmed as necessary). Having the server stick around because I forgot to save one file would surprise me, mainly because it would typically happen after, well, I forgot something. >> I'd find it easier to use if Emacs warned the user about unsaved files >> before killing the last client. Then, Emacs can safely kill the daemon >> once I've confirmed that that's what I want. >> > > I'm not sure I understand why this would be better. Coming from a non-daemon configuration, my expectation is that `save-buffers-kill-terminal' typically kills Emacs entirely. The behavior I'm looking for is: I can have multiple clients (or "terminals", as the function calls them) connected to the Emacs daemon, but once I'm down to just one client, `save-buffers-kill-terminal' works like it does in a non-daemon/server configuration. Then, in terms of my use pattern, the extra clients work like an addition on top of the behavior I'm used to (i.e. running `emacs' directly). > If want you want is to save unsaved buffers and stop the daemon when you > close the last frame, you can simply use: > > (defun save-buffers-kill-terminal (&optional arg) >   (interactive "P") >   (if (and (frame-parameter nil 'client) >        (cddr (frame-list))) >       (server-save-buffers-kill-terminal arg) >     (save-buffers-kill-emacs arg))) That's pretty much what I started with, actually. I've added more to that as I find corner cases, and as I try to make my code work well under different configurations so that it could merge into Emacs if there's interest. From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 17:37:52 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 21:37:52 +0000 Received: from localhost ([127.0.0.1]:41122 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1melBg-0005ex-6w for submit@debbugs.gnu.org; Sun, 24 Oct 2021 17:37:52 -0400 Received: from heytings.org ([95.142.160.155]:33622) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1melBd-0005ep-Ut for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 17:37:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635111468; bh=SeZNSU3RPwO8x/d5qz2ZFuy1095iS+2n0XrQi1q0dQw=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=tgtA1O55lhUWxpLn3NcbMpEEDA7TuP+qtlmmuI1piJM0TiP4Jgkkjq1E1ZCDz9L2W 7S9trDGic8xrM+ZrtqiqJf0lziEiGnctdsWx/ktEWaaeyNLmTlaHJBZyhguCmps9u6 1xefOHJzJu6a1NjG8p9w9bZ8B4XI9v16CZCgJHxrn0QQZ3HguIkPlwSMcndYOy6gMh FmFrFoXML8JI8P4Hpl1czBrZ5RoAViZjW/FuIOEwMqjdyEScsX0oxfR4za5Jof6EcI /G6WBxL3KdhfRrYm88/C+Iip+DIShi2h/slY0y3bWwrCOnLuP75PMJWCGtzVAirtXW uaAS5s9/jlX3g== Date: Sun, 24 Oct 2021 21:37:48 +0000 From: Gregory Heytings To: Jim Porter Subject: Re: bug#51377: Automatically exit server when it has no remaining clients In-Reply-To: <2fb21ea4-0b95-a76b-8c5f-f8a6c7c1fc9b@gmail.com> Message-ID: <90ba36dccc0584692d36@heytings.org> References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> <90ba36dcccde742a3c60@heytings.org> <2fb21ea4-0b95-a76b-8c5f-f8a6c7c1fc9b@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="fNrnQBjQE8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) --fNrnQBjQE8 Content-Type: text/plain; charset=us-ascii; format=flowed > > I'd find it quite surprising, since an errant edit to any open file > would prevent the server from exiting after the last client stops. While > leaving the server running isn't the worst thing ever (indeed, that's > how it works now), I'd want the logic for when the server exits to be as > simple as possible, i.e. "when there are no more clients, exit" > (provided the user has confirmed as necessary). Having the server stick > around because I forgot to save one file would surprise me, mainly > because it would typically happen after, well, I forgot something. > I see. We have different mental models, I guess. From my viewpoint the Emacs server should stay there until it's not necessary, and I'd be surprised to be queried about what to do with buffers opened of processes started in a frame I already closed when I want to close another frame. But of course I do not object to have both behaviors. > > That's pretty much what I started with, actually. I've added more to > that as I find corner cases, and as I try to make my code work well > under different configurations so that it could merge into Emacs if > there's interest. > I attach a patch for that other behavior, it works fine AFAICS. --fNrnQBjQE8 Content-Type: text/x-diff; name=Option-to-stop-Emacs-server-when-last-client-exits.patch Content-Transfer-Encoding: base64 Content-ID: <90ba36dccc01d2185103@heytings.org> Content-Description: Content-Disposition: attachment; filename=Option-to-stop-Emacs-server-when-last-client-exits.patch RnJvbSA3MWZkZGNiN2QwZDZhOGViOTJhNTRjNzkzM2RhMTM4MWIxYzQwNmVj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBTdW4sIDI0IE9j dCAyMDIxIDIxOjMwOjI0ICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIE9wdGlv biB0byBzdG9wIEVtYWNzIHNlcnZlciB3aGVuIGxhc3QgY2xpZW50IGV4aXRz Lg0KDQoqIGxpc3Avc2VydmVyLmVsIChzZXJ2ZXItc3RvcC13aGVuLWNsb3Np bmctbGFzdC1mcmFtZSk6IE5ldyBjdXN0b20NCnZhcmlhYmxlLg0KKiBsaXNw L2ZpbGVzLmVsIChzYXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5hbCk6IFVzZSB0 aGUgbmV3IGN1c3RvbQ0KdmFyaWFibGUuDQoqIGRvYy9lbWFjcy9taXNjLnRl eGkgKEVtYWNzIFNlcnZlcik6IERvY3VtZW50IGl0Lg0KLS0tDQogZG9jL2Vt YWNzL21pc2MudGV4aSB8IDggKysrKysrKysNCiBsaXNwL2ZpbGVzLmVsICAg ICAgIHwgNSArKysrLQ0KIGxpc3Avc2VydmVyLmVsICAgICAgfCA5ICsrKysr KysrKw0KIDMgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQ0KDQpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL21pc2MudGV4 aSBiL2RvYy9lbWFjcy9taXNjLnRleGkNCmluZGV4IDg5M2U1ZjE4NDMuLmQ3 ZWMxZDYzMjIgMTAwNjQ0DQotLS0gYS9kb2MvZW1hY3MvbWlzYy50ZXhpDQor KysgYi9kb2MvZW1hY3MvbWlzYy50ZXhpDQpAQCAtMTc2OCw2ICsxNzY4LDE0 IEBAIEVtYWNzIFNlcnZlcg0KICAgZW1hY3MgLS1kYWVtb249Zm9vDQogQGVu ZCBleGFtcGxlDQogDQorQHZpbmRleCBzZXJ2ZXItc3RvcC13aGVuLWNsb3Np bmctbGFzdC1mcmFtZQ0KKyAgV2hlbiB0aGUgbGFzdCBjbGllbnQgZnJhbWUg aXMgY2xvc2VkLCB1bnNhdmVkIGJ1ZmZlcnMgYW5kIHJ1bm5pbmcNCitwcm9j ZXNzZXMgYXJlIG5vcm1hbGx5IGtlcHQgaW4gdGhlIGRhZW1vbiBmb3IgbGF0 ZXIgdXNlci4gIEhvd2V2ZXIsIGlmDQoreW91IHNldCBAY29kZXtzZXJ2ZXIt c3RvcC13aGVuLWNsb3NpbmctbGFzdC1mcmFtZX0gaXMgbm9uLUBjb2Rle25p bH0gYW5kDQordGhlIGxhc3QgY2xpZW50IGZyYW1lIGlzIGNsb3NlZCwgRW1h Y3MgYXNrcyB5b3Ugd2hldGhlciBlYWNoIHVuc2F2ZWQNCitidWZmZXIgbXVz dCBiZSBzYXZlZCBhbmQgZWFjaCB1bmZpbmlzaGVkIHByb2Nlc3MgbXVzdCBi ZSBraWxsZWQsIGFuZA0KK3RoZSBkYWVtb24gaXRzZWxmIGlzIGtpbGxlZC4N CisNCiBAZmluZGV4IHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkNCiAgIElm IHlvdSB3YW50IHRvIGF1dG9tYXRpY2FsbHkgc3RvcCB0aGUgRW1hY3Mgc2Vy dmVyIHdoZW4gaXQgaGFzIG5vDQogY2xpZW50cywgbm8gdW5zYXZlZCBidWZm ZXJzIGFuZCBubyBydW5uaW5nIHByb2Nlc3NlcyBhbnltb3JlLCBwdXQgdGhl DQpkaWZmIC0tZ2l0IGEvbGlzcC9maWxlcy5lbCBiL2xpc3AvZmlsZXMuZWwN CmluZGV4IDVhNmEzMzcyMWIuLjI2OGMwMTdkZTQgMTAwNjQ0DQotLS0gYS9s aXNwL2ZpbGVzLmVsDQorKysgYi9saXNwL2ZpbGVzLmVsDQpAQCAtNzc0Miw3 ICs3NzQyLDEwIEBAIHNhdmUtYnVmZmVycy1raWxsLXRlcm1pbmFsDQogSWYg ZW1hY3NjbGllbnQgd2FzIHN0YXJ0ZWQgd2l0aCBhIGxpc3Qgb2YgZmlsZSBu YW1lcyB0byBlZGl0LCB0aGVuDQogb25seSB0aGVzZSBmaWxlcyB3aWxsIGJl IGFza2VkIHRvIGJlIHNhdmVkLiINCiAgIChpbnRlcmFjdGl2ZSAiUCIpDQot ICAoaWYgKGZyYW1lLXBhcmFtZXRlciBuaWwgJ2NsaWVudCkNCisgIChpZiAo YW5kIChmcmFtZS1wYXJhbWV0ZXIgbmlsICdjbGllbnQpDQorICAgICAgICAg ICAoaWYgc2VydmVyLXN0b3Atd2hlbi1jbG9zaW5nLWxhc3QtZnJhbWUNCisg ICAgICAgICAgICAgICAoY2RkciAoZnJhbWUtbGlzdCkpDQorICAgICAgICAg ICAgIHQpKQ0KICAgICAgIChzZXJ2ZXItc2F2ZS1idWZmZXJzLWtpbGwtdGVy bWluYWwgYXJnKQ0KICAgICAoc2F2ZS1idWZmZXJzLWtpbGwtZW1hY3MgYXJn KSkpDQogDA0KZGlmZiAtLWdpdCBhL2xpc3Avc2VydmVyLmVsIGIvbGlzcC9z ZXJ2ZXIuZWwNCmluZGV4IDk0NGYxYTNkY2UuLjIzOWNlM2EwYTIgMTAwNjQ0 DQotLS0gYS9saXNwL3NlcnZlci5lbA0KKysrIGIvbGlzcC9zZXJ2ZXIuZWwN CkBAIC0yNzIsNiArMjcyLDE1IEBAIHNlcnZlci1jbGllbnQtaW5zdHJ1Y3Rp b25zDQogICA6dmVyc2lvbiAiMjguMSINCiAgIDp0eXBlICdib29sZWFuKQ0K IA0KKyhkZWZjdXN0b20gc2VydmVyLXN0b3Atd2hlbi1jbG9zaW5nLWxhc3Qt ZnJhbWUgbmlsDQorICAiV2hldGhlciB0byBzdG9wIHRoZSBzZXJ2ZXIgd2hl biBjbG9zaW5nIHRoZSBsYXN0IGZyYW1lLg0KK0lmIG5vbi1uaWwsIGNhbGwg YHNhdmUtYnVmZmVycy1raWxsLWVtYWNzJyB3aGVuIHRoZSBsYXN0IGNsaWVu dCBmcmFtZSBpcw0KK2Nsb3NlZC4NCitJZiBuaWwsIHRoZSBsYXN0IGNsaWVu dCBmcmFtZSBpcyBub3QgaGFuZGxlZCBkaWZmZXJlbnRseSwgYW5kDQorYHNl cnZlci1zYXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5hbCcgaXMgY2FsbGVkIHdo ZW4gaXQgaXMgY2xvc2VkLiINCisgIDp2ZXJzaW9uICIyOS4xIg0KKyAgOnR5 cGUgJ2Jvb2xlYW4pDQorDQogOzsgV2UgZG8gbm90IHVzZSBgdGVtcG9yYXJ5 LWZpbGUtZGlyZWN0b3J5JyBoZXJlLCBiZWNhdXNlIGVtYWNzY2xpZW50DQog OzsgZG9lcyBub3QgcmVhZCB0aGUgaW5pdCBmaWxlLg0KIChkZWZ2YXIgc2Vy dmVyLXNvY2tldC1kaXINCi0tIA0KMi4zMy4wDQoNCg== --fNrnQBjQE8-- From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 24 17:40:28 2021 Received: (at 51377) by debbugs.gnu.org; 24 Oct 2021 21:40:28 +0000 Received: from localhost ([127.0.0.1]:41127 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1melEB-0005j1-Ol for submit@debbugs.gnu.org; Sun, 24 Oct 2021 17:40:28 -0400 Received: from mail-pf1-f177.google.com ([209.85.210.177]:37657) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1melE9-0005io-5p for 51377@debbugs.gnu.org; Sun, 24 Oct 2021 17:40:26 -0400 Received: by mail-pf1-f177.google.com with SMTP id v193so2184912pfc.4 for <51377@debbugs.gnu.org>; Sun, 24 Oct 2021 14:40:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:from:to:cc:references:message-id:date:mime-version :in-reply-to:content-language; bh=NWOHxQ2p+PNrWkzArlSDBXmJiyovY4CxdKDM8wSWUdk=; b=iG0W4aDTesndsLfxgSrMH5EbiQD0biqNhgnhOGk+tzI6JrSxR6m8A6i5f+q+QPHRiY e5jECc+snfswqU+UC3mgm0OEPmA7Qfk2f90aErlz7RUqHq9cCNOcifTN2mJUZdH1VZXr 4UYcR4bDB7OO/tltvVnKslzpfZ3w7A2z/lveHAmyi9v6R5yX0xvuHrYqqBqEdrQmUQi2 /Hiokyd7aRt25LsntOCXLwgz9f3ZdwFS0Ceh9SbO5b0FX2IrIGTUhgG6qxEFlQ550avT TqSUPSPuRGkhDgsV9ugZ2IlVrQ03/VkZI8sApl5TyehOEDkriiFt9hYGUUSqdKM3k2Jc d8hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :mime-version:in-reply-to:content-language; bh=NWOHxQ2p+PNrWkzArlSDBXmJiyovY4CxdKDM8wSWUdk=; b=ss3yYf/rSPMYYNXA/lGyHYTLrBnNhx9ac+LWCjTyCE0u0ZFgvsqDfSu/FTnMSS1FKB EIiIYbcvP2phUSYxnRto8ph/RG25QQ5wNcgjaxtGNMqc9PhI9qENXH3xTiaGdxQ/twPm CigeqtoGdEDRPT753JVSenYpWgBh8WvWcCkSDK/oaveIyM/7S9le9lyahZAH2kYJ995g NPJLkzTKtVddBHzEt2ErSgd/WsqyaYcqYXpg2QMrRAKs9dUDnTdxfZOB0kgLOz5X8tqT w1NMU+2x+7cIS4zrIJczCD0PrePMzhHkm3D3LwcxnJK8sC7IeY55V/C2Qaan6Pimbvfn T/ig== X-Gm-Message-State: AOAM531blise5T4ln61tMR7yB4CmlMGizGmO90HDQuQCGC3gOSWAQhEQ dpKwiornejR+wPeRHk3hItPPGJesz18= X-Google-Smtp-Source: ABdhPJywHaQT5fG4FgSfRPOVEzCWA0iIJiL7e6xfuT2OLRZmcWWjpwnE7UoU1DpimMWl4fc6znqy1g== X-Received: by 2002:a63:924c:: with SMTP id s12mr10732143pgn.416.1635111619182; Sun, 24 Oct 2021 14:40:19 -0700 (PDT) Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id x40sm360190pfh.188.2021.10.24.14.40.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 24 Oct 2021 14:40:18 -0700 (PDT) Subject: Re: bug#51377: Automatically exit server when it has no remaining clients From: Jim Porter To: Gregory Heytings References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> Message-ID: <42ff964e-731c-6309-e3e8-e27b14688730@gmail.com> Date: Sun, 24 Oct 2021 14:40:18 -0700 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------6EEDACE8E824739EB7D3680E" Content-Language: en-US X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) This is a multi-part message in MIME format. --------------6EEDACE8E824739EB7D3680E Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit On 10/24/2021 12:39 PM, Jim Porter wrote: > Next, I updated `server-save-buffers-kill-terminal' to check if the > server is a lazy daemon and if the current client is the last one: if > so, it calls `save-buffers-kill-emacs', which then calls an improved > `server-kill-emacs-query-function' that knows to avoid prompting > unnecessarily when this is the last client. I amended the third patch (attached) to account for this change in `handle-delete-frame'. This ensures that if you delete the last (non-daemon) frame using this method, it calls `save-buffers-kill-emacs' to ask the relevant questions. --------------6EEDACE8E824739EB7D3680E Content-Type: text/plain; charset=UTF-8; name="0003-When-killing-the-last-client-attached-to-a-lazy-daem.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0003-When-killing-the-last-client-attached-to-a-lazy-daem.pa"; filename*1="tch" >From 767b43cc04f42f36db20fa1ef9b32aab2c37b497 Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Sun, 24 Oct 2021 12:11:37 -0700 Subject: [PATCH 3/3] When killing the last client attached to a lazy daemon, kill the daemon too lisp/server.el (server-save-buffers-kill-terminal): Kill Emacs when connected to a lazy daemon and there are no other clients. (server-kill-emacs-query-function): Don't warn about killing Emacs when not necessary. lisp/frame.el (handle-delete-frame): Exclude the initial frame of a lazily-created daemon as a "valid" other frame. --- lisp/frame.el | 7 ++++-- lisp/server.el | 61 +++++++++++++++++++++++++++++--------------------- 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/lisp/frame.el b/lisp/frame.el index dfbd751201..fd38c4b623 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -119,11 +119,14 @@ handle-delete-frame (if (catch 'other-frame (dolist (frame-1 (frame-list)) ;; A valid "other" frame is visible, has its `delete-before' - ;; parameter unset and is not a child frame. + ;; parameter unset and is not a child frame or the initial frame + ;; of a lazily-created daemon. (when (and (not (eq frame-1 frame)) (frame-visible-p frame-1) (not (frame-parent frame-1)) - (not (frame-parameter frame-1 'delete-before))) + (not (frame-parameter frame-1 'delete-before)) + (or (not (eq (daemon-type) 'lazy)) + (frame-parameter frame-1 'client))) (throw 'other-frame t)))) (delete-frame frame t) ;; Gildea@x.org says it is ok to ask questions before terminating. diff --git a/lisp/server.el b/lisp/server.el index 5988560c83..0cbabba621 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -1580,12 +1580,17 @@ server-done (server-buffer-done (current-buffer)))) (defun server-kill-emacs-query-function () - "Ask before exiting Emacs if it has live clients." - (or (not (seq-some (lambda (proc) - (seq-some #'buffer-live-p - (process-get proc 'buffers))) - server-clients)) - (yes-or-no-p "This Emacs session has clients; exit anyway? "))) + "Ask before exiting Emacs if it has live clients. +If Emacs was started as a lazy daemon and the only live client is the +current frame's client, don't bother asking." + (let ((ignored-proc (and (eq (daemon-type) 'lazy) + (frame-parameter nil 'client)))) + (or (not (seq-some (lambda (proc) + (unless (eq ignored-proc proc) + (seq-some #'buffer-live-p + (process-get proc 'buffers)))) + server-clients)) + (yes-or-no-p "This Emacs session has clients; exit anyway? ")))) (defun server-kill-buffer () "Remove the current buffer from its clients' buffer list. @@ -1721,28 +1726,32 @@ server-save-buffers-kill-terminal With ARG non-nil, silently save all file-visiting buffers, then kill. If emacsclient was started with a list of filenames to edit, then -only these files will be asked to be saved." +only these files will be asked to be saved. + +If Emacs was started as a lazy daemon and this is the last client +connected to it, this will call `save-buffers-kill-emacs'." (let ((proc (frame-parameter nil 'client))) - (cond ((eq proc 'nowait) + (unless (or (eq proc 'nowait) (processp proc)) + (error "Invalid client frame")) + (if (and (eq (daemon-type) 'lazy) + (equal server-clients (unless (eq proc 'nowait) (list proc)))) + ;; If we're the last client connected to a lazy daemon, kill Emacs. + (save-buffers-kill-emacs arg) + (if (eq proc 'nowait) ;; Nowait frames have no client buffer list. - (if (cdr (frame-list)) - (progn (save-some-buffers arg) - (delete-frame)) - ;; If we're the last frame standing, kill Emacs. - (save-buffers-kill-emacs arg))) - ((processp proc) - (let ((buffers (process-get proc 'buffers))) - (save-some-buffers - arg (if buffers - ;; Only files from emacsclient file list. - (lambda () (memq (current-buffer) buffers)) - ;; No emacsclient file list: don't override - ;; `save-some-buffers-default-predicate' (unless - ;; ARG is non-nil), since we're not killing - ;; Emacs (unlike `save-buffers-kill-emacs'). - (and arg t))) - (server-delete-client proc))) - (t (error "Invalid client frame"))))) + (progn (save-some-buffers arg) + (delete-frame)) + (let ((buffers (process-get proc 'buffers))) + (save-some-buffers + arg (if buffers + ;; Only files from emacsclient file list. + (lambda () (memq (current-buffer) buffers)) + ;; No emacsclient file list: don't override + ;; `save-some-buffers-default-predicate' (unless ARG + ;; is non-nil), since we're not killing Emacs (unlike + ;; `save-buffers-kill-emacs'). + (and arg t))) + (server-delete-client proc)))))) (define-key ctl-x-map "#" 'server-edit) -- 2.25.1 --------------6EEDACE8E824739EB7D3680E-- From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 25 14:22:09 2021 Received: (at 51377) by debbugs.gnu.org; 25 Oct 2021 18:22:09 +0000 Received: from localhost ([127.0.0.1]:44248 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mf4bo-0004eU-WF for submit@debbugs.gnu.org; Mon, 25 Oct 2021 14:22:09 -0400 Received: from mail-pl1-f175.google.com ([209.85.214.175]:34787) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mf4bn-0004e2-81 for 51377@debbugs.gnu.org; Mon, 25 Oct 2021 14:22:07 -0400 Received: by mail-pl1-f175.google.com with SMTP id r5so3931517pls.1 for <51377@debbugs.gnu.org>; Mon, 25 Oct 2021 11:22:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=Y5KATo9/fb38SHIX9qZfGASX0F7dZBfPLnBexsDqWvg=; b=pA5begTgyroY3ow1k0JUgCgr+azxpHgXBxIw9ETVJbXT3qENUuowBsKUJ3WOJD6qu1 BCq2cCDu9cF2rkdLwXDGYu55h8hv1qXJVUL21CkC+ta8y6F8uEwLK1L1ORILFZshIybV o+BuaQviXZQBp9iXIXlhq74oRTeMI15JMwUlSAAvwr1d5AkvlR8rjlnMSB97Oh3YV73r mGYuDAMnhbUuS5wIy9Pb8hXmtd76d9+AqsF7saqcj54ro4xnnS4aSo8VZEJdP6fm31UM zZE0xu3vDaPG301AHuyZugpB42SAvSK6r5yo6zhozhRoEXY/Y4ZY5aAyBuLUNjZUEDZ2 Yrog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=Y5KATo9/fb38SHIX9qZfGASX0F7dZBfPLnBexsDqWvg=; b=TkKttm7KiL9rdw4nZvYvzsugoN6Ztba4B2SAI/IY3u7mf7oZ5cJnaxs+Sc20VksJIV 6Y7w1bNmB0XUGy8TUzTyxtPMCYaV7IGKLGdPrOBgtiRzkWTVlFdFBbi18w1tMEP35DBh f6NjQ6sY21StSWPXa+S9JEZWyFXgEDhVbpAlU1zQzWWqhFabFjTBz3RVWJMo6A39WsHz ovhWQPc46jTNTSaP8kRPzuvSNOHzOXnYSXpvh/nl0o1Eg7Qwuh3qzAx05NBRFnEvaxJ4 0iGmjXtGnnkvyIeITiiAMzCgqIuzOnvcUz4Snu5b7DZYCJHrdJHKX3GBB/knvwZJyfTI hgew== X-Gm-Message-State: AOAM532kdCF/CSyl51YpymhstZcbiwCx0V3hB8wZIRwtrXTBkU3ve0R/ aMBDp95fvVS4vbgDdubK+q/myYzR+Pw= X-Google-Smtp-Source: ABdhPJxHIOQX+GIj7xbxDHxw3OgbhIpL8uI5/Nn5JhVu/juGjJY70I2/HYRHnPqd+DiVZz/btVoQMg== X-Received: by 2002:a17:902:db0a:b0:13e:e968:e144 with SMTP id m10-20020a170902db0a00b0013ee968e144mr18156860plx.43.1635186121252; Mon, 25 Oct 2021 11:22:01 -0700 (PDT) Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id w1sm6881790pjd.1.2021.10.25.11.22.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 25 Oct 2021 11:22:00 -0700 (PDT) Subject: Re: bug#51377: Automatically exit server when it has no remaining clients To: Gregory Heytings References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> <90ba36dcccde742a3c60@heytings.org> <2fb21ea4-0b95-a76b-8c5f-f8a6c7c1fc9b@gmail.com> <90ba36dccc0584692d36@heytings.org> From: Jim Porter Message-ID: <35f9b78b-c698-d92b-d6bb-fc6392944b7b@gmail.com> Date: Mon, 25 Oct 2021 11:21:59 -0700 MIME-Version: 1.0 In-Reply-To: <90ba36dccc0584692d36@heytings.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) On 10/24/2021 2:37 PM, Gregory Heytings wrote: > I see.  We have different mental models, I guess.  From my viewpoint the > Emacs server should stay there until it's not necessary, and I'd be > surprised to be queried about what to do with buffers opened of > processes started in a frame I already closed when I want to close > another frame. But of course I do not object to have both behaviors. [snip] > > I attach a patch for that other behavior, it works fine AFAICS. There are a few issues that I found when doing this previously: 1) I think it should check whether there are other *clients*, not other *frames*. One client might have multiple frames open, and `C-x C-c' closes all frames for the current client. If there's only one client left, but it has two frames open, it should still kill the server, since there will be no more (non-daemon) frames after `C-x C-c'. (Also, it should check `(daemonp)', since this logic doesn't apply to a client of a non-daemon Emacs.) 2) When killing the Emacs daemon from the last client, `server-kill-emacs-query-function' (probably) doesn't need to warn you that there are still clients. There's only the one client remaining, which the user already intends to kill (albeit indirectly, by killing the daemon). 3) `handle-delete-frame' (used when clicking the X button in your window manager) can also call `save-buffers-kill-emacs' if the user closed the last frame. The logic here should exclude the daemon frame from counting as another frame so that closing all frames via the window manager stops the daemon too. I did the above in my patch[1], which could be modified pretty easily to use the `server-stop-when-closing-last-frame' option you added in your patch. There might be other cases I haven't accounted for, but it's working so far in my local configuration. [1] https://lists.gnu.org/archive/html/bug-gnu-emacs/2021-10/msg02209.html From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 26 06:37:42 2021 Received: (at 51377) by debbugs.gnu.org; 26 Oct 2021 10:37:42 +0000 Received: from localhost ([127.0.0.1]:45203 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfJpt-0006u6-Sv for submit@debbugs.gnu.org; Tue, 26 Oct 2021 06:37:42 -0400 Received: from heytings.org ([95.142.160.155]:35952) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfJpr-0006tu-MB for 51377@debbugs.gnu.org; Tue, 26 Oct 2021 06:37:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635244658; bh=soZsUco/R/uME9vY8coLSYciaPP4SE/8Fu10vPzWjgk=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=SieVga8AnIajwPcbcLtAZgxlbLA5zNrYnafaEa2WubvsC5R0Ioxex9LjO1FUbn1ds p8SXjFSep2d35L6S4p/cX11i2Ur+MxrlNjJUwdiLAtn8h3ctFqkw5O/Kn7deM2HDSO apup5fvfw+Rq0XiGPwn/e9ZepM5Qv6vHimGEE7sC2u5af2sz18I9n52+2Ook4Sb0is IXMYAdjWdZ9ML113KkbRqeBx3tagv/5bqySu7TdCdxd7GnCadJgHCIfoU3paqiLQ4b pFphxn24Ri0HWe8ilKY47VidaR8Zv25atEw8PpyephGq9N+oPvZDOtown4zAPNT2wD Sa+jeMu45Ksrg== Date: Tue, 26 Oct 2021 10:37:38 +0000 From: Gregory Heytings To: Jim Porter Subject: Re: bug#51377: Automatically exit server when it has no remaining clients In-Reply-To: <35f9b78b-c698-d92b-d6bb-fc6392944b7b@gmail.com> Message-ID: <664bd93fdd10b4061070@heytings.org> References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> <90ba36dcccde742a3c60@heytings.org> <2fb21ea4-0b95-a76b-8c5f-f8a6c7c1fc9b@gmail.com> <90ba36dccc0584692d36@heytings.org> <35f9b78b-c698-d92b-d6bb-fc6392944b7b@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="wwAWweFZC1" Content-ID: <664bd93fdd572047fc28@heytings.org> X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) --wwAWweFZC1 Content-Type: text/plain; charset=us-ascii; format=flowed Content-ID: <664bd93fdd8d46974def@heytings.org> > > 1) I think it should check whether there are other *clients*, not other > *frames*. > No, because nowait client frames are not recorded as clients. There's no way around it, it's necessary to use frames. > > 3) `handle-delete-frame' (used when clicking the X button in your window > manager) can also call `save-buffers-kill-emacs' if the user closed the > last frame. The logic here should exclude the daemon frame from counting > as another frame so that closing all frames via the window manager stops > the daemon too. > If it's now also necessary to kill the daemon when you close the last Emacs frame with the window manager close button (I did not see this requirement in your original post), then it's also necessary to kill the daemon when you close the last Emacs frame with C-x 5 0 (delete-frame), because it's what Emacs tells you to do when you call emacsclient without a file argument. Here's a combined patch, which implements the two desired behaviors, and which I believe handles all cases properly: delete-frame, handele-delete-frame, save-buffers-kill-terminal, wait and nowait clients. --wwAWweFZC1 Content-Type: text/x-diff; name=Options-to-automatically-stop-the-Emacs-server.patch; charset=us-ascii Content-Transfer-Encoding: base64 Content-ID: <664bd93fddf2850ec8e5@heytings.org> Content-Description: Content-Disposition: attachment; filename=Options-to-automatically-stop-the-Emacs-server.patch RnJvbSAzYTZiYzA1OWRjYzBjMjliZTgxYTgzZjcwZjg2Nzg5N2E5ODkwNjY3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBUdWUsIDI2IE9j dCAyMDIxIDEwOjIxOjU4ICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIE9wdGlv bnMgdG8gYXV0b21hdGljYWxseSBzdG9wIHRoZSBFbWFjcyBzZXJ2ZXIuDQoN CiogbGlzcC9zZXJ2ZXIuZWwgKHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkp OiBOZXcgZnVuY3Rpb24uDQooc2VydmVyLXN0b3AtYXV0b21hdGljYWxseSk6 IE5ldyBhdXhpbGlhcnkgdmFyaWFibGUuDQooc2VydmVyLXN0b3AtYXV0b21h dGljYWxseS0taGFuZGxlLWRlbGV0ZS1mcmFtZSk6IE5ldyBhdXhpbGlhcnkN CmZ1bmN0aW9uLg0KKHNlcnZlci1zYXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5h bCk6IENhbGwgdGhlIG5ldyBhdXhpbGlhcnkNCmZ1bmN0aW9uIHdoZW4gbmVj ZXNzYXJ5Lg0KKiBkb2MvZW1hY3MvbWlzYy50ZXhpIChFbWFjcyBTZXJ2ZXIp OiBEb2N1bWVudCB0aGUgbmV3IGZ1bmN0aW9uLg0KQWxzbyBtZW50aW9uIHRo YXQgYW4gRW1hY3Mgc2VydmVyIGNhbiBiZSBzdGFydGVkIHdpdGggZW1hY3Nj bGllbnQuDQotLS0NCiBkb2MvZW1hY3MvbWlzYy50ZXhpIHwgIDE3ICsrKysr KysrDQogbGlzcC9zZXJ2ZXIuZWwgICAgICB8IDEwMyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KIDIgZmlsZXMgY2hh bmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pDQoNCmRp ZmYgLS1naXQgYS9kb2MvZW1hY3MvbWlzYy50ZXhpIGIvZG9jL2VtYWNzL21p c2MudGV4aQ0KaW5kZXggNTEyM2E3MTZkYy4uNzdlNDE2NDAzZSAxMDA2NDQN Ci0tLSBhL2RvYy9lbWFjcy9taXNjLnRleGkNCisrKyBiL2RvYy9lbWFjcy9t aXNjLnRleGkNCkBAIC0xNjk3LDYgKzE2OTcsMTEgQEAgRW1hY3MgU2VydmVy DQogY2FsbHMgQGNvZGV7c2VydmVyLXN0YXJ0fSBhZnRlciBpbml0aWFsaXph dGlvbiBhbmQgZG9lcyBub3Qgb3BlbiBhbg0KIGluaXRpYWwgZnJhbWUuICBJ dCB0aGVuIHdhaXRzIGZvciBlZGl0IHJlcXVlc3RzIGZyb20gY2xpZW50cy4N CiANCitAaXRlbQ0KK1J1biB0aGUgY29tbWFuZCBAY29kZXtlbWFjc2NsaWVu dH0gd2l0aCB0aGUgQHNhbXB7LS1hbHRlcm5hdGUtZWRpdG9yPSIifQ0KK2Nv bW1hbmQtbGluZSBvcHRpb24uICBUaGlzIHN0YXJ0cyBhbiBFbWFjcyBkYWVt b24gb25seSBpZiBubyBFbWFjcyBkYWVtb24NCitpcyBhbHJlYWR5IHJ1bm5p bmcuDQorDQogQGNpbmRleCBzeXN0ZW1kIHVuaXQgZmlsZQ0KIEBpdGVtDQog SWYgeW91ciBvcGVyYXRpbmcgc3lzdGVtIHVzZXMgQGNvbW1hbmR7c3lzdGVt ZH0gdG8gbWFuYWdlIHN0YXJ0dXAsDQpAQCAtMTc2Myw2ICsxNzY4LDE4IEBA IEVtYWNzIFNlcnZlcg0KICAgZW1hY3MgLS1kYWVtb249Zm9vDQogQGVuZCBl eGFtcGxlDQogDQorQGZpbmRleCBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5 DQorICBJZiB5b3Ugd2FudCB0byBhdXRvbWF0aWNhbGx5IHN0b3AgdGhlIEVt YWNzIHNlcnZlciB3aGVuIGl0IGhhcyBubw0KK2NsaWVudHMsIG5vIHVuc2F2 ZWQgZmlsZS12aXNpdGluZyBidWZmZXJzIGFuZCBubyBydW5uaW5nIHByb2Nl c3Nlcw0KK2FueW1vcmUsIHB1dCB0aGUgZXhwcmVzc2lvbiBAY29kZXsoc2Vy dmVyLXN0b3AtYXV0b21hdGljYWxseSBuaWwpfSBpbg0KK3lvdXIgaW5pdCBm aWxlIChAcHhyZWZ7SW5pdCBGaWxlfSkuDQorDQorICBJZiB5b3Ugd2FudCB0 byBiZSBhc2tlZCB3aGV0aGVyIGVhY2ggdW5zYXZlZCBmaWxlLXZpc2l0aW5n IGJ1ZmZlcg0KK211c3QgYmUgc2F2ZWQgYW5kIGVhY2ggdW5maW5pc2hlZCBw cm9jZXNzIGNhbiBiZSBzdG9wcGVkIHdoZW4gdGhlIGxhc3QNCitjbGllbnQg ZnJhbWUgaXMgYmVpbmcgY2xvc2VkLCBhbmQgaWYgc28sIHRvIHN0b3AgdGhl IEVtYWNzIHNlcnZlciwgcHV0DQordGhlIGV4cHJlc3Npb24gQGNvZGV7KHNl cnZlci1zdG9wLWF1dG9tYXRpY2FsbHkgdCl9IGluIHlvdXIgaW5pdCBmaWxl DQorKEBweHJlZntJbml0IEZpbGV9KS4NCisNCiBAZmluZGV4IHNlcnZlci1l dmFsLWF0DQogICBJZiB5b3UgaGF2ZSBkZWZpbmVkIGEgc2VydmVyIGJ5IGEg dW5pcXVlIHNlcnZlciBuYW1lLCBpdCBpcyBwb3NzaWJsZQ0KIHRvIGNvbm5l Y3QgdG8gdGhlIHNlcnZlciBmcm9tIGFub3RoZXIgRW1hY3MgaW5zdGFuY2Ug YW5kIGV2YWx1YXRlIExpc3ANCmRpZmYgLS1naXQgYS9saXNwL3NlcnZlci5l bCBiL2xpc3Avc2VydmVyLmVsDQppbmRleCA2MzU5YTc2MTk5Li5mNmRjMGNj MTQ1IDEwMDY0NA0KLS0tIGEvbGlzcC9zZXJ2ZXIuZWwNCisrKyBiL2xpc3Av c2VydmVyLmVsDQpAQCAtMTcxNiw2ICsxNzE2LDkgQEAgc2VydmVyLXN3aXRj aC1idWZmZXINCiAgICAgKHdoZW4gc2VydmVyLXJhaXNlLWZyYW1lDQogICAg ICAgKHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQtZm9jdXMgKHdpbmRvdy1mcmFt ZSkpKSkpDQogDQorKGRlZnZhciBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5 IG5pbA0KKyAgIkludGVybmFsIHN0YXR1cyB2YXJpYWJsZSBmb3IgYHNlcnZl ci1zdG9wLWF1dG9tYXRpY2FsbHknLiIpDQorDQogOzs7IyMjYXV0b2xvYWQN CiAoZGVmdW4gc2VydmVyLXNhdmUtYnVmZmVycy1raWxsLXRlcm1pbmFsIChh cmcpDQogICA7OyBDYWxsZWQgZnJvbSBzYXZlLWJ1ZmZlcnMta2lsbC10ZXJt aW5hbCBpbiBmaWxlcy5lbC4NCkBAIC0xNzI0LDI3ICsxNzI3LDg1IEBAIHNl cnZlci1zYXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5hbA0KIA0KIElmIGVtYWNz Y2xpZW50IHdhcyBzdGFydGVkIHdpdGggYSBsaXN0IG9mIGZpbGVuYW1lcyB0 byBlZGl0LCB0aGVuDQogb25seSB0aGVzZSBmaWxlcyB3aWxsIGJlIGFza2Vk IHRvIGJlIHNhdmVkLiINCi0gIChsZXQgKChwcm9jIChmcmFtZS1wYXJhbWV0 ZXIgbmlsICdjbGllbnQpKSkNCi0gICAgKGNvbmQgKChlcSBwcm9jICdub3dh aXQpDQotCSAgIDs7IE5vd2FpdCBmcmFtZXMgaGF2ZSBubyBjbGllbnQgYnVm ZmVyIGxpc3QuDQotCSAgIChpZiAoY2RyIChmcmFtZS1saXN0KSkNCi0JICAg ICAgIChwcm9nbiAoc2F2ZS1zb21lLWJ1ZmZlcnMgYXJnKQ0KLQkJICAgICAg KGRlbGV0ZS1mcmFtZSkpDQotCSAgICAgOzsgSWYgd2UncmUgdGhlIGxhc3Qg ZnJhbWUgc3RhbmRpbmcsIGtpbGwgRW1hY3MuDQotCSAgICAgKHNhdmUtYnVm ZmVycy1raWxsLWVtYWNzIGFyZykpKQ0KLQkgICgocHJvY2Vzc3AgcHJvYykN Ci0JICAgKGxldCAoKGJ1ZmZlcnMgKHByb2Nlc3MtZ2V0IHByb2MgJ2J1ZmZl cnMpKSkNCi0JICAgICAoc2F2ZS1zb21lLWJ1ZmZlcnMNCi0JICAgICAgYXJn IChpZiBidWZmZXJzDQotICAgICAgICAgICAgICAgICAgICAgIDs7IE9ubHkg ZmlsZXMgZnJvbSBlbWFjc2NsaWVudCBmaWxlIGxpc3QuDQotCQkgICAgICAo bGFtYmRhICgpIChtZW1xIChjdXJyZW50LWJ1ZmZlcikgYnVmZmVycykpDQot ICAgICAgICAgICAgICAgICAgICA7OyBObyBlbWFjc2NsaWVudCBmaWxlIGxp c3Q6IGRvbid0IG92ZXJyaWRlDQotICAgICAgICAgICAgICAgICAgICA7OyBg c2F2ZS1zb21lLWJ1ZmZlcnMtZGVmYXVsdC1wcmVkaWNhdGUnICh1bmxlc3MN Ci0gICAgICAgICAgICAgICAgICAgIDs7IEFSRyBpcyBub24tbmlsKSwgc2lu Y2Ugd2UncmUgbm90IGtpbGxpbmcNCi0gICAgICAgICAgICAgICAgICAgIDs7 IEVtYWNzICh1bmxpa2UgYHNhdmUtYnVmZmVycy1raWxsLWVtYWNzJykuDQot CQkgICAgKGFuZCBhcmcgdCkpKQ0KLQkgICAgIChzZXJ2ZXItZGVsZXRlLWNs aWVudCBwcm9jKSkpDQotCSAgKHQgKGVycm9yICJJbnZhbGlkIGNsaWVudCBm cmFtZSIpKSkpKQ0KKyAgKGlmIHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkN CisgICAgICAoc2VydmVyLXN0b3AtYXV0b21hdGljYWxseS0taGFuZGxlLWRl bGV0ZS1mcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQ0KKyAgICAobGV0ICgocHJv YyAoZnJhbWUtcGFyYW1ldGVyIG5pbCAnY2xpZW50KSkpDQorICAgICAgKGNv bmQgKChlcSBwcm9jICdub3dhaXQpDQorCSAgICAgOzsgTm93YWl0IGZyYW1l cyBoYXZlIG5vIGNsaWVudCBidWZmZXIgbGlzdC4NCisJICAgICAoaWYgKGNk ciAoZnJhbWUtbGlzdCkpDQorCSAgICAgICAgIChwcm9nbiAoc2F2ZS1zb21l LWJ1ZmZlcnMgYXJnKQ0KKwkJICAgICAgICAoZGVsZXRlLWZyYW1lKSkNCisJ ICAgICAgIDs7IElmIHdlJ3JlIHRoZSBsYXN0IGZyYW1lIHN0YW5kaW5nLCBr aWxsIEVtYWNzLg0KKwkgICAgICAgKHNhdmUtYnVmZmVycy1raWxsLWVtYWNz IGFyZykpKQ0KKwkgICAgKChwcm9jZXNzcCBwcm9jKQ0KKwkgICAgIChsZXQg KChidWZmZXJzIChwcm9jZXNzLWdldCBwcm9jICdidWZmZXJzKSkpDQorCSAg ICAgICAoc2F2ZS1zb21lLWJ1ZmZlcnMNCisJICAgICAgICBhcmcgKGlmIGJ1 ZmZlcnMNCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBPbmx5IGZpbGVz IGZyb20gZW1hY3NjbGllbnQgZmlsZSBsaXN0Lg0KKwkJICAgICAgICAobGFt YmRhICgpIChtZW1xIChjdXJyZW50LWJ1ZmZlcikgYnVmZmVycykpDQorICAg ICAgICAgICAgICAgICAgICAgIDs7IE5vIGVtYWNzY2xpZW50IGZpbGUgbGlz dDogZG9uJ3Qgb3ZlcnJpZGUNCisgICAgICAgICAgICAgICAgICAgICAgOzsg YHNhdmUtc29tZS1idWZmZXJzLWRlZmF1bHQtcHJlZGljYXRlJyAodW5sZXNz DQorICAgICAgICAgICAgICAgICAgICAgIDs7IEFSRyBpcyBub24tbmlsKSwg c2luY2Ugd2UncmUgbm90IGtpbGxpbmcNCisgICAgICAgICAgICAgICAgICAg ICAgOzsgRW1hY3MgKHVubGlrZSBgc2F2ZS1idWZmZXJzLWtpbGwtZW1hY3Mn KS4NCisJCSAgICAgIChhbmQgYXJnIHQpKSkNCisJICAgICAgIChzZXJ2ZXIt ZGVsZXRlLWNsaWVudCBwcm9jKSkpDQorCSAgICAodCAoZXJyb3IgIkludmFs aWQgY2xpZW50IGZyYW1lIikpKSkpKQ0KKw0KKyhkZWZ1biBzZXJ2ZXItc3Rv cC1hdXRvbWF0aWNhbGx5LS1oYW5kbGUtZGVsZXRlLWZyYW1lIChmcmFtZSkN CisgICJIYW5kbGUgZGVsZXRpb24gb2YgYSBmcmFtZSB3aGVuIGBzZXJ2ZXIt c3RvcC1hdXRvbWF0aWNhbGx5JyBpcyB0LiINCisgICh3aGVuIHNlcnZlci1z dG9wLWF1dG9tYXRpY2FsbHkNCisgICAgKGlmIChpZiAoYW5kIChwcm9jZXNz cCAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdjbGllbnQpKQ0KKyAgICAgICAg ICAgICAgICAgKGVxIHRoaXMtY29tbWFuZCAnc2F2ZS1idWZmZXJzLWtpbGwt dGVybWluYWwpKQ0KKyAgICAgICAgICAgIChwcm9nbg0KKyAgICAgICAgICAg ICAgKGRvbGlzdCAoZiAoZnJhbWUtbGlzdCkpDQorICAgICAgICAgICAgICAg ICh3aGVuIChhbmQgKGVxIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ2NsaWVu dCkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZyYW1lLXBh cmFtZXRlciBmICdjbGllbnQpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIChub3QgKGVxIGZyYW1lIGYpKSkNCisgICAgICAgICAgICAgICAgICAo c2V0LWZyYW1lLXBhcmFtZXRlciBmICdjbGllbnQgbmlsKQ0KKyAgICAgICAg ICAgICAgICAgIChsZXQgKChzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5IG5p bCkpDQorICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWZyYW1lIGYpKSkp DQorICAgICAgICAgICAgICAoaWYgKGNkZHIgKGZyYW1lLWxpc3QpKQ0KKyAg ICAgICAgICAgICAgICAgIChsZXQgKChzZXJ2ZXItc3RvcC1hdXRvbWF0aWNh bGx5IG5pbCkpDQorICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLWZyYW1l IGZyYW1lKQ0KKyAgICAgICAgICAgICAgICAgICAgbmlsKQ0KKyAgICAgICAg ICAgICAgICB0KSkNCisgICAgICAgICAgKG51bGwgKGNkZHIgKGZyYW1lLWxp c3QpKSkpDQorICAgICAgICAobGV0ICgoc2VydmVyLXN0b3AtYXV0b21hdGlj YWxseSBuaWwpKQ0KKyAgICAgICAgICAoc2F2ZS1idWZmZXJzLWtpbGwtZW1h Y3MpDQorICAgICAgICAgIChkZWxldGUtZnJhbWUgZnJhbWUpKSkpKQ0KKw0K Kzs7OyMjI2F1dG9sb2FkDQorKGRlZnVuIHNlcnZlci1zdG9wLWF1dG9tYXRp Y2FsbHkgKGFyZykNCisgICJBdXRvbWF0aWNhbGx5IHN0b3Agc2VydmVyIHdo ZW4gcG9zc2libGUuDQorV2hlbiBBUkcgaXMgbmlsLCB0aGUgc2VydmVyIGlz IHN0b3BwZWQgd2hlbiBpdCBoYXMgbm8gcmVtYWluaW5nDQorY2xpZW50cywg bm8gcmVtYWluaW5nIHVuc2F2ZWQgZmlsZS12aXNpdGluZyBidWZmZXJzLCBh bmQgbm8NCitydW5uaW5nIHByb2Nlc3NlcyB3aXRoIGEgcXVlcnktb24tZXhp dCBmbGFnLg0KK1doZW4gQVJHIGlzIG5vbi1uaWwsIHdoZW4gdGhlIGxhc3Qg ZnJhbWUgaXMgYmVpbmcgY2xvc2VkLCB0aGUNCit1c2VyIGlzIGFza2VkIHdo ZXRoZXIgZWFjaCB1bnNhdmVkIGZpbGUtdmlzaXRpbmcgYnVmZmVyIG11c3Qg YmUNCitzYXZlZCBhbmQgZWFjaCBydW5uaW5nIHByb2Nlc3Mgd2l0aCBhIHF1 ZXJ5LW9uLWV4aXQgZmxhZyBtdXN0IGJlDQora2lsbGVkLCBhbmQgaWYgc28s IHRoZSBzZXJ2ZXIgaXRzZWxmIGlzIHN0b3BwZWQuDQorVGhpcyBmdW5jdGlv biBpcyBtZWFudCB0byBiZSBwdXQgaW4gaW5pdCBmaWxlcy4iDQorICAod2hl biAoZGFlbW9ucCkNCisgICAgKHNldHEgc2VydmVyLXN0b3AtYXV0b21hdGlj YWxseSBhcmcpDQorICAgIChpZiBhcmcNCisJKGFkZC1ob29rICdkZWxldGUt ZnJhbWUtZnVuY3Rpb25zDQorCQkgICMnc2VydmVyLXN0b3AtYXV0b21hdGlj YWxseS0taGFuZGxlLWRlbGV0ZS1mcmFtZSkNCisgICAgICAocnVuLXdpdGgt dGltZXINCisgICAgICAgMTAgMg0KKyAgICAgICAobGFtYmRhICgpDQorCSAo dW5sZXNzIChjZHIgKGZyYW1lLWxpc3QpKQ0KKwkgICAod2hlbiAoYW5kDQor CQkgIChub3QgKG1lbXEgdCAobWFwY2FyIChsYW1iZGEgKGIpDQorCQkJCQkg KGFuZCAoYnVmZmVyLWZpbGUtbmFtZSBiKQ0KKwkJCQkJICAgICAgKGJ1ZmZl ci1tb2RpZmllZC1wIGIpKSkNCisJCQkJICAgICAgIChidWZmZXItbGlzdCkp KSkNCisJCSAgKG5vdCAobWVtcSB0IChtYXBjYXIgKGxhbWJkYSAocCkNCisJ CQkJCSAoYW5kIChtZW1xIChwcm9jZXNzLXN0YXR1cyBwKQ0KKwkJCQkJCSAg ICAnKHJ1biBzdG9wIG9wZW4gbGlzdGVuKSkNCisJCQkJCSAgICAgIChwcm9j ZXNzLXF1ZXJ5LW9uLWV4aXQtZmxhZyBwKSkpDQorCQkJCSAgICAgICAocHJv Y2Vzcy1saXN0KSkpKSkNCisJICAgICAocHJpbnQgImtpbGxpbmcgc2VydmVy IiAjJ2V4dGVybmFsLWRlYnVnZ2luZy1vdXRwdXQpDQorCSAgICAgKGtpbGwt ZW1hY3MpKSkpKSkpKQ0KIA0KIChkZWZpbmUta2V5IGN0bC14LW1hcCAiIyIg J3NlcnZlci1lZGl0KQ0KIA0KLS0gDQoyLjMzLjANCg0K --wwAWweFZC1-- From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 26 07:59:29 2021 Received: (at 51377) by debbugs.gnu.org; 26 Oct 2021 11:59:29 +0000 Received: from localhost ([127.0.0.1]:45313 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfL73-00055r-6J for submit@debbugs.gnu.org; Tue, 26 Oct 2021 07:59:29 -0400 Received: from heytings.org ([95.142.160.155]:36028) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfL70-00055f-Nc for 51377@debbugs.gnu.org; Tue, 26 Oct 2021 07:59:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635249565; bh=i3HBLesEQqGRjNExy6d+La/ChlbSCX/MsmavtETNyrY=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=rik6U8BEPK8qIN/uLQFH0uD3mal4szw5IzEH3lnSCA8nN6Cw0NN9jHj3U8eSpzRco brbg6cV+DnMKrTqhAuFWzshqEFSv6RGo6LKvdpna+NmU7nXFDfU6oxyxJJxOQpbEeh DYatB0JXGSwfIhbivOwB995t+YEuvpRrSgrTPL0lZcJI32cfTcXcZhyClJK1RuAn9N aJOyhHQVQpD9Bru13mA6LlvvetGARFy6r8ge55DAbvdGMNFjTzRcqRoBtzR03RhBAs gTQDoVZkwNyb5M0ODeW9YkSLuJoOH0yQnPdYLnZjpN4NUpfsYqAbXV/99ocolnNAAr x8rTHin1LlAmA== Date: Tue, 26 Oct 2021 11:59:25 +0000 From: Gregory Heytings To: Jim Porter Subject: Re: bug#51377: Automatically exit server when it has no remaining clients In-Reply-To: <664bd93fdd10b4061070@heytings.org> Message-ID: <664bd93fdd4886b48d45@heytings.org> References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> <90ba36dcccde742a3c60@heytings.org> <2fb21ea4-0b95-a76b-8c5f-f8a6c7c1fc9b@gmail.com> <90ba36dccc0584692d36@heytings.org> <35f9b78b-c698-d92b-d6bb-fc6392944b7b@gmail.com> <664bd93fdd10b4061070@heytings.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="vnwOlVsOQW" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) --vnwOlVsOQW Content-Type: text/plain; charset=us-ascii; format=flowed > > Here's a combined patch, which implements the two desired behaviors, and > which I believe handles all cases properly: delete-frame, > handele-delete-frame, save-buffers-kill-terminal, wait and nowait > clients. > It just occurred to me that it's very easy to add a third behavior, namely the one you expect, but only when the last frame is killed with C-x C-c. See attached patch. --vnwOlVsOQW Content-Type: text/x-diff; name=Options-to-automatically-stop-the-Emacs-server.patch Content-Transfer-Encoding: base64 Content-ID: <664bd93fddd659d710d7@heytings.org> Content-Description: Content-Disposition: attachment; filename=Options-to-automatically-stop-the-Emacs-server.patch RnJvbSAyZmZlZGJlZmY5N2UzM2RjOWM1MDRiOTg3NzI3MmZhNWI3MzcwN2Q2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBUdWUsIDI2IE9j dCAyMDIxIDExOjU0OjI3ICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIE9wdGlv bnMgdG8gYXV0b21hdGljYWxseSBzdG9wIHRoZSBFbWFjcyBzZXJ2ZXIuDQoN CiogbGlzcC9zZXJ2ZXIuZWwgKHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkp OiBOZXcgZnVuY3Rpb24uDQooc2VydmVyLXN0b3AtYXV0b21hdGljYWxseSk6 IE5ldyBhdXhpbGlhcnkgdmFyaWFibGUuDQooc2VydmVyLXN0b3AtYXV0b21h dGljYWxseS0tbWF5YmUta2lsbC1lbWFjcywNCnNlcnZlci1zdG9wLWF1dG9t YXRpY2FsbHktLWhhbmRsZS1kZWxldGUtZnJhbWUpOiBOZXcgYXV4aWxpYXJ5 DQpmdW5jdGlvbnMuDQooc2VydmVyLXNhdmUtYnVmZmVycy1raWxsLXRlcm1p bmFsKTogQ2FsbCB0aGUgbmV3IGF1eGlsaWFyeQ0KZnVuY3Rpb24gd2hlbiBu ZWNlc3NhcnkuDQoqIGRvYy9lbWFjcy9taXNjLnRleGkgKEVtYWNzIFNlcnZl cik6IERvY3VtZW50IHRoZSBuZXcgZnVuY3Rpb24uDQpBbHNvIG1lbnRpb24g dGhhdCBhbiBFbWFjcyBzZXJ2ZXIgY2FuIGJlIHN0YXJ0ZWQgd2l0aCBlbWFj c2NsaWVudC4NCi0tLQ0KIGRvYy9lbWFjcy9taXNjLnRleGkgfCAgMjAgKysr KysrKysNCiBsaXNwL3NlcnZlci5lbCAgICAgIHwgMTE2ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tDQogMiBmaWxlcyBj aGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pDQoN CmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvbWlzYy50ZXhpIGIvZG9jL2VtYWNz L21pc2MudGV4aQ0KaW5kZXggNTEyM2E3MTZkYy4uYjg4OTFlZDhjMyAxMDA2 NDQNCi0tLSBhL2RvYy9lbWFjcy9taXNjLnRleGkNCisrKyBiL2RvYy9lbWFj cy9taXNjLnRleGkNCkBAIC0xNjk3LDYgKzE2OTcsMTEgQEAgRW1hY3MgU2Vy dmVyDQogY2FsbHMgQGNvZGV7c2VydmVyLXN0YXJ0fSBhZnRlciBpbml0aWFs aXphdGlvbiBhbmQgZG9lcyBub3Qgb3BlbiBhbg0KIGluaXRpYWwgZnJhbWUu ICBJdCB0aGVuIHdhaXRzIGZvciBlZGl0IHJlcXVlc3RzIGZyb20gY2xpZW50 cy4NCiANCitAaXRlbQ0KK1J1biB0aGUgY29tbWFuZCBAY29kZXtlbWFjc2Ns aWVudH0gd2l0aCB0aGUgQHNhbXB7LS1hbHRlcm5hdGUtZWRpdG9yPSIifQ0K K2NvbW1hbmQtbGluZSBvcHRpb24uICBUaGlzIHN0YXJ0cyBhbiBFbWFjcyBk YWVtb24gb25seSBpZiBubyBFbWFjcyBkYWVtb24NCitpcyBhbHJlYWR5IHJ1 bm5pbmcuDQorDQogQGNpbmRleCBzeXN0ZW1kIHVuaXQgZmlsZQ0KIEBpdGVt DQogSWYgeW91ciBvcGVyYXRpbmcgc3lzdGVtIHVzZXMgQGNvbW1hbmR7c3lz dGVtZH0gdG8gbWFuYWdlIHN0YXJ0dXAsDQpAQCAtMTc2Myw2ICsxNzY4LDIx IEBAIEVtYWNzIFNlcnZlcg0KICAgZW1hY3MgLS1kYWVtb249Zm9vDQogQGVu ZCBleGFtcGxlDQogDQorQGZpbmRleCBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNh bGx5DQorICBJZiB5b3Ugd2FudCB0byBhdXRvbWF0aWNhbGx5IHN0b3AgdGhl IEVtYWNzIHNlcnZlciB3aGVuIGl0IGhhcyBubw0KK2NsaWVudHMsIG5vIHVu c2F2ZWQgZmlsZS12aXNpdGluZyBidWZmZXJzIGFuZCBubyBydW5uaW5nIHBy b2Nlc3Nlcw0KK2FueW1vcmUsIHB1dCB0aGUgZXhwcmVzc2lvbiBAY29kZXso c2VydmVyLXN0b3AtYXV0b21hdGljYWxseSBuaWwpfSBpbg0KK3lvdXIgaW5p dCBmaWxlIChAcHhyZWZ7SW5pdCBGaWxlfSkuDQorDQorICBJZiB5b3Ugd2Fu dCB0byBiZSBhc2tlZCB3aGV0aGVyIGVhY2ggdW5zYXZlZCBmaWxlLXZpc2l0 aW5nIGJ1ZmZlcg0KK211c3QgYmUgc2F2ZWQgYW5kIGVhY2ggdW5maW5pc2hl ZCBwcm9jZXNzIGNhbiBiZSBzdG9wcGVkIHdoZW4gdGhlIGxhc3QNCitjbGll bnQgZnJhbWUgaXMgYmVpbmcgY2xvc2VkLCBhbmQgaWYgc28sIHRvIHN0b3Ag dGhlIEVtYWNzIHNlcnZlciwgcHV0DQordGhlIGV4cHJlc3Npb24gQGNvZGV7 KHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkgdCl9IGluIHlvdXIgaW5pdCBm aWxlDQorKEBweHJlZntJbml0IEZpbGV9KS4gIElmIHlvdSB3YW50IHRoaXMg dG8gaGFwcGVuIG9ubHkgd2hlbiB0aGUgbGFzdA0KK2NsaWVudCBmcmFtZSBp cyBiZWluZyBjbG9zZWQgd2l0aCBAa2Jke0MteCBDLWN9DQorKEBjb2Rle3Nh dmUtYnVmZmVycy1raWxsLXRlcm1pbmFsfSksIHB1dCB0aGUgZXhwcmVzc2lv bg0KK0Bjb2RleyhzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5ICdraWxsLXRl cm1pbmFsKX0gaW4geW91ciBpbml0IGZpbGUuDQorDQogQGZpbmRleCBzZXJ2 ZXItZXZhbC1hdA0KICAgSWYgeW91IGhhdmUgZGVmaW5lZCBhIHNlcnZlciBi eSBhIHVuaXF1ZSBzZXJ2ZXIgbmFtZSwgaXQgaXMgcG9zc2libGUNCiB0byBj b25uZWN0IHRvIHRoZSBzZXJ2ZXIgZnJvbSBhbm90aGVyIEVtYWNzIGluc3Rh bmNlIGFuZCBldmFsdWF0ZSBMaXNwDQpkaWZmIC0tZ2l0IGEvbGlzcC9zZXJ2 ZXIuZWwgYi9saXNwL3NlcnZlci5lbA0KaW5kZXggNjM1OWE3NjE5OS4uYTgx OTEzZmU5OCAxMDA2NDQNCi0tLSBhL2xpc3Avc2VydmVyLmVsDQorKysgYi9s aXNwL3NlcnZlci5lbA0KQEAgLTE3MTYsNiArMTcxNiw5IEBAIHNlcnZlci1z d2l0Y2gtYnVmZmVyDQogICAgICh3aGVuIHNlcnZlci1yYWlzZS1mcmFtZQ0K ICAgICAgIChzZWxlY3QtZnJhbWUtc2V0LWlucHV0LWZvY3VzICh3aW5kb3ct ZnJhbWUpKSkpKQ0KIA0KKyhkZWZ2YXIgc2VydmVyLXN0b3AtYXV0b21hdGlj YWxseSBuaWwNCisgICJJbnRlcm5hbCBzdGF0dXMgdmFyaWFibGUgZm9yIGBz ZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5Jy4iKQ0KKw0KIDs7OyMjI2F1dG9s b2FkDQogKGRlZnVuIHNlcnZlci1zYXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5h bCAoYXJnKQ0KICAgOzsgQ2FsbGVkIGZyb20gc2F2ZS1idWZmZXJzLWtpbGwt dGVybWluYWwgaW4gZmlsZXMuZWwuDQpAQCAtMTcyNCwyNyArMTcyNyw5OCBA QCBzZXJ2ZXItc2F2ZS1idWZmZXJzLWtpbGwtdGVybWluYWwNCiANCiBJZiBl bWFjc2NsaWVudCB3YXMgc3RhcnRlZCB3aXRoIGEgbGlzdCBvZiBmaWxlbmFt ZXMgdG8gZWRpdCwgdGhlbg0KIG9ubHkgdGhlc2UgZmlsZXMgd2lsbCBiZSBh c2tlZCB0byBiZSBzYXZlZC4iDQotICAobGV0ICgocHJvYyAoZnJhbWUtcGFy YW1ldGVyIG5pbCAnY2xpZW50KSkpDQotICAgIChjb25kICgoZXEgcHJvYyAn bm93YWl0KQ0KLQkgICA7OyBOb3dhaXQgZnJhbWVzIGhhdmUgbm8gY2xpZW50 IGJ1ZmZlciBsaXN0Lg0KLQkgICAoaWYgKGNkciAoZnJhbWUtbGlzdCkpDQot CSAgICAgICAocHJvZ24gKHNhdmUtc29tZS1idWZmZXJzIGFyZykNCi0JCSAg ICAgIChkZWxldGUtZnJhbWUpKQ0KLQkgICAgIDs7IElmIHdlJ3JlIHRoZSBs YXN0IGZyYW1lIHN0YW5kaW5nLCBraWxsIEVtYWNzLg0KLQkgICAgIChzYXZl LWJ1ZmZlcnMta2lsbC1lbWFjcyBhcmcpKSkNCi0JICAoKHByb2Nlc3NwIHBy b2MpDQotCSAgIChsZXQgKChidWZmZXJzIChwcm9jZXNzLWdldCBwcm9jICdi dWZmZXJzKSkpDQotCSAgICAgKHNhdmUtc29tZS1idWZmZXJzDQotCSAgICAg IGFyZyAoaWYgYnVmZmVycw0KLSAgICAgICAgICAgICAgICAgICAgICA7OyBP bmx5IGZpbGVzIGZyb20gZW1hY3NjbGllbnQgZmlsZSBsaXN0Lg0KLQkJICAg ICAgKGxhbWJkYSAoKSAobWVtcSAoY3VycmVudC1idWZmZXIpIGJ1ZmZlcnMp KQ0KLSAgICAgICAgICAgICAgICAgICAgOzsgTm8gZW1hY3NjbGllbnQgZmls ZSBsaXN0OiBkb24ndCBvdmVycmlkZQ0KLSAgICAgICAgICAgICAgICAgICAg OzsgYHNhdmUtc29tZS1idWZmZXJzLWRlZmF1bHQtcHJlZGljYXRlJyAodW5s ZXNzDQotICAgICAgICAgICAgICAgICAgICA7OyBBUkcgaXMgbm9uLW5pbCks IHNpbmNlIHdlJ3JlIG5vdCBraWxsaW5nDQotICAgICAgICAgICAgICAgICAg ICA7OyBFbWFjcyAodW5saWtlIGBzYXZlLWJ1ZmZlcnMta2lsbC1lbWFjcycp Lg0KLQkJICAgIChhbmQgYXJnIHQpKSkNCi0JICAgICAoc2VydmVyLWRlbGV0 ZS1jbGllbnQgcHJvYykpKQ0KLQkgICh0IChlcnJvciAiSW52YWxpZCBjbGll bnQgZnJhbWUiKSkpKSkNCisgIChpZiBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNh bGx5DQorICAgICAgKHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHktLWhhbmRs ZS1kZWxldGUtZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkNCisgICAgKGxldCAo KHByb2MgKGZyYW1lLXBhcmFtZXRlciBuaWwgJ2NsaWVudCkpKQ0KKyAgICAg IChjb25kICgoZXEgcHJvYyAnbm93YWl0KQ0KKwkgICAgIDs7IE5vd2FpdCBm cmFtZXMgaGF2ZSBubyBjbGllbnQgYnVmZmVyIGxpc3QuDQorCSAgICAgKGlm IChjZHIgKGZyYW1lLWxpc3QpKQ0KKwkgICAgICAgICAocHJvZ24gKHNhdmUt c29tZS1idWZmZXJzIGFyZykNCisJCSAgICAgICAgKGRlbGV0ZS1mcmFtZSkp DQorCSAgICAgICA7OyBJZiB3ZSdyZSB0aGUgbGFzdCBmcmFtZSBzdGFuZGlu Zywga2lsbCBFbWFjcy4NCisJICAgICAgIChzYXZlLWJ1ZmZlcnMta2lsbC1l bWFjcyBhcmcpKSkNCisJICAgICgocHJvY2Vzc3AgcHJvYykNCisJICAgICAo bGV0ICgoYnVmZmVycyAocHJvY2Vzcy1nZXQgcHJvYyAnYnVmZmVycykpKQ0K KwkgICAgICAgKHNhdmUtc29tZS1idWZmZXJzDQorCSAgICAgICAgYXJnIChp ZiBidWZmZXJzDQorICAgICAgICAgICAgICAgICAgICAgICAgOzsgT25seSBm aWxlcyBmcm9tIGVtYWNzY2xpZW50IGZpbGUgbGlzdC4NCisJCSAgICAgICAg KGxhbWJkYSAoKSAobWVtcSAoY3VycmVudC1idWZmZXIpIGJ1ZmZlcnMpKQ0K KyAgICAgICAgICAgICAgICAgICAgICA7OyBObyBlbWFjc2NsaWVudCBmaWxl IGxpc3Q6IGRvbid0IG92ZXJyaWRlDQorICAgICAgICAgICAgICAgICAgICAg IDs7IGBzYXZlLXNvbWUtYnVmZmVycy1kZWZhdWx0LXByZWRpY2F0ZScgKHVu bGVzcw0KKyAgICAgICAgICAgICAgICAgICAgICA7OyBBUkcgaXMgbm9uLW5p bCksIHNpbmNlIHdlJ3JlIG5vdCBraWxsaW5nDQorICAgICAgICAgICAgICAg ICAgICAgIDs7IEVtYWNzICh1bmxpa2UgYHNhdmUtYnVmZmVycy1raWxsLWVt YWNzJykuDQorCQkgICAgICAoYW5kIGFyZyB0KSkpDQorCSAgICAgICAoc2Vy dmVyLWRlbGV0ZS1jbGllbnQgcHJvYykpKQ0KKwkgICAgKHQgKGVycm9yICJJ bnZhbGlkIGNsaWVudCBmcmFtZSIpKSkpKSkNCisNCisoZGVmdW4gc2VydmVy LXN0b3AtYXV0b21hdGljYWxseS0taGFuZGxlLWRlbGV0ZS1mcmFtZSAoZnJh bWUpDQorICAiSGFuZGxlIGRlbGV0aW9uIG9mIGEgZnJhbWUgd2hlbiBgc2Vy dmVyLXN0b3AtYXV0b21hdGljYWxseScgaXMgdC4iDQorICAod2hlbiBzZXJ2 ZXItc3RvcC1hdXRvbWF0aWNhbGx5DQorICAgIChpZiAoaWYgKGFuZCAocHJv Y2Vzc3AgKGZyYW1lLXBhcmFtZXRlciBmcmFtZSAnY2xpZW50KSkNCisJCSAo ZXEgdGhpcy1jb21tYW5kICdzYXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5hbCkp DQorCSAgICAocHJvZ24NCisJICAgICAgKGRvbGlzdCAoZiAoZnJhbWUtbGlz dCkpDQorCQkod2hlbiAoYW5kIChlcSAoZnJhbWUtcGFyYW1ldGVyIGZyYW1l ICdjbGllbnQpDQorCQkJICAgICAgIChmcmFtZS1wYXJhbWV0ZXIgZiAnY2xp ZW50KSkNCisJCQkgICAobm90IChlcSBmcmFtZSBmKSkpDQorCQkgIChzZXQt ZnJhbWUtcGFyYW1ldGVyIGYgJ2NsaWVudCBuaWwpDQorCQkgIChsZXQgKChz ZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5IG5pbCkpDQorCQkgICAgKGRlbGV0 ZS1mcmFtZSBmKSkpKQ0KKwkgICAgICAoaWYgKGNkZHIgKGZyYW1lLWxpc3Qp KQ0KKwkJICAobGV0ICgoc2VydmVyLXN0b3AtYXV0b21hdGljYWxseSBuaWwp KQ0KKwkJICAgIChkZWxldGUtZnJhbWUgZnJhbWUpDQorCQkgICAgbmlsKQ0K KwkJdCkpDQorCSAgKG51bGwgKGNkZHIgKGZyYW1lLWxpc3QpKSkpDQorCShs ZXQgKChzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5IG5pbCkpDQorCSAgKHNh dmUtYnVmZmVycy1raWxsLWVtYWNzKQ0KKwkgIChkZWxldGUtZnJhbWUgZnJh bWUpKSkpKQ0KKw0KKyhkZWZ1biBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5 LS1tYXliZS1raWxsLWVtYWNzICgpDQorICAiSGFuZGxlIGNsb3Npbmcgb2Yg RW1hY3MgZGFlbW9uIHdoZW4gYHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkn IGlzIG5pbC4iDQorICAodW5sZXNzIChjZHIgKGZyYW1lLWxpc3QpKQ0KKyAg ICAod2hlbiAoYW5kDQorCSAgIChub3QgKG1lbXEgdCAobWFwY2FyIChsYW1i ZGEgKGIpDQorCQkJCSAgKGFuZCAoYnVmZmVyLWZpbGUtbmFtZSBiKQ0KKwkJ CQkgICAgICAgKGJ1ZmZlci1tb2RpZmllZC1wIGIpKSkNCisJCQkJKGJ1ZmZl ci1saXN0KSkpKQ0KKwkgICAobm90IChtZW1xIHQgKG1hcGNhciAobGFtYmRh IChwKQ0KKwkJCQkgIChhbmQgKG1lbXEgKHByb2Nlc3Mtc3RhdHVzIHApDQor CQkJCQkgICAgICcocnVuIHN0b3Agb3BlbiBsaXN0ZW4pKQ0KKwkJCQkgICAg ICAgKHByb2Nlc3MtcXVlcnktb24tZXhpdC1mbGFnIHApKSkNCisJCQkJKHBy b2Nlc3MtbGlzdCkpKSkpDQorICAgICAgKGtpbGwtZW1hY3MpKSkpDQorDQor Ozs7IyMjYXV0b2xvYWQNCisoZGVmdW4gc2VydmVyLXN0b3AtYXV0b21hdGlj YWxseSAoYXJnKQ0KKyAgIkF1dG9tYXRpY2FsbHkgc3RvcCBzZXJ2ZXIgd2hl biBwb3NzaWJsZS4NCisNCitXaGVuIEFSRyBpcyBuaWwsIHRoZSBzZXJ2ZXIg aXMgc3RvcHBlZCB3aGVuIGl0IGhhcyBubyByZW1haW5pbmcNCitjbGllbnRz LCBubyByZW1haW5pbmcgdW5zYXZlZCBmaWxlLXZpc2l0aW5nIGJ1ZmZlcnMs IGFuZCBubw0KK3J1bm5pbmcgcHJvY2Vzc2VzIHdpdGggYSBxdWVyeS1vbi1l eGl0IGZsYWcuDQorDQorV2hlbiBBUkcgaXMgdCwgdGhlIHVzZXIgaXMgYXNr ZWQgd2hlbiB0aGUgbGFzdCBmcmFtZSBpcyBiZWluZw0KK2Nsb3NlZCB3aGV0 aGVyIGVhY2ggdW5zYXZlZCBmaWxlLXZpc2l0aW5nIGJ1ZmZlciBtdXN0IGJl IHNhdmVkDQorYW5kIGVhY2ggcnVubmluZyBwcm9jZXNzIHdpdGggYSBxdWVy eS1vbi1leGl0IGZsYWcgbXVzdCBiZQ0KK2tpbGxlZCwgYW5kIGlmIHNvLCB0 aGUgc2VydmVyIGl0c2VsZiBpcyBzdG9wcGVkLg0KKw0KK1doZW4gQVJHIGlz IGFueSBvdGhlciBub24tbmlsIHZhbHVlLCB0aGUgdXNlciBpcyBhc2tlZCB3 aGVuIHRoZQ0KK2xhc3QgZnJhbWUgaXMgYmVpbmcgY2xvc2Ugd2l0aCBcXFtz YXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5hbF0gXA0KK3doZXRoZXIgZWFjaCB1 bnNhdmVkDQorZmlsZS12aXNpdGluZyBidWZmZXIgbXVzdCBiZSBzYXZlZCBh bmQgZWFjaCBydW5uaW5nIHByb2Nlc3Mgd2l0aA0KK2EgcXVlcnktb24tZXhp dCBmbGFnIG11c3QgYmUga2lsbGVkLCBhbmQgaWYgc28sIHRoZSBzZXJ2ZXIg aXRzZWxmDQoraXMgc3RvcHBlZC4NCisNCitUaGlzIGZ1bmN0aW9uIGlzIG1l YW50IHRvIGJlIHB1dCBpbiBpbml0IGZpbGVzLiINCisgICh3aGVuIChkYWVt b25wKQ0KKyAgICAoc2V0cSBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5IGFy ZykNCisgICAgKGNvbmQNCisgICAgICgoZXEgYXJnIHQpDQorICAgICAgKGFk ZC1ob29rICdkZWxldGUtZnJhbWUtZnVuY3Rpb25zDQorCQkjJ3NlcnZlci1z dG9wLWF1dG9tYXRpY2FsbHktLWhhbmRsZS1kZWxldGUtZnJhbWUpKQ0KKyAg ICAgKChlcSBhcmcgbmlsKQ0KKyAgICAgIChydW4td2l0aC10aW1lciAxMCAy DQorCQkgICAgICAjJ3NlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHktLW1heWJl LWtpbGwtZW1hY3MpKSkpKQ0KIA0KIChkZWZpbmUta2V5IGN0bC14LW1hcCAi IyIgJ3NlcnZlci1lZGl0KQ0KIA0KLS0gDQoyLjMzLjANCg0K --vnwOlVsOQW-- From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 26 11:07:45 2021 Received: (at 51377) by debbugs.gnu.org; 26 Oct 2021 15:07:45 +0000 Received: from localhost ([127.0.0.1]:47331 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfO3E-0002QN-OH for submit@debbugs.gnu.org; Tue, 26 Oct 2021 11:07:45 -0400 Received: from heytings.org ([95.142.160.155]:36294) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfO39-0002Q9-Oo for 51377@debbugs.gnu.org; Tue, 26 Oct 2021 11:07:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20210101; t=1635260858; bh=1Gr8n1RsFWCdBYIivm2qjOSAYh8g0Ukci5JZE6GVqBk=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=VPTSFGe/pHrwUy0nuD3zPfdEZtEs2+K9o4bTxPE8jgGYNuluYJ6dIMGi2FxJEuUcv HbxJvHCLCl7PsgRtZ7AuTa9Xwng6SBNfuS8FAwWGpiIvcTJ01uYsP24suYFg52/ULc 5zosgngwDdJSQ9dZ/gDxk3074FHMmSqT74DV412S+ulvyu+EozhvimFcXTBghKU68X 5J4gVhTV+9mgFyNtOumxKSL/0JvqyDAqX9tdh2SVjD9bTlNzAFWfhRQ8obXGt3hmQX q3ZLLI80QcTSuw1Io5O6nEBmegpf/+OIu4NADQRhJNfZ9pOWJu/Xo4G/K292tj9HbF 0akOIffAJ8UuA== Date: Tue, 26 Oct 2021 15:07:37 +0000 From: Gregory Heytings To: Jim Porter Subject: Re: bug#51377: Automatically exit server when it has no remaining clients In-Reply-To: <664bd93fdd4886b48d45@heytings.org> Message-ID: <664bd93fdd447eedfc55@heytings.org> References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> <90ba36dcccde742a3c60@heytings.org> <2fb21ea4-0b95-a76b-8c5f-f8a6c7c1fc9b@gmail.com> <90ba36dccc0584692d36@heytings.org> <35f9b78b-c698-d92b-d6bb-fc6392944b7b@gmail.com> <664bd93fdd10b4061070@heytings.org> <664bd93fdd4886b48d45@heytings.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="jhltDiKFKz" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 51377 Cc: 51377@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.0 (-) --jhltDiKFKz Content-Type: text/plain; charset=us-ascii; format=flowed And here is a slightly improved version of the patch, with a NEWS entry. --jhltDiKFKz Content-Type: text/x-diff; name=Options-to-automatically-stop-the-Emacs-server.patch Content-Transfer-Encoding: base64 Content-ID: <664bd93fdd3029c29c9a@heytings.org> Content-Description: Content-Disposition: attachment; filename=Options-to-automatically-stop-the-Emacs-server.patch RnJvbSBlNGRiMDU5MzNlMWY4MDFmYzRlZDQwMTVmZDM5MmUzMmFjODAxZmNk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogR3JlZ29yeSBIZXl0 aW5ncyA8Z3JlZ29yeUBoZXl0aW5ncy5vcmc+DQpEYXRlOiBUdWUsIDI2IE9j dCAyMDIxIDE0OjU5OjM3ICswMDAwDQpTdWJqZWN0OiBbUEFUQ0hdIE9wdGlv bnMgdG8gYXV0b21hdGljYWxseSBzdG9wIHRoZSBFbWFjcyBzZXJ2ZXIuDQoN CiogbGlzcC9zZXJ2ZXIuZWwgKHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkp OiBOZXcgZnVuY3Rpb24uDQooc2VydmVyLXN0b3AtYXV0b21hdGljYWxseSk6 IE5ldyBhdXhpbGlhcnkgdmFyaWFibGUuDQooc2VydmVyLXN0b3AtYXV0b21h dGljYWxseS0tbWF5YmUta2lsbC1lbWFjcywNCnNlcnZlci1zdG9wLWF1dG9t YXRpY2FsbHktLWhhbmRsZS1kZWxldGUtZnJhbWUpOiBOZXcgYXV4aWxpYXJ5 DQpmdW5jdGlvbnMuDQooc2VydmVyLXNhdmUtYnVmZmVycy1raWxsLXRlcm1p bmFsKTogQ2FsbCB0aGUgbmV3IGF1eGlsaWFyeQ0KZnVuY3Rpb24gd2hlbiBu ZWNlc3NhcnkuDQoNCiogZG9jL2VtYWNzL21pc2MudGV4aSAoRW1hY3MgU2Vy dmVyKTogRG9jdW1lbnQgdGhlIG5ldyBmdW5jdGlvbi4NCkFsc28gbWVudGlv biB0aGF0IGFuIEVtYWNzIHNlcnZlciBjYW4gYmUgc3RhcnRlZCB3aXRoIGVt YWNzY2xpZW50Lg0KDQoqIGV0Yy9ORVdTOiBEZXNjcmliZSB0aGUgbmV3IGZ1 bmN0aW9uLg0KLS0tDQogZG9jL2VtYWNzL21pc2MudGV4aSB8ICAzMSArKysr KysrKysrKysNCiBldGMvTkVXUyAgICAgICAgICAgIHwgICA5ICsrKysNCiBs aXNwL3NlcnZlci5lbCAgICAgIHwgMTE5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tDQogMyBmaWxlcyBjaGFuZ2VkLCAx MzggaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1n aXQgYS9kb2MvZW1hY3MvbWlzYy50ZXhpIGIvZG9jL2VtYWNzL21pc2MudGV4 aQ0KaW5kZXggNTEyM2E3MTZkYy4uZjk0ZTQ4ZjU3YiAxMDA2NDQNCi0tLSBh L2RvYy9lbWFjcy9taXNjLnRleGkNCisrKyBiL2RvYy9lbWFjcy9taXNjLnRl eGkNCkBAIC0xNjk3LDYgKzE2OTcsMTEgQEAgRW1hY3MgU2VydmVyDQogY2Fs bHMgQGNvZGV7c2VydmVyLXN0YXJ0fSBhZnRlciBpbml0aWFsaXphdGlvbiBh bmQgZG9lcyBub3Qgb3BlbiBhbg0KIGluaXRpYWwgZnJhbWUuICBJdCB0aGVu IHdhaXRzIGZvciBlZGl0IHJlcXVlc3RzIGZyb20gY2xpZW50cy4NCiANCitA aXRlbQ0KK1J1biB0aGUgY29tbWFuZCBAY29kZXtlbWFjc2NsaWVudH0gd2l0 aCB0aGUgQHNhbXB7LS1hbHRlcm5hdGUtZWRpdG9yPSIifQ0KK2NvbW1hbmQt bGluZSBvcHRpb24uICBUaGlzIHN0YXJ0cyBhbiBFbWFjcyBkYWVtb24gb25s eSBpZiBubyBFbWFjcyBkYWVtb24NCitpcyBhbHJlYWR5IHJ1bm5pbmcuDQor DQogQGNpbmRleCBzeXN0ZW1kIHVuaXQgZmlsZQ0KIEBpdGVtDQogSWYgeW91 ciBvcGVyYXRpbmcgc3lzdGVtIHVzZXMgQGNvbW1hbmR7c3lzdGVtZH0gdG8g bWFuYWdlIHN0YXJ0dXAsDQpAQCAtMTc2Myw2ICsxNzY4LDMyIEBAIEVtYWNz IFNlcnZlcg0KICAgZW1hY3MgLS1kYWVtb249Zm9vDQogQGVuZCBleGFtcGxl DQogDQorQGZpbmRleCBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5DQorICBU aGUgRW1hY3Mgc2VydmVyIGNhbiBvcHRpb25hbGx5IGJlIHN0b3BwZWQgYXV0 b21hdGljYWxseSB3aGVuDQorY2VydGFpbiBjb25kaXRpb25zIGFyZSBtZXQu ICBUbyBkbyB0aGlzLCBjYWxsIHRoZSBmdW5jdGlvbg0KK0Bjb2Rle3NlcnZl ci1zdG9wLWF1dG9tYXRpY2FsbHl9IGluIHlvdXIgaW5pdCBmaWxlIChAcHhy ZWZ7SW5pdA0KK0ZpbGV9KSwgd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBh cmd1bWVudHM6DQorDQorQGl0ZW1pemUNCitAaXRlbQ0KK1dpdGggdGhlIGFy Z3VtZW50IEBjb2RleydlbXB0eX0sIHRoZSBzZXJ2ZXIgaXMgc3RvcHBlZCB3 aGVuIGl0IGhhcyBubw0KK2NsaWVudHMsIG5vIHVuc2F2ZWQgZmlsZS12aXNp dGluZyBidWZmZXJzIGFuZCBubyBydW5uaW5nIHByb2Nlc3Nlcw0KK2FueW1v cmUuDQorDQorQGl0ZW0NCitXaXRoIHRoZSBhcmd1bWVudCBAY29kZXsnZGVs ZXRlLWZyYW1lfSwgd2hlbiB0aGUgbGFzdCBjbGllbnQgZnJhbWUgaXMNCiti ZWluZyBjbG9zZWQsIHlvdSBhcmUgYXNrZWQgd2hldGhlciBlYWNoIHVuc2F2 ZWQgZmlsZS12aXNpdGluZyBidWZmZXINCittdXN0IGJlIHNhdmVkIGFuZCBl YWNoIHVuZmluaXNoZWQgcHJvY2VzcyBjYW4gYmUgc3RvcHBlZCwgYW5kIGlm IHNvLA0KK3RoZSBzZXJ2ZXIgaXMgc3RvcHBlZC4NCisNCitAaXRlbQ0KK1dp dGggdGhlIGFyZ3VtZW50IEBjb2RleydraWxsLXRlcm1pbmFsfSwgd2hlbiB0 aGUgbGFzdCBjbGllbnQgZnJhbWUgaXMNCitiZWluZyBjbG9zZWQgd2l0aCBA a2Jke0MteCBDLWN9IChAY29kZXtzYXZlLWJ1ZmZlcnMta2lsbC10ZXJtaW5h bH0pLA0KK3lvdSBhcmUgYXNrZWQgd2hldGhlciBlYWNoIHVuc2F2ZWQgZmls ZS12aXNpdGluZyBidWZmZXIgbXVzdCBiZSBzYXZlZA0KK2FuZCBlYWNoIHVu ZmluaXNoZWQgcHJvY2VzcyBjYW4gYmUgc3RvcHBlZCwgYW5kIGlmIHNvLCB0 aGUgc2VydmVyIGlzDQorc3RvcHBlZC4NCitAZW5kIGl0ZW1pemUNCisNCiBA ZmluZGV4IHNlcnZlci1ldmFsLWF0DQogICBJZiB5b3UgaGF2ZSBkZWZpbmVk IGEgc2VydmVyIGJ5IGEgdW5pcXVlIHNlcnZlciBuYW1lLCBpdCBpcyBwb3Nz aWJsZQ0KIHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlciBmcm9tIGFub3RoZXIg RW1hY3MgaW5zdGFuY2UgYW5kIGV2YWx1YXRlIExpc3ANCmRpZmYgLS1naXQg YS9ldGMvTkVXUyBiL2V0Yy9ORVdTDQppbmRleCA2ZDMyNTY5NTllLi4wM2Fh ODEwNDJkIDEwMDY0NA0KLS0tIGEvZXRjL05FV1MNCisrKyBiL2V0Yy9ORVdT DQpAQCAtNzMsNiArNzMsMTUgQEAgSW1hZ2Ugc3BlY2lmaWVycyBjYW4gbm93 IHVzZSAnOnR5cGUgd2VicCcuDQogKioqICdkaXNwbGF5LWJ1ZmZlcicgbm93 IGNhbiBzZXQgdXAgdGhlIGJvZHkgc2l6ZSBvZiB0aGUgY2hvc2VuIHdpbmRv dy4NCiBGb3IgZXhhbXBsZSwgYW4gYWxpc3QgZW50cnkgYXMgJyh3aW5kb3ct d2lkdGggLiAoYm9keS1jb2x1bW5zIC4gNDApKScNCiB3aWxsIG1ha2UgdGhl IGJvZHkgb2YgdGhlIGNob3NlbiB3aW5kb3cgNDAgY29sdW1ucyB3aWRlLg0K Kw0KKyoqIEVtYWNzIHNlcnZlciBhbmQgY2xpZW50IGNoYW5nZXMNCisNCisr KysNCisqKiogJ3NlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHknIGNhbiBiZSB1 c2VkIHRvIGF1dG9tYXRpY2FsbHkgc3RvcCB0aGUgc2VydmVyLg0KK1RoZSBF bWFjcyBzZXJ2ZXIgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHN0b3BwZWQgd2hl biBjZXJ0YWluIGNvbmRpdGlvbnMNCithcmUgbWV0LiAgVGhlIGNvbmRpdGlv bnMgYXJlIGdpdmVuIGJ5IHRoZSBhcmd1bWVudCwgd2hpY2ggY2FuIGJlDQor J2VtcHR5LCAnZGVsZXRlLWZyYW1lIG9yICdraWxsLXRlcm1pbmFsLg0KKw0K IAwNCiAqIEVkaXRpbmcgQ2hhbmdlcyBpbiBFbWFjcyAyOS4xDQogDQpkaWZm IC0tZ2l0IGEvbGlzcC9zZXJ2ZXIuZWwgYi9saXNwL3NlcnZlci5lbA0KaW5k ZXggNTMwNmE1NDc3Ni4uMGM1M2M1ODQ2NSAxMDA2NDQNCi0tLSBhL2xpc3Av c2VydmVyLmVsDQorKysgYi9saXNwL3NlcnZlci5lbA0KQEAgLTE3MTYsNiAr MTcxNiw5IEBAIHNlcnZlci1zd2l0Y2gtYnVmZmVyDQogICAgICh3aGVuIHNl cnZlci1yYWlzZS1mcmFtZQ0KICAgICAgIChzZWxlY3QtZnJhbWUtc2V0LWlu cHV0LWZvY3VzICh3aW5kb3ctZnJhbWUpKSkpKQ0KIA0KKyhkZWZ2YXIgc2Vy dmVyLXN0b3AtYXV0b21hdGljYWxseSBuaWwNCisgICJJbnRlcm5hbCBzdGF0 dXMgdmFyaWFibGUgZm9yIGBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5Jy4i KQ0KKw0KIDs7OyMjI2F1dG9sb2FkDQogKGRlZnVuIHNlcnZlci1zYXZlLWJ1 ZmZlcnMta2lsbC10ZXJtaW5hbCAoYXJnKQ0KICAgOzsgQ2FsbGVkIGZyb20g c2F2ZS1idWZmZXJzLWtpbGwtdGVybWluYWwgaW4gZmlsZXMuZWwuDQpAQCAt MTcyNCwyNyArMTcyNywxMDEgQEAgc2VydmVyLXNhdmUtYnVmZmVycy1raWxs LXRlcm1pbmFsDQogDQogSWYgZW1hY3NjbGllbnQgd2FzIHN0YXJ0ZWQgd2l0 aCBhIGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGVkaXQsIHRoZW4NCiBvbmx5IHRo ZXNlIGZpbGVzIHdpbGwgYmUgYXNrZWQgdG8gYmUgc2F2ZWQuIg0KLSAgKGxl dCAoKHByb2MgKGZyYW1lLXBhcmFtZXRlciBuaWwgJ2NsaWVudCkpKQ0KLSAg ICAoY29uZCAoKGVxIHByb2MgJ25vd2FpdCkNCi0JICAgOzsgTm93YWl0IGZy YW1lcyBoYXZlIG5vIGNsaWVudCBidWZmZXIgbGlzdC4NCi0JICAgKGlmIChj ZHIgKGZyYW1lLWxpc3QpKQ0KLQkgICAgICAgKHByb2duIChzYXZlLXNvbWUt YnVmZmVycyBhcmcpDQotCQkgICAgICAoZGVsZXRlLWZyYW1lKSkNCi0JICAg ICA7OyBJZiB3ZSdyZSB0aGUgbGFzdCBmcmFtZSBzdGFuZGluZywga2lsbCBF bWFjcy4NCi0JICAgICAoc2F2ZS1idWZmZXJzLWtpbGwtZW1hY3MgYXJnKSkp DQotCSAgKChwcm9jZXNzcCBwcm9jKQ0KLQkgICAobGV0ICgoYnVmZmVycyAo cHJvY2Vzcy1nZXQgcHJvYyAnYnVmZmVycykpKQ0KLQkgICAgIChzYXZlLXNv bWUtYnVmZmVycw0KLQkgICAgICBhcmcgKGlmIGJ1ZmZlcnMNCi0gICAgICAg ICAgICAgICAgICAgICAgOzsgT25seSBmaWxlcyBmcm9tIGVtYWNzY2xpZW50 IGZpbGUgbGlzdC4NCi0JCSAgICAgIChsYW1iZGEgKCkgKG1lbXEgKGN1cnJl bnQtYnVmZmVyKSBidWZmZXJzKSkNCi0gICAgICAgICAgICAgICAgICAgIDs7 IE5vIGVtYWNzY2xpZW50IGZpbGUgbGlzdDogZG9uJ3Qgb3ZlcnJpZGUNCi0g ICAgICAgICAgICAgICAgICAgIDs7IGBzYXZlLXNvbWUtYnVmZmVycy1kZWZh dWx0LXByZWRpY2F0ZScgKHVubGVzcw0KLSAgICAgICAgICAgICAgICAgICAg OzsgQVJHIGlzIG5vbi1uaWwpLCBzaW5jZSB3ZSdyZSBub3Qga2lsbGluZw0K LSAgICAgICAgICAgICAgICAgICAgOzsgRW1hY3MgKHVubGlrZSBgc2F2ZS1i dWZmZXJzLWtpbGwtZW1hY3MnKS4NCi0JCSAgICAoYW5kIGFyZyB0KSkpDQot CSAgICAgKHNlcnZlci1kZWxldGUtY2xpZW50IHByb2MpKSkNCi0JICAodCAo ZXJyb3IgIkludmFsaWQgY2xpZW50IGZyYW1lIikpKSkpDQorICAoaWYgc2Vy dmVyLXN0b3AtYXV0b21hdGljYWxseQ0KKyAgICAgIChzZXJ2ZXItc3RvcC1h dXRvbWF0aWNhbGx5LS1oYW5kbGUtZGVsZXRlLWZyYW1lIChzZWxlY3RlZC1m cmFtZSkpDQorICAgIChsZXQgKChwcm9jIChmcmFtZS1wYXJhbWV0ZXIgbmls ICdjbGllbnQpKSkNCisgICAgICAoY29uZCAoKGVxIHByb2MgJ25vd2FpdCkN CisJICAgICA7OyBOb3dhaXQgZnJhbWVzIGhhdmUgbm8gY2xpZW50IGJ1ZmZl ciBsaXN0Lg0KKwkgICAgIChpZiAoY2RyIChmcmFtZS1saXN0KSkNCisJICAg ICAgICAgKHByb2duIChzYXZlLXNvbWUtYnVmZmVycyBhcmcpDQorCQkgICAg ICAgIChkZWxldGUtZnJhbWUpKQ0KKwkgICAgICAgOzsgSWYgd2UncmUgdGhl IGxhc3QgZnJhbWUgc3RhbmRpbmcsIGtpbGwgRW1hY3MuDQorCSAgICAgICAo c2F2ZS1idWZmZXJzLWtpbGwtZW1hY3MgYXJnKSkpDQorCSAgICAoKHByb2Nl c3NwIHByb2MpDQorCSAgICAgKGxldCAoKGJ1ZmZlcnMgKHByb2Nlc3MtZ2V0 IHByb2MgJ2J1ZmZlcnMpKSkNCisJICAgICAgIChzYXZlLXNvbWUtYnVmZmVy cw0KKwkgICAgICAgIGFyZyAoaWYgYnVmZmVycw0KKyAgICAgICAgICAgICAg ICAgICAgICAgIDs7IE9ubHkgZmlsZXMgZnJvbSBlbWFjc2NsaWVudCBmaWxl IGxpc3QuDQorCQkgICAgICAgIChsYW1iZGEgKCkgKG1lbXEgKGN1cnJlbnQt YnVmZmVyKSBidWZmZXJzKSkNCisgICAgICAgICAgICAgICAgICAgICAgOzsg Tm8gZW1hY3NjbGllbnQgZmlsZSBsaXN0OiBkb24ndCBvdmVycmlkZQ0KKyAg ICAgICAgICAgICAgICAgICAgICA7OyBgc2F2ZS1zb21lLWJ1ZmZlcnMtZGVm YXVsdC1wcmVkaWNhdGUnICh1bmxlc3MNCisgICAgICAgICAgICAgICAgICAg ICAgOzsgQVJHIGlzIG5vbi1uaWwpLCBzaW5jZSB3ZSdyZSBub3Qga2lsbGlu Zw0KKyAgICAgICAgICAgICAgICAgICAgICA7OyBFbWFjcyAodW5saWtlIGBz YXZlLWJ1ZmZlcnMta2lsbC1lbWFjcycpLg0KKwkJICAgICAgKGFuZCBhcmcg dCkpKQ0KKwkgICAgICAgKHNlcnZlci1kZWxldGUtY2xpZW50IHByb2MpKSkN CisJICAgICh0IChlcnJvciAiSW52YWxpZCBjbGllbnQgZnJhbWUiKSkpKSkp DQorDQorKGRlZnVuIHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHktLWhhbmRs ZS1kZWxldGUtZnJhbWUgKGZyYW1lKQ0KKyAgIkhhbmRsZSBkZWxldGlvbiBv ZiBGUkFNRSB3aGVuIGBzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5JyBpcyB1 c2VkLiINCisgICh3aGVuIHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkNCisg ICAgKGlmIChpZiAoYW5kIChwcm9jZXNzcCAoZnJhbWUtcGFyYW1ldGVyIGZy YW1lICdjbGllbnQpKQ0KKwkJIChlcSB0aGlzLWNvbW1hbmQgJ3NhdmUtYnVm ZmVycy1raWxsLXRlcm1pbmFsKSkNCisJICAgIChwcm9nbg0KKwkgICAgICAo ZG9saXN0IChmIChmcmFtZS1saXN0KSkNCisJCSh3aGVuIChhbmQgKGVxIChm cmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ2NsaWVudCkNCisJCQkgICAgICAgKGZy YW1lLXBhcmFtZXRlciBmICdjbGllbnQpKQ0KKwkJCSAgIChub3QgKGVxIGZy YW1lIGYpKSkNCisJCSAgKHNldC1mcmFtZS1wYXJhbWV0ZXIgZiAnY2xpZW50 IG5pbCkNCisJCSAgKGxldCAoKHNlcnZlci1zdG9wLWF1dG9tYXRpY2FsbHkg bmlsKSkNCisJCSAgICAoZGVsZXRlLWZyYW1lIGYpKSkpDQorCSAgICAgIChp ZiAoY2RkciAoZnJhbWUtbGlzdCkpDQorCQkgIChsZXQgKChzZXJ2ZXItc3Rv cC1hdXRvbWF0aWNhbGx5IG5pbCkpDQorCQkgICAgKGRlbGV0ZS1mcmFtZSBm cmFtZSkNCisJCSAgICBuaWwpDQorCQl0KSkNCisJICAobnVsbCAoY2RkciAo ZnJhbWUtbGlzdCkpKSkNCisJKGxldCAoKHNlcnZlci1zdG9wLWF1dG9tYXRp Y2FsbHkgbmlsKSkNCisJICAoc2F2ZS1idWZmZXJzLWtpbGwtZW1hY3MpDQor CSAgKGRlbGV0ZS1mcmFtZSBmcmFtZSkpKSkpDQorDQorKGRlZnVuIHNlcnZl ci1zdG9wLWF1dG9tYXRpY2FsbHktLW1heWJlLWtpbGwtZW1hY3MgKCkNCisg ICJIYW5kbGUgY2xvc2luZyBvZiBFbWFjcyBkYWVtb24gd2hlbiBgc2VydmVy LXN0b3AtYXV0b21hdGljYWxseScgaXMgdXNlZC4iDQorICAodW5sZXNzIChj ZHIgKGZyYW1lLWxpc3QpKQ0KKyAgICAod2hlbiAoYW5kDQorCSAgIChub3Qg KG1lbXEgdCAobWFwY2FyIChsYW1iZGEgKGIpDQorCQkJCSAgKGFuZCAoYnVm ZmVyLWZpbGUtbmFtZSBiKQ0KKwkJCQkgICAgICAgKGJ1ZmZlci1tb2RpZmll ZC1wIGIpKSkNCisJCQkJKGJ1ZmZlci1saXN0KSkpKQ0KKwkgICAobm90ICht ZW1xIHQgKG1hcGNhciAobGFtYmRhIChwKQ0KKwkJCQkgIChhbmQgKG1lbXEg KHByb2Nlc3Mtc3RhdHVzIHApDQorCQkJCQkgICAgICcocnVuIHN0b3Agb3Bl biBsaXN0ZW4pKQ0KKwkJCQkgICAgICAgKHByb2Nlc3MtcXVlcnktb24tZXhp dC1mbGFnIHApKSkNCisJCQkJKHByb2Nlc3MtbGlzdCkpKSkpDQorICAgICAg KGtpbGwtZW1hY3MpKSkpDQorDQorOzs7IyMjYXV0b2xvYWQNCisoZGVmdW4g c2VydmVyLXN0b3AtYXV0b21hdGljYWxseSAoYXJnKQ0KKyAgIkF1dG9tYXRp Y2FsbHkgc3RvcCBzZXJ2ZXIgd2hlbiBwb3NzaWJsZS4NCisNCitXaGVuIEFS RyBpcyAnZW1wdHksIHRoZSBzZXJ2ZXIgaXMgc3RvcHBlZCB3aGVuIGl0IGhh cyBubyByZW1haW5pbmcNCitjbGllbnRzLCBubyByZW1haW5pbmcgdW5zYXZl ZCBmaWxlLXZpc2l0aW5nIGJ1ZmZlcnMsIGFuZCBubw0KK3J1bm5pbmcgcHJv Y2Vzc2VzIHdpdGggYSBxdWVyeS1vbi1leGl0IGZsYWcuDQorDQorV2hlbiBB UkcgaXMgJ2RlbGV0ZS1mcmFtZSwgdGhlIHVzZXIgaXMgYXNrZWQgd2hlbiB0 aGUgbGFzdCBmcmFtZSBpcw0KK2JlaW5nIGNsb3NlZCB3aGV0aGVyIGVhY2gg dW5zYXZlZCBmaWxlLXZpc2l0aW5nIGJ1ZmZlciBtdXN0IGJlDQorc2F2ZWQg YW5kIGVhY2ggcnVubmluZyBwcm9jZXNzIHdpdGggYSBxdWVyeS1vbi1leGl0 IGZsYWcgY2FuIGJlDQorc3RvcHBlZCwgYW5kIGlmIHNvLCB0aGUgc2VydmVy IGl0c2VsZiBpcyBzdG9wcGVkLg0KKw0KK1doZW4gQVJHIGlzICdraWxsLXRl cm1pbmFsLCB0aGUgdXNlciBpcyBhc2tlZCB3aGVuIHRoZSBsYXN0IGZyYW1l DQoraXMgYmVpbmcgY2xvc2Ugd2l0aCBcXFtzYXZlLWJ1ZmZlcnMta2lsbC10 ZXJtaW5hbF0gXA0KK3doZXRoZXIgZWFjaCB1bnNhdmVkIGZpbGUtdmlzaXRp bmcNCitidWZmZXIgbXVzdCBiZSBzYXZlZCBhbmQgZWFjaCBydW5uaW5nIHBy b2Nlc3Mgd2l0aCBhIHF1ZXJ5LW9uLWV4aXQNCitmbGFnIGNhbiBiZSBzdG9w cGVkLCBhbmQgaWYgc28sIHRoZSBzZXJ2ZXIgaXRzZWxmIGlzIHN0b3BwZWQu DQorDQorVGhpcyBmdW5jdGlvbiBpcyBtZWFudCB0byBiZSBwdXQgaW4gaW5p dCBmaWxlcy4iDQorICAod2hlbiAoZGFlbW9ucCkNCisgICAgKHNldHEgc2Vy dmVyLXN0b3AtYXV0b21hdGljYWxseSBhcmcpDQorICAgIChjb25kDQorICAg ICAoKGVxIGFyZyAnZW1wdHkpDQorICAgICAgKHNldHEgc2VydmVyLXN0b3At YXV0b21hdGljYWxseSBuaWwpDQorICAgICAgKHJ1bi13aXRoLXRpbWVyIDEw IDINCisJCSAgICAgICMnc2VydmVyLXN0b3AtYXV0b21hdGljYWxseS0tbWF5 YmUta2lsbC1lbWFjcykpDQorICAgICAoKGVxIGFyZyAnZGVsZXRlLWZyYW1l KQ0KKyAgICAgIChhZGQtaG9vayAnZGVsZXRlLWZyYW1lLWZ1bmN0aW9ucw0K KwkJIydzZXJ2ZXItc3RvcC1hdXRvbWF0aWNhbGx5LS1oYW5kbGUtZGVsZXRl LWZyYW1lKSkNCisgICAgICgoZXEgYXJnICdraWxsLXRlcm1pbmFsKSkNCisg ICAgICh0DQorICAgICAgKGVycm9yICJVbmV4cGVjdGVkIGFyZ3VtZW50Iikp KSkpDQogDQogKGRlZmluZS1rZXkgY3RsLXgtbWFwICIjIiAnc2VydmVyLWVk aXQpDQogDQotLSANCjIuMzMuMA0KDQo= --jhltDiKFKz-- From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 27 23:22:27 2021 Received: (at control) by debbugs.gnu.org; 28 Oct 2021 03:22:28 +0000 Received: from localhost ([127.0.0.1]:50991 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfvzn-0007NJ-Ku for submit@debbugs.gnu.org; Wed, 27 Oct 2021 23:22:27 -0400 Received: from mail-pj1-f43.google.com ([209.85.216.43]:41590) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mfvze-0007M3-AS for control@debbugs.gnu.org; Wed, 27 Oct 2021 23:22:18 -0400 Received: by mail-pj1-f43.google.com with SMTP id na16-20020a17090b4c1000b0019f5bb661f9so3640699pjb.0 for ; Wed, 27 Oct 2021 20:22:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:mime-version:date:message-id:subject:to; bh=0n4CVdlL6SHacap2QDcmpBxydNSs3QAELRtEvzzt9HA=; b=ehN9rZpBaqSTEViRkw66t73JNlytTiPGFAeyZnQ1+vpnrjgoCm9Cn4CeE3gtLruqVj U0wwhccqWaB/LGpe0iXKsVBgD4kF50fNHMYQBrn8o+PA9nEV4sJcTkycHeKrvJRzE/VS keYn/8TpjSRM+7vVxXpYLBwjjT5X5u/zvJppcthKEaqXw5N9BfPVsaItcI1arErX0lta nmNmV7VtCdTPsYqhXZXakIOL09mytgi7UC2l1KHCWQVwUIMpSX5CHH6f8gfRSbNQAt/w agn2o0LxzRazpT5DkHHCp5hQdSlSnDGHeLP0KLbjZnve5CLQmwR9PPfed1ngkIfRDA3B 2CMA== X-Gm-Message-State: AOAM5314w14PPds1dZyMIn5tbgXRX/YcpfIqtLO3FNTK1OgsjrhYMFoI 8lNQwhOH5he7vOazj56vuUrjdxBCSKpDaphBf/sEudyY X-Google-Smtp-Source: ABdhPJwAJ4vs4L/UvJPDrDS6+IWYGdZtmt7Ecv74i+60uXkm+AoR306aL47Hs6eCBfWgtmz2Ou1WjnSX4fRbJ4zLGII= X-Received: by 2002:a17:902:8c93:b0:141:5442:e608 with SMTP id t19-20020a1709028c9300b001415442e608mr1401631plo.32.1635391332639; Wed, 27 Oct 2021 20:22:12 -0700 (PDT) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 27 Oct 2021 20:22:12 -0700 From: Stefan Kangas MIME-Version: 1.0 Date: Wed, 27 Oct 2021 20:22:12 -0700 Message-ID: Subject: control message for bug #51377 To: control@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: control 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: -0.5 (/) tags 51377 + patch quit From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 11 00:43:43 2021 Received: (at 51377) by debbugs.gnu.org; 11 Nov 2021 05:43:43 +0000 Received: from localhost ([127.0.0.1]:39882 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ml2sB-0004Z3-KL for submit@debbugs.gnu.org; Thu, 11 Nov 2021 00:43:43 -0500 Received: from quimby.gnus.org ([95.216.78.240]:50252) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ml2sA-0004Yn-1T for 51377@debbugs.gnu.org; Thu, 11 Nov 2021 00:43:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Oyr8msQd8mhMfIi599fL7Qfi1Bcvr67NFwhz0BsZDg8=; b=Vazj9SiSjsFS2n/LxhmgwXoID8 FAiWOxAB6BO01RwHTpvTgaf/cgJvICb5XPvcHNo2ttyQG63t+tFL5aUmSU/ayf7EUYA5+lzz8oQJJ 260/H/B1xTUA4X/Pi7L+GOMDZDsHNfMRonQ499kFBUZnSTPJloHQVPVHYB4VXcax7eME=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ml2s0-0002l9-KJ; Thu, 11 Nov 2021 06:43:35 +0100 From: Lars Ingebrigtsen To: Gregory Heytings Subject: Re: bug#51377: Automatically exit server when it has no remaining clients References: <90ba36dccc00d6f0d62d@heytings.org> <63203d9f-dae7-a39f-c70f-ebf37632e642@gmail.com> <90ba36dcccc2abc8dec1@heytings.org> <7f3dde25-f81b-d7db-efc5-f8d471fd06bc@gmail.com> <90ba36dcccdc40168c93@heytings.org> <90ba36dcccde742a3c60@heytings.org> <2fb21ea4-0b95-a76b-8c5f-f8a6c7c1fc9b@gmail.com> <90ba36dccc0584692d36@heytings.org> <35f9b78b-c698-d92b-d6bb-fc6392944b7b@gmail.com> <664bd93fdd10b4061070@heytings.org> <664bd93fdd4886b48d45@heytings.org> <664bd93fdd447eedfc55@heytings.org> X-Now-Playing: King Crimson's _The Complete 1969 Recordings (26): BBC Sessions_: "Trees" Date: Thu, 11 Nov 2021 06:43:31 +0100 In-Reply-To: <664bd93fdd447eedfc55@heytings.org> (Gregory Heytings's message of "Tue, 26 Oct 2021 15:07:37 +0000") Message-ID: <87o86r8cxo.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Gregory Heytings writes: > And here is a slightly improved version of the patch, with a NEWS entry. Makes sense to me; pushed to Emacs 29 now (with some tiny changes). Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 51377 Cc: Jim Porter , 51377@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 (---) Gregory Heytings writes: > And here is a slightly improved version of the patch, with a NEWS entry. Makes sense to me; pushed to Emacs 29 now (with some tiny changes). -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Thu Nov 11 00:43:50 2021 Received: (at control) by debbugs.gnu.org; 11 Nov 2021 05:43:50 +0000 Received: from localhost ([127.0.0.1]:39885 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ml2sH-0004ZP-R5 for submit@debbugs.gnu.org; Thu, 11 Nov 2021 00:43:49 -0500 Received: from quimby.gnus.org ([95.216.78.240]:50268) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ml2sG-0004Z0-7L for control@debbugs.gnu.org; Thu, 11 Nov 2021 00:43:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=xXRh/B38FRsYqjSFZSwbiqbsBWQhwuVvkgNnsVQPPeg=; b=IvLTjdLL/A9SeIrNCTaU4NLWJQ pdc1MyeursbFCje50xjBSB0dzd4hJfS3INg9JfC/uUV37wuxPnGFKUcQ4My0zZndqs5mhAbKBRWqX dvuiyXVhIKyyhPnI4idzlLIO7RL1yYO+5x+O50tEEh/uz0oBj/W+DDbrBdyz8u64tQfg=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ml2s8-0002lK-Hu for control@debbugs.gnu.org; Thu, 11 Nov 2021 06:43:42 +0100 Date: Thu, 11 Nov 2021 06:43:40 +0100 Message-Id: <87mtmb8cxf.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #51377 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: close 51377 29.1 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control 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 (---) close 51377 29.1 quit From unknown Fri Sep 05 07:33:23 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 09 Dec 2021 12:24:08 +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