Received: (at 81894) by debbugs.gnu.org; 20 Sep 2026 04:43:00 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 20 00:43:00 2026 Received: from localhost ([127.0.0.1]:49168 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1x89OF-0004Gz-LD for submit <at> debbugs.gnu.org; Sun, 20 Sep 2026 00:43:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42300) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1x89OD-0004GN-Mf for 81894 <at> debbugs.gnu.org; Sun, 20 Sep 2026 00:42:58 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1x89O7-0007L1-G6; Sun, 20 Sep 2026 00:42:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=v0IiNPfDvbLNKZUp4rI3O+su9a2NTyE74ZR2r5stDL8=; b=OQ1rHeVBYwPGj9BCh+Wc ZK4AK5hKd2IVmKMg5MDb9aZr27syyVqRhFfMpURD61pron6M9NA6HkkqV+UobcxYi+Budr4Jx4XFg MWx6Ri9b5a8VUW8T/QDtQ9bK2YBY+Ek96Fl3b+/nft7ssRKWDPvuw+RXyLLPudDzuyqU6RVMTZYM4 T7JiwL6140cUR1n7VLcqTT8xh4QH3L/1LMZsC0b5r30TO34YNqba+Lses3kwJXBVhZ6DBR8964xzf 12bTCN4a0TAhwKCOf6fffdUrrgpk/gWYcGA9myH/8gJWLCTCBsgDhVl8RNaWF2jyxe4OSU2Z5fpSB v4HKCcwwTcmKjQ==; Date: Sun, 20 Sep 2026 07:42:48 +0300 Message-Id: <86eceoh6t3.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Len Trigg <lenbok@HIDDEN>, Stefan Monnier <monnier@HIDDEN>, martin rudalics <rudalics@HIDDEN> In-Reply-To: <CAOGVweno6ECAz7yjEG0UVSEBizA9u-W0Qby0aJdJ6y2HUQ_vqA@HIDDEN> (message from Len Trigg on Sun, 20 Sep 2026 08:36:09 +1200) Subject: Re: bug#81894: 31.1.50; multi-tty: new emacsclient connection can cause other terminal's minibuffer commands to open on the wrong frame References: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN> <861papirdb.fsf@HIDDEN> <CAOGVwek5SbcGiVT8Ay5boE4v2wqqqmi3d1qqc1Xchhq5pLDJJg@HIDDEN> <86y0cxham9.fsf@HIDDEN> <CAOGVwenU_snBEhqGLE0CN7iKfiPvhMLq_ZAcOM+AxRjutNtZFw@HIDDEN> <CAOGVwe=WWygY4GUQ3GVA=378quf0buE2nPSqXaQ0JRvjWN9JHA@HIDDEN> <CAOGVweno6ECAz7yjEG0UVSEBizA9u-W0Qby0aJdJ6y2HUQ_vqA@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 81894 Cc: gerd.moellmann@HIDDEN, 81894 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Len Trigg <lenbok@HIDDEN> > Date: Sun, 20 Sep 2026 08:36:09 +1200 > Cc: 81894 <at> debbugs.gnu.org, Gerd Möllmann <gerd.moellmann@HIDDEN> > > Apologies, I hadn't tested the last patch cleanly, and it turns out I was testing with my main emacs config (into > which I had already put a lisp-based workaround that advised server functions). The attached patch puts the > initialization of never_focused_p in the right place. > > Cheers, > Len. > > On Sun, 20 Sept 2026 at 08:15, Len Trigg <lenbok@HIDDEN> wrote: > > Cc:ing Gerd, who added the conditional I'm modifying in the attached patch. > > Although my bug report mentioned the minibuffer, it turns out the bug is actually not tied to minibuffer in > any way. An alternate demonstration: > > To reproduce, first arrange two terminals side by side. > > Start emacs in one terminal: > > emacs -nw -Q /tmp/foo.txt > M-x server-start RET > > In the second terminal, connect a client, but do not send it input: > > emacsclient -nw > > Back in the first terminal (the original emacs -nw), type whatever you like, and observe the text going into > the other terminal (emacsclient, on *scratch*), instead of the original terminal where you are typing. > > This is exactly the kind of phenomenon that the comment around line 2060 in src/frame.c warns us about: > > /* We want to make sure that the next event generates a frame-switch > event to the appropriate frame. This seems kludgy to me, but > before you take it out, make sure that evaluating something like > (select-window (frame-root-window (make-frame))) doesn't end up > with your typing being interpreted in the new frame instead of > the one you're actually typing in. */ > > Attached is a small patch that fixes this bug. It works by not skipping the clearing of > internal_last_event_frame only for brand new frames that haven't had keyboard input. It should therefore > not reintroduce the issue described in the comment immediately following (regarding invokation via > post-command-hook, possibly involving vertico-posframe). I haven't seen any problems with > vertico-posframe, but if there is a specific test I should try to reproduce, please let me know. > > Cheers, > Len. > > On Sat, 19 Sept 2026 at 21:25, Len Trigg <lenbok@HIDDEN> wrote: > > On Sat, 19 Sept 2026 at 21:08, Eli Zaretskii <eliz@HIDDEN> wrote: > > Yes. For the same reason: the connection of the second client made > its frame be selected for input. > > Emacs cannot select the frame for input when input actually arrives, > because it's too late. > > I do not understand that. How does emacs select any (tty?) frame for input when keys are typed > then? > > Note that the behaviour is different if the sequence is like this: > > emacs -nw -Q > M-x server-start RET > > In a second terminal, connect a client, but then exit it: > > emacsclient -nw > C-x 5 0 RET > > Immediately start a new client from that same terminal, but do not give it input: > > emacsclient -nw > > Back in the first terminal (the original emacs -nw), invoke any command > that reads from the minibuffer, e.g.: > > M-x > > Now the minibuffer does appear in the emacs being typed into (as I would expect, but apparently > not you). > > Cheers, > Len. Thanks. However, I have a bad feeling about this kind of flag. E.g., it assumes that a frame can get focus only by a keyboard event, but is that true when the terminal is displayed by a terminal emulator running on a window-system? there could be input-focus events there handled by the terminal emulator itself, not by Emacs. Or what about the case that some processing shows some prompt on that frame -- shouldn't that get the input focus? I've added to the discussion other people who could have comments and ideas about this. > From 9af9baeec3239597d495158bb09ff057787227be Mon Sep 17 00:00:00 2001 > From: Lenbok <lenbok@HIDDEN> > Date: Sun, 20 Sep 2026 00:33:29 +1200 > Subject: [PATCH] Try adding a flag to indicate new frame creation > > --- > src/frame.c | 6 ++++-- > src/frame.h | 3 +++ > src/keyboard.c | 2 ++ > 3 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/src/frame.c b/src/frame.c > index e6321268e2f..84178146230 100644 > --- a/src/frame.c > +++ b/src/frame.c > @@ -1195,6 +1195,7 @@ make_frame (bool mini_p) > f->skip_taskbar = false; > f->no_focus_on_map = false; > f->no_accept_focus = false; > + f->never_focused_p = true; > f->z_group = z_group_none; > f->tooltip = false; > f->was_invisible = false; > @@ -2086,8 +2087,9 @@ do_switch_frame (Lisp_Object frame, int track, int for_deletion, Lisp_Object nor > and executes, which again runs post-command-hook etc., ad > infinitum. > > - Let's not do that for now on ttys. */ > - if (!is_tty_frame (f)) > + Let's not do that for now on ttys, unless we know the frame has > + never had focus (and thus we did not get via post-command-hook). */ > + if (!(is_tty_frame (f) && !f->never_focused_p)) > if (!frame_ancestor_p (f, sf)) > internal_last_event_frame = Qnil; > > diff --git a/src/frame.h b/src/frame.h > index 091b112e8b9..16e9297054f 100644 > --- a/src/frame.h > +++ b/src/frame.h > @@ -452,6 +452,9 @@ #define EMACS_FRAME_H > via mouse clicks or by moving the mouse into it. */ > bool_bf no_accept_focus : 1; > > + /* True until this frame has processed at least one real keyboard event. */ > + bool_bf never_focused_p : 1; > + > #ifdef HAVE_WINDOW_SYSTEM > /* True if this frame is a tooltip frame. */ > bool_bf tooltip : 1; > diff --git a/src/keyboard.c b/src/keyboard.c > index b1d14ef1a25..df99c7fbc89 100644 > --- a/src/keyboard.c > +++ b/src/keyboard.c > @@ -4369,6 +4369,8 @@ kbd_buffer_get_event (KBOARD **kbp, > && !EQ (frame, selected_frame)) > obj = make_lispy_switch_frame (frame); > internal_last_event_frame = frame; > + if (FRAMEP (frame)) > + XFRAME (frame)->never_focused_p = false; > > if (EQ (event->ie.device, Qt)) > Vlast_event_device = ((event->ie.kind == ASCII_KEYSTROKE_EVENT > -- > 2.53.0 >
bug-gnu-emacs@HIDDEN:bug#81894; Package emacs.
Full text available.Received: (at 81894) by debbugs.gnu.org; 20 Sep 2026 04:39:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Sep 20 00:39:22 2026 Received: from localhost ([127.0.0.1]:48390 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1x89Kj-0003mV-A9 for submit <at> debbugs.gnu.org; Sun, 20 Sep 2026 00:39:22 -0400 Received: from mail-wm2-x11.google.com ([2a00:1450:4864:31::11]:50528) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>) id 1x89Kf-0003l1-LT for 81894 <at> debbugs.gnu.org; Sun, 20 Sep 2026 00:39:19 -0400 Received: by mail-wm2-x11.google.com with SMTP id 5b1f17b1804b1-49cd4ba9f68so26872105e9.1 for <81894 <at> debbugs.gnu.org>; Sat, 19 Sep 2026 21:39:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789879151; x=1790483951; darn=debbugs.gnu.org; h=content-type:mime-version:user-agent:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=OmnQVTeTxXgYsmgr8A2hExI93b9Gzlh/ZltFyjPKEkw=; b=NnkBkZOoiBaWoubgHWE0i73FYZmF4L5Wj9wBwQkyl4BaA8SOMZor3a6xr5WzjHG1Od FUAxvMKlPykjTw+xupMd+kGDMroUKsGMQG4n9DD8CEbIg5uOxuo0Be9BXIm9FGyUVo3I m9oDX5tgT9H1e5/uBe+t16lUQ63O/SZaAG3s6En2qiFf4ekwplEwMyorebrjLw3NMoOT pMBGrUceTAu2c+DTLPWNwKWKG10z8qjCDmyt+628KmOvJ8t7YNR/uGge8NM6dND3rZhR i6gqVGtmWnxtFDh+ZBFiRpcGXNa708OOuYcGrMapbJdbFDJjXZXI7sGy0nKPiI69wqIn USgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789879151; x=1790483951; h=content-type:mime-version:user-agent:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=OmnQVTeTxXgYsmgr8A2hExI93b9Gzlh/ZltFyjPKEkw=; b=oyI0HjMtORZ3wMK9ObHJ5VhOoWm4AwqyCrjtsnWNgdYFYBM0Ple7HCek6G1j9/6gyL cJGAYVHsEg2DZ2DvyQHucysdxTGXuIVhwSiJXEY92qKj5OAYz6HJPgGSGacyV6ekO+eS +tNycy+LZZan9VS+NX7dqfcVE4qONfxt8xIXVTsVlf5F7YYN5mWH0AH0aWnFfWiw98Fl ES2ZP/TbNxIyW7A+qKf1IwJhoTtxw+ExL0QA5hsKOpXU1RTN//MEGalFmY53qIjN+5K4 S986CrXwtPMyo8l2Zhe+1X3/Algf7KMDmUVtvoHtyKsQ2bfix5FUJR6qhUFHo9D/1/8k GaQw== X-Forwarded-Encrypted: i=1; AKwUvBx8s0NyYGoLID9rRtRaXxLhdjfCkwxfm1YoSOhVzMBsidbqm9VYEi3dGOK3Xmkuw9qn6HN4Fw==@debbugs.gnu.org X-Gm-Message-State: AFuF++m4Z0UyAMKm9mW8IZwj1Q8Z6gDHgCnoknhcaBpfcLMz6CF7knhJ 0FP36DTfK9DjNRIBKXhiSxuwHNypOmUYcGC1wpbdm1A/Wd7MOV/za7tFBrLtng== X-Gm-Gg: AYBFou13oV6syIwer2a8Inq3TPcaAVzUpiaDOxVqVC2PPOhv1wy+HU9kgyWj5BfkXfO mkpfTwIC0tP59NxkP3LKJLy30WtK+gozjRrFWHw/uIZq4+q3UIwdSHbYQS99CgiMqdBuYZAOsbJ ayM0kkv9PsFo/68ZpSe8XN+++wwhL95reFc++Y0hXgpi8hpPvbFS8zW9IZxx7oUb640VKv30mNg 1mJMAYT/ZlSDZpdxFWsK9N11Vpn5LoIqrGFDS+QUtTzNMsQYra1ALkVYaR9AVrHSgszfa2D0hq/ uKJCheGyURjkdlWyJ1dDq80KNJUgBlrVyxUJyCJOzGITpDLT9dlUZQs1Lmw2CHnjyE3q/QUa6RU VlY4HTuqTwDAScvWU2AMaJUfz+Q7fHrFL0iQRBUiRXC+qde4ZfPi/0NnODxFhnDlFt42TqX5CvA GRS+jjzZnJ6F5g2N2dBYkK5dnQoWu2UyeoXjiWNe+590vwIvzsL1NpduT3u1vTltqTC482o6Ado c3Cw7yep524pnhnt9EXw5vZW2AxkP3x3ziR0H/rSSdq3k91oE9vdDyv1uXPsUSzu7u89rQLbfDR Q8cWrdU= X-Received: by 2002:a05:600c:81c5:b0:49d:1a02:4797 with SMTP id 5b1f17b1804b1-49fc5737cd1mr85183745e9.17.1789879151201; Sat, 19 Sep 2026 21:39:11 -0700 (PDT) Received: from pro4 (p200300e0b7165700c9f55db078d3b0a8.dip0.t-ipconnect.de. [2003:e0:b716:5700:c9f5:5db0:78d3:b0a8]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49fcd068059sm122544775e9.5.2026.09.19.21.39.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 19 Sep 2026 21:39:10 -0700 (PDT) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN> To: Len Trigg <lenbok@HIDDEN> Subject: Re: bug#81894: 31.1.50; multi-tty: new emacsclient connection can cause other terminal's minibuffer commands to open on the wrong frame In-Reply-To: <CAOGVweno6ECAz7yjEG0UVSEBizA9u-W0Qby0aJdJ6y2HUQ_vqA@HIDDEN> References: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN> <861papirdb.fsf@HIDDEN> <CAOGVwek5SbcGiVT8Ay5boE4v2wqqqmi3d1qqc1Xchhq5pLDJJg@HIDDEN> <86y0cxham9.fsf@HIDDEN> <CAOGVwenU_snBEhqGLE0CN7iKfiPvhMLq_ZAcOM+AxRjutNtZFw@HIDDEN> <CAOGVwe=WWygY4GUQ3GVA=378quf0buE2nPSqXaQ0JRvjWN9JHA@HIDDEN> <CAOGVweno6ECAz7yjEG0UVSEBizA9u-W0Qby0aJdJ6y2HUQ_vqA@HIDDEN> Date: Sun, 20 Sep 2026 06:39:09 +0200 Message-ID: <m25x00h6z6.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81894 Cc: Eli Zaretskii <eliz@HIDDEN>, 81894 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) Len Trigg <lenbok@HIDDEN> writes: > Apologies, I hadn't tested the last patch cleanly, and it turns out I was testing with my main emacs config (into which I had > already put a lisp-based workaround that advised server functions). The attached patch puts the initialization of never_focused_p > in the right place. > > Cheers, > Len. > > On Sun, 20 Sept 2026 at 08:15, Len Trigg <lenbok@HIDDEN> wrote: > > Cc:ing Gerd, who added the conditional I'm modifying in the attached patch. I still do not understand this, as I said in the long comment there. I'm also not using Emacs much these days, so I can't really meaningfully test it.
bug-gnu-emacs@HIDDEN:bug#81894; Package emacs.
Full text available.Received: (at 81894) by debbugs.gnu.org; 19 Sep 2026 20:36:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 19 16:36:41 2026 Received: from localhost ([127.0.0.1]:52851 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1x81nc-0007tj-Mc for submit <at> debbugs.gnu.org; Sat, 19 Sep 2026 16:36:41 -0400 Received: from mail-lf2-x10.google.com ([2a00:1450:4864:36::10]:40061) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1x81nY-0007sS-71 for 81894 <at> debbugs.gnu.org; Sat, 19 Sep 2026 16:36:38 -0400 Received: by mail-lf2-x10.google.com with SMTP id 2adb3069b0e04-5b76ff64d78so1704661e87.1 for <81894 <at> debbugs.gnu.org>; Sat, 19 Sep 2026 13:36:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1789850190; cv=none; d=google.com; s=arc-20260327; b=gM73MZyatdXt9AEXxt9y6m1x62WVAmnfYa1vu2QUI79LEcFx2FKuNpQLuwxZvRq1YE xjI5PXFHCCVvnk56QQttIhAPDWVoW6Qu7zuvlrQJ5UJpnBOgDXT2+oWALN5Zt+VHPJKJ hoxvzvOZPpqwJmIdgtoZZC+CttInd2XGDit8FRV5GupDrD5yPWRxAEEIgXlbDu8p0KGZ uxek9uEFsE5FGoqSmqTwKMu2nDNP3QO2U2oYuXrT0kt5rm/ldpSayhglZa4K2e30eYYC q0AAO+BrFjELeTf/7kFejyK420Cwm+9bf4xD9OS0tlFgK4satTa5aXWhUiP8iKWiFcmc +KHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=ykk72/JtsyCN28HyOOAk9zTFiJnUm4igso0/D32TeaI=; fh=6oFc/YmyzVJ5AmA+OGA1gfMNzXWNC512uv+QePLR9wQ=; b=FkEPU1xpzPfP8EcxNzIlQIMGAsWlrs5h4yOInA+/9VcJIPkiEgjCg3sbx3pIHJ5n2J yQOpQgxYR6oSuAtKDm+ddmCoT+9EqiFULNyIDiAiaz5F/pFxlLdahzzyvjNBPXhcb0pS j56xSJckt6KpOojlsrUffvB6SAClxKBiEahg/RHHJp45IT4L1cniPPgelrnxkA8veVet 0HBRQM68qGkoullvu0uJIDNcHPJpc+mxUSUDPd/gvRToPCaP4lxVOl1ZcTOCFB/L9Vd/ nRWH+muJ5O7VCKz9Di8r394BbdABvQWbdnAFKzXKoB4bqCN+ONrgc5gSF7imzOlQG+oM xE/w==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789850190; x=1790454990; darn=debbugs.gnu.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ykk72/JtsyCN28HyOOAk9zTFiJnUm4igso0/D32TeaI=; b=TdwYK9YX1bKVe8YMPjd1XfkUJEtx3/0Q5Pf0MH6oFEOKqLz1OYZOgLLfOkQOiebUlx 8O/d2sinOHxyp+t21QJpj/vALL2sdPppqeDyHPAx0GVxLLpKn5U3bRISj99MvFC3kfPE bx2maTwgAaecTmbtJuO9eKTt6ALlNv8n2lhLdO77QYCYmE3ADoxZKuD8t6j7EFJfIOKH b5ITjsKNVgKo4RRXNwYCY+J9DJjc1rof7WKEmhuL4L13+A6OZ3Slyb8bI3Ieo/5XIkHT /d13LAkCXkIVcacU+jfqteo++TolysGRZ4N0swClIpKNrFutpmPSTUCmVq4iDe4g4ghB fTwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789850190; x=1790454990; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=ykk72/JtsyCN28HyOOAk9zTFiJnUm4igso0/D32TeaI=; b=odRO14bLqV0TRcOxjaR7YVsBtN5dZZC0rUwfMTaRj8VYseSbQdq5cBXNXbvDiHF6XG Zui3nfmUGBZsmHPFM3pdeQHeN34j2MZwqMWzlFVxct/7aKVFY7+anwUvB3KVLagpteFA h2+xAh2rfDubED9x1jfGCeEPp0CGAvpQNGb/fZw2dBnZ2OOmM++2LsisawMJiKvsvtJu frpeECJXygnk3AS+a0u9vmgt/8+2UnS1jhdWE++pcA6W5tAAqaZICoZAeYM8jeTYeXp1 Yg8zC57I8C0uuKeryaFmlGKK0r2cwpHMRHiSuf7jAH9TYTXRYgJn971G2aWlScRcAXiW dv/g== X-Gm-Message-State: AFuF++kG7eBYsdOZiQucUeZDLHkiKcyYjpSjZ3gln/5eFCE/VT1MCR5c gS9sEvjDkWBkD2CrnQZdOFfPkF39BLsLjCn1fggukoBbGmHwyiR7rgHdCQ3ocYynetllTseMZXD QQDvAffAOT9sZ24V0pEOaiWnP+/Qe/sE= X-Gm-Gg: AYBFou24UyNpAEUZ4fQ86uUXiOKDjyDgwGJncciD0icW6GTKWvj1xZ1O5dRKV0Qbigw cfOWX7o3H7qRv6Ld13ieA64Llbsj46Qt+EhGTrf/z+C8x8ePdoh8x62uo3S99FuAh0OZX/EU4HQ madedgI/4k9ET6IM4T5jrHxZYb2g/uHFMnrf4VccNI8oDIjcWV7cnOx2roa1UYhrGNv/YsPJzGT JC7pzb5CijtSFr2j1qeJ/RNoy3dPDd42/AdFsRPRs5uVrNUJo5N7SCaM0avil6qqdZxOX1VHr+c j37FK9GbUeUU91aaWbDocRD36HBuUxBOZLFnHAdCzMd26Za+Movd8nSY X-Received: by 2002:a05:6512:3e1a:b0:5b6:1a7c:59e4 with SMTP id 2adb3069b0e04-5b8c19535b0mr1892594e87.62.1789850189367; Sat, 19 Sep 2026 13:36:29 -0700 (PDT) MIME-Version: 1.0 References: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN> <861papirdb.fsf@HIDDEN> <CAOGVwek5SbcGiVT8Ay5boE4v2wqqqmi3d1qqc1Xchhq5pLDJJg@HIDDEN> <86y0cxham9.fsf@HIDDEN> <CAOGVwenU_snBEhqGLE0CN7iKfiPvhMLq_ZAcOM+AxRjutNtZFw@HIDDEN> <CAOGVwe=WWygY4GUQ3GVA=378quf0buE2nPSqXaQ0JRvjWN9JHA@HIDDEN> In-Reply-To: <CAOGVwe=WWygY4GUQ3GVA=378quf0buE2nPSqXaQ0JRvjWN9JHA@HIDDEN> From: Len Trigg <lenbok@HIDDEN> Date: Sun, 20 Sep 2026 08:36:09 +1200 X-Gm-Features: AcwNN1Waye6nizrl04gTTYLTYzIaLoBo6IFObx4edpaE6fAU5MMhf0a9fvB2dY4 Message-ID: <CAOGVweno6ECAz7yjEG0UVSEBizA9u-W0Qby0aJdJ6y2HUQ_vqA@HIDDEN> Subject: Re: bug#81894: 31.1.50; multi-tty: new emacsclient connection can cause other terminal's minibuffer commands to open on the wrong frame To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000bd2ff4065bdbf886" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81894 Cc: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>, 81894 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --000000000000bd2ff4065bdbf886 Content-Type: multipart/alternative; boundary="000000000000bd2ff1065bdbf884" --000000000000bd2ff1065bdbf884 Content-Type: text/plain; charset="UTF-8" Apologies, I hadn't tested the last patch cleanly, and it turns out I was testing with my main emacs config (into which I had already put a lisp-based workaround that advised server functions). The attached patch puts the initialization of never_focused_p in the right place. Cheers, Len. On Sun, 20 Sept 2026 at 08:15, Len Trigg <lenbok@HIDDEN> wrote: > Cc:ing Gerd, who added the conditional I'm modifying in the attached patch. > > Although my bug report mentioned the minibuffer, it turns out the bug is > actually not tied to minibuffer in any way. An alternate demonstration: > > To reproduce, first arrange two terminals side by side. > > Start emacs in one terminal: > > emacs -nw -Q /tmp/foo.txt > M-x server-start RET > > In the second terminal, connect a client, but do not send it input: > > emacsclient -nw > > Back in the first terminal (the original emacs -nw), type whatever you > like, and observe the text going into the other terminal (emacsclient, on > *scratch*), instead of the original terminal where you are typing. > > This is exactly the kind of phenomenon that the comment around line 2060 > in src/frame.c warns us about: > > /* We want to make sure that the next event generates a frame-switch > event to the appropriate frame. This seems kludgy to me, but > before you take it out, make sure that evaluating something like > (select-window (frame-root-window (make-frame))) doesn't end up > with your typing being interpreted in the new frame instead of > the one you're actually typing in. */ > > Attached is a small patch that fixes this bug. It works by not skipping > the clearing of internal_last_event_frame only for brand new frames that > haven't had keyboard input. It should therefore not reintroduce the issue > described in the comment immediately following (regarding invokation via > post-command-hook, possibly involving vertico-posframe). I haven't seen any > problems with vertico-posframe, but if there is a specific test I should > try to reproduce, please let me know. > > Cheers, > Len. > > On Sat, 19 Sept 2026 at 21:25, Len Trigg <lenbok@HIDDEN> wrote: > >> >> On Sat, 19 Sept 2026 at 21:08, Eli Zaretskii <eliz@HIDDEN> wrote: >> >>> Yes. For the same reason: the connection of the second client made >>> its frame be selected for input. >>> >>> Emacs cannot select the frame for input when input actually arrives, >>> because it's too late. >>> >> >> I do not understand that. How does emacs select any (tty?) frame for >> input when keys are typed then? >> >> Note that the behaviour is different if the sequence is like this: >> >> emacs -nw -Q >> M-x server-start RET >> >> In a second terminal, connect a client, but then exit it: >> >> emacsclient -nw >> C-x 5 0 RET >> >> Immediately start a new client from that same terminal, but do not give >> it input: >> >> emacsclient -nw >> >> Back in the first terminal (the original emacs -nw), invoke any command >> that reads from the minibuffer, e.g.: >> >> M-x >> >> Now the minibuffer does appear in the emacs being typed into (as I would >> expect, but apparently not you). >> >> Cheers, >> Len. >> >> --000000000000bd2ff1065bdbf884 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>Apologies, I hadn't tested the last patch cleanly= , and it turns out I was testing with my main emacs config (into which I ha= d already=C2=A0put a lisp-based workaround that advised server functions). = The attached patch puts the initialization of never_focused_p in the right = place.</div><div><br></div><div>Cheers,</div><div>Len.</div><div><br></div>= </div><br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr"= class=3D"gmail_attr">On Sun, 20 Sept 2026 at 08:15, Len Trigg <<a href= =3D"mailto:lenbok@HIDDEN">lenbok@HIDDEN</a>> wrote:<br></div><bloc= kquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:= 1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>Cc:ing G= erd, who added the conditional I'm modifying in the attached patch.</di= v><div><br></div><div>Although my bug report mentioned the minibuffer, it t= urns out the bug is actually not tied to minibuffer in any way. An alternat= e demonstration:</div><div><br></div><div>To reproduce, first arrange two t= erminals side by side.</div><div><br></div><div>Start emacs in one terminal= :<br>=C2=A0<br>emacs -nw -Q /tmp/foo.txt<br>M-x server-start RET<br><br>In = the second terminal, connect a client, but do not send it input:<br><br>ema= csclient -nw<br><br>Back in the first terminal (the original emacs -nw), ty= pe whatever you like, and observe the text going into the other terminal (e= macsclient, on *scratch*), instead of the original terminal where you are t= yping.</div><div><br></div><div>This is exactly the kind of phenomenon that= the comment around line 2060 in src/frame.c warns us about:</div><div><br>= </div><div>=C2=A0 /* We want to make sure that the next event generates a f= rame-switch<br>=C2=A0 =C2=A0 =C2=A0event to the appropriate frame.=C2=A0 Th= is seems kludgy to me, but<br>=C2=A0 =C2=A0 =C2=A0before you take it out, m= ake sure that evaluating something like<br>=C2=A0 =C2=A0 =C2=A0(select-wind= ow (frame-root-window (make-frame))) doesn't end up<br>=C2=A0 =C2=A0 = =C2=A0with your typing being interpreted in the new frame instead of<br>=C2= =A0 =C2=A0 =C2=A0the one you're actually typing in. =C2=A0*/<br><br></d= iv><div>Attached is a small patch that fixes this bug. It works by not skip= ping the clearing of internal_last_event_frame only for brand new frames th= at haven't had keyboard input. It should therefore not reintroduce the = issue described in the comment immediately following (regarding invokation = via post-command-hook, possibly involving vertico-posframe). I haven't = seen any problems with vertico-posframe, but if there is a specific test I = should try to reproduce, please let me know.</div><div><br></div><div>Cheer= s,</div><div>Len.</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr= " class=3D"gmail_attr">On Sat, 19 Sept 2026 at 21:25, Len Trigg <<a href= =3D"mailto:lenbok@HIDDEN" target=3D"_blank">lenbok@HIDDEN</a>> wro= te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px = 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"= ltr"><div dir=3D"ltr"></div><br><div class=3D"gmail_quote"><div dir=3D"ltr"= class=3D"gmail_attr">On Sat, 19 Sept 2026 at 21:08, Eli Zaretskii <<a h= ref=3D"mailto:eliz@HIDDEN" target=3D"_blank">eliz@HIDDEN</a>> wrote:<b= r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex= ;border-left:1px solid rgb(204,204,204);padding-left:1ex">Yes.=C2=A0 For th= e same reason: the connection of the second client made<br> its frame be selected for input.<br> <br> Emacs cannot select the frame for input when input actually arrives,<br> because it's too late.<br></blockquote><div><br></div><div>I do not und= erstand that. How does emacs select any (tty?) frame for input when keys ar= e typed then?</div><div><br></div><div>Note that the behaviour is different= if the sequence is like this:</div><div><br></div><div>emacs -nw -Q<br>M-x= server-start RET<br><br>In a second terminal, connect a client, but then e= xit it:<br><br>emacsclient -nw</div><div>C-x 5 0 RET</div><div><br></div><d= iv>Immediately start a new client from that same terminal, but do not give = it input:</div><div><br></div><div><div>emacsclient -nw</div><div><br></div= >Back in the first terminal (the original emacs -nw), invoke any command<br= >that reads from the minibuffer, e.g.:<br><br>M-x</div><div><br></div><div>= Now the minibuffer does appear in the emacs being typed into (as I would ex= pect, but apparently not you).</div><div><br></div><div>Cheers,</div><div>L= en.</div><div><br></div></div></div> </blockquote></div> </blockquote></div> --000000000000bd2ff1065bdbf884-- --000000000000bd2ff4065bdbf886 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Try-adding-a-flag-to-indicate-new-frame-creation.patch" Content-Disposition: attachment; filename="0001-Try-adding-a-flag-to-indicate-new-frame-creation.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mu8ukqc10> X-Attachment-Id: f_mu8ukqc10 RnJvbSA5YWY5YmFlZWMzMjM5NTk3ZDQ5NTE1OGJiMDlmZjA1Nzc4NzIyN2JlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW5ib2sgPGxlbmJva0BnbWFpbC5jb20+CkRhdGU6IFN1biwg MjAgU2VwIDIwMjYgMDA6MzM6MjkgKzEyMDAKU3ViamVjdDogW1BBVENIXSBUcnkgYWRkaW5nIGEg ZmxhZyB0byBpbmRpY2F0ZSBuZXcgZnJhbWUgY3JlYXRpb24KCi0tLQogc3JjL2ZyYW1lLmMgICAg fCA2ICsrKystLQogc3JjL2ZyYW1lLmggICAgfCAzICsrKwogc3JjL2tleWJvYXJkLmMgfCAyICsr CiAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmluZGV4IGU2MzIxMjY4ZTJmLi44NDE3 ODE0NjIzMCAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIvc3JjL2ZyYW1lLmMKQEAgLTEx OTUsNiArMTE5NSw3IEBAIG1ha2VfZnJhbWUgKGJvb2wgbWluaV9wKQogICBmLT5za2lwX3Rhc2ti YXIgPSBmYWxzZTsKICAgZi0+bm9fZm9jdXNfb25fbWFwID0gZmFsc2U7CiAgIGYtPm5vX2FjY2Vw dF9mb2N1cyA9IGZhbHNlOworICBmLT5uZXZlcl9mb2N1c2VkX3AgPSB0cnVlOwogICBmLT56X2dy b3VwID0gel9ncm91cF9ub25lOwogICBmLT50b29sdGlwID0gZmFsc2U7CiAgIGYtPndhc19pbnZp c2libGUgPSBmYWxzZTsKQEAgLTIwODYsOCArMjA4Nyw5IEBAIGRvX3N3aXRjaF9mcmFtZSAoTGlz cF9PYmplY3QgZnJhbWUsIGludCB0cmFjaywgaW50IGZvcl9kZWxldGlvbiwgTGlzcF9PYmplY3Qg bm9yCiAgICAgIGFuZCBleGVjdXRlcywgd2hpY2ggYWdhaW4gcnVucyBwb3N0LWNvbW1hbmQtaG9v ayBldGMuLCBhZAogICAgICBpbmZpbml0dW0uCiAKLSAgICAgTGV0J3Mgbm90IGRvIHRoYXQgZm9y IG5vdyBvbiB0dHlzLiAgKi8KLSAgaWYgKCFpc190dHlfZnJhbWUgKGYpKQorICAgICBMZXQncyBu b3QgZG8gdGhhdCBmb3Igbm93IG9uIHR0eXMsIHVubGVzcyB3ZSBrbm93IHRoZSBmcmFtZSBoYXMK KyAgICAgbmV2ZXIgaGFkIGZvY3VzIChhbmQgdGh1cyB3ZSBkaWQgbm90IGdldCB2aWEgcG9zdC1j b21tYW5kLWhvb2spLiAqLworICBpZiAoIShpc190dHlfZnJhbWUgKGYpICYmICFmLT5uZXZlcl9m b2N1c2VkX3ApKQogICAgIGlmICghZnJhbWVfYW5jZXN0b3JfcCAoZiwgc2YpKQogICAgICAgaW50 ZXJuYWxfbGFzdF9ldmVudF9mcmFtZSA9IFFuaWw7CiAKZGlmZiAtLWdpdCBhL3NyYy9mcmFtZS5o IGIvc3JjL2ZyYW1lLmgKaW5kZXggMDkxYjExMmU4YjkuLjE2ZTkyOTcwNTRmIDEwMDY0NAotLS0g YS9zcmMvZnJhbWUuaAorKysgYi9zcmMvZnJhbWUuaApAQCAtNDUyLDYgKzQ1Miw5IEBAICNkZWZp bmUgRU1BQ1NfRlJBTUVfSAogICAgICB2aWEgbW91c2UgY2xpY2tzIG9yIGJ5IG1vdmluZyB0aGUg bW91c2UgaW50byBpdC4gICovCiAgIGJvb2xfYmYgbm9fYWNjZXB0X2ZvY3VzIDogMTsKIAorICAv KiBUcnVlIHVudGlsIHRoaXMgZnJhbWUgaGFzIHByb2Nlc3NlZCBhdCBsZWFzdCBvbmUgcmVhbCBr ZXlib2FyZCBldmVudC4gKi8KKyAgYm9vbF9iZiBuZXZlcl9mb2N1c2VkX3AgOiAxOworCiAjaWZk ZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAgIC8qIFRydWUgaWYgdGhpcyBmcmFtZSBpcyBhIHRvb2x0 aXAgZnJhbWUuICAqLwogICBib29sX2JmIHRvb2x0aXAgOiAxOwpkaWZmIC0tZ2l0IGEvc3JjL2tl eWJvYXJkLmMgYi9zcmMva2V5Ym9hcmQuYwppbmRleCBiMWQxNGVmMWEyNS4uZGY5OWM3ZmJjODkg MTAwNjQ0Ci0tLSBhL3NyYy9rZXlib2FyZC5jCisrKyBiL3NyYy9rZXlib2FyZC5jCkBAIC00MzY5 LDYgKzQzNjksOCBAQCBrYmRfYnVmZmVyX2dldF9ldmVudCAoS0JPQVJEICoqa2JwLAogCSAgICAg ICYmICFFUSAoZnJhbWUsIHNlbGVjdGVkX2ZyYW1lKSkKIAkgICAgb2JqID0gbWFrZV9saXNweV9z d2l0Y2hfZnJhbWUgKGZyYW1lKTsKIAkgIGludGVybmFsX2xhc3RfZXZlbnRfZnJhbWUgPSBmcmFt ZTsKKwkgIGlmIChGUkFNRVAgKGZyYW1lKSkKKwkgICAgWEZSQU1FIChmcmFtZSktPm5ldmVyX2Zv Y3VzZWRfcCA9IGZhbHNlOwogCiAJICBpZiAoRVEgKGV2ZW50LT5pZS5kZXZpY2UsIFF0KSkKIAkg ICAgVmxhc3RfZXZlbnRfZGV2aWNlID0gKChldmVudC0+aWUua2luZCA9PSBBU0NJSV9LRVlTVFJP S0VfRVZFTlQKLS0gCjIuNTMuMAoK --000000000000bd2ff4065bdbf886--
bug-gnu-emacs@HIDDEN:bug#81894; Package emacs.
Full text available.
Received: (at 81894) by debbugs.gnu.org; 19 Sep 2026 20:16:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 19 16:16:06 2026
Received: from localhost ([127.0.0.1]:45091 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1x81Tf-0004Qi-98
for submit <at> debbugs.gnu.org; Sat, 19 Sep 2026 16:16:05 -0400
Received: from mail-lf2-x11.google.com ([2a00:1450:4864:36::11]:59143)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1x81Tb-0004Oy-HC
for 81894 <at> debbugs.gnu.org; Sat, 19 Sep 2026 16:16:00 -0400
Received: by mail-lf2-x11.google.com with SMTP id
2adb3069b0e04-5b8c795f805so685137e87.3
for <81894 <at> debbugs.gnu.org>; Sat, 19 Sep 2026 13:15:59 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1789848953; cv=none;
d=google.com; s=arc-20260327;
b=ZodR0ZKqJdgZNwf0uyUUu2h3zOOob50s91lAVovG0Qp/K5dUe26w6IbQuEhk/NRz5s
DDukeYu+/ENI9QI3DeVLzP1ec4yZw9VeoJBhEpBz5avgykMXQ9DGwMuWDD9hvETuG3On
OqIxmtq0cszZU6CuqKZ1eh7io/r4b5FSaelIlL94toczGnNG0KDUKXJjlVI227N33EPZ
ez7gAkJSv7o0pjUO1TL1HGuo9+K4DYb9yIJdPiOJaCmoM9rch9TEwQv9TY8Dmc7Av+5o
Su5GkyrSwlU4AI/XZb2SZamFKY71Tvse6xFPjwJdWRvN8VkeCqiK/4iTztSk8lBB/sAe
uUhA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20260327;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=Ub09lEbbCmf6wH3NWp8CxxFVlYoaue9/tzNcofalO1Y=;
fh=6oFc/YmyzVJ5AmA+OGA1gfMNzXWNC512uv+QePLR9wQ=;
b=H5uYSjUwsrzEjVRO0R5B97H6a6sw3kiSotmpaT4JRCurLDwxMnJ0Q9qhF5P5cXr7Yq
51NnifdRjW3ddtPvsJWNCJtlhSnVY1A9ZmiE0xa1LTrfoV9+PJ2dJ102L1WvblORnBlw
cncQdfd8vUIpdokUmqLaxB92CBxlDgsvjORZ+KXcfYgEKHastxxeekP3/i1F+y/TB87M
cCRjDx3krbFN2W9NrJ2xj31v5ah3MU7yRMJurjQkXj2uDnU/zXEIUVhpg1bEo6dyzYbl
HsT2RoVOt1SxrHp1T1PmclqZZ5XV0cZ/C4EaVrXIWY5ZDsuhTb4A6chJx59ODiSYPYIi
M+gA==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20251104; t=1789848953; x=1790453753; darn=debbugs.gnu.org;
h=content-type:cc:to:subject:message-id:date:from:in-reply-to
:references:mime-version:from:to:cc:subject:date:message-id:reply-to
:content-type; bh=Ub09lEbbCmf6wH3NWp8CxxFVlYoaue9/tzNcofalO1Y=;
b=NwgtEIxVunLvwe081WIllg9/3UCVCJQetw9poUwySJXZXnU6mA1/DRzG1c86EvJ+8u
32sBMCRlOqkS12gZpGYXumZchEqQL/B1o7XjyEabr5zM79z6Pgp2yGOrVrOK49ZDRKvh
7HhWIf72wksPwWzcqyq41Ab/ZiJAte9Iut2qx/MLZW8Q2N4qHsgb7XoKUlBfOn8Bcnt6
ZIDrxdA3eU91wg64wG5kooZNEhTiAIsT4MQWuIOw9jqdaI6xiByJuSV6qfKTv4tUmRD5
pJYRRbjGW42n7hZ8GEMjrGW8KfAcyFlcQnFkUsNm4hSnU05G0cBn+8warTi74OLrTHAO
3ViQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20260707; t=1789848953; x=1790453753;
h=content-type:cc:to:subject:message-id:date:from:in-reply-to
:references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to:content-type;
bh=Ub09lEbbCmf6wH3NWp8CxxFVlYoaue9/tzNcofalO1Y=;
b=OHsq7Fw2Is5UbJrAi1Y5mjUKgfkgIRDx1uUZcy2w+bB8qYofBw2vwOOiB2mKf49Vj0
5PDWdFbdffF2BOtplRSxsgXi66SlDF5ff466OAMUrbzIcJ7mgxnj8RRZ+l6iAguMaZHK
L9tg+imaWIADYDK91nnIeAYNsKucyW4PCwCW69Edj0W6DDjUu7nm0mBmkGx6Rc+a3OC3
i6L5o2IKAFO058ERsWIFzjfvHrJuP3nSC0DZVzU1j7Mo/87WpbjDRYIGMBPLQcjDezkB
F5FNJafNGYSGZqBCV0JPi6ea8hAwQY/bwSbJ5pDeED/IM/+alLKLsydcs2ob3HG2Bm6W
l1fg==
X-Gm-Message-State: AFuF++kklrYGqu8rVeSyAHVLuq+jLfVIcjm2Sa0bgVPLXspvNqO9k1A5
KLcwSEa/Cv8LKq6YEJ6FyjBOU6nOyEzNVWfVsxZ4qENmAY1e9fXVmyQNynm9T+YYo0cVxsVY5gL
IufA2q2njDpg7MSB9hcDcT+4eYODUecE=
X-Gm-Gg: AYBFou0wawZ63iFKqtY9inUgskI+H26zDvgTm/p/o7rCXMXHypgGKfm+A41coqQamj5
SNH4diGcwNuMfFtRsuhIxSOMxnr+eshDF3ay1kjFDAODSWAWi45LueOkte9ytry8zBed7SI1s1O
/pCxeWYZGJRqXF4bff70f3JcKgkkcYnjwM5P1i1Zxc4hk+FBBEqaPaKTWxOvxUkFOzhTiDjAR5G
xaVFwSKQjSj6a2e6eyvty+/lF+rkJXEbDwYq9r2Ks4+Fg6DS2Qi0ugk5sE7sM7sZ6tlRSRDqXXR
rtLtCMUFrS3gFhpBg7YXkdzFUIQFjgSJSsoxcxRJA8MZ1h+eAj9VqnnETGvPOGAhNNM=
X-Received: by 2002:a05:6512:3c9f:b0:5b6:183b:d214 with SMTP id
2adb3069b0e04-5b8c1959c7bmr2186029e87.59.1789848952781; Sat, 19 Sep 2026
13:15:52 -0700 (PDT)
MIME-Version: 1.0
References: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN>
<861papirdb.fsf@HIDDEN>
<CAOGVwek5SbcGiVT8Ay5boE4v2wqqqmi3d1qqc1Xchhq5pLDJJg@HIDDEN>
<86y0cxham9.fsf@HIDDEN>
<CAOGVwenU_snBEhqGLE0CN7iKfiPvhMLq_ZAcOM+AxRjutNtZFw@HIDDEN>
In-Reply-To: <CAOGVwenU_snBEhqGLE0CN7iKfiPvhMLq_ZAcOM+AxRjutNtZFw@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Sun, 20 Sep 2026 08:15:35 +1200
X-Gm-Features: AcwNN1XSIXaR0Sa9dlK8DxUULoEt6gge_MA2871jTJoZGLJErEI0P8pho8x6_RE
Message-ID: <CAOGVwe=WWygY4GUQ3GVA=378quf0buE2nPSqXaQ0JRvjWN9JHA@HIDDEN>
Subject: Re: bug#81894: 31.1.50; multi-tty: new emacsclient connection can
cause other terminal's minibuffer commands to open on the wrong frame
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/mixed; boundary="0000000000000862cc065bdbaff0"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 81894
Cc: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>,
81894 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--0000000000000862cc065bdbaff0
Content-Type: multipart/alternative; boundary="0000000000000862c9065bdbafee"
--0000000000000862c9065bdbafee
Content-Type: text/plain; charset="UTF-8"
Cc:ing Gerd, who added the conditional I'm modifying in the attached patch.
Although my bug report mentioned the minibuffer, it turns out the bug is
actually not tied to minibuffer in any way. An alternate demonstration:
To reproduce, first arrange two terminals side by side.
Start emacs in one terminal:
emacs -nw -Q /tmp/foo.txt
M-x server-start RET
In the second terminal, connect a client, but do not send it input:
emacsclient -nw
Back in the first terminal (the original emacs -nw), type whatever you
like, and observe the text going into the other terminal (emacsclient, on
*scratch*), instead of the original terminal where you are typing.
This is exactly the kind of phenomenon that the comment around line 2060 in
src/frame.c warns us about:
/* We want to make sure that the next event generates a frame-switch
event to the appropriate frame. This seems kludgy to me, but
before you take it out, make sure that evaluating something like
(select-window (frame-root-window (make-frame))) doesn't end up
with your typing being interpreted in the new frame instead of
the one you're actually typing in. */
Attached is a small patch that fixes this bug. It works by not skipping the
clearing of internal_last_event_frame only for brand new frames that
haven't had keyboard input. It should therefore not reintroduce the issue
described in the comment immediately following (regarding invokation via
post-command-hook, possibly involving vertico-posframe). I haven't seen any
problems with vertico-posframe, but if there is a specific test I should
try to reproduce, please let me know.
Cheers,
Len.
On Sat, 19 Sept 2026 at 21:25, Len Trigg <lenbok@HIDDEN> wrote:
>
> On Sat, 19 Sept 2026 at 21:08, Eli Zaretskii <eliz@HIDDEN> wrote:
>
>> Yes. For the same reason: the connection of the second client made
>> its frame be selected for input.
>>
>> Emacs cannot select the frame for input when input actually arrives,
>> because it's too late.
>>
>
> I do not understand that. How does emacs select any (tty?) frame for input
> when keys are typed then?
>
> Note that the behaviour is different if the sequence is like this:
>
> emacs -nw -Q
> M-x server-start RET
>
> In a second terminal, connect a client, but then exit it:
>
> emacsclient -nw
> C-x 5 0 RET
>
> Immediately start a new client from that same terminal, but do not give it
> input:
>
> emacsclient -nw
>
> Back in the first terminal (the original emacs -nw), invoke any command
> that reads from the minibuffer, e.g.:
>
> M-x
>
> Now the minibuffer does appear in the emacs being typed into (as I would
> expect, but apparently not you).
>
> Cheers,
> Len.
>
>
--0000000000000862c9065bdbafee
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Cc:ing Gerd, who added the conditional I'm modify=
ing in the attached patch.</div><div><br></div><div>Although my bug report =
mentioned the minibuffer, it turns out the bug is actually not tied to mini=
buffer in any way. An alternate demonstration:</div><div><br></div><div>To =
reproduce, first arrange two terminals side by side.</div><div><br></div><d=
iv>Start emacs in one terminal:<br>=C2=A0<br>emacs -nw -Q /tmp/foo.txt<br>M=
-x server-start RET<br><br>In the second terminal, connect a client, but do=
not send it input:<br><br>emacsclient -nw<br><br>Back in the first termina=
l (the original emacs -nw), type whatever you like, and observe the text go=
ing into the other terminal (emacsclient, on *scratch*), instead of the ori=
ginal terminal where you are typing.</div><div><br></div><div>This is exact=
ly the kind of phenomenon that the comment around line 2060 in src/frame.c =
warns us about:</div><div><br></div><div>=C2=A0 /* We want to make sure tha=
t the next event generates a frame-switch<br>=C2=A0 =C2=A0 =C2=A0event to t=
he appropriate frame.=C2=A0 This seems kludgy to me, but<br>=C2=A0 =C2=A0 =
=C2=A0before you take it out, make sure that evaluating something like<br>=
=C2=A0 =C2=A0 =C2=A0(select-window (frame-root-window (make-frame))) doesn&=
#39;t end up<br>=C2=A0 =C2=A0 =C2=A0with your typing being interpreted in t=
he new frame instead of<br>=C2=A0 =C2=A0 =C2=A0the one you're actually =
typing in. =C2=A0*/<br><br></div><div>Attached is a small patch that fixes =
this bug. It works by not skipping the clearing of internal_last_event_fram=
e only for brand new frames that haven't had keyboard input. It should =
therefore not reintroduce the issue described in the comment immediately fo=
llowing (regarding invokation via post-command-hook, possibly involving ver=
tico-posframe). I haven't seen any problems with vertico-posframe, but =
if there is a specific test I should try to reproduce, please let me know.<=
/div><div><br></div><div>Cheers,</div><div>Len.</div></div><br><div class=
=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr=
">On Sat, 19 Sept 2026 at 21:25, Len Trigg <<a href=3D"mailto:lenbok@gma=
il.com">lenbok@HIDDEN</a>> wrote:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"></div><br><div cl=
ass=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, 19 Sept 2=
026 at 21:08, Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN" target=3D"_=
blank">eliz@HIDDEN</a>> wrote:<br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex">Yes.=C2=A0 For the same reason: the connection of the se=
cond client made<br>
its frame be selected for input.<br>
<br>
Emacs cannot select the frame for input when input actually arrives,<br>
because it's too late.<br></blockquote><div><br></div><div>I do not und=
erstand that. How does emacs select any (tty?) frame for input when keys ar=
e typed then?</div><div><br></div><div>Note that the behaviour is different=
if the sequence is like this:</div><div><br></div><div>emacs -nw -Q<br>M-x=
server-start RET<br><br>In a second terminal, connect a client, but then e=
xit it:<br><br>emacsclient -nw</div><div>C-x 5 0 RET</div><div><br></div><d=
iv>Immediately start a new client from that same terminal, but do not give =
it input:</div><div><br></div><div><div>emacsclient -nw</div><div><br></div=
>Back in the first terminal (the original emacs -nw), invoke any command<br=
>that reads from the minibuffer, e.g.:<br><br>M-x</div><div><br></div><div>=
Now the minibuffer does appear in the emacs being typed into (as I would ex=
pect, but apparently not you).</div><div><br></div><div>Cheers,</div><div>L=
en.</div><div><br></div></div></div>
</blockquote></div>
--0000000000000862c9065bdbafee--
--0000000000000862cc065bdbaff0
Content-Type: text/x-patch; charset="US-ASCII";
name="0001-Try-adding-a-flag-to-indicate-new-frame-creation.patch"
Content-Disposition: attachment;
filename="0001-Try-adding-a-flag-to-indicate-new-frame-creation.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_mu8tbx0g0>
X-Attachment-Id: f_mu8tbx0g0
RnJvbSBlM2I1MzQ0ODkxN2VjYWM3ZDRlNWY3YzBiZTAyY2U0N2Q1OTM5OTcxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMZW5ib2sgPGxlbmJva0BnbWFpbC5jb20+CkRhdGU6IFN1biwg
MjAgU2VwIDIwMjYgMDA6MzM6MjkgKzEyMDAKU3ViamVjdDogW1BBVENIXSBUcnkgYWRkaW5nIGEg
ZmxhZyB0byBpbmRpY2F0ZSBuZXcgZnJhbWUgY3JlYXRpb24KCi0tLQogc3JjL2ZyYW1lLmMgICAg
fCA2ICsrKystLQogc3JjL2ZyYW1lLmggICAgfCAzICsrKwogc3JjL2tleWJvYXJkLmMgfCAyICsr
CiAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9zcmMvZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmluZGV4IGU2MzIxMjY4ZTJmLi4wYjQ2
ZmEwZGE4MSAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIvc3JjL2ZyYW1lLmMKQEAgLTE0
NzAsNiArMTQ3MCw3IEBAIG1ha2VfaW5pdGlhbF9mcmFtZSAodm9pZCkKIAogICBmLT5jYW5fc2V0
X3dpbmRvd19zaXplID0gdHJ1ZTsKICAgZi0+YWZ0ZXJfbWFrZV9mcmFtZSA9IHRydWU7CisgIGYt
Pm5ldmVyX2ZvY3VzZWRfcCA9IHRydWU7CiAKICAgcmV0dXJuIGY7CiB9CkBAIC0yMDg2LDggKzIw
ODcsOSBAQCBkb19zd2l0Y2hfZnJhbWUgKExpc3BfT2JqZWN0IGZyYW1lLCBpbnQgdHJhY2ssIGlu
dCBmb3JfZGVsZXRpb24sIExpc3BfT2JqZWN0IG5vcgogICAgICBhbmQgZXhlY3V0ZXMsIHdoaWNo
IGFnYWluIHJ1bnMgcG9zdC1jb21tYW5kLWhvb2sgZXRjLiwgYWQKICAgICAgaW5maW5pdHVtLgog
Ci0gICAgIExldCdzIG5vdCBkbyB0aGF0IGZvciBub3cgb24gdHR5cy4gICovCi0gIGlmICghaXNf
dHR5X2ZyYW1lIChmKSkKKyAgICAgTGV0J3Mgbm90IGRvIHRoYXQgZm9yIG5vdyBvbiB0dHlzLCB1
bmxlc3Mgd2Uga25vdyB0aGUgZnJhbWUgaGFzCisgICAgIG5ldmVyIGhhZCBmb2N1cyAoYW5kIHRo
dXMgd2UgZGlkIG5vdCBnZXQgdmlhIHBvc3QtY29tbWFuZC1ob29rKS4gKi8KKyAgaWYgKCEoaXNf
dHR5X2ZyYW1lIChmKSAmJiAhZi0+bmV2ZXJfZm9jdXNlZF9wKSkKICAgICBpZiAoIWZyYW1lX2Fu
Y2VzdG9yX3AgKGYsIHNmKSkKICAgICAgIGludGVybmFsX2xhc3RfZXZlbnRfZnJhbWUgPSBRbmls
OwogCmRpZmYgLS1naXQgYS9zcmMvZnJhbWUuaCBiL3NyYy9mcmFtZS5oCmluZGV4IDA5MWIxMTJl
OGI5Li4xNmU5Mjk3MDU0ZiAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmgKKysrIGIvc3JjL2ZyYW1l
LmgKQEAgLTQ1Miw2ICs0NTIsOSBAQCAjZGVmaW5lIEVNQUNTX0ZSQU1FX0gKICAgICAgdmlhIG1v
dXNlIGNsaWNrcyBvciBieSBtb3ZpbmcgdGhlIG1vdXNlIGludG8gaXQuICAqLwogICBib29sX2Jm
IG5vX2FjY2VwdF9mb2N1cyA6IDE7CiAKKyAgLyogVHJ1ZSB1bnRpbCB0aGlzIGZyYW1lIGhhcyBw
cm9jZXNzZWQgYXQgbGVhc3Qgb25lIHJlYWwga2V5Ym9hcmQgZXZlbnQuICovCisgIGJvb2xfYmYg
bmV2ZXJfZm9jdXNlZF9wIDogMTsKKwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQogICAvKiBU
cnVlIGlmIHRoaXMgZnJhbWUgaXMgYSB0b29sdGlwIGZyYW1lLiAgKi8KICAgYm9vbF9iZiB0b29s
dGlwIDogMTsKZGlmZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5k
ZXggYjFkMTRlZjFhMjUuLmRmOTljN2ZiYzg5IDEwMDY0NAotLS0gYS9zcmMva2V5Ym9hcmQuYwor
KysgYi9zcmMva2V5Ym9hcmQuYwpAQCAtNDM2OSw2ICs0MzY5LDggQEAga2JkX2J1ZmZlcl9nZXRf
ZXZlbnQgKEtCT0FSRCAqKmticCwKIAkgICAgICAmJiAhRVEgKGZyYW1lLCBzZWxlY3RlZF9mcmFt
ZSkpCiAJICAgIG9iaiA9IG1ha2VfbGlzcHlfc3dpdGNoX2ZyYW1lIChmcmFtZSk7CiAJICBpbnRl
cm5hbF9sYXN0X2V2ZW50X2ZyYW1lID0gZnJhbWU7CisJICBpZiAoRlJBTUVQIChmcmFtZSkpCisJ
ICAgIFhGUkFNRSAoZnJhbWUpLT5uZXZlcl9mb2N1c2VkX3AgPSBmYWxzZTsKIAogCSAgaWYgKEVR
IChldmVudC0+aWUuZGV2aWNlLCBRdCkpCiAJICAgIFZsYXN0X2V2ZW50X2RldmljZSA9ICgoZXZl
bnQtPmllLmtpbmQgPT0gQVNDSUlfS0VZU1RST0tFX0VWRU5UCi0tIAoyLjUzLjAKCg==
--0000000000000862cc065bdbaff0--
bug-gnu-emacs@HIDDEN:bug#81894; Package emacs.
Full text available.Received: (at 81894) by debbugs.gnu.org; 19 Sep 2026 09:26:17 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 19 05:26:17 2026 Received: from localhost ([127.0.0.1]:41358 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1x7rKr-0007qW-8a for submit <at> debbugs.gnu.org; Sat, 19 Sep 2026 05:26:17 -0400 Received: from mail-lr2-x14.google.com ([2a00:1450:4864:38::14]:32812) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1x7rKm-0007q1-4x for 81894 <at> debbugs.gnu.org; Sat, 19 Sep 2026 05:26:15 -0400 Received: by mail-lr2-x14.google.com with SMTP id 38308e7fff4ca-3a60ed65bc8so417881fa.1 for <81894 <at> debbugs.gnu.org>; Sat, 19 Sep 2026 02:26:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1789809965; cv=none; d=google.com; s=arc-20260327; b=kgf5ebKmjf47ZV6OoDJgKgusvDDZcr3F6YvZRmu4/69aVjT9/m79lNmg9oU/nEsNmk AZUNxYbJUnKZ4EAhrcZNwXArz45DBSQL0wkHAtZDWB8EnAH6ZW/Mbt82rVbrdHRhM6V0 8Wkga2zBvcJ4vyRpPHNlotRr6WMuQ84hnBKLuadeVihIe38f9v/cpml2rNm81MaGpOvt ZEToXpBDfZpzhbFEvywgkDzOvNef2N1z/ETIf4gXXw87jG4xE8YlTNUsBYqTLRT0GCHL +VotnL0f7pIvUyNqTeN94v3q52TW0N6PRH2CwxQlY82izchu9GDAFAsOFAWrduVZjFXO 7okw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Cdb49I2sYP5rPYcnBnKSQXpHw6xEARVxf/E9wX2Nw+g=; fh=LUWSTrxhN1M2J8isO1jO0lAW9Z1NrWiB6EdWqWVrJus=; b=Id7Ym5Vd+uO62PajI1KaHOi8yQMuQGSDLzJJI12R9eLB9uPcfF6U2QdFaxNYLYCa5E q8fXab8CsX47qvojOR4SqA4oKoX2hPMs5yF3eU80LBiCNzwrYKg6+TXcARSFLHw3CFR/ xExZi0qQXB9xFFZPWkH3HCdVutF0CO2x1Zq/UYqnTlb0oWyiwpF7hhQuXDDDLLDYp43E KmAwUCKOUOYZqdgvQauoofybtQpuw8c3l/l+kqgg9+Jc6pPRp6qUJpZWRZ2Sj39Lx64W 6VDlEKt5m2L167HFgiNrK4WCm6Z1SrTKnYg2CrK6+SB6hhSO7aJFWwf1a9ctCHMfxDzM iVgg==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789809965; x=1790414765; darn=debbugs.gnu.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Cdb49I2sYP5rPYcnBnKSQXpHw6xEARVxf/E9wX2Nw+g=; b=HANZ1tGgKbNwIm7tdpevlY8kHaz6IPqBOjIO7H5Ov+8xTevtwCNk6VvmtGhrwwef04 c3pC0iXDdMcZHT24jw0h0jx52MPovTSkaQrgT+tibPpaXbdX8FH+p/ZBl+5EdaAsKYa+ o7pvu3nZnbKPnbPYwvi9YK4rZLcNCACqZdvkH0GvryXD5XgHl0lQc+ykMNz5LLjTlTkD bmbq2G3i1/94byREduJrsupWqjFp2T79QDxFLFwqAzByFlRJ3K3bkB7d//VBWHu2rAeq klMxISt34WedZ6XR6Fh8JwmgEAhUncytDnP/54tC1ST92rzagstVkDdXMnfcudoAMTLv 3fVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789809965; x=1790414765; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=Cdb49I2sYP5rPYcnBnKSQXpHw6xEARVxf/E9wX2Nw+g=; b=CPKvf3ah2YNg+blqjL8VRY8yNcp6OlUY6m0GBYhhCREh5HffKIdH7XTf8YfUEyWz55 vxe+ezA/qxtdV8TSFL0PDwbvlelu786Q4qmqu0CKRtNKhyRdKxd1MzW85Aj37aIIj3Ho L05oZfUJ2wGFLW4zKY8q9LjXOFyaGGZvfHLF1btZaW/N+XG+9wawBRKmPkrwm+75oe2R pEeUDKj+QAYoxTfy9ZC7GP/XmoCkS2unnJxjlA+u0PJ0SFUqGEF+MGTs6Zl39Si/Pa4r s9Y6iIcKIAo1eLhHvtoOJAlTPIlt0G2fMQNeiBe6SuiRsb3+4oTNbn6m8qRp5VgW7g9b d5KQ== X-Gm-Message-State: AFuF++nvmvw94HIoqHHA6gzliNGmADWD2HuMvg28D6UnsVVlB7zRfyxN txq4UrpQSGQfeAig5v50SItKEDYABcgEEal6dUT8C0loB0W0/lklqrGYwwmsQUrRbqC1WwTBWOT XviXul999tnOZJ8HN+ERUow9ZiDIFzvY= X-Gm-Gg: AYBFou2+K8Xn6tieNJ1FyJZSnno6uyt0PUZrkp9sa0TP13VEoA9RlbnRTsROT3AG/Z9 pETr77HPKNeOZhNgW3ckZpxKJ/esRNLSy5AUjJv2xuZkruNErcxcnUZVNNxzBgvlA5wHVIJaRhF 3Lq3nqmkdd65dAVcbLVKrLkTGccvbLg1CzQQKqH58ny8Fybi7VrpT43Gp+VPtBzD6o/QBXqL0WT 1nhX4J5GZcG9UpJzQ/BtJtAXLAEPEBcTw81OtZFwQnQSVY0kx8MBwJuBd8kLc/Sz3CcTfmKyGVk bEKFT/GSBy/dHBKUnIYKYHvWRbvJ0vsxCBIMah1//J0HRK+ad08RZET4uacb9AeaNoY= X-Received: by 2002:a2e:a812:0:b0:3a3:74b9:8a7f with SMTP id 38308e7fff4ca-3a5fc089db5mr11189241fa.24.1789809965419; Sat, 19 Sep 2026 02:26:05 -0700 (PDT) MIME-Version: 1.0 References: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN> <861papirdb.fsf@HIDDEN> <CAOGVwek5SbcGiVT8Ay5boE4v2wqqqmi3d1qqc1Xchhq5pLDJJg@HIDDEN> <86y0cxham9.fsf@HIDDEN> In-Reply-To: <86y0cxham9.fsf@HIDDEN> From: Len Trigg <lenbok@HIDDEN> Date: Sat, 19 Sep 2026 21:25:48 +1200 X-Gm-Features: AcwNN1VONWCEPT2QlpVsWmtYG1aUbIT0krl25-FmjEqwS5SmYsjEO9wdr6VaYbg Message-ID: <CAOGVwenU_snBEhqGLE0CN7iKfiPvhMLq_ZAcOM+AxRjutNtZFw@HIDDEN> Subject: Re: bug#81894: 31.1.50; multi-tty: new emacsclient connection can cause other terminal's minibuffer commands to open on the wrong frame To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000345135065bd29b20" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81894 Cc: 81894 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --000000000000345135065bd29b20 Content-Type: text/plain; charset="UTF-8" On Sat, 19 Sept 2026 at 21:08, Eli Zaretskii <eliz@HIDDEN> wrote: > Yes. For the same reason: the connection of the second client made > its frame be selected for input. > > Emacs cannot select the frame for input when input actually arrives, > because it's too late. > I do not understand that. How does emacs select any (tty?) frame for input when keys are typed then? Note that the behaviour is different if the sequence is like this: emacs -nw -Q M-x server-start RET In a second terminal, connect a client, but then exit it: emacsclient -nw C-x 5 0 RET Immediately start a new client from that same terminal, but do not give it input: emacsclient -nw Back in the first terminal (the original emacs -nw), invoke any command that reads from the minibuffer, e.g.: M-x Now the minibuffer does appear in the emacs being typed into (as I would expect, but apparently not you). Cheers, Len. --000000000000345135065bd29b20 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"></div><br><div class=3D"gmail_quote gmail= _quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, 19 Sept 202= 6 at 21:08, Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN">eliz@HIDDEN<= /a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0= px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Y= es.=C2=A0 For the same reason: the connection of the second client made<br> its frame be selected for input.<br> <br> Emacs cannot select the frame for input when input actually arrives,<br> because it's too late.<br></blockquote><div><br></div><div>I do not und= erstand that. How does emacs select any (tty?) frame for input when keys ar= e typed then?</div><div><br></div><div>Note that the behaviour is different= if the sequence is like this:</div><div><br></div><div>emacs -nw -Q<br>M-x= server-start RET<br><br>In a second terminal, connect a client, but then e= xit it:<br><br>emacsclient -nw</div><div>C-x 5 0 RET</div><div><br></div><d= iv>Immediately start a new client from that same terminal, but do not give = it input:</div><div><br></div><div><div>emacsclient -nw</div><div><br></div= >Back in the first terminal (the original emacs -nw), invoke any command<br= >that reads from the minibuffer, e.g.:<br><br>M-x</div><div><br></div><div>= Now the minibuffer does appear in the emacs being typed into (as I would ex= pect, but apparently not you).</div><div><br></div><div>Cheers,</div><div>L= en.</div><div><br></div></div></div> --000000000000345135065bd29b20--
bug-gnu-emacs@HIDDEN:bug#81894; Package emacs.
Full text available.Received: (at 81894) by debbugs.gnu.org; 19 Sep 2026 09:08:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 19 05:08:27 2026 Received: from localhost ([127.0.0.1]:38440 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1x7r3b-0005ht-Fn for submit <at> debbugs.gnu.org; Sat, 19 Sep 2026 05:08:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42862) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1x7r3Y-0005h5-Ps for 81894 <at> debbugs.gnu.org; Sat, 19 Sep 2026 05:08:25 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1x7r3T-000818-GT; Sat, 19 Sep 2026 05:08:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=OHb+vJ3l2EGuhkH23va18Yu0YeTXQqnRSgIgYPwld2E=; b=XEOC9e2Ehom4 j/ud3MH4ydQLnl8iIDy7JrLWu+0uMf7IvgLcMVXx2JnOBMYx85Qb+X8zDWjs+I/gz8C6C8+Z8Eeft RN1JeujeuiGYo+1rA/e4QUMprQsCTm7VCX6PXq69N9Xmvoz5wBYk/u8DUeZhxAkK5Q5qUCMIdddxA CjQKcNRz/hRHD3/AdEyt60XTDTQkRrdchYq18h2WgxEAQ2sD1FMDhpW3XgYOsTAP+1jc3adaJ/SzZ mMYJmXREdy21lK+h/xCYxqUceam3gfZewZjgNd3T7q+ess20oD/ullmVzi0ApyjJfryyFz3mbGf/o mIkhk+O0MmbLnwAsZkDuhw==; Date: Sat, 19 Sep 2026 12:08:14 +0300 Message-Id: <86y0cxham9.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Len Trigg <lenbok@HIDDEN> In-Reply-To: <CAOGVwek5SbcGiVT8Ay5boE4v2wqqqmi3d1qqc1Xchhq5pLDJJg@HIDDEN> (message from Len Trigg on Sat, 19 Sep 2026 20:38:54 +1200) Subject: Re: bug#81894: 31.1.50; multi-tty: new emacsclient connection can cause other terminal's minibuffer commands to open on the wrong frame References: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN> <861papirdb.fsf@HIDDEN> <CAOGVwek5SbcGiVT8Ay5boE4v2wqqqmi3d1qqc1Xchhq5pLDJJg@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 81894 Cc: 81894 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Len Trigg <lenbok@HIDDEN> > Date: Sat, 19 Sep 2026 20:38:54 +1200 > Cc: 81894 <at> debbugs.gnu.org > > On Sat, 19 Sept 2026 at 20:21, Eli Zaretskii <eliz@HIDDEN> wrote: > > All true, but why is this a bug? Emacs quite correctly selects a new > client frame, on the assumption that a client that connects will soon > need your attention. > > What would you expect to happen instead, given that Emacs can only > accept input from a single client frame? > > Did you try my reproduction steps? I would expect that the frame into which I typed is the one where the > minibuffer appears! Is that expectation surprising? Yes. For the same reason: the connection of the second client made its frame be selected for input. Emacs cannot select the frame for input when input actually arrives, because it's too late.
bug-gnu-emacs@HIDDEN:bug#81894; Package emacs.
Full text available.Received: (at 81894) by debbugs.gnu.org; 19 Sep 2026 08:39:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 19 04:39:22 2026 Received: from localhost ([127.0.0.1]:33654 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1x7qbR-0002MC-QD for submit <at> debbugs.gnu.org; Sat, 19 Sep 2026 04:39:22 -0400 Received: from mail-lr2-x10.google.com ([2a00:1450:4864:38::10]:60675) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1x7qbO-0002L0-NG for 81894 <at> debbugs.gnu.org; Sat, 19 Sep 2026 04:39:20 -0400 Received: by mail-lr2-x10.google.com with SMTP id 38308e7fff4ca-3a2ff176d5bso11991981fa.2 for <81894 <at> debbugs.gnu.org>; Sat, 19 Sep 2026 01:39:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1789807152; cv=none; d=google.com; s=arc-20260327; b=lAvWAnxXx4xsecSzPskibABNzRsFaqrWRnSTfMx3EhLnBHL2wScqz1L+Gy3ybXYo+W SA3o9WSE425IBxFkyqjntBRkyCxfwL7nLDtkR37u2mcvPnSRnH+TWaFPDFbDuJC7VX48 N6ktWlaHK88e9HW50jh5foqz4RB2yv+O2gPo9uF/6aFueFw9jF8RaUEoC61mucOm3jV6 nWMqCaYwWBLGXK4LytDDLU/0aFuTLCi6kZdzrwWID8nSnkpQCSC+n4zUKNtprv3zjTNg 2/8ReMKZwaBXYFWbpFYIhLXxOT7NaAHup4cfsU/AMJWeLTDZZwBfyg6v7dhLwBrZG1ib oH2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=XrMMW2Q6Nb9k9niMyYxnMljCvDZDsZ+35+UMbjH1/vU=; fh=LUWSTrxhN1M2J8isO1jO0lAW9Z1NrWiB6EdWqWVrJus=; b=aEGmYwnO7XtgIYk91dPswOjbVt+DLz+TqiUVCl+ZYkXyMJd5RclocAfTxXnFo3DfuB t57l/xR1qHWqdWTvL1ywMk+ikS+lDv8hnVLgWPs/nWhcCJVthnJ1kjwygIR724Q4WZK4 mecR4MNvMXMN4iFpHGqH4VZclkhEmIZakHtUAjIj2hfs6ADfT3KS/BMiN8yDHzAzRs5p dzSau+8+9QjUAwwtIJHrAN0pROuKmIjrQlxxcTw345cIywKbkVUFYtoiUllQSp1tECir F57NJUGsaOm8HpJB9UCtQTg1Dnu9JTPlteeqLfeVY4LbPy5lG47B8P2eXZj1KXBpniae eJ7g==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789807152; x=1790411952; darn=debbugs.gnu.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=XrMMW2Q6Nb9k9niMyYxnMljCvDZDsZ+35+UMbjH1/vU=; b=a3N1d0dXN9urnp4msf2bVIckYki2nxv6Df3P+fCE0RxffikKiroIgtDiwG2lwezIE9 socJSTHylEQ9EffueIW8ZlnjC0s/bY9KtvPxrA9xPzRCI0sEHCfBerN6+zAzAfU31Iar 3BK9N/iwbUCS1UplpD0UsdGkod66veDFCGw3AAp6tYowsHYdkdFPvHEe9Di2f2sdnQp7 jU6K2s1CZ7RmymjNibRd+31pusHmmzJERBGQvEuv0lP6lObFx5lhE3eD0JxtXJxHCtvF B3Nz1I1LqEsIf5FL8haXIsrWtfktL70zvAFTwkE0q92cbRxJJBPYZ3574LgtVUOgHqzl G6yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789807152; x=1790411952; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=XrMMW2Q6Nb9k9niMyYxnMljCvDZDsZ+35+UMbjH1/vU=; b=TkD6uxexPZ1VFJaEPnjlpEGxSFbEYLl0jPTNEwyHJ+4x2Gt3PBGbR3qcui6DWH+k/k gDBNUrdJOb0jnTafL0nqZg0fh01nsxoXtuRmZbwKxxa8SIcsm7jQ9Rq/10M1QC7T2yTn d6UdwOqwoA5Dcpnl2knAoBo0sKq+g8hzsgU4cBOuaE5/EI1CNKPOm5BFxPJql2/5G0WQ HMBWQVYO0UD2vVxkc17NxkLcY1Y1zj1ZpOmMBPBxrHU2RN9p1G/v71qQYDRqckB7OIJw KUv0g27mmdByWycv/JufccBoQFhM6ADAJTkAt9993L5yFbFfXVedObMS/kRFYjYLH9eD kKFQ== X-Gm-Message-State: AFuF++nIMVmXTdTslkEbOBSwhe9U4/mhVHlVl4zMUSTw8b/U1gV6Hc23 6iXapRSVGyX2LsEImaAP/PBoIc3kes4WrISCNVi6AUqn5gen/j60YaP6xchQ1E0B/BdP4l6Wg7Z akkFGiE8/dzxCsXlEFIeGP7lCM71cQAs= X-Gm-Gg: AYBFou3R5U+wNKKqi61+/JGxXouFwHIl+tvrD+OSU2rACCXBBN/gve8rm3uhIyS3RfT RwuyByQtnODxEUNfIYlHZmyXuPduAzUNZHUGsoT454pwrIyRsZAGhql+Kw01HhFvNcy5Wez2p1d PxBNLGN9CYzNRe+PMXwxkOAyHWSI4sNm4yOM7L+DfBlB2pqLqNF4V2jr0x7ZjQVIgDR2tN01xos CFqh9+wkWh3ChurEk/9xS9QDT3KrruCbf/o15JnLbnIojAZPHkbyoaohqhiDknEQDxRcPqpdiJL 1bl578vbMrcrrs3Axnh3ffa6v0CK2Q049SCovNo6BQD6wza4SyK1w+g/ X-Received: by 2002:a2e:bc16:0:b0:3a4:95f0:c5b7 with SMTP id 38308e7fff4ca-3a5fbebf807mr10168991fa.3.1789807151824; Sat, 19 Sep 2026 01:39:11 -0700 (PDT) MIME-Version: 1.0 References: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN> <861papirdb.fsf@HIDDEN> In-Reply-To: <861papirdb.fsf@HIDDEN> From: Len Trigg <lenbok@HIDDEN> Date: Sat, 19 Sep 2026 20:38:54 +1200 X-Gm-Features: AcwNN1Xf5j8-ntroEhrV2VPFsE2t5ha2Mu1ZOzAy_ErNVKF-sfJJzeXnwHrJNQU Message-ID: <CAOGVwek5SbcGiVT8Ay5boE4v2wqqqmi3d1qqc1Xchhq5pLDJJg@HIDDEN> Subject: Re: bug#81894: 31.1.50; multi-tty: new emacsclient connection can cause other terminal's minibuffer commands to open on the wrong frame To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000008041c8065bd1f3b3" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 81894 Cc: 81894 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --0000000000008041c8065bd1f3b3 Content-Type: text/plain; charset="UTF-8" (Sorry Eli, ignore my previous email that was accidentally Reply rather than Reply All.) On Sat, 19 Sept 2026 at 20:21, Eli Zaretskii <eliz@HIDDEN> wrote: > All true, but why is this a bug? Emacs quite correctly selects a new > client frame, on the assumption that a client that connects will soon > need your attention. > > What would you expect to happen instead, given that Emacs can only > accept input from a single client frame? > Did you try my reproduction steps? I would expect that the frame into which I typed is the one where the minibuffer appears! Is that expectation surprising? Cheers, Len. --0000000000008041c8065bd1f3b3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>(Sorry Eli, ignore my previous email that was acciden= tally Reply rather than Reply All.)</div><br><div class=3D"gmail_quote gmai= l_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, 19 Sept 20= 26 at 20:21, Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN">eliz@HIDDEN= </a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:= 0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">= All true, but why is this a bug?=C2=A0 Emacs quite correctly selects a new<= br> client frame, on the assumption that a client that connects will soon<br> need your attention.<br> <br> What would you expect to happen instead, given that Emacs can only<br> accept input from a single client frame?<br></blockquote><div><br></div><di= v><div>Did you try my reproduction steps? I would expect that the frame int= o which I typed is the one where the minibuffer appears! Is that expectatio= n surprising?</div><div><br></div><div>Cheers,</div><div>Len.</div>=C2=A0</= div></div></div> --0000000000008041c8065bd1f3b3--
bug-gnu-emacs@HIDDEN:bug#81894; Package emacs.
Full text available.Received: (at 81894) by debbugs.gnu.org; 19 Sep 2026 08:21:18 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 19 04:21:17 2026 Received: from localhost ([127.0.0.1]:59133 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1x7qJx-0000TY-Ca for submit <at> debbugs.gnu.org; Sat, 19 Sep 2026 04:21:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40582) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1x7qJs-0000SZ-N9 for 81894 <at> debbugs.gnu.org; Sat, 19 Sep 2026 04:21:16 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1x7qJn-00037z-Ag; Sat, 19 Sep 2026 04:21:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=0vsK4zEIVqctMHFcX+7AbaE/ZUzMcVawvx4s+NdcvcU=; b=nyEtxRIc8bjN6hXRsCk5 irC5zGZbuDjsU8+cXZJEMmcbTH5e0Eh419s8pmcCh5pJpGpU3rEPUIW6vT2gnwcSPw/NAhf6a37/A 69xJANM6jb6EQg6hVbXZyM61zPPgSOdxlWrgLCojBlHh7JLKgLKwpufRpcaDd4zlCRhxR0SaepGm4 ivjX53w3e4LFD7IPtaoOdoQd0ZvrnACPLqrr4Q1Wxw4+tjxBuVXSFg4CJNnt9vLzylNzTjAE/00ag bJiaGwXjOa40zc3pw6g+aWZFkaHf3KPBmfsblcn+LsjIPUj5U5vM8HjMa2+0GRS4UFvpjWHj8duAE ZZOLqyqSM1bv8g==; Date: Sat, 19 Sep 2026 11:21:04 +0300 Message-Id: <861papirdb.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Len Trigg <lenbok@HIDDEN> In-Reply-To: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN> (message from Len Trigg on Sat, 19 Sep 2026 18:29:40 +1200) Subject: Re: bug#81894: 31.1.50; multi-tty: new emacsclient connection can cause other terminal's minibuffer commands to open on the wrong frame References: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 81894 Cc: 81894 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > From: Len Trigg <lenbok@HIDDEN> > Date: Sat, 19 Sep 2026 18:29:40 +1200 > > While trying to reproduce some multiple terminal tty-child-frame issues I have > previously experienced, I encountered this bug, which seems a general > multi-tty issue. Opening a new emacsclient in a terminal but not sending it > input, would cause input in another emacsclient to send the minibuffer > to the wrong frame (i.e. to the new emacsclient). > > To reproduce, first start emacs in one terminal: > > emacs -nw -Q > M-x server-start RET > > In a second terminal, connect a client, but do not send it input: > > emacsclient -nw > > Back in the first terminal (the original emacs -nw), invoke any command > that reads from the minibuffer, e.g.: > > M-x > > The minibuffer session opens on the second terminal's frame (the emacsclient > frame), not on the first terminal where the command was actually typed. The > first terminal's mode line goes inactive and further keystrokes there are > rejected with: > > Frame is locked; see 'multiple-terminals-merge-keyboards' variable > > * If any input is sent to the new emacsclient, the bug does not occur. > > * If instead of leaving the fresh emacsclient idle, it's closed (C-x 5 > 0) and a new emacsclient -nw is started on the same terminal (still > without sending it input), the subsequent M-x in the first terminal > does not trigger the bug. > > I used an LLM to provide a starting point for the cause, and it > suggests that the sequence of events is: > > • server--create-frame in lisp/server.el unconditionally calls (select-frame frame) on every newly created client > frame, with no coupling to which terminal actually has focus. > • do_switch_frame in src/frame.c sets the global selected_frame to this new frame, but for tty frames > specifically it deliberately skips resetting internal_last_event_frame (guarded by if (!is_tty_frame (f)) around > what is currently line 2090; comment references a prior fix for an unrelated switch-frame/post-command-hook > infinite loop). selected_frame, internal_last_event_frame, and current_kboard are all single, process-wide > globals, not per-terminal state. > • choose_minibuf_frame in src/minibuf.c (used by every minibuffer-reading command) picks the minibuffer > window from whatever selected_frame currently is, with no reference to which terminal's keystroke triggered > the read. > • temporarily_switch_to_single_kboard, called from read_minibuf in src/minibuf.c, then locks the current > keyboard to that same (wrong) frame's terminal — which is the direct cause of the "Frame is locked" message > on the original terminal. > > Hopefully someone familiar with these systems has an idea what and appropriate fix might be. All true, but why is this a bug? Emacs quite correctly selects a new client frame, on the assumption that a client that connects will soon need your attention. What would you expect to happen instead, given that Emacs can only accept input from a single client frame?
bug-gnu-emacs@HIDDEN:bug#81894; Package emacs.
Full text available.Received: (at submit) by debbugs.gnu.org; 19 Sep 2026 06:30:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Sep 19 02:30:38 2026 Received: from localhost ([127.0.0.1]:35669 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1x7oan-0002bz-HL for submit <at> debbugs.gnu.org; Sat, 19 Sep 2026 02:30:38 -0400 Received: from lists1p.gnu.org ([2001:470:142::17]:32888) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1x7oaf-0002Us-7x for submit <at> debbugs.gnu.org; Sat, 19 Sep 2026 02:30:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <lenbok@HIDDEN>) id 1x7oaQ-0003s7-VS for bug-gnu-emacs@HIDDEN; Sat, 19 Sep 2026 02:30:11 -0400 Received: from mail-lr2-x10.google.com ([2a00:1450:4864:38::10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <lenbok@HIDDEN>) id 1x7oaI-0004vU-U3 for bug-gnu-emacs@HIDDEN; Sat, 19 Sep 2026 02:30:10 -0400 Received: by mail-lr2-x10.google.com with SMTP id 38308e7fff4ca-3a5d4688decso14605791fa.2 for <bug-gnu-emacs@HIDDEN>; Fri, 18 Sep 2026 23:30:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1789799399; cv=none; d=google.com; s=arc-20260327; b=WazqHD3RBp+jyFnVkUY9wHka/IKvTG2EpqiKhEVr9A1mEDOBC0IjIiS5L1pLlnXk8q EuOc8146kI1Q7v7A32YVinLU3y7cTJNfi34qnCKwuqqLtVmNlFfu1V6yBJ39HWcdv+cS 4URSH/Wmg1c6IdKviN45amOZE4nlhkFZDN9Zrx4pf8iCCnMQlaqt6hdw5Tf2jurKGrSN ctmqZKAMNzjBgeh1NoKdKgXv5aggxescX+IWtzS6CcJQE4bA+r1T2Pu0X9PAErrzLO4J 7Bu1pMPurdqJcU1AZp52R+a1iFEFfHUkN79RmHwEHfdMCGervPVv9xIF5Fo//JOhUWgO UavA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=r5WZR43QijCjw9j/xVGeHnSi+VyFPDdWTnGmZtRWszg=; fh=+R8aXOFVnuBbN1nRXJJI02Ia//JUQJmLW/Uk/VaA0ag=; b=IQDvVD+OyjwlrlW2TYPhtIgMddQD9Su6aoqSzIRcSvYmtkWjezD1CJ1NAep0mPZL3k anRsB316EkL6DrmZBvU0mhTkqgB+j7IndJCZ1lD2syoXWwv0OA4FyKM4nV5eFrsOUS4X E/RWEIXa2hjZdKJATihRjtUoBEhLBimYh7HyKn9VzvMllxWXS1hcc4WUf81LKCV+R+I3 4HjqhNSuq2YKe1EnEsTd47qqKj3NzGF+9n1AgTUgJNv+615D8Leq/jImiJbao0TwR/FX yVaOYPsA33/gsyX0Undm0Y4Nkp2QGFUsKyYXJkYM6wFFOyR077i4C8ub4+SNKeNveV1c WQgQ==; darn=gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789799399; x=1790404199; darn=gnu.org; h=content-type:to:subject:message-id:date:from:mime-version:from:to :cc:subject:date:message-id:reply-to:content-type; bh=r5WZR43QijCjw9j/xVGeHnSi+VyFPDdWTnGmZtRWszg=; b=V6N9qeqQsecgA4kdvNEr7jRLPZ+o8MDkebHeGk4UVVkFrBx+5tbBdEzw9iPo6VaSmQ 7FkAUGeIo7fGGigSFxvmGN6gHuXwkdrl2Jb6TtpIYibn2dngKIpk/3Ym4M51t9MSDPjv ocWKaOvm6cJuFCaH6qeL3bbKHFLjTA2nQoNX0Esu2UJl2dZ8JmcRe1vhC/aG/CMKqy65 Q6qh2u/rE4unYdTarJPVv0+r4CQ09cwqn7AMLIrDfhBPGcMrB55VQ5c17Vt+/ixBJPRF jNQvlZX0KNLgAD+jqdoGiL6k740ErzWeAeKM9wCPckLv366sx5J6sBpNX7z8Xqt6qo2f X3pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789799399; x=1790404199; h=content-type:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=r5WZR43QijCjw9j/xVGeHnSi+VyFPDdWTnGmZtRWszg=; b=g2EcfqyFC5Smus2DDvV+ruhT4VDu8/skBSIKNW7QjY6Qc1fYt+bGDSVKLlpp4FY1fh moTkHqH1YGO0bo9VlqjkCSk80jpjczNKQfeoHXiQnuF0IqRApDKYH21K6TNGWY/GfDAO lenrkAodfXLNnD8T1C24T/I55d4KPG9D4hNGiRAGceJYWh6C5S4w9VYKPOqJ1p4xCRwS G+objFzHS26imj4nfFKiU6iV6u5da9SQ++AGChfIEcYH8zVEbdi9goDKPPlsO0Dvoi2s SKkBxEMf6Jzn5YgkkUoyH6y2Lxru40pnWvMCm2IjmAE3Z10FYIxvR6w6GZRZMwzfTO6y mu5w== X-Gm-Message-State: AFuF++ndbPqlE0BJGSuPJ26/Ba0WdCh3ZqAsdaO6WHG0+koptOldZ7a4 WZOn0+5p2dpgMMbcYFyViEmQvIhsk8hpM+Mt+0nA/F8ZEOC/WYC9I7cSlaMC0Pfu9uDRI+TgKHR q/SSyuhoMI6NYlUm9Q2uvdnTa848keVFkEwQXt14= X-Gm-Gg: AYBFou3CIE2KPoq9vWIY09LbkkIIPWhcTMNGc/OAtvgUEZSfUkeq8la/tcvdOmQuAgP popuRDFOp+LAyN+HF/NnDMU8UIE3Ha3mwAyuhTI4MI6JovDuHk4I3nZXImSs9IZEH55TLRvrCbx za7nLspjiovFakqacb9W1GnlQwmZs/bUg4vtxFXGc9IAOm5NrDAF4qROdGymCvbm+MZIxVuFicp l1qWmzIqBNduPbOD0DDf5yeTFWNAeG7TDTHbUdO+e8qq7DFQn3F7+yHY1VWuhBvzeKcGeb+Rbuj y6tfjng/SD28tFT9d2foAdEgZ/Pqr4+RXB0XZak3y3aIasN9y03n+atX X-Received: by 2002:a05:651c:509:b0:3a3:7682:49a0 with SMTP id 38308e7fff4ca-3a5fc0a87b3mr9161721fa.21.1789799397702; Fri, 18 Sep 2026 23:29:57 -0700 (PDT) MIME-Version: 1.0 From: Len Trigg <lenbok@HIDDEN> Date: Sat, 19 Sep 2026 18:29:40 +1200 X-Gm-Features: AcwNN1XDtovvKzA4dd4HwGabDq6RZiAKdTqKc0Jfs6SdbQD2tjdi8O9dbJ9pYas Message-ID: <CAOGVwek4rRpPZSg=GCi5Sf-6o43iGaUiFBPcMw9Z14Ag6jYcdg@HIDDEN> Subject: 31.1.50; multi-tty: new emacsclient connection can cause other terminal's minibuffer commands to open on the wrong frame To: bug-gnu-emacs@HIDDEN Content-Type: multipart/alternative; boundary="00000000000051c1e8065bd0253b" Received-SPF: pass client-ip=2a00:1450:4864:38::10; envelope-from=lenbok@HIDDEN; helo=mail-lr2-x10.google.com 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, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.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 the administrator of that system for details. Content preview: While trying to reproduce some multiple terminal tty-child-frame issues I have previously experienced, I encountered this bug, which seems a general multi-tty issue. Opening a new emacsclient in a ter [...] Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org] 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received' headers 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (lenbok[at]gmail.com) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.0 HTML_MESSAGE BODY: HTML included in message X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 1.0 (+) --00000000000051c1e8065bd0253b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable While trying to reproduce some multiple terminal tty-child-frame issues I have previously experienced, I encountered this bug, which seems a general multi-tty issue. Opening a new emacsclient in a terminal but not sending it input, would cause input in another emacsclient to send the minibuffer to the wrong frame (i.e. to the new emacsclient). To reproduce, first start emacs in one terminal: emacs -nw -Q M-x server-start RET In a second terminal, connect a client, but do not send it input: emacsclient -nw Back in the first terminal (the original emacs -nw), invoke any command that reads from the minibuffer, e.g.: M-x The minibuffer session opens on the second terminal's frame (the emacsclien= t frame), not on the first terminal where the command was actually typed. The first terminal's mode line goes inactive and further keystrokes there are rejected with: Frame is locked; see 'multiple-terminals-merge-keyboards' variable * If any input is sent to the new emacsclient, the bug does not occur. * If instead of leaving the fresh emacsclient idle, it's closed (C-x 5 0) and a new emacsclient -nw is started on the same terminal (still without sending it input), the subsequent M-x in the first terminal does not trigger the bug. I used an LLM to provide a starting point for the cause, and it suggests that the sequence of events is: =E2=80=A2 server--create-frame in lisp/server.el unconditionally calls (select-frame frame) on every newly created client frame, with no coupling to which terminal actually has focus. =E2=80=A2 do_switch_frame in src/frame.c sets the global selected_frame to = this new frame, but for tty frames specifically it deliberately skips resetting internal_last_event_frame (guarded by if (!is_tty_frame (f)) around what is currently line 2090; comment references a prior fix for an unrelated switch-frame/post-command-hook infinite loop). selected_frame, internal_last_event_frame, and current_kboard are all single, process-wide globals, not per-terminal state. =E2=80=A2 choose_minibuf_frame in src/minibuf.c (used by every minibuffer-r= eading command) picks the minibuffer window from whatever selected_frame currently is, with no reference to which terminal's keystroke triggered the read. =E2=80=A2 temporarily_switch_to_single_kboard, called from read_minibuf in src/minibuf.c, then locks the current keyboard to that same (wrong) frame's terminal =E2=80=94 which is the direct cause of the "Frame is locked" messa= ge on the original terminal. Hopefully someone familiar with these systems has an idea what and appropriate fix might be. Cheers, Len In GNU Emacs 31.1.50 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2026-09-19 built on kaka Repository revision: 911a9ac2f8cbb3832483ba3a25023dcf12c59653 Repository branch: emacs-31 System Description: Ubuntu 26.04.1 LTS Configured using: 'configure --prefix=3D/home/len/.local --with-rsvg --with-cairo --with-native-compilation --with-xinput2 --with-tree-sitter --with-modules' Configured features: ACL DBUS GIF GLIB GMP GNUTLS GPM GSETTINGS JPEG LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XAW3D XDBE XIM XINPUT2 XPM LUCID ZLIB Important settings: value of $LC_MONETARY: en_AU.UTF-8 value of $LC_NUMERIC: en_AU.UTF-8 value of $LC_TIME: en_AU.UTF-8 value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: OpenCode Minor modes in effect: global-jinx-mode: t display-time-mode: t global-clipetty-mode: t clipetty-mode: t global-atomic-chrome-edit-mode: t org-msg-mode: t agent-shell-attention-mode: t agent-shell-ui-mode: t cursor-sensor-mode: t agent-shell-completion-mode: t agent-shell-chat-mode: t global-completion-preview-mode: t completion-preview-mode: t global-treesit-auto-mode: t transient-posframe-mode: t fancy-compilation-mode: t kitty-graphics-mode: t projectile-mode: t corfu-popupinfo-mode: t corfu-prescient-mode: t global-corfu-mode: t corfu-mode: t smartparens-global-mode: t smartparens-mode: t editorconfig-mode: t term-keys-mode: t diredfl-global-mode: t global-mise-mode: t mise-mode: t global-flycheck-eglot-mode: t nerd-icons-completion-mode: t marginalia-mode: t vertico-prescient-mode: t vertico-posframe-mode: t vertico-multiform-mode: t vertico-mode: t treemacs-filewatch-mode: t treemacs-follow-mode: t treemacs-git-mode: t treemacs-fringe-indicator-mode: t nerd-icons-xref-mode: t global-ligature-mode: t ligature-mode: t diff-hl-margin-mode: t global-diff-hl-mode: t modus-themes-include-derivatives-mode: t gcmh-mode: t ultra-scroll-mode: t pixel-scroll-precision-mode: t global-auto-revert-mode: t savehist-mode: t xterm-mouse-mode: t repeat-mode: t elpaca-use-package-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t minibuffer-nonselected-mode: t minibuffer-regexp-mode: t column-number-mode: t line-number-mode: t visual-line-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /home/len/.emacs.d/elpaca/builds/corfu/corfu-quick hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-quick /home/len/.emacs.d/elpaca/builds/corfu/corfu-popupinfo hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-popupinfo /home/len/.emacs.d/elpaca/builds/corfu/corfu-history hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-history /home/len/.emacs.d/elpaca/builds/corfu/corfu-indexed hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-indexed /home/len/.emacs.d/elpaca/builds/corfu/corfu-auto hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-auto /home/len/.emacs.d/elpaca/builds/corfu/corfu-info hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-info /home/len/.emacs.d/elpaca/builds/corfu/corfu-mouse hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-mouse /home/len/.emacs.d/elpaca/builds/corfu/corfu-echo hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-echo /home/len/.emacs.d/elpaca/builds/vertico/vertico-reverse hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-reverse /home/len/.emacs.d/elpaca/builds/vertico/vertico-flat hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-flat /home/len/.emacs.d/elpaca/builds/vertico/vertico-grid hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-grid /home/len/.emacs.d/elpaca/builds/vertico/vertico-suspend hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-suspend /home/len/.emacs.d/elpaca/builds/vertico/vertico-directory hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-directory /home/len/.emacs.d/elpaca/builds/vertico/vertico-repeat hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-repeat /home/len/.emacs.d/elpaca/builds/vertico/vertico-multiform hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-multiform /home/len/.emacs.d/elpaca/builds/vertico/vertico-buffer hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-buffer /home/len/.emacs.d/elpaca/builds/vertico/vertico-indexed hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-indexed /home/len/.emacs.d/elpaca/builds/vertico/vertico-sort hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-sort /home/len/.emacs.d/elpaca/builds/vertico/vertico-unobtrusive hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-unobtrusive /home/len/.emacs.d/elpaca/builds/vertico/vertico-mouse hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-mouse /home/len/.emacs.d/elpaca/builds/vertico/vertico-quick hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-quick /home/len/.emacs.d/elpaca/builds/editorconfig/editorconfig-core-handle hides /home/len/.local/share/emacs/31.1.50/lisp/editorconfig-core-handle /home/len/.emacs.d/elpaca/builds/transient/transient hides /home/len/.local/share/emacs/31.1.50/lisp/transient /home/len/.emacs.d/elpaca/builds/editorconfig/editorconfig-conf-mode hides /home/len/.local/share/emacs/31.1.50/lisp/editorconfig-conf-mode /home/len/.emacs.d/elpaca/builds/ef-themes/theme-loaddefs hides /home/len/.local/share/emacs/31.1.50/lisp/theme-loaddefs /home/len/.emacs.d/elpaca/builds/editorconfig/editorconfig-tools hides /home/len/.local/share/emacs/31.1.50/lisp/editorconfig-tools /home/len/.emacs.d/elpaca/builds/editorconfig/editorconfig hides /home/len/.local/share/emacs/31.1.50/lisp/editorconfig /home/len/.emacs.d/elpaca/builds/editorconfig/editorconfig-core hides /home/len/.local/share/emacs/31.1.50/lisp/editorconfig-core /home/len/.emacs.d/elpaca/builds/editorconfig/editorconfig-fnmatch hides /home/len/.local/share/emacs/31.1.50/lisp/editorconfig-fnmatch /home/len/.emacs.d/elpaca/builds/lua-mode/lua-mode hides /home/len/.local/share/emacs/31.1.50/lisp/progmodes/lua-mode /home/len/.emacs.d/elpaca/builds/org/org-persist hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-persist /home/len/.emacs.d/elpaca/builds/org/ob-python hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-python /home/len/.emacs.d/elpaca/builds/org/org-lint hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-lint /home/len/.emacs.d/elpaca/builds/org/ob-exp hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-exp /home/len/.emacs.d/elpaca/builds/org/org-loaddefs hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-loaddefs /home/len/.emacs.d/elpaca/builds/org/org-cycle hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-cycle /home/len/.emacs.d/elpaca/builds/org/ob-latex hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-latex /home/len/.emacs.d/elpaca/builds/org/org-clock hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-clock /home/len/.emacs.d/elpaca/builds/org/ol-bbdb hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-bbdb /home/len/.emacs.d/elpaca/builds/org/org-fold-core hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-fold-core /home/len/.emacs.d/elpaca/builds/org/ob-processing hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-processing /home/len/.emacs.d/elpaca/builds/org/ob-tangle hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-tangle /home/len/.emacs.d/elpaca/builds/org/org-element hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-element /home/len/.emacs.d/elpaca/builds/org/ox-icalendar hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-icalendar /home/len/.emacs.d/elpaca/builds/org/ol-eww hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-eww /home/len/.emacs.d/elpaca/builds/org/org-tempo hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-tempo /home/len/.emacs.d/elpaca/builds/org/ob-dot hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-dot /home/len/.emacs.d/elpaca/builds/org/ob-emacs-lisp hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-emacs-lisp /home/len/.emacs.d/elpaca/builds/org/ob-perl hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-perl /home/len/.emacs.d/elpaca/builds/org/ob-gnuplot hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-gnuplot /home/len/.emacs.d/elpaca/builds/org/org-footnote hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-footnote /home/len/.emacs.d/elpaca/builds/org/org-faces hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-faces /home/len/.emacs.d/elpaca/builds/org/org-agenda hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-agenda /home/len/.emacs.d/elpaca/builds/org/ox-html hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-html /home/len/.emacs.d/elpaca/builds/org/ob-lilypond hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-lilypond /home/len/.emacs.d/elpaca/builds/org/ob-calc hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-calc /home/len/.emacs.d/elpaca/builds/org/ob-clojure hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-clojure /home/len/.emacs.d/elpaca/builds/org/ol-mhe hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-mhe /home/len/.emacs.d/elpaca/builds/org/oc-biblatex hides /home/len/.local/share/emacs/31.1.50/lisp/org/oc-biblatex /home/len/.emacs.d/elpaca/builds/org/ob-awk hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-awk /home/len/.emacs.d/elpaca/builds/org/org-archive hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-archive /home/len/.emacs.d/elpaca/builds/org/ol-w3m hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-w3m /home/len/.emacs.d/elpaca/builds/org/org-habit hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-habit /home/len/.emacs.d/elpaca/builds/org/org-macs hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-macs /home/len/.emacs.d/elpaca/builds/org/org-refile hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-refile /home/len/.emacs.d/elpaca/builds/org/ob-scheme hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-scheme /home/len/.emacs.d/elpaca/builds/org/ob-sql hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-sql /home/len/.emacs.d/elpaca/builds/org/ox hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox /home/len/.emacs.d/elpaca/builds/org/org-entities hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-entities /home/len/.emacs.d/elpaca/builds/org/ol-man hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-man /home/len/.emacs.d/elpaca/builds/org/ob-eval hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-eval /home/len/.emacs.d/elpaca/builds/org/ob-lua hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-lua /home/len/.emacs.d/elpaca/builds/org/ox-publish hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-publish /home/len/.emacs.d/elpaca/builds/org/ox-koma-letter hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-koma-letter /home/len/.emacs.d/elpaca/builds/org/org-num hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-num /home/len/.emacs.d/elpaca/builds/org/org-attach-git hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-attach-git /home/len/.emacs.d/elpaca/builds/org/org-src hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-src /home/len/.emacs.d/elpaca/builds/org/ob-forth hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-forth /home/len/.emacs.d/elpaca/builds/org/ob-csharp hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-csharp /home/len/.emacs.d/elpaca/builds/org/ol-eshell hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-eshell /home/len/.emacs.d/elpaca/builds/org/ox-org hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-org /home/len/.emacs.d/elpaca/builds/org/ob-lisp hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-lisp /home/len/.emacs.d/elpaca/builds/org/org-attach hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-attach /home/len/.emacs.d/elpaca/builds/org/ob-screen hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-screen /home/len/.emacs.d/elpaca/builds/org/org-inlinetask hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-inlinetask /home/len/.emacs.d/elpaca/builds/org/ob-R hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-R /home/len/.emacs.d/elpaca/builds/org/ol-docview hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-docview /home/len/.emacs.d/elpaca/builds/org/org-pcomplete hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-pcomplete /home/len/.emacs.d/elpaca/builds/org/ob-makefile hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-makefile /home/len/.emacs.d/elpaca/builds/org/ox-beamer hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-beamer /home/len/.emacs.d/elpaca/builds/org/org-fold hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-fold /home/len/.emacs.d/elpaca/builds/org/ob-C hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-C /home/len/.emacs.d/elpaca/builds/org/org-colview hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-colview /home/len/.emacs.d/elpaca/builds/org/oc-natbib hides /home/len/.local/share/emacs/31.1.50/lisp/org/oc-natbib /home/len/.emacs.d/elpaca/builds/org/org-plot hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-plot /home/len/.emacs.d/elpaca/builds/org/ob-ditaa hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-ditaa /home/len/.emacs.d/elpaca/builds/org/oc-bibtex hides /home/len/.local/share/emacs/31.1.50/lisp/org/oc-bibtex /home/len/.emacs.d/elpaca/builds/org/ob-julia hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-julia /home/len/.emacs.d/elpaca/builds/org/org-feed hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-feed /home/len/.emacs.d/elpaca/builds/org/org hides /home/len/.local/share/emacs/31.1.50/lisp/org/org /home/len/.emacs.d/elpaca/builds/org/ob-haskell hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-haskell /home/len/.emacs.d/elpaca/builds/org/oc-basic hides /home/len/.local/share/emacs/31.1.50/lisp/org/oc-basic /home/len/.emacs.d/elpaca/builds/org/ob-octave hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-octave /home/len/.emacs.d/elpaca/builds/org/ob-java hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-java /home/len/.emacs.d/elpaca/builds/org/org-ctags hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-ctags /home/len/.emacs.d/elpaca/builds/org/org-protocol hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-protocol /home/len/.emacs.d/elpaca/builds/org/org-list hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-list /home/len/.emacs.d/elpaca/builds/org/ob-groovy hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-groovy /home/len/.emacs.d/elpaca/builds/org/ob-fortran hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-fortran /home/len/.emacs.d/elpaca/builds/org/org-datetree hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-datetree /home/len/.emacs.d/elpaca/builds/org/ox-ascii hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-ascii /home/len/.emacs.d/elpaca/builds/org/ol-gnus hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-gnus /home/len/.emacs.d/elpaca/builds/org/ob-ruby hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-ruby /home/len/.emacs.d/elpaca/builds/org/ol-rmail hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-rmail /home/len/.emacs.d/elpaca/builds/org/ob-lob hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-lob /home/len/.emacs.d/elpaca/builds/org/ob-js hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-js /home/len/.emacs.d/elpaca/builds/org/ol-irc hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-irc /home/len/.emacs.d/elpaca/builds/org/ob hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob /home/len/.emacs.d/elpaca/builds/org/ob-maxima hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-maxima /home/len/.emacs.d/elpaca/builds/org/oc hides /home/len/.local/share/emacs/31.1.50/lisp/org/oc /home/len/.emacs.d/elpaca/builds/org/org-timer hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-timer /home/len/.emacs.d/elpaca/builds/org/ol-info hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-info /home/len/.emacs.d/elpaca/builds/org/ox-odt hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-odt /home/len/.emacs.d/elpaca/builds/org/ol-doi hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-doi /home/len/.emacs.d/elpaca/builds/org/org-id hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-id /home/len/.emacs.d/elpaca/builds/org/ob-core hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-core /home/len/.emacs.d/elpaca/builds/org/ox-md hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-md /home/len/.emacs.d/elpaca/builds/org/org-indent hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-indent /home/len/.emacs.d/elpaca/builds/org/ob-eshell hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-eshell /home/len/.emacs.d/elpaca/builds/org/ol-bibtex hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-bibtex /home/len/.emacs.d/elpaca/builds/org/ob-matlab hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-matlab /home/len/.emacs.d/elpaca/builds/org/ob-sqlite hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-sqlite /home/len/.emacs.d/elpaca/builds/org/org-goto hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-goto /home/len/.emacs.d/elpaca/builds/org/org-table hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-table /home/len/.emacs.d/elpaca/builds/org/ob-org hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-org /home/len/.emacs.d/elpaca/builds/org/ob-css hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-css /home/len/.emacs.d/elpaca/builds/org/org-capture hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-capture /home/len/.emacs.d/elpaca/builds/org/org-element-ast hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-element-ast /home/len/.emacs.d/elpaca/builds/org/ob-table hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-table /home/len/.emacs.d/elpaca/builds/org/org-macro hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-macro /home/len/.emacs.d/elpaca/builds/org/org-crypt hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-crypt /home/len/.emacs.d/elpaca/builds/org/ob-ref hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-ref /home/len/.emacs.d/elpaca/builds/org/oc-csl hides /home/len/.local/share/emacs/31.1.50/lisp/org/oc-csl /home/len/.emacs.d/elpaca/builds/org/ob-sass hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-sass /home/len/.emacs.d/elpaca/builds/org/ol hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol /home/len/.emacs.d/elpaca/builds/org/ob-shell hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-shell /home/len/.emacs.d/elpaca/builds/org/ob-plantuml hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-plantuml /home/len/.emacs.d/elpaca/builds/org/org-duration hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-duration /home/len/.emacs.d/elpaca/builds/org/ox-latex hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-latex /home/len/.emacs.d/elpaca/builds/org/org-mobile hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-mobile /home/len/.emacs.d/elpaca/builds/org/org-mouse hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-mouse /home/len/.emacs.d/elpaca/builds/org/org-version hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-version /home/len/.emacs.d/elpaca/builds/org/org-keys hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-keys /home/len/.emacs.d/elpaca/builds/org/ob-comint hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-comint /home/len/.emacs.d/elpaca/builds/org/ob-sed hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-sed /home/len/.emacs.d/elpaca/builds/org/org-compat hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-compat /home/len/.emacs.d/elpaca/builds/org/ob-ocaml hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-ocaml /home/len/.emacs.d/elpaca/builds/org/ox-texinfo hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-texinfo /home/len/.emacs.d/elpaca/builds/org/ox-man hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-man /home/len/.emacs.d/elpaca/builds/compat/compat hides /home/len/.local/share/emacs/31.1.50/lisp/emacs-lisp/compat /home/len/.emacs.d/elpaca/builds/eldoc/eldoc hides /home/len/.local/share/emacs/31.1.50/lisp/emacs-lisp/eldoc Features: (shadow sort mail-extr emacsbug vc-git markdown-ts-appear toml-ts-mode yaml-ts-mode html-ts-mode markdown-ts-mode-x markdown-ts-mode system-sleep tramp-archive tramp-gvfs zeroconf jinx term/xterm xterm avoid time clipetty atomic-chrome python-pytest python-x folding-isearch folding py-isort python-black reformatter blacken conda em-dirs esh-mode esh-var eshell esh-cmd esh-ext esh-proc esh-opt esh-io esh-arg esh-module esh-module-loaddefs esh-util pythonic pet yaml f groovy-mode kotlin-mode kotlin-mode-indent kotlin-mode-lexer dna-mode consult-notmuch notmuch notmuch-tree notmuch-jump notmuch-hello notmuch-show notmuch-print notmuch-crypto notmuch-mua notmuch-message notmuch-draft notmuch-maildir-fcc notmuch-address notmuch-company notmuch-parser notmuch-wash coolj goto-addr notmuch-tag crm notmuch-lib notmuch-compat org-msg htmlize gnus-msg gnus-icalendar icalendar-utils icalendar-parser icalendar-ast icalendar diary-lib diary-loaddefs gnus-dired gnus-cite gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int gnus-range message sendmail yank-media rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode mailabbrev gmm-utils gnus-win ement ement-notifications ement-notify notifications ement-room ement-lib ement-api ement-structs ement-macros magit-section plz dns time-zones monet agent-shell-attention agent-shell agent-shell-xai agent-shell-viewport agent-shell-list-edit agent-shell-ui cursor-sensor agent-shell-worktree agent-shell-usage agent-shell-styles agent-shell-qwen agent-shell-pi agent-shell-opencode agent-shell-openai agent-shell-omp agent-shell-mistral agent-shell-kiro agent-shell-kimi agent-shell-hermes agent-shell-active-message agent-shell-heartbeat agent-shell-goose agent-shell-google agent-shell-github agent-shell-droid agent-shell-experimental agent-shell-dnd agent-shell-prompt-queue agent-shell-prompt agent-shell-diff agent-shell-devcontainer agent-shell-cursor agent-shell-config agent-shell-completion agent-shell-project agent-shell-cline agent-shell-codebuddy agent-shell-chat-mode agent-shell-auggie agent-shell-anthropic agent-shell-antigravity agent-shell-markdown agent-shell-faces agent-shell-artist artist picture reporter agent-shell-work-buffer acp acp-traffic shell-maker pcsv remoto ghub-graphql treepy gsexp ghub let-alist gnutls emacs-everywhere spookfox-tabs spookfox ox-pandoc ox-org ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox org-attach org-projectile org-project-capture org-project-capture-backend org-category-capture org-capture org-agenda org-element org-persist org-id avl-tree org-refile ob-sql ob-dot ob-plantuml ob-gnuplot ob-js ob-python ob-awk ob-shell smartparens-org completion-preview org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-element-ast org-pcomplete org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core ob-eval org-cycle ol org-fold cal-menu calendar cal-loaddefs breadcrumb flycheck-eglot eglot-java eglot tree-widget external-completion jsonrpc diff ert debug backtrace just-mode jupyter jupyter-server jupyter-server-kernel jupyter-rest-api url-http url-auth mail-parse rfc2231 rfc2047 rfc2045 ietf-drums url-gw nsm jupyter-repl jupyter-widget-client websocket bindat jupyter-client jupyter-kernel jupyter-kernelspec jupyter-env jupyter-monads jupyter-messages hmac-def jupyter-mime jupyter-base restclient svelte-mode display-fill-column-indicator display-line-numbers highlight-indent-guides outli ws-butler symbol-overlay css-mode eww vtable url-queue mm-url gnus nnheader gnus-util range mm-util mail-prsvr typescript-mode ejc-sql ejc-completion-common ejc-doc ejc-interaction clomacs simple-httpd smartparens-clojure cider cider-doctor cider-debug cider-browse-ns cider-mode cider-xref-backend cider-xref-source cider-find cider-completion cider-enlighten cider-profile cider-inspector cider-ns-state cider-eval cider-connection cider-repl-history cider-history cider-repl cider-test cider-resolve cider-compilation cider-stacktrace cider-overlays cider-doc cider-browse-spec cider-tree-view cider-clojuredocs cider-popup cider-jack-in cider-inspiration cider-endpoint tramp-sh cider-eldoc cider-docstring shr pixel-fill kinsoku url-file puny cider-cljs cider-client cider-completion-context cider-session cider-common cider-util clojure-mode lisp-mnt align sesman-browser nrepl-client nrepl-bencode nrepl-dict queue spinner parseedn parseclj-parser parseclj-lex parseclj-alist sesman net-utils ejc-eldoc ejc-format ejc-result-buffer ejc-result-mode cua-base ejc-lib org-table org-fold-core org-keys oc org-compat org-version org-macs sql view php-mode php-style php-indent php-face php php-project php-keywords php-core flymake eldev eldev-util smartparens-go go-mode find-file ffap js2-mode etags smartparens-javascript js smartparens-rust rust-utils rust-prog-mode rust-mode rust-playpen rust-cargo rust-common rust-rustfmt rust-compile smartparens-lua lua-mode snakemake-mode smartparens-python python gnuplot info-look info scad-dbus dbus scad-mode treesit-auto quarto-mode mode-local poly-markdown smartparens-markdown markdown-mode polymode derived poly-lock polymode-base polymode-weave polymode-export polymode-compat polymode-methods polymode-core polymode-classes eieio-custom eieio-base plantuml-mode deflate graphviz-dot-mode graphviz-dot-flycheck multi-web-mode dts-mode dockerfile-mode sh-script smie executable transient-posframe transient llama devcontainer tramp-container fancy-compilation kitty-graphics ghostel ghostel-shell ghostel-module-install ghostel-links ghostel-line-mode ghostel-kitty ghostel-faces projectile noutline outline fileloop generator ibuffer-vc ibuf-ext ibuffer ibuffer-loaddefs apheleia apheleia-rcs apheleia-dp apheleia-formatters apheleia-utils apheleia-log apheleia-formatter-context yasnippet-capf cape kind-icon svg-lib svg xml corfu-popupinfo corfu-prescient corfu py-snippets multiple-cursors mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more smartparens-html sgml-mode facemenu dom mc-cycle-cursors multiple-cursors-core sudo-edit tramp-cache time-stamp tramp trampver tramp-integration files-x tramp-message tramp-compat shell pcomplete parse-time iso8601 time-date tramp-loaddefs wgrep-ag wgrep grep rectangle-utils rect smartparens-config smartparens-text smartparens-c smartparens thingatpt dtrt-indent editorconfig editorconfig-core editorconfig-core-handle editorconfig-fnmatch term-keys vundo dirvish diredfl dired-hide-dotfiles mise inheritenv dumb-jump consult-yasnippet yasnippet consult-flycheck flycheck find-func affe server consult treemacs-bookmarks treemacs-tags imenu bookmark nerd-icons-completion marginalia vertico-prescient prescient char-fold vertico-posframe vertico-multiform vertico-directory vertico-reverse vertico counsel request mailheader mail-utils swiper ivy ivy-faces colir disp-table posframe point-stack move-text hydra lv keycast format-spec cond-let compat treemacs-nerd-icons treemacs treemacs-header-line treemacs-compatibility treemacs-mode treemacs-interface treemacs-persistence eldoc treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator treemacs-faces treemacs-icons treemacs-scope treemacs-themes treemacs-core-utils pfuture inline hl-line ht treemacs-logging treemacs-customization treemacs-macros nerd-icons-xref xref project ligature diff-hl-margin diff-hl-dired diff-hl log-view log-edit add-log pcvs-util vc-dir ewoc diff-mode track-changes rainbow-mode xterm-color spaceline-config spaceline-segments nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon s spaceline powerline powerline-separators powerline-themes dash ef-elea-dark-theme ef-themes modus-themes auto-minor-mode diminish try package browse-url url-handlers package-activate gcmh ultra-scroll pixel-scroll python-pytest-autoloads python-x-autoloads folding-autoloads sphinx-doc-autoloads py-isort-autoloads python-black-autoloads reformatter-autoloads blacken-autoloads conda-autoloads pythonic-autoloads pet-autoloads nextflow-mode-autoloads groovy-mode-autoloads kotlin-mode-autoloads dna-mode-autoloads consult-notmuch-autoloads notmuch-autoloads org-msg-autoloads htmlize-autoloads ement-autoloads taxy-magit-section-autoloads taxy-autoloads persist-autoloads slack-autoloads alert-autoloads log4e-autoloads gntp-autoloads ts-autoloads emojify-autoloads circe-autoloads eradio-autoloads time-zones-autoloads claude-code-autoloads monet-autoloads relysium-autoloads gptel-autoloads agent-shell-attention-autoloads agent-shell-sidebar-autoloads agent-shell-hq-autoloads persp-mode-autoloads agent-shell-autoloads acp-autoloads shell-maker-autoloads pcsv-autoloads remoto-autoloads atomic-chrome-autoloads emacs-everywhere-autoloads spookfox-autoloads counsel-keepassxc-autoloads lsp-ui-autoloads lsp-mode-autoloads f-autoloads breadcrumb-autoloads sideline-flycheck-autoloads sideline-autoloads flycheck-eglot-autoloads eglot-java-autoloads just-mode-autoloads code-cells-autoloads jupyter-autoloads websocket-autoloads zmq-autoloads restclient-autoloads svelte-mode-autoloads typescript-mode-autoloads ejc-sql-autoloads clomacs-autoloads cider-autoloads spinner-autoloads simple-httpd-autoloads sesman-autoloads queue-autoloads parseedn-autoloads parseclj-autoloads clojure-mode-autoloads php-mode-autoloads eldev-autoloads eldoc-autoloads go-mode-autoloads js2-mode-autoloads rust-mode-autoloads lua-mode-autoloads snakemake-mode-autoloads gnuplot-autoloads scad-dbus-autoloads scad-mode-autoloads treesit-auto-autoloads quarto-mode-autoloads poly-markdown-autoloads polymode-autoloads markdown-ts-appear-autoloads plantuml-mode-autoloads deflate-autoloads graphviz-dot-mode-autoloads ox-pandoc-autoloads org-projectile-autoloads org-project-capture-autoloads org-category-capture-autoloads org-pretty-table-autoloads org-bullets-autoloads org-hide-drawers-autoloads org-appear-autoloads org-download-autoloads async-autoloads org-loaddefs multi-web-mode-autoloads yaml-mode-autoloads terraform-mode-autoloads hcl-mode-autoloads dts-mode-autoloads csv-mode-autoloads dockerfile-mode-autoloads git-timemachine-autoloads git-messenger-autoloads popup-autoloads majutsu-autoloads plz-autoloads forge-autoloads yaml-autoloads markdown-mode-autoloads ghub-autoloads treepy-autoloads closql-autoloads emacsql-autoloads magit-blame-color-by-age-autoloads treemacs-magit-autoloads magit-autoloads with-editor-autoloads magit-section-autoloads transient-posframe-autoloads transient-autoloads llama-autoloads conventional-commit-autoloads devcontainer-autoloads fancy-compilation-autoloads kitty-graphics-autoloads xterm-color-autoloads eat-autoloads ghostel-autoloads projectile-autoloads apheleia-autoloads jinx-autoloads consult-flycheck-autoloads flycheck-autoloads yasnippet-capf-autoloads cape-autoloads kind-icon-autoloads svg-lib-autoloads corfu-terminal-autoloads popon-autoloads corfu-prescient-autoloads corfu-autoloads py-snippets-autoloads consult-yasnippet-autoloads yasnippet-autoloads multiple-cursors-autoloads iedit-autoloads sudo-edit-autoloads visual-regexp-autoloads wgrep-ag-autoloads wgrep-autoloads rectangle-utils-autoloads smartparens-autoloads ws-butler-autoloads dtrt-indent-autoloads editorconfig-autoloads expand-region-autoloads clipetty-autoloads term-keys-autoloads vundo-autoloads dirvish-autoloads dired-dragon-autoloads dired-git-info-autoloads diredfl-autoloads dired-subtree-autoloads dired-hacks-utils-autoloads dired-du-autoloads dired-hide-dotfiles-autoloads mise-autoloads inheritenv-autoloads ibuffer-vc-autoloads dumb-jump-autoloads embark-consult-autoloads embark-autoloads affe-autoloads consult-autoloads marginalia-autoloads vertico-prescient-autoloads prescient-autoloads vertico-posframe-autoloads vertico-autoloads counsel-autoloads request-autoloads swiper-autoloads ivy-autoloads treemacs-nerd-icons-autoloads treemacs-autoloads ace-window-autoloads avy-autoloads cfrs-autoloads posframe-autoloads point-stack-autoloads crux-autoloads move-text-autoloads hydra-autoloads lv-autoloads outli-autoloads keycast-autoloads cond-let-autoloads ht-autoloads pfuture-autoloads nerd-icons-ibuffer-autoloads nerd-icons-xref-autoloads nerd-icons-dired-autoloads nerd-icons-completion-autoloads compat-autoloads nerd-icons-autoloads ligature-autoloads symbol-overlay-autoloads highlight-indent-guides-autoloads diff-hl-autoloads rainbow-mode-autoloads spaceline-autoloads s-autoloads dash-autoloads powerline-autoloads ef-themes-autoloads modus-themes-autoloads auto-minor-mode-autoloads diminish-autoloads try-autoloads mixed-pitch-autoloads transpose-frame-autoloads gcmh-autoloads ultra-scroll-autoloads generic loadhist csharp-mode c-ts-common cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs compile text-property-search comint ansi-osc ansi-color ring conf-mode treesit cus-edit pp cus-start cus-load wid-edit vc vc-dispatcher dabbrev image-dired image-dired-tags image-dired-external image-dired-util xdg image-mode exif dired dired-loaddefs midnight autorevert filenotify savehist ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util whitespace elpaca-menu-elpa advice pulse face-remap color elpaca-menu-melpa url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util url-parse auth-source eieio eieio-core password-cache json map url-vars mailcap elpaca-menu-org xt-mouse repeat comp comp-cstr subr-x mule-util comp-run comp-common rx edmacro kmacro pcase cl-extra help-mode cl-macs elpaca-use-package use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core elpaca-use-package-autoloads cl-seq byte-opt gv bytecomp byte-compile elpaca-git elpaca warnings icons elpaca-process cl-loaddefs cl-lib elpaca-autoloads rmc iso-transl tooltip cconv paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting x-toolkit xinput2 x multi-tty move-toolbar make-network-process tty-child-frames native-compile emacs) Memory information: ((conses 16 1776894 1225101) (symbols 48 95430 233) (strings 32 497290 110775) (string-bytes 1 14508590) (vectors 16 142741) (vector-slots 8 2529775 416765) (floats 8 2185 6630) (intervals 56 15711 23130) (buffers 1064 20)) --00000000000051c1e8065bd0253b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">While trying to reproduce some multiple terminal tty-child= -frame issues I have<br>previously experienced, I encountered this bug, whi= ch seems a general<br>multi-tty issue. Opening a new emacsclient in a termi= nal but not sending it<br>input, would cause input in another emacsclient t= o send the minibuffer<br>to the wrong frame (i.e. to the new emacsclient).<= br><br>To reproduce, first start emacs in one terminal:<br><br>emacs -nw -Q= <br>M-x server-start RET<br><br>In a second terminal, connect a client, but= do not send it input:<br><br>emacsclient -nw<br><br>Back in the first term= inal (the original emacs -nw), invoke any command<br>that reads from the mi= nibuffer, e.g.:<br><br>M-x<br><br>The minibuffer session opens on the secon= d terminal's frame (the emacsclient<br>frame), not on the first termina= l where the command was actually typed. The<br>first terminal's mode li= ne goes inactive and further keystrokes there are<br>rejected with:<br><br>= Frame is locked; see 'multiple-terminals-merge-keyboards' variable<= br><br><br>* If any input is sent to the new emacsclient, the bug does not = occur.<br><br>* If instead of leaving the fresh emacsclient idle, it's = closed (C-x 5<br>=C2=A0 0) and a new emacsclient -nw is started on the same= terminal (still<br>=C2=A0 without sending it input), the subsequent M-x in= the first terminal<br>=C2=A0 does not trigger the bug.<br><br><br>I used a= n LLM to provide a starting point for the cause, and it<br>suggests that th= e sequence of events is:<br><br>=E2=80=A2 server--create-frame in lisp/serv= er.el unconditionally calls (select-frame frame) on every newly created cli= ent frame, with no coupling to which terminal actually has focus.<br>=E2=80= =A2 do_switch_frame in src/frame.c sets the global selected_frame to this n= ew frame, but for tty frames specifically it deliberately skips resetting i= nternal_last_event_frame (guarded by if (!is_tty_frame (f)) around what is = currently line 2090; comment references a prior fix for an unrelated switch= -frame/post-command-hook infinite loop). selected_frame, internal_last_even= t_frame, and current_kboard are all single, process-wide globals, not per-t= erminal state.<br>=E2=80=A2 choose_minibuf_frame in src/minibuf.c (used by = every minibuffer-reading command) picks the minibuffer window from whatever= selected_frame currently is, with no reference to which terminal's key= stroke triggered the read.<br>=E2=80=A2 temporarily_switch_to_single_kboard= , called from read_minibuf in src/minibuf.c, then locks the current keyboar= d to that same (wrong) frame's terminal =E2=80=94 which is the direct c= ause of the "Frame is locked" message on the original terminal.<b= r><br>Hopefully someone familiar with these systems has an idea what and ap= propriate fix might be.<br><br>Cheers,<br>Len<br><br><br><br><br>In GNU Ema= cs 31.1.50 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d<br>=C2=A0scroll = bars) of 2026-09-19 built on kaka<br>Repository revision: 911a9ac2f8cbb3832= 483ba3a25023dcf12c59653<br>Repository branch: emacs-31<br>System Descriptio= n: Ubuntu 26.04.1 LTS<br><br>Configured using:<br>=C2=A0'configure --pr= efix=3D/home/len/.local --with-rsvg --with-cairo<br>=C2=A0--with-native-com= pilation --with-xinput2 --with-tree-sitter<br>=C2=A0--with-modules'<br>= <br>Configured features:<br>ACL DBUS GIF GLIB GMP GNUTLS GPM GSETTINGS JPEG= LCMS2 LIBSYSTEMD LIBXML2<br>MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG= SECCOMP SOUND SQLITE3<br>THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP= X11 XAW3D XDBE XIM<br>XINPUT2 XPM LUCID ZLIB<br><br>Important settings:<br= >=C2=A0 value of $LC_MONETARY: en_AU.UTF-8<br>=C2=A0 value of $LC_NUMERIC: = en_AU.UTF-8<br>=C2=A0 value of $LC_TIME: en_AU.UTF-8<br>=C2=A0 value of $LA= NG: en_US.UTF-8<br>=C2=A0 locale-coding-system: utf-8-unix<br><br>Major mod= e: OpenCode<br><br>Minor modes in effect:<br>=C2=A0 global-jinx-mode: t<br>= =C2=A0 display-time-mode: t<br>=C2=A0 global-clipetty-mode: t<br>=C2=A0 cli= petty-mode: t<br>=C2=A0 global-atomic-chrome-edit-mode: t<br>=C2=A0 org-msg= -mode: t<br>=C2=A0 agent-shell-attention-mode: t<br>=C2=A0 agent-shell-ui-m= ode: t<br>=C2=A0 cursor-sensor-mode: t<br>=C2=A0 agent-shell-completion-mod= e: t<br>=C2=A0 agent-shell-chat-mode: t<br>=C2=A0 global-completion-preview= -mode: t<br>=C2=A0 completion-preview-mode: t<br>=C2=A0 global-treesit-auto= -mode: t<br>=C2=A0 transient-posframe-mode: t<br>=C2=A0 fancy-compilation-m= ode: t<br>=C2=A0 kitty-graphics-mode: t<br>=C2=A0 projectile-mode: t<br>=C2= =A0 corfu-popupinfo-mode: t<br>=C2=A0 corfu-prescient-mode: t<br>=C2=A0 glo= bal-corfu-mode: t<br>=C2=A0 corfu-mode: t<br>=C2=A0 smartparens-global-mode= : t<br>=C2=A0 smartparens-mode: t<br>=C2=A0 editorconfig-mode: t<br>=C2=A0 = term-keys-mode: t<br>=C2=A0 diredfl-global-mode: t<br>=C2=A0 global-mise-mo= de: t<br>=C2=A0 mise-mode: t<br>=C2=A0 global-flycheck-eglot-mode: t<br>=C2= =A0 nerd-icons-completion-mode: t<br>=C2=A0 marginalia-mode: t<br>=C2=A0 ve= rtico-prescient-mode: t<br>=C2=A0 vertico-posframe-mode: t<br>=C2=A0 vertic= o-multiform-mode: t<br>=C2=A0 vertico-mode: t<br>=C2=A0 treemacs-filewatch-= mode: t<br>=C2=A0 treemacs-follow-mode: t<br>=C2=A0 treemacs-git-mode: t<br= >=C2=A0 treemacs-fringe-indicator-mode: t<br>=C2=A0 nerd-icons-xref-mode: t= <br>=C2=A0 global-ligature-mode: t<br>=C2=A0 ligature-mode: t<br>=C2=A0 dif= f-hl-margin-mode: t<br>=C2=A0 global-diff-hl-mode: t<br>=C2=A0 modus-themes= -include-derivatives-mode: t<br>=C2=A0 gcmh-mode: t<br>=C2=A0 ultra-scroll-= mode: t<br>=C2=A0 pixel-scroll-precision-mode: t<br>=C2=A0 global-auto-reve= rt-mode: t<br>=C2=A0 savehist-mode: t<br>=C2=A0 xterm-mouse-mode: t<br>=C2= =A0 repeat-mode: t<br>=C2=A0 elpaca-use-package-mode: t<br>=C2=A0 override-= global-mode: t<br>=C2=A0 tooltip-mode: t<br>=C2=A0 global-eldoc-mode: t<br>= =C2=A0 show-paren-mode: t<br>=C2=A0 electric-indent-mode: t<br>=C2=A0 mouse= -wheel-mode: t<br>=C2=A0 file-name-shadow-mode: t<br>=C2=A0 global-font-loc= k-mode: t<br>=C2=A0 font-lock-mode: t<br>=C2=A0 minibuffer-nonselected-mode= : t<br>=C2=A0 minibuffer-regexp-mode: t<br>=C2=A0 column-number-mode: t<br>= =C2=A0 line-number-mode: t<br>=C2=A0 visual-line-mode: t<br>=C2=A0 transien= t-mark-mode: t<br>=C2=A0 auto-composition-mode: t<br>=C2=A0 auto-encryption= -mode: t<br>=C2=A0 auto-compression-mode: t<br><br>Load-path shadows:<br>/h= ome/len/.emacs.d/elpaca/builds/corfu/corfu-quick hides /home/len/.emacs.d/e= lpaca/repos/corfu/extensions/corfu-quick<br>/home/len/.emacs.d/elpaca/build= s/corfu/corfu-popupinfo hides /home/len/.emacs.d/elpaca/repos/corfu/extensi= ons/corfu-popupinfo<br>/home/len/.emacs.d/elpaca/builds/corfu/corfu-history= hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-history<br>/h= ome/len/.emacs.d/elpaca/builds/corfu/corfu-indexed hides /home/len/.emacs.d= /elpaca/repos/corfu/extensions/corfu-indexed<br>/home/len/.emacs.d/elpaca/b= uilds/corfu/corfu-auto hides /home/len/.emacs.d/elpaca/repos/corfu/extensio= ns/corfu-auto<br>/home/len/.emacs.d/elpaca/builds/corfu/corfu-info hides /h= ome/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-info<br>/home/len/.ema= cs.d/elpaca/builds/corfu/corfu-mouse hides /home/len/.emacs.d/elpaca/repos/= corfu/extensions/corfu-mouse<br>/home/len/.emacs.d/elpaca/builds/corfu/corf= u-echo hides /home/len/.emacs.d/elpaca/repos/corfu/extensions/corfu-echo<br= >/home/len/.emacs.d/elpaca/builds/vertico/vertico-reverse hides /home/len/.= emacs.d/elpaca/repos/vertico/extensions/vertico-reverse<br>/home/len/.emacs= .d/elpaca/builds/vertico/vertico-flat hides /home/len/.emacs.d/elpaca/repos= /vertico/extensions/vertico-flat<br>/home/len/.emacs.d/elpaca/builds/vertic= o/vertico-grid hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/ver= tico-grid<br>/home/len/.emacs.d/elpaca/builds/vertico/vertico-suspend hides= /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-suspend<br>/hom= e/len/.emacs.d/elpaca/builds/vertico/vertico-directory hides /home/len/.ema= cs.d/elpaca/repos/vertico/extensions/vertico-directory<br>/home/len/.emacs.= d/elpaca/builds/vertico/vertico-repeat hides /home/len/.emacs.d/elpaca/repo= s/vertico/extensions/vertico-repeat<br>/home/len/.emacs.d/elpaca/builds/ver= tico/vertico-multiform hides /home/len/.emacs.d/elpaca/repos/vertico/extens= ions/vertico-multiform<br>/home/len/.emacs.d/elpaca/builds/vertico/vertico-= buffer hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-buf= fer<br>/home/len/.emacs.d/elpaca/builds/vertico/vertico-indexed hides /home= /len/.emacs.d/elpaca/repos/vertico/extensions/vertico-indexed<br>/home/len/= .emacs.d/elpaca/builds/vertico/vertico-sort hides /home/len/.emacs.d/elpaca= /repos/vertico/extensions/vertico-sort<br>/home/len/.emacs.d/elpaca/builds/= vertico/vertico-unobtrusive hides /home/len/.emacs.d/elpaca/repos/vertico/e= xtensions/vertico-unobtrusive<br>/home/len/.emacs.d/elpaca/builds/vertico/v= ertico-mouse hides /home/len/.emacs.d/elpaca/repos/vertico/extensions/verti= co-mouse<br>/home/len/.emacs.d/elpaca/builds/vertico/vertico-quick hides /h= ome/len/.emacs.d/elpaca/repos/vertico/extensions/vertico-quick<br>/home/len= /.emacs.d/elpaca/builds/editorconfig/editorconfig-core-handle hides /home/l= en/.local/share/emacs/31.1.50/lisp/editorconfig-core-handle<br>/home/len/.e= macs.d/elpaca/builds/transient/transient hides /home/len/.local/share/emacs= /31.1.50/lisp/transient<br>/home/len/.emacs.d/elpaca/builds/editorconfig/ed= itorconfig-conf-mode hides /home/len/.local/share/emacs/31.1.50/lisp/editor= config-conf-mode<br>/home/len/.emacs.d/elpaca/builds/ef-themes/theme-loadde= fs hides /home/len/.local/share/emacs/31.1.50/lisp/theme-loaddefs<br>/home/= len/.emacs.d/elpaca/builds/editorconfig/editorconfig-tools hides /home/len/= .local/share/emacs/31.1.50/lisp/editorconfig-tools<br>/home/len/.emacs.d/el= paca/builds/editorconfig/editorconfig hides /home/len/.local/share/emacs/31= .1.50/lisp/editorconfig<br>/home/len/.emacs.d/elpaca/builds/editorconfig/ed= itorconfig-core hides /home/len/.local/share/emacs/31.1.50/lisp/editorconfi= g-core<br>/home/len/.emacs.d/elpaca/builds/editorconfig/editorconfig-fnmatc= h hides /home/len/.local/share/emacs/31.1.50/lisp/editorconfig-fnmatch<br>/= home/len/.emacs.d/elpaca/builds/lua-mode/lua-mode hides /home/len/.local/sh= are/emacs/31.1.50/lisp/progmodes/lua-mode<br>/home/len/.emacs.d/elpaca/buil= ds/org/org-persist hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-= persist<br>/home/len/.emacs.d/elpaca/builds/org/ob-python hides /home/len/.= local/share/emacs/31.1.50/lisp/org/ob-python<br>/home/len/.emacs.d/elpaca/b= uilds/org/org-lint hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-= lint<br>/home/len/.emacs.d/elpaca/builds/org/ob-exp hides /home/len/.local/= share/emacs/31.1.50/lisp/org/ob-exp<br>/home/len/.emacs.d/elpaca/builds/org= /org-loaddefs hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-loadd= efs<br>/home/len/.emacs.d/elpaca/builds/org/org-cycle hides /home/len/.loca= l/share/emacs/31.1.50/lisp/org/org-cycle<br>/home/len/.emacs.d/elpaca/build= s/org/ob-latex hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-latex= <br>/home/len/.emacs.d/elpaca/builds/org/org-clock hides /home/len/.local/s= hare/emacs/31.1.50/lisp/org/org-clock<br>/home/len/.emacs.d/elpaca/builds/o= rg/ol-bbdb hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-bbdb<br>/= home/len/.emacs.d/elpaca/builds/org/org-fold-core hides /home/len/.local/sh= are/emacs/31.1.50/lisp/org/org-fold-core<br>/home/len/.emacs.d/elpaca/build= s/org/ob-processing hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-= processing<br>/home/len/.emacs.d/elpaca/builds/org/ob-tangle hides /home/le= n/.local/share/emacs/31.1.50/lisp/org/ob-tangle<br>/home/len/.emacs.d/elpac= a/builds/org/org-element hides /home/len/.local/share/emacs/31.1.50/lisp/or= g/org-element<br>/home/len/.emacs.d/elpaca/builds/org/ox-icalendar hides /h= ome/len/.local/share/emacs/31.1.50/lisp/org/ox-icalendar<br>/home/len/.emac= s.d/elpaca/builds/org/ol-eww hides /home/len/.local/share/emacs/31.1.50/lis= p/org/ol-eww<br>/home/len/.emacs.d/elpaca/builds/org/org-tempo hides /home/= len/.local/share/emacs/31.1.50/lisp/org/org-tempo<br>/home/len/.emacs.d/elp= aca/builds/org/ob-dot hides /home/len/.local/share/emacs/31.1.50/lisp/org/o= b-dot<br>/home/len/.emacs.d/elpaca/builds/org/ob-emacs-lisp hides /home/len= /.local/share/emacs/31.1.50/lisp/org/ob-emacs-lisp<br>/home/len/.emacs.d/el= paca/builds/org/ob-perl hides /home/len/.local/share/emacs/31.1.50/lisp/org= /ob-perl<br>/home/len/.emacs.d/elpaca/builds/org/ob-gnuplot hides /home/len= /.local/share/emacs/31.1.50/lisp/org/ob-gnuplot<br>/home/len/.emacs.d/elpac= a/builds/org/org-footnote hides /home/len/.local/share/emacs/31.1.50/lisp/o= rg/org-footnote<br>/home/len/.emacs.d/elpaca/builds/org/org-faces hides /ho= me/len/.local/share/emacs/31.1.50/lisp/org/org-faces<br>/home/len/.emacs.d/= elpaca/builds/org/org-agenda hides /home/len/.local/share/emacs/31.1.50/lis= p/org/org-agenda<br>/home/len/.emacs.d/elpaca/builds/org/ox-html hides /hom= e/len/.local/share/emacs/31.1.50/lisp/org/ox-html<br>/home/len/.emacs.d/elp= aca/builds/org/ob-lilypond hides /home/len/.local/share/emacs/31.1.50/lisp/= org/ob-lilypond<br>/home/len/.emacs.d/elpaca/builds/org/ob-calc hides /home= /len/.local/share/emacs/31.1.50/lisp/org/ob-calc<br>/home/len/.emacs.d/elpa= ca/builds/org/ob-clojure hides /home/len/.local/share/emacs/31.1.50/lisp/or= g/ob-clojure<br>/home/len/.emacs.d/elpaca/builds/org/ol-mhe hides /home/len= /.local/share/emacs/31.1.50/lisp/org/ol-mhe<br>/home/len/.emacs.d/elpaca/bu= ilds/org/oc-biblatex hides /home/len/.local/share/emacs/31.1.50/lisp/org/oc= -biblatex<br>/home/len/.emacs.d/elpaca/builds/org/ob-awk hides /home/len/.l= ocal/share/emacs/31.1.50/lisp/org/ob-awk<br>/home/len/.emacs.d/elpaca/build= s/org/org-archive hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-a= rchive<br>/home/len/.emacs.d/elpaca/builds/org/ol-w3m hides /home/len/.loca= l/share/emacs/31.1.50/lisp/org/ol-w3m<br>/home/len/.emacs.d/elpaca/builds/o= rg/org-habit hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-habit<= br>/home/len/.emacs.d/elpaca/builds/org/org-macs hides /home/len/.local/sha= re/emacs/31.1.50/lisp/org/org-macs<br>/home/len/.emacs.d/elpaca/builds/org/= org-refile hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-refile<b= r>/home/len/.emacs.d/elpaca/builds/org/ob-scheme hides /home/len/.local/sha= re/emacs/31.1.50/lisp/org/ob-scheme<br>/home/len/.emacs.d/elpaca/builds/org= /ob-sql hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-sql<br>/home= /len/.emacs.d/elpaca/builds/org/ox hides /home/len/.local/share/emacs/31.1.= 50/lisp/org/ox<br>/home/len/.emacs.d/elpaca/builds/org/org-entities hides /= home/len/.local/share/emacs/31.1.50/lisp/org/org-entities<br>/home/len/.ema= cs.d/elpaca/builds/org/ol-man hides /home/len/.local/share/emacs/31.1.50/li= sp/org/ol-man<br>/home/len/.emacs.d/elpaca/builds/org/ob-eval hides /home/l= en/.local/share/emacs/31.1.50/lisp/org/ob-eval<br>/home/len/.emacs.d/elpaca= /builds/org/ob-lua hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-l= ua<br>/home/len/.emacs.d/elpaca/builds/org/ox-publish hides /home/len/.loca= l/share/emacs/31.1.50/lisp/org/ox-publish<br>/home/len/.emacs.d/elpaca/buil= ds/org/ox-koma-letter hides /home/len/.local/share/emacs/31.1.50/lisp/org/o= x-koma-letter<br>/home/len/.emacs.d/elpaca/builds/org/org-num hides /home/l= en/.local/share/emacs/31.1.50/lisp/org/org-num<br>/home/len/.emacs.d/elpaca= /builds/org/org-attach-git hides /home/len/.local/share/emacs/31.1.50/lisp/= org/org-attach-git<br>/home/len/.emacs.d/elpaca/builds/org/org-src hides /h= ome/len/.local/share/emacs/31.1.50/lisp/org/org-src<br>/home/len/.emacs.d/e= lpaca/builds/org/ob-forth hides /home/len/.local/share/emacs/31.1.50/lisp/o= rg/ob-forth<br>/home/len/.emacs.d/elpaca/builds/org/ob-csharp hides /home/l= en/.local/share/emacs/31.1.50/lisp/org/ob-csharp<br>/home/len/.emacs.d/elpa= ca/builds/org/ol-eshell hides /home/len/.local/share/emacs/31.1.50/lisp/org= /ol-eshell<br>/home/len/.emacs.d/elpaca/builds/org/ox-org hides /home/len/.= local/share/emacs/31.1.50/lisp/org/ox-org<br>/home/len/.emacs.d/elpaca/buil= ds/org/ob-lisp hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-lisp<= br>/home/len/.emacs.d/elpaca/builds/org/org-attach hides /home/len/.local/s= hare/emacs/31.1.50/lisp/org/org-attach<br>/home/len/.emacs.d/elpaca/builds/= org/ob-screen hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-screen= <br>/home/len/.emacs.d/elpaca/builds/org/org-inlinetask hides /home/len/.lo= cal/share/emacs/31.1.50/lisp/org/org-inlinetask<br>/home/len/.emacs.d/elpac= a/builds/org/ob-R hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-R<= br>/home/len/.emacs.d/elpaca/builds/org/ol-docview hides /home/len/.local/s= hare/emacs/31.1.50/lisp/org/ol-docview<br>/home/len/.emacs.d/elpaca/builds/= org/org-pcomplete hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-p= complete<br>/home/len/.emacs.d/elpaca/builds/org/ob-makefile hides /home/le= n/.local/share/emacs/31.1.50/lisp/org/ob-makefile<br>/home/len/.emacs.d/elp= aca/builds/org/ox-beamer hides /home/len/.local/share/emacs/31.1.50/lisp/or= g/ox-beamer<br>/home/len/.emacs.d/elpaca/builds/org/org-fold hides /home/le= n/.local/share/emacs/31.1.50/lisp/org/org-fold<br>/home/len/.emacs.d/elpaca= /builds/org/ob-C hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-C<b= r>/home/len/.emacs.d/elpaca/builds/org/org-colview hides /home/len/.local/s= hare/emacs/31.1.50/lisp/org/org-colview<br>/home/len/.emacs.d/elpaca/builds= /org/oc-natbib hides /home/len/.local/share/emacs/31.1.50/lisp/org/oc-natbi= b<br>/home/len/.emacs.d/elpaca/builds/org/org-plot hides /home/len/.local/s= hare/emacs/31.1.50/lisp/org/org-plot<br>/home/len/.emacs.d/elpaca/builds/or= g/ob-ditaa hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-ditaa<br>= /home/len/.emacs.d/elpaca/builds/org/oc-bibtex hides /home/len/.local/share= /emacs/31.1.50/lisp/org/oc-bibtex<br>/home/len/.emacs.d/elpaca/builds/org/o= b-julia hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-julia<br>/ho= me/len/.emacs.d/elpaca/builds/org/org-feed hides /home/len/.local/share/ema= cs/31.1.50/lisp/org/org-feed<br>/home/len/.emacs.d/elpaca/builds/org/org hi= des /home/len/.local/share/emacs/31.1.50/lisp/org/org<br>/home/len/.emacs.d= /elpaca/builds/org/ob-haskell hides /home/len/.local/share/emacs/31.1.50/li= sp/org/ob-haskell<br>/home/len/.emacs.d/elpaca/builds/org/oc-basic hides /h= ome/len/.local/share/emacs/31.1.50/lisp/org/oc-basic<br>/home/len/.emacs.d/= elpaca/builds/org/ob-octave hides /home/len/.local/share/emacs/31.1.50/lisp= /org/ob-octave<br>/home/len/.emacs.d/elpaca/builds/org/ob-java hides /home/= len/.local/share/emacs/31.1.50/lisp/org/ob-java<br>/home/len/.emacs.d/elpac= a/builds/org/org-ctags hides /home/len/.local/share/emacs/31.1.50/lisp/org/= org-ctags<br>/home/len/.emacs.d/elpaca/builds/org/org-protocol hides /home/= len/.local/share/emacs/31.1.50/lisp/org/org-protocol<br>/home/len/.emacs.d/= elpaca/builds/org/org-list hides /home/len/.local/share/emacs/31.1.50/lisp/= org/org-list<br>/home/len/.emacs.d/elpaca/builds/org/ob-groovy hides /home/= len/.local/share/emacs/31.1.50/lisp/org/ob-groovy<br>/home/len/.emacs.d/elp= aca/builds/org/ob-fortran hides /home/len/.local/share/emacs/31.1.50/lisp/o= rg/ob-fortran<br>/home/len/.emacs.d/elpaca/builds/org/org-datetree hides /h= ome/len/.local/share/emacs/31.1.50/lisp/org/org-datetree<br>/home/len/.emac= s.d/elpaca/builds/org/ox-ascii hides /home/len/.local/share/emacs/31.1.50/l= isp/org/ox-ascii<br>/home/len/.emacs.d/elpaca/builds/org/ol-gnus hides /hom= e/len/.local/share/emacs/31.1.50/lisp/org/ol-gnus<br>/home/len/.emacs.d/elp= aca/builds/org/ob-ruby hides /home/len/.local/share/emacs/31.1.50/lisp/org/= ob-ruby<br>/home/len/.emacs.d/elpaca/builds/org/ol-rmail hides /home/len/.l= ocal/share/emacs/31.1.50/lisp/org/ol-rmail<br>/home/len/.emacs.d/elpaca/bui= lds/org/ob-lob hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-lob<b= r>/home/len/.emacs.d/elpaca/builds/org/ob-js hides /home/len/.local/share/e= macs/31.1.50/lisp/org/ob-js<br>/home/len/.emacs.d/elpaca/builds/org/ol-irc = hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-irc<br>/home/len/.em= acs.d/elpaca/builds/org/ob hides /home/len/.local/share/emacs/31.1.50/lisp/= org/ob<br>/home/len/.emacs.d/elpaca/builds/org/ob-maxima hides /home/len/.l= ocal/share/emacs/31.1.50/lisp/org/ob-maxima<br>/home/len/.emacs.d/elpaca/bu= ilds/org/oc hides /home/len/.local/share/emacs/31.1.50/lisp/org/oc<br>/home= /len/.emacs.d/elpaca/builds/org/org-timer hides /home/len/.local/share/emac= s/31.1.50/lisp/org/org-timer<br>/home/len/.emacs.d/elpaca/builds/org/ol-inf= o hides /home/len/.local/share/emacs/31.1.50/lisp/org/ol-info<br>/home/len/= .emacs.d/elpaca/builds/org/ox-odt hides /home/len/.local/share/emacs/31.1.5= 0/lisp/org/ox-odt<br>/home/len/.emacs.d/elpaca/builds/org/ol-doi hides /hom= e/len/.local/share/emacs/31.1.50/lisp/org/ol-doi<br>/home/len/.emacs.d/elpa= ca/builds/org/org-id hides /home/len/.local/share/emacs/31.1.50/lisp/org/or= g-id<br>/home/len/.emacs.d/elpaca/builds/org/ob-core hides /home/len/.local= /share/emacs/31.1.50/lisp/org/ob-core<br>/home/len/.emacs.d/elpaca/builds/o= rg/ox-md hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-md<br>/home= /len/.emacs.d/elpaca/builds/org/org-indent hides /home/len/.local/share/ema= cs/31.1.50/lisp/org/org-indent<br>/home/len/.emacs.d/elpaca/builds/org/ob-e= shell hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-eshell<br>/hom= e/len/.emacs.d/elpaca/builds/org/ol-bibtex hides /home/len/.local/share/ema= cs/31.1.50/lisp/org/ol-bibtex<br>/home/len/.emacs.d/elpaca/builds/org/ob-ma= tlab hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-matlab<br>/home= /len/.emacs.d/elpaca/builds/org/ob-sqlite hides /home/len/.local/share/emac= s/31.1.50/lisp/org/ob-sqlite<br>/home/len/.emacs.d/elpaca/builds/org/org-go= to hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-goto<br>/home/le= n/.emacs.d/elpaca/builds/org/org-table hides /home/len/.local/share/emacs/3= 1.1.50/lisp/org/org-table<br>/home/len/.emacs.d/elpaca/builds/org/ob-org hi= des /home/len/.local/share/emacs/31.1.50/lisp/org/ob-org<br>/home/len/.emac= s.d/elpaca/builds/org/ob-css hides /home/len/.local/share/emacs/31.1.50/lis= p/org/ob-css<br>/home/len/.emacs.d/elpaca/builds/org/org-capture hides /hom= e/len/.local/share/emacs/31.1.50/lisp/org/org-capture<br>/home/len/.emacs.d= /elpaca/builds/org/org-element-ast hides /home/len/.local/share/emacs/31.1.= 50/lisp/org/org-element-ast<br>/home/len/.emacs.d/elpaca/builds/org/ob-tabl= e hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-table<br>/home/len= /.emacs.d/elpaca/builds/org/org-macro hides /home/len/.local/share/emacs/31= .1.50/lisp/org/org-macro<br>/home/len/.emacs.d/elpaca/builds/org/org-crypt = hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-crypt<br>/home/len/= .emacs.d/elpaca/builds/org/ob-ref hides /home/len/.local/share/emacs/31.1.5= 0/lisp/org/ob-ref<br>/home/len/.emacs.d/elpaca/builds/org/oc-csl hides /hom= e/len/.local/share/emacs/31.1.50/lisp/org/oc-csl<br>/home/len/.emacs.d/elpa= ca/builds/org/ob-sass hides /home/len/.local/share/emacs/31.1.50/lisp/org/o= b-sass<br>/home/len/.emacs.d/elpaca/builds/org/ol hides /home/len/.local/sh= are/emacs/31.1.50/lisp/org/ol<br>/home/len/.emacs.d/elpaca/builds/org/ob-sh= ell hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-shell<br>/home/l= en/.emacs.d/elpaca/builds/org/ob-plantuml hides /home/len/.local/share/emac= s/31.1.50/lisp/org/ob-plantuml<br>/home/len/.emacs.d/elpaca/builds/org/org-= duration hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-duration<b= r>/home/len/.emacs.d/elpaca/builds/org/ox-latex hides /home/len/.local/shar= e/emacs/31.1.50/lisp/org/ox-latex<br>/home/len/.emacs.d/elpaca/builds/org/o= rg-mobile hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-mobile<br= >/home/len/.emacs.d/elpaca/builds/org/org-mouse hides /home/len/.local/shar= e/emacs/31.1.50/lisp/org/org-mouse<br>/home/len/.emacs.d/elpaca/builds/org/= org-version hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-version= <br>/home/len/.emacs.d/elpaca/builds/org/org-keys hides /home/len/.local/sh= are/emacs/31.1.50/lisp/org/org-keys<br>/home/len/.emacs.d/elpaca/builds/org= /ob-comint hides /home/len/.local/share/emacs/31.1.50/lisp/org/ob-comint<br= >/home/len/.emacs.d/elpaca/builds/org/ob-sed hides /home/len/.local/share/e= macs/31.1.50/lisp/org/ob-sed<br>/home/len/.emacs.d/elpaca/builds/org/org-co= mpat hides /home/len/.local/share/emacs/31.1.50/lisp/org/org-compat<br>/hom= e/len/.emacs.d/elpaca/builds/org/ob-ocaml hides /home/len/.local/share/emac= s/31.1.50/lisp/org/ob-ocaml<br>/home/len/.emacs.d/elpaca/builds/org/ox-texi= nfo hides /home/len/.local/share/emacs/31.1.50/lisp/org/ox-texinfo<br>/home= /len/.emacs.d/elpaca/builds/org/ox-man hides /home/len/.local/share/emacs/3= 1.1.50/lisp/org/ox-man<br>/home/len/.emacs.d/elpaca/builds/compat/compat hi= des /home/len/.local/share/emacs/31.1.50/lisp/emacs-lisp/compat<br>/home/le= n/.emacs.d/elpaca/builds/eldoc/eldoc hides /home/len/.local/share/emacs/31.= 1.50/lisp/emacs-lisp/eldoc<br><br>Features:<br>(shadow sort mail-extr emacs= bug vc-git markdown-ts-appear toml-ts-mode<br>yaml-ts-mode html-ts-mode mar= kdown-ts-mode-x markdown-ts-mode<br>system-sleep tramp-archive tramp-gvfs z= eroconf jinx term/xterm xterm<br>avoid time clipetty atomic-chrome python-p= ytest python-x folding-isearch<br>folding py-isort python-black reformatter= blacken conda em-dirs esh-mode<br>esh-var eshell esh-cmd esh-ext esh-proc = esh-opt esh-io esh-arg<br>esh-module esh-module-loaddefs esh-util pythonic = pet yaml f groovy-mode<br>kotlin-mode kotlin-mode-indent kotlin-mode-lexer = dna-mode<br>consult-notmuch notmuch notmuch-tree notmuch-jump notmuch-hello= <br>notmuch-show notmuch-print notmuch-crypto notmuch-mua notmuch-message<b= r>notmuch-draft notmuch-maildir-fcc notmuch-address notmuch-company<br>notm= uch-parser notmuch-wash coolj goto-addr notmuch-tag crm notmuch-lib<br>notm= uch-compat org-msg htmlize gnus-msg gnus-icalendar icalendar-utils<br>icale= ndar-parser icalendar-ast icalendar diary-lib diary-loaddefs<br>gnus-dired = gnus-cite gnus-art mm-uu mml2015 mm-view mml-smime smime dig<br>gnus-sum gn= us-group gnus-undo gnus-start gnus-cloud nnimap nnmail<br>mail-source utf7 = nnoo gnus-spec gnus-int gnus-range message sendmail<br>yank-media rfc822 mm= l mml-sec epa epg rfc6068 epg-config mm-decode<br>mm-bodies mm-encode maila= bbrev gmm-utils gnus-win ement<br>ement-notifications ement-notify notifica= tions ement-room ement-lib<br>ement-api ement-structs ement-macros magit-se= ction plz dns time-zones<br>monet agent-shell-attention agent-shell agent-s= hell-xai<br>agent-shell-viewport agent-shell-list-edit agent-shell-ui curso= r-sensor<br>agent-shell-worktree agent-shell-usage agent-shell-styles<br>ag= ent-shell-qwen agent-shell-pi agent-shell-opencode agent-shell-openai<br>ag= ent-shell-omp agent-shell-mistral agent-shell-kiro agent-shell-kimi<br>agen= t-shell-hermes agent-shell-active-message agent-shell-heartbeat<br>agent-sh= ell-goose agent-shell-google agent-shell-github<br>agent-shell-droid agent-= shell-experimental agent-shell-dnd<br>agent-shell-prompt-queue agent-shell-= prompt agent-shell-diff<br>agent-shell-devcontainer agent-shell-cursor agen= t-shell-config<br>agent-shell-completion agent-shell-project agent-shell-cl= ine<br>agent-shell-codebuddy agent-shell-chat-mode agent-shell-auggie<br>ag= ent-shell-anthropic agent-shell-antigravity agent-shell-markdown<br>agent-s= hell-faces agent-shell-artist artist picture reporter<br>agent-shell-work-b= uffer acp acp-traffic shell-maker pcsv remoto<br>ghub-graphql treepy gsexp = ghub let-alist gnutls emacs-everywhere<br>spookfox-tabs spookfox ox-pandoc = ox-org ox-odt rng-loc rng-uri rng-parse<br>rng-match rng-dt rng-util rng-pt= trn nxml-parse nxml-ns nxml-enc xmltok<br>nxml-util ox-latex ox-icalendar o= x-html table ox-ascii ox-publish ox<br>org-attach org-projectile org-projec= t-capture<br>org-project-capture-backend org-category-capture org-capture o= rg-agenda<br>org-element org-persist org-id avl-tree org-refile ob-sql ob-d= ot<br>ob-plantuml ob-gnuplot ob-js ob-python ob-awk ob-shell smartparens-or= g<br>completion-preview org ob ob-tangle ob-ref ob-lob ob-table ob-exp<br>o= rg-macro org-src ob-comint org-element-ast org-pcomplete org-list<br>org-fo= otnote org-faces org-entities ob-emacs-lisp ob-core ob-eval<br>org-cycle ol= org-fold cal-menu calendar cal-loaddefs breadcrumb<br>flycheck-eglot eglot= -java eglot tree-widget external-completion jsonrpc<br>diff ert debug backt= race just-mode jupyter jupyter-server<br>jupyter-server-kernel jupyter-rest= -api url-http url-auth mail-parse<br>rfc2231 rfc2047 rfc2045 ietf-drums url= -gw nsm jupyter-repl<br>jupyter-widget-client websocket bindat jupyter-clie= nt jupyter-kernel<br>jupyter-kernelspec jupyter-env jupyter-monads jupyter-= messages hmac-def<br>jupyter-mime jupyter-base restclient svelte-mode<br>di= splay-fill-column-indicator display-line-numbers<br>highlight-indent-guides= outli ws-butler symbol-overlay css-mode eww<br>vtable url-queue mm-url gnu= s nnheader gnus-util range mm-util mail-prsvr<br>typescript-mode ejc-sql ej= c-completion-common ejc-doc ejc-interaction<br>clomacs simple-httpd smartpa= rens-clojure cider cider-doctor cider-debug<br>cider-browse-ns cider-mode c= ider-xref-backend cider-xref-source<br>cider-find cider-completion cider-en= lighten cider-profile<br>cider-inspector cider-ns-state cider-eval cider-co= nnection<br>cider-repl-history cider-history cider-repl cider-test cider-re= solve<br>cider-compilation cider-stacktrace cider-overlays cider-doc<br>cid= er-browse-spec cider-tree-view cider-clojuredocs cider-popup<br>cider-jack-= in cider-inspiration cider-endpoint tramp-sh cider-eldoc<br>cider-docstring= shr pixel-fill kinsoku url-file puny cider-cljs<br>cider-client cider-comp= letion-context cider-session cider-common<br>cider-util clojure-mode lisp-m= nt align sesman-browser nrepl-client<br>nrepl-bencode nrepl-dict queue spin= ner parseedn parseclj-parser<br>parseclj-lex parseclj-alist sesman net-util= s ejc-eldoc ejc-format<br>ejc-result-buffer ejc-result-mode cua-base ejc-li= b org-table<br>org-fold-core org-keys oc org-compat org-version org-macs sq= l view<br>php-mode php-style php-indent php-face php php-project php-keywor= ds<br>php-core flymake eldev eldev-util smartparens-go go-mode find-file ff= ap<br>js2-mode etags smartparens-javascript js smartparens-rust rust-utils<= br>rust-prog-mode rust-mode rust-playpen rust-cargo rust-common<br>rust-rus= tfmt rust-compile smartparens-lua lua-mode snakemake-mode<br>smartparens-py= thon python gnuplot info-look info scad-dbus dbus<br>scad-mode treesit-auto= quarto-mode mode-local poly-markdown<br>smartparens-markdown markdown-mode= polymode derived poly-lock<br>polymode-base polymode-weave polymode-export= polymode-compat<br>polymode-methods polymode-core polymode-classes eieio-c= ustom eieio-base<br>plantuml-mode deflate graphviz-dot-mode graphviz-dot-fl= ycheck<br>multi-web-mode dts-mode dockerfile-mode sh-script smie executable= <br>transient-posframe transient llama devcontainer tramp-container<br>fanc= y-compilation kitty-graphics ghostel ghostel-shell<br>ghostel-module-instal= l ghostel-links ghostel-line-mode ghostel-kitty<br>ghostel-faces projectile= noutline outline fileloop generator ibuffer-vc<br>ibuf-ext ibuffer ibuffer= -loaddefs apheleia apheleia-rcs apheleia-dp<br>apheleia-formatters apheleia= -utils apheleia-log<br>apheleia-formatter-context yasnippet-capf cape kind-= icon svg-lib svg xml<br>corfu-popupinfo corfu-prescient corfu py-snippets m= ultiple-cursors<br>mc-separate-operations rectangular-region-mode mc-mark-p= op mc-edit-lines<br>mc-hide-unmatched-lines-mode mc-mark-more smartparens-h= tml sgml-mode<br>facemenu dom mc-cycle-cursors multiple-cursors-core sudo-e= dit<br>tramp-cache time-stamp tramp trampver tramp-integration files-x<br>t= ramp-message tramp-compat shell pcomplete parse-time iso8601 time-date<br>t= ramp-loaddefs wgrep-ag wgrep grep rectangle-utils rect<br>smartparens-confi= g smartparens-text smartparens-c smartparens thingatpt<br>dtrt-indent edito= rconfig editorconfig-core editorconfig-core-handle<br>editorconfig-fnmatch = term-keys vundo dirvish diredfl dired-hide-dotfiles<br>mise inheritenv dumb= -jump consult-yasnippet yasnippet consult-flycheck<br>flycheck find-func af= fe server consult treemacs-bookmarks treemacs-tags<br>imenu bookmark nerd-i= cons-completion marginalia vertico-prescient<br>prescient char-fold vertico= -posframe vertico-multiform vertico-directory<br>vertico-reverse vertico co= unsel request mailheader mail-utils swiper ivy<br>ivy-faces colir disp-tabl= e posframe point-stack move-text hydra lv<br>keycast format-spec cond-let c= ompat treemacs-nerd-icons treemacs<br>treemacs-header-line treemacs-compati= bility treemacs-mode<br>treemacs-interface treemacs-persistence eldoc treem= acs-filewatch-mode<br>treemacs-follow-mode treemacs-rendering treemacs-anno= tations<br>treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals= <br>treemacs-fringe-indicator treemacs-faces treemacs-icons treemacs-scope<= br>treemacs-themes treemacs-core-utils pfuture inline hl-line ht<br>treemac= s-logging treemacs-customization treemacs-macros nerd-icons-xref<br>xref pr= oject ligature diff-hl-margin diff-hl-dired diff-hl log-view<br>log-edit ad= d-log pcvs-util vc-dir ewoc diff-mode track-changes<br>rainbow-mode xterm-c= olor spaceline-config spaceline-segments nerd-icons<br>nerd-icons-faces ner= d-icons-data nerd-icons-data-mdicon<br>nerd-icons-data-flicon nerd-icons-da= ta-codicon nerd-icons-data-devicon<br>nerd-icons-data-sucicon nerd-icons-da= ta-wicon nerd-icons-data-faicon<br>nerd-icons-data-powerline nerd-icons-dat= a-octicon<br>nerd-icons-data-pomicon nerd-icons-data-ipsicon s spaceline po= werline<br>powerline-separators powerline-themes dash ef-elea-dark-theme ef= -themes<br>modus-themes auto-minor-mode diminish try package browse-url<br>= url-handlers package-activate gcmh ultra-scroll pixel-scroll<br>python-pyte= st-autoloads python-x-autoloads folding-autoloads<br>sphinx-doc-autoloads p= y-isort-autoloads python-black-autoloads<br>reformatter-autoloads blacken-a= utoloads conda-autoloads<br>pythonic-autoloads pet-autoloads nextflow-mode-= autoloads<br>groovy-mode-autoloads kotlin-mode-autoloads dna-mode-autoloads= <br>consult-notmuch-autoloads notmuch-autoloads org-msg-autoloads<br>htmliz= e-autoloads ement-autoloads taxy-magit-section-autoloads<br>taxy-autoloads = persist-autoloads slack-autoloads alert-autoloads<br>log4e-autoloads gntp-a= utoloads ts-autoloads emojify-autoloads<br>circe-autoloads eradio-autoloads= time-zones-autoloads<br>claude-code-autoloads monet-autoloads relysium-aut= oloads gptel-autoloads<br>agent-shell-attention-autoloads agent-shell-sideb= ar-autoloads<br>agent-shell-hq-autoloads persp-mode-autoloads agent-shell-a= utoloads<br>acp-autoloads shell-maker-autoloads pcsv-autoloads remoto-autol= oads<br>atomic-chrome-autoloads emacs-everywhere-autoloads spookfox-autoloa= ds<br>counsel-keepassxc-autoloads lsp-ui-autoloads lsp-mode-autoloads<br>f-= autoloads breadcrumb-autoloads sideline-flycheck-autoloads<br>sideline-auto= loads flycheck-eglot-autoloads eglot-java-autoloads<br>just-mode-autoloads = code-cells-autoloads jupyter-autoloads<br>websocket-autoloads zmq-autoloads= restclient-autoloads<br>svelte-mode-autoloads typescript-mode-autoloads ej= c-sql-autoloads<br>clomacs-autoloads cider-autoloads spinner-autoloads<br>s= imple-httpd-autoloads sesman-autoloads queue-autoloads<br>parseedn-autoload= s parseclj-autoloads clojure-mode-autoloads<br>php-mode-autoloads eldev-aut= oloads eldoc-autoloads go-mode-autoloads<br>js2-mode-autoloads rust-mode-au= toloads lua-mode-autoloads<br>snakemake-mode-autoloads gnuplot-autoloads sc= ad-dbus-autoloads<br>scad-mode-autoloads treesit-auto-autoloads quarto-mode= -autoloads<br>poly-markdown-autoloads polymode-autoloads markdown-ts-appear= -autoloads<br>plantuml-mode-autoloads deflate-autoloads graphviz-dot-mode-a= utoloads<br>ox-pandoc-autoloads org-projectile-autoloads<br>org-project-cap= ture-autoloads org-category-capture-autoloads<br>org-pretty-table-autoloads= org-bullets-autoloads<br>org-hide-drawers-autoloads org-appear-autoloads o= rg-download-autoloads<br>async-autoloads org-loaddefs multi-web-mode-autolo= ads<br>yaml-mode-autoloads terraform-mode-autoloads hcl-mode-autoloads<br>d= ts-mode-autoloads csv-mode-autoloads dockerfile-mode-autoloads<br>git-timem= achine-autoloads git-messenger-autoloads popup-autoloads<br>majutsu-autoloa= ds plz-autoloads forge-autoloads yaml-autoloads<br>markdown-mode-autoloads = ghub-autoloads treepy-autoloads closql-autoloads<br>emacsql-autoloads magit= -blame-color-by-age-autoloads<br>treemacs-magit-autoloads magit-autoloads w= ith-editor-autoloads<br>magit-section-autoloads transient-posframe-autoload= s transient-autoloads<br>llama-autoloads conventional-commit-autoloads devc= ontainer-autoloads<br>fancy-compilation-autoloads kitty-graphics-autoloads<= br>xterm-color-autoloads eat-autoloads ghostel-autoloads<br>projectile-auto= loads apheleia-autoloads jinx-autoloads<br>consult-flycheck-autoloads flych= eck-autoloads yasnippet-capf-autoloads<br>cape-autoloads kind-icon-autoload= s svg-lib-autoloads<br>corfu-terminal-autoloads popon-autoloads corfu-presc= ient-autoloads<br>corfu-autoloads py-snippets-autoloads consult-yasnippet-a= utoloads<br>yasnippet-autoloads multiple-cursors-autoloads iedit-autoloads<= br>sudo-edit-autoloads visual-regexp-autoloads wgrep-ag-autoloads<br>wgrep-= autoloads rectangle-utils-autoloads smartparens-autoloads<br>ws-butler-auto= loads dtrt-indent-autoloads editorconfig-autoloads<br>expand-region-autoloa= ds clipetty-autoloads term-keys-autoloads<br>vundo-autoloads dirvish-autolo= ads dired-dragon-autoloads<br>dired-git-info-autoloads diredfl-autoloads di= red-subtree-autoloads<br>dired-hacks-utils-autoloads dired-du-autoloads<br>= dired-hide-dotfiles-autoloads mise-autoloads inheritenv-autoloads<br>ibuffe= r-vc-autoloads dumb-jump-autoloads embark-consult-autoloads<br>embark-autol= oads affe-autoloads consult-autoloads marginalia-autoloads<br>vertico-presc= ient-autoloads prescient-autoloads<br>vertico-posframe-autoloads vertico-au= toloads counsel-autoloads<br>request-autoloads swiper-autoloads ivy-autoloa= ds<br>treemacs-nerd-icons-autoloads treemacs-autoloads ace-window-autoloads= <br>avy-autoloads cfrs-autoloads posframe-autoloads point-stack-autoloads<b= r>crux-autoloads move-text-autoloads hydra-autoloads lv-autoloads<br>outli-= autoloads keycast-autoloads cond-let-autoloads ht-autoloads<br>pfuture-auto= loads nerd-icons-ibuffer-autoloads nerd-icons-xref-autoloads<br>nerd-icons-= dired-autoloads nerd-icons-completion-autoloads<br>compat-autoloads nerd-ic= ons-autoloads ligature-autoloads<br>symbol-overlay-autoloads highlight-inde= nt-guides-autoloads<br>diff-hl-autoloads rainbow-mode-autoloads spaceline-a= utoloads s-autoloads<br>dash-autoloads powerline-autoloads ef-themes-autolo= ads<br>modus-themes-autoloads auto-minor-mode-autoloads diminish-autoloads<= br>try-autoloads mixed-pitch-autoloads transpose-frame-autoloads<br>gcmh-au= toloads ultra-scroll-autoloads generic loadhist csharp-mode<br>c-ts-common = cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds<br>cc-styles cc-align c= c-engine cc-vars cc-defs compile<br>text-property-search comint ansi-osc an= si-color ring conf-mode treesit<br>cus-edit pp cus-start cus-load wid-edit = vc vc-dispatcher dabbrev<br>image-dired image-dired-tags image-dired-extern= al image-dired-util xdg<br>image-mode exif dired dired-loaddefs midnight au= torevert filenotify<br>savehist ediff ediff-merg ediff-mult ediff-wind edif= f-diff ediff-help<br>ediff-init ediff-util whitespace elpaca-menu-elpa advi= ce pulse<br>face-remap color elpaca-menu-melpa url url-proxy url-privacy ur= l-expand<br>url-methods url-history url-cookie generate-lisp-file url-domsu= f<br>url-util url-parse auth-source eieio eieio-core password-cache json ma= p<br>url-vars mailcap elpaca-menu-org xt-mouse repeat comp comp-cstr subr-x= <br>mule-util comp-run comp-common rx edmacro kmacro pcase cl-extra<br>help= -mode cl-macs elpaca-use-package use-package use-package-ensure<br>use-pack= age-delight use-package-diminish use-package-bind-key bind-key<br>easy-mmod= e use-package-core elpaca-use-package-autoloads cl-seq byte-opt<br>gv bytec= omp byte-compile elpaca-git elpaca warnings icons elpaca-process<br>cl-load= defs cl-lib elpaca-autoloads rmc iso-transl tooltip cconv paren<br>electric= uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel<br>term/x-w= in x-win term/common-win x-dnd touch-screen tool-bar dnd fontset<br>image r= egexp-opt fringe tabulated-list replace newcomment text-mode<br>lisp-mode p= rog-mode register page tab-bar menu-bar rfn-eshadow isearch<br>easymenu tim= er select scroll-bar mouse jit-lock font-lock syntax<br>font-core term/tty-= colors frame minibuffer nadvice seq simple cl-generic<br>indonesian philipp= ine cham georgian utf-8-lang misc-lang vietnamese<br>tibetan thai tai-viet = lao korean japanese eucjp-ms cp51932 hebrew greek<br>romanian slovak czech = european ethiopic indian cyrillic chinese<br>composite emoji-zwj charscript= charprop case-table epa-hook<br>jka-cmpr-hook help abbrev obarray oclosure= cl-preloaded button loaddefs<br>theme-loaddefs faces cus-face macroexp fil= es window text-properties<br>overlay sha1 md5 base64 format env code-pages = mule custom widget keymap<br>hashtable-print-readable backquote threads dbu= sbind inotify lcms2<br>dynamic-setting x-toolkit xinput2 x multi-tty move-t= oolbar<br>make-network-process tty-child-frames native-compile emacs)<br><b= r>Memory information:<br>((conses 16 1776894 1225101) (symbols 48 95430 233= ) (strings 32 497290 110775) (string-bytes 1 14508590)<br>=C2=A0(vectors 16= 142741) (vector-slots 8 2529775 416765) (floats 8 2185 6630) (intervals 56= 15711 23130)<br>=C2=A0(buffers 1064 20))<br><br></div> --00000000000051c1e8065bd0253b--
Len Trigg <lenbok@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#81894; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.