GNU bug report logs - #44933
27.1; Ephemeral frame selection shrinks minibuffer

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Sean Devlin <spd@HIDDEN>; dated Sat, 28 Nov 2020 21:22:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 14 Dec 2020 15:47:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Dec 14 10:47:29 2020
Received: from localhost ([127.0.0.1]:53871 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1koq4O-0005XB-NC
	for submit <at> debbugs.gnu.org; Mon, 14 Dec 2020 10:47:29 -0500
Received: from mout.gmx.net ([212.227.17.21]:56157)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <rudalics@HIDDEN>) id 1koq4C-0005Ir-2e
 for 44933 <at> debbugs.gnu.org; Mon, 14 Dec 2020 10:47:23 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1607960829;
 bh=rE/ncrQZ5ZMRJBsTEMIDIPZufgAaEQN53hFOywNN8n0=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=lV/n1sCNbtUEg4bnh8UzWWnFIUkHR/bm7rQfZMJz7kLcmAlbRNaxn+F2cttD5cLFH
 qhI/9w5rTTF6eIddJGNun+TgbNAuPpThCcnFZJZ/bD27DltcLF/V54ftKoO4f/e+31
 bhj5PiFi7Gia6zeRgmFbLbs7B76h8BFN165kZYM0=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [192.168.1.100] ([212.95.5.68]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mplbx-1kKm9o14yj-00qBRi; Mon, 14
 Dec 2020 16:47:09 +0100
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
To: Sean Devlin <spd@HIDDEN>
References: <9d5c4247-2d45-8e2d-33a3-9d69bfa9eb56@HIDDEN>
 <C27524EF-2355-461E-BD45-A4188F5366B9@HIDDEN>
From: martin rudalics <rudalics@HIDDEN>
Message-ID: <f134366e-ee32-780c-97f6-2c999db83f6f@HIDDEN>
Date: Mon, 14 Dec 2020 16:47:06 +0100
MIME-Version: 1.0
In-Reply-To: <C27524EF-2355-461E-BD45-A4188F5366B9@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:tZi8v6g3frsH49rdBhZUxVOjdDsvPyXA+kUGJNzWe0mU+jJLF2k
 QVBdYRqgAeCLwyfNgM3WSulK6kxmTIqAsuIUEdl4YMD7x8PBIxe0bQetVgWe1i6T0tJ1GSv
 kFcOdV+k7klz24gVROJSC5koLeVmkr1YsOkTSXF2B4oe4R7ZCGD9VaUvqjU483+Z0gfDXx+
 pWIVwrU/dJNzcmAt4UdXA==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:Cgtt87g9p8g=:eXHe2z+l2RxiHZO1SbLAgY
 /FMravdp72mRqKCDIcXxhUjSGrAcrKl+PHAnTGbdvIjTos57aOgZoQdZtyteY8qXRTcAB7rz/
 a1XH7oKtpBA8COB7tA5Y6SAUsnwkTNf71X96VncnMeR2J7QYc9AcOe8brhOFByrKXo/mXvuws
 Gwn7/v0UoTeSjHxnlZNjleYfSCWLum1/6mFhjJRBIz2ggjR/os4Q+N1u0bOc4pHmHI20YA/xj
 7ioLhj5zg2OltyGKSeeYHDByQgRwy7KRAYO5OUCwKlGX+vBA0zLpAmrDBZsnlwuHn9hhWAI8K
 BD6oO5bXqLVTFlliojjR4adEv1LipcHFn3UWRRJtdU2MDgQEeTzoHTSH40fID+AG4w4TyB0nK
 Ymjh8mGzuI6Vq6v1BFUyQof1IcwyxBumIKhK73ShreOq5HQ0fQX5XxbYxjhj2cAiWk792tkZe
 t4JoFc/y0Mk4pIYZ3EMg6GdK6J45ne+CwPjBx+0/74aPdUSaEMAGENZwmzSv9tgkcZQe6QGqd
 0mBtcWpT2aRbuzFODHTb+QFPFxTZrw0F/V5KyoiO7xqjjyg478qnKNTd3mYnbkigXKsGDh8Ev
 TF+a/E9aqeiJgjQb/bFFxbnPs+iBRFkkEn5mFFaIjZ+FqQpaN84nR46rMEusWRlNJs5MmAukJ
 7isPFoDRKzMQBREcNMkWd+5EqBcEir4MO2Z/m2Jc4dd7o5BDlTStYX9PHSOflqAR11srGHJ9k
 Mubjkdt7p3pdDdxtdi1oYnpNiazSNXB56OaaHapnoT/oyYnsTgJBslzQ6/UwPOeiImbM8wbOW
 639mC7zSr9sh/ESgdQ2fzjOiMwjMb8LaeaAjFuTfvYYcyxQcSmkFd0q7xOZRxeTYWh+QDtXr+
 cZ6xyy+/a1kvnDb+j7iQ==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: -1.7 (-)

 > Hmm, it seems to show up on the web site:
 > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44933#35. Maybe it is
 > getting filtered out somewhere due to size or file extension or
 > something?

The attachment shows up in the source text but Thunderbird refuses to
mention or show it here.  Emacs has also problems showing it, some lines
are over 4000 characters wide.  I have no idea what makes these
backtraces behave so unbridled.  Maybe setting `backtrace-line-length'
to something like 80 would help.

Now the basic problem is that I can see only one
'window--resize-root-window-vertically' call and I'd like to see at
least the one where that minibuffer window was enlarged before.  So
please try to either set `backtrace-line-length' or do not call
'backtrace' at all when logging and in
'window--resize-root-window-vertically' just before it says

;; Return the possibly adjusted DELTA.

add a line putting into the log the values of 'delta' and 'pixel-delta'
and in 'window--resize-mini-window' just before it says

       (unless (zerop delta)

add a line putting into the log the value of 'delta'.  Maybe then we can
tell more.

BTW from

   window--resize-root-window-vertically(#<window 3 on *redisplay-minibuffer-log*> 70 t)

I conclude that the minibuffer window that gets resized is on a frame
with only one other window - the one showing *redisplay-minibuffer-log*
- right?

Thanks, martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 13 Dec 2020 16:10:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 13 11:10:44 2020
Received: from localhost ([127.0.0.1]:49951 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1koTxL-00089i-NA
	for submit <at> debbugs.gnu.org; Sun, 13 Dec 2020 11:10:43 -0500
Received: from mail-qt1-f169.google.com ([209.85.160.169]:37755)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <spd@HIDDEN>) id 1koTxK-00089U-14
 for 44933 <at> debbugs.gnu.org; Sun, 13 Dec 2020 11:10:42 -0500
Received: by mail-qt1-f169.google.com with SMTP id z9so10236054qtn.4
 for <44933 <at> debbugs.gnu.org>; Sun, 13 Dec 2020 08:10:42 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=toadstyle-org.20150623.gappssmtp.com; s=20150623;
 h=content-transfer-encoding:from:mime-version:subject:date:message-id
 :references:cc:in-reply-to:to;
 bh=3p+VCTIY/zf4uo8DzTeR+4HhFN6CLTQa+J+akvZK8E0=;
 b=qtbhA/0WnySdRNF33YMW419VLjO99aWM7Ii7m8eUunP2y0gIPF4LD/sjd8+KvwtJ4B
 2R0bFgAO+tcHIf5HMTTgKxcYD8NqOeZrsAVUf9PGTcU8VaytckF1qNRbhMnrUBZCvjLh
 CVfs1Njq9FuT+dQAi11MuhMYSR080DRREMMK5655FTPFX1L3y5TgG/++F+dgrD3kIEpJ
 ffaA0ogyIG7HgWlSa8fU9yXZ7EVfPglpEuwGlM+tLxQMU4TZknZLsAej9t1RCcjWvO4a
 BQ+AEiQBhWCJvhUkFymneKvtSriF29yUP3UjyOoIV+HRmsaXo+fo5l69QJdMIKBMD5Bm
 1vWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:content-transfer-encoding:from:mime-version
 :subject:date:message-id:references:cc:in-reply-to:to;
 bh=3p+VCTIY/zf4uo8DzTeR+4HhFN6CLTQa+J+akvZK8E0=;
 b=WKbxjTiFeUVzFosdwyEUqJ7fBbrHvmFVQmQeXubj7KtVAEyXiTjb0pcpyG5+kmLRjm
 BujBc571qXrSdPmZKfYOxPlyVoqEd9UamrfsQrYfgUWpVjENijnXQ0Dw+rj8EamnwX7U
 kHX42Ymn8VDCXFg/p2vPuq0FOSgxOCa4rscb2QiaLd+4k0GYU5EhyOIhsjGBBjoM/cuW
 ahyyzM1drvN7/gpldpY+ksM7Ot0ST3ZpR8imGqmrxIQDXDNHLo/qvK76l7nv3cYrZAFQ
 02/fiUwTt/lFEmTF7hBcW8BYMOsK8TWS6+ydobRocMpgotUqVWMVwWca+p1WSdgQlt+D
 5BEQ==
X-Gm-Message-State: AOAM5312U7u3OyEla2llOlGI1mcvjsEu+Yn0hhT3PxCGYf2dwFXrcIy+
 UelOZwHJrowvsC+aNqIRMvzMCUWPzlULassv
X-Google-Smtp-Source: ABdhPJwsuSDFSrcyEndpNJ/xGVFnJXMERwQfUF0jogem9FjEX0fvzE8EitIDr1LdsDWtxFsg9uPs/A==
X-Received: by 2002:a05:622a:24b:: with SMTP id
 c11mr25596142qtx.166.1607875836241; 
 Sun, 13 Dec 2020 08:10:36 -0800 (PST)
Received: from ?IPv6:2604:2000:14c6:84b0:f012:43de:1974:27a?
 ([2604:2000:14c6:84b0:f012:43de:1974:27a])
 by smtp.gmail.com with ESMTPSA id o10sm12558653qki.1.2020.12.13.08.10.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 13 Dec 2020 08:10:35 -0800 (PST)
Content-Type: multipart/alternative;
 boundary=Apple-Mail-74F8DA5D-D9C5-4D6D-8C91-CFE950B11CBB
Content-Transfer-Encoding: 7bit
From: Sean Devlin <spd@HIDDEN>
Mime-Version: 1.0 (1.0)
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
Date: Sun, 13 Dec 2020 11:10:23 -0500
Message-Id: <C27524EF-2355-461E-BD45-A4188F5366B9@HIDDEN>
References: <9d5c4247-2d45-8e2d-33a3-9d69bfa9eb56@HIDDEN>
In-Reply-To: <9d5c4247-2d45-8e2d-33a3-9d69bfa9eb56@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
X-Mailer: iPhone Mail (18E110)
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: -1.0 (-)


--Apple-Mail-74F8DA5D-D9C5-4D6D-8C91-CFE950B11CBB
Content-Type: text/plain;
	charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hmm, it seems to show up on the web site: https://debbugs.gnu.org/cgi/bugrep=
ort.cgi?bug=3D44933#35. Maybe it is getting filtered out somewhere due to si=
ze or file extension or something?

> On Dec 13, 2020, at 2:26 AM, martin rudalics <rudalics@HIDDEN> wrote:
>=20
> =EF=BB=BF> I instrumented the code in a couple key places and then exercis=
ed the
> > bug. Attached is the log showing what happened.
>=20
> I'm afraid you forgot to attach the log.
>=20
> martin

--Apple-Mail-74F8DA5D-D9C5-4D6D-8C91-CFE950B11CBB
Content-Type: text/html;
	charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><head><meta http-equiv=3D"content-type" content=3D"text/html; charset=3D=
utf-8"></head><body dir=3D"auto"><div dir=3D"ltr">Hmm, it seems to show up o=
n the web site:&nbsp;<a href=3D"https://debbugs.gnu.org/cgi/bugreport.cgi?bu=
g=3D44933#35">https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D44933#35</a>. M=
aybe it is getting filtered out somewhere due to size or file extension or s=
omething?</div><div dir=3D"ltr"><br><blockquote type=3D"cite">On Dec 13, 202=
0, at 2:26 AM, martin rudalics &lt;rudalics@HIDDEN&gt; wrote:<br><br></block=
quote></div><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB=BF<span>&gt; I=
 instrumented the code in a couple key places and then exercised the</span><=
br><span>&gt; bug. Attached is the log showing what happened.</span><br><spa=
n></span><br><span>I'm afraid you forgot to attach the log.</span><br><span>=
</span><br><span>martin</span><br></div></blockquote></body></html>=

--Apple-Mail-74F8DA5D-D9C5-4D6D-8C91-CFE950B11CBB--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 13 Dec 2020 07:26:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Dec 13 02:26:38 2020
Received: from localhost ([127.0.0.1]:47350 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1koLm9-0007lz-TA
	for submit <at> debbugs.gnu.org; Sun, 13 Dec 2020 02:26:38 -0500
Received: from mout.gmx.net ([212.227.17.20]:58783)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <rudalics@HIDDEN>) id 1koLm8-0007lf-8r
 for 44933 <at> debbugs.gnu.org; Sun, 13 Dec 2020 02:26:36 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1607844389;
 bh=kXek4AKNnb7fDoHfDjwvhDxd7HVQJx0ev6dWiVEj6bM=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=ENW9HWhri0RYcSgahMUzC1NzkJ877eEcHGYcDLHtSbCNXqA3VY/Ijum6IzaYynm/h
 EozEOIGvo19rFZoKKUYTJfe4NWeemaHVyAsL3Y8WuAXaXbyW6qdjkbt+ES2ST5zd5u
 MYymT0U/ChVUVTTdqPjtkEqzeJt5Z8nWXM6WN3QM=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [192.168.1.100] ([212.95.5.101]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N1wpt-1k87HI1XtR-012EHH; Sun, 13
 Dec 2020 08:26:29 +0100
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
To: Sean Devlin <spd@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
 <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
 <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
 <000004F6-7D67-4D1D-84EA-517E254FBBDE@HIDDEN>
 <782db472-6b44-c62c-e175-44e77589b85f@HIDDEN>
 <E57AA3DA-5245-4E76-830C-59B002C46033@HIDDEN>
 <2802d2d9-2f09-ca7a-1a79-abf2eb0fa376@HIDDEN>
 <2c47fc05-37f4-8b3c-7aa3-7cb64b31e3c1@HIDDEN>
 <27E5B1BA-BD49-493D-8E12-CE42B1AD3E2F@HIDDEN>
 <3C983E15-33B0-47B1-BDF1-10FD049AEF64@HIDDEN>
From: martin rudalics <rudalics@HIDDEN>
Message-ID: <9d5c4247-2d45-8e2d-33a3-9d69bfa9eb56@HIDDEN>
Date: Sun, 13 Dec 2020 08:26:28 +0100
MIME-Version: 1.0
In-Reply-To: <3C983E15-33B0-47B1-BDF1-10FD049AEF64@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:ks2NWF4nQLw3KhzuVXGtURVwegAVfRDN0Muvx13vlu/kjRZnr87
 e5dPtuLDcOLTqqsJn/710SXPOIV9XCAm0gGsDjXYLPyiF4NJ//7cI9nDS5P9PabWXfnCfMF
 Ji3S6ip6AK6I9vEODc/HNOWXsDj10Vs9kofsGOwz4Fch9AXUCX6+I3jaOQrEBSS0TRgXArM
 kgFsVYScfyS8k9pXB4hHg==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:NYWjKdEIvnk=:PdcsdwO9LnmKMZSXfQR9YG
 sRDfYq4Vll7Xrn6V0HKeRaUgdjK710+2FA+ifGcrnA+mwzCwGtlg9RYnN7HHJulFAAG0yFEdo
 c7ESGjPoEdJg5eOr4U14tdH1rKolo89T4w37e/NdWgAlFtLMrJ0Md6N4n7nJVM/DkZkC7/YL5
 jzeVEMHbcVb0eu6sZiz/0ZHAVSuNm8hKhcVjP1G9poLq5YFn+nXzVJ9RE/iGHaCE+/0at4Z/4
 OTDfJZoNOS/aGZ005aHvs9RAGJf1mlxgyxuy6DbsUt2Qk2FDh8Sur85wmhBKrAWcPG3Dcl0uu
 2LRwsSH6mDN9PTYGkW8Rn3je3mnt9QAIzzUbFayXMaHciHg42cNXswpiznqBbaCaSiMAFSTLX
 oSfoLcBEGlkwEtG0HT+P7EZg+Cr8qCyvR6iorYTf9ZCM69RXyrvA8YltxAn1v9kC1yOiAcfcE
 p1ou36DCASFXZTLm+Ld0zZst0NXn+DFBG3ou10c+knOyFhlAaJsplwOsfXOdfG0B1d0R5bJAZ
 aExvuY9Hrh4db9LCxZS6vTsWbkwPVPubVUj+BGJU4SCmreCIMmz2tW1xGse98dWRiFnyzKaUn
 OIMh8zvzJSmHGWIEdTmqvPwSS5A+LtNDn8WY+MgyFaBI1cycUF/Ppel6q8fh+9smy+kQhkP2Z
 wiTF44niu0Usu217sSbEfJygAWPE5I4IjhlCimRFgWWjIy3VMgIDgWwHJV6TER1J1u/eCLSVV
 SlWYYLbDHFQxYWm2+yr2AMIyPZuQX057m4fYPyGyyjnaJ8VVQ8fTUV8wKyZ2JHjmP69ODSyes
 V/OAnkQtJrZ03h0JljjAFLK1PJ6YlFPWbD5Tn3JxmCF7y+q8ebCkrmNz/q9tNkLFWUfE3sazf
 20URyvDIrR+y4SDOftIA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: -1.7 (-)

 > I instrumented the code in a couple key places and then exercised the
 > bug. Attached is the log showing what happened.

I'm afraid you forgot to attach the log.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 12 Dec 2020 20:23:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 12 15:23:26 2020
Received: from localhost ([127.0.0.1]:46791 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1koBQM-0001YM-T5
	for submit <at> debbugs.gnu.org; Sat, 12 Dec 2020 15:23:26 -0500
Received: from mail-qt1-f174.google.com ([209.85.160.174]:39381)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <spd@HIDDEN>) id 1koBQL-0001Y8-SJ
 for 44933 <at> debbugs.gnu.org; Sat, 12 Dec 2020 15:23:26 -0500
Received: by mail-qt1-f174.google.com with SMTP id a6so9158664qtw.6
 for <44933 <at> debbugs.gnu.org>; Sat, 12 Dec 2020 12:23:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=toadstyle-org.20150623.gappssmtp.com; s=20150623;
 h=from:message-id:mime-version:subject:date:in-reply-to:cc:to
 :references; bh=XpncBJkUUobHUP5JzpZYfCNpoZ2t5KjndtlvBFO6lZA=;
 b=kp2DjcTOdVw1CEh1D9bxGW4YXdSNOaPQoxV9VMT1WcYyXNm/giDKxxSLt4dKJe5wpH
 gza53csK5Wh3vtRRSoasWPelX2wXU+f864huZXwO5qTxPy8GCLy4CS1SdfMF/Su/c13N
 dzpZYEk+hYIc4j7+R1yctR0Qpt60DJwPgxENIjimBduneHW47X+57Sz9IrwPDVpyANGw
 9fKqaaKxyayzf26YV/b8p9lL7Z1wJwQFne+Jpm784eJzQEspwhd1Qh066tL5/Ewpjizr
 j9ejqHFj8qdL3+gT8zUd64rL+eycfW7fDiv/b5GoazW3p7Fb4uLVCvFeg0BzKBohhrDc
 63XQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:message-id:mime-version:subject:date
 :in-reply-to:cc:to:references;
 bh=XpncBJkUUobHUP5JzpZYfCNpoZ2t5KjndtlvBFO6lZA=;
 b=qfRyqrj1mz79QbRx1U6vS4erF/8yfNoB/gVlFj3Yc1N/FDElOxo7fwGtE2macm0pYb
 vnhfHsb3isH/nKsJ8MkYhBysLyhBgaTwgq0uouCOY5aqb9YogxDsEgIycZjxAxJwFZYv
 Q4xWrQizwhkl9lA3diI1FgeY5N1u1UTsXjismFNTQtJlZFfVMhWQ3o5QrjDaYckCXi8f
 8nlQI9ap0Pr6nkkQjbBJnvH+24WrY3d4rhOyANlVdDL4joalj2vDOswk7HCWK/hPVgNc
 wDkXqUqE9FZvkgStydAW0Ap963B+EvSSUa9ZQqaVm59Cp3IJ4VEvJwEyDQojBx4s/tve
 lmLA==
X-Gm-Message-State: AOAM530ZNea715aVPp72KH85cl2apQ+7FyKyVj4D14QmWDZoaCNEAnN6
 0JmRZhhTsU9Sn8vy7NnJVlwOQw==
X-Google-Smtp-Source: ABdhPJxaWxHxN2jkTBpiC2ptigCBubHgodRu/I3ZjuaTMeaO6aAeTGa+oSM/2jwkU3Ugb/mHU+Zu1g==
X-Received: by 2002:ac8:5a01:: with SMTP id n1mr4067716qta.227.1607804600208; 
 Sat, 12 Dec 2020 12:23:20 -0800 (PST)
Received: from ?IPv6:2604:2000:14c6:84b0:4e4:3667:5204:cdce?
 ([2604:2000:14c6:84b0:4e4:3667:5204:cdce])
 by smtp.gmail.com with ESMTPSA id c14sm9798787qtc.90.2020.12.12.12.23.19
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 12 Dec 2020 12:23:19 -0800 (PST)
From: Sean Devlin <spd@HIDDEN>
Message-Id: <3C983E15-33B0-47B1-BDF1-10FD049AEF64@HIDDEN>
Content-Type: multipart/alternative;
 boundary="Apple-Mail=_DA755593-6DB7-496C-9F93-F9FB575B5D31"
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.40.0.2.31\))
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
Date: Sat, 12 Dec 2020 15:23:17 -0500
In-Reply-To: <27E5B1BA-BD49-493D-8E12-CE42B1AD3E2F@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
 <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
 <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
 <000004F6-7D67-4D1D-84EA-517E254FBBDE@HIDDEN>
 <782db472-6b44-c62c-e175-44e77589b85f@HIDDEN>
 <E57AA3DA-5245-4E76-830C-59B002C46033@HIDDEN>
 <2802d2d9-2f09-ca7a-1a79-abf2eb0fa376@HIDDEN>
 <2c47fc05-37f4-8b3c-7aa3-7cb64b31e3c1@HIDDEN>
 <27E5B1BA-BD49-493D-8E12-CE42B1AD3E2F@HIDDEN>
X-Mailer: Apple Mail (2.3654.40.0.2.31)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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>


--Apple-Mail=_DA755593-6DB7-496C-9F93-F9FB575B5D31
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Hi Martin,

Thanks for waiting on this update.

I instrumented the code in a couple key places and then exercised the =
bug. Attached is the log showing what happened.

Basically, I put two calls to my log function around the window =
selection in =E2=80=99term-emulate-terminal and one inside =
=E2=80=98window=E2=80=94resize-root-window-vertically. Next, I opened a =
term window running a script that prints some output every few seconds. =
I had one frame running the script under term, and I selected a second =
frame and invoked some completing read command. As before, the =
minibuffer window shrank when the script printed some output.

You can find the start of each entry by searching for the regexp =
=E2=80=9C^>>>>=E2=80=9D. I wasn=E2=80=99t sure what to include in each =
entry, but I printed the selected frame, the selected window, that =
window=E2=80=99s buffer, and a backtrace. I can easily add more =
information and run the experiment again, if there=E2=80=99s something =
else you=E2=80=99d like to see.

Thanks!



> On Dec 2, 2020, at 1:24 PM, Sean Devlin <spd@HIDDEN> wrote:
>=20
> Hi Martin,
>=20
> Thanks for all the helpful info!
>=20
>> On Dec 2, 2020, at 2:52 AM, martin rudalics <rudalics@HIDDEN> wrote:
>>=20
>>> I forgot to say that _all_ normal mini window resizing goes through
>>> 'window--resize-root-window-vertically' in window.el.  So it will
>>> probably suffice to instrument just that function (in an already =
running
>>> Emacs only, else you have to rebuild because window.el is preloaded) =
and
>>> don't have to tinker with C code at all.
>>=20
>> Imprecise again: The above covers only the automatic resizing =
triggered
>> by redisplay (which is what we are interested in).  Manual resizing =
the
>> minibuffer window is done in 'window--resize-mini-window' (also in
>> window.el) so if such manual resizing may happen in between you have =
to
>> instrument that as well.
>=20
> I see, I=E2=80=99ll take a look at these functions. Thanks!
>=20
>>=20
>> martin


--Apple-Mail=_DA755593-6DB7-496C-9F93-F9FB575B5D31
Content-Type: multipart/mixed;
	boundary="Apple-Mail=_1AF963F5-C33E-4E33-98B0-1E23A573EC35"


--Apple-Mail=_1AF963F5-C33E-4E33-98B0-1E23A573EC35
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><div =
class=3D"">Hi Martin,</div><div class=3D""><br class=3D""></div><div =
class=3D"">Thanks for waiting on this update.</div><div class=3D""><br =
class=3D""></div><div class=3D"">I instrumented the code in a couple key =
places and then exercised the bug. Attached is the log showing what =
happened.</div><div class=3D""><br class=3D""></div><div =
class=3D"">Basically, I put two calls to my log function around the =
window selection in =E2=80=99term-emulate-terminal and one inside =
=E2=80=98window=E2=80=94resize-root-window-vertically. Next, I opened a =
term window running a script that prints some output every few seconds. =
I had one frame running the script under term, and I selected a second =
frame and invoked some completing read command. As before, the =
minibuffer window shrank when the script printed some output.</div><div =
class=3D""><br class=3D""></div><div class=3D"">You can find the start =
of each entry by searching for the regexp =E2=80=9C^&gt;&gt;&gt;&gt;=E2=80=
=9D. I wasn=E2=80=99t sure what to include in each entry, but I printed =
the selected frame, the selected window, that window=E2=80=99s buffer, =
and a backtrace. I can easily add more information and run the =
experiment again, if there=E2=80=99s something else you=E2=80=99d like =
to see.</div><div class=3D""><br class=3D""></div><div =
class=3D"">Thanks!</div><div class=3D""><br =
class=3D""></div></body></html>=

--Apple-Mail=_1AF963F5-C33E-4E33-98B0-1E23A573EC35
Content-Disposition: attachment;
	filename=redisplay-minibuffer.log
Content-Type: application/octet-stream;
	x-unix-mode=0644;
	name="redisplay-minibuffer.log"
Content-Transfer-Encoding: quoted-printable

>>>>=20term-emulate-window=20before=20selection=0Aselected=20frame:=20=
#<frame=20=20*Minibuf-1*=200x7ffa290daa30>=0Aselected=20window:=20=
#<window=204=20on=20=20*Minibuf-1*>=0Aselected=20window=20buffer:=20=20=
*Minibuf-1*=0A=20=20backtrace()=0A=20=20(let=20((standard-output=20=
(get-buffer-create=20"*redisplay-minibuffer-log*")))=20(princ=20(format=20=
">>>>=20%s\n"=20msg))=20(princ=20(format=20"selected=20frame:=20%s\n"=20=
(selected-frame)))=20(princ=20(format=20"selected=20window:=20%s\n"=20=
(selected-window)))=20(princ=20(format=20"selected=20window=20buffer:=20=
%s\n"=20(window-buffer=20(selected-window))))=20(backtrace)=20(princ=20=
"\n\n\n"))=0A=20=20my/redisplay-minibuffer-log("term-emulate-window=20=
before=20selection")=0A=20=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20(point)=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20'all)=20(and=20(eq=20selected=20win)=20(or=20(eq=20=
scroll=20'this)=20(not=20save-point)))=20(and=20(eq=20scroll=20'others)=20=
(not=20(eq=20selected=20win))))=20(when=20term-scroll-snap-to-bottom=20=
(goto-char=20term-home-marker)=20(recenter=200))=20(goto-char=20=
(process-mark=20proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20=
win))=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20(point-max)=20win))))=20(save-excursion=20=
(goto-char=20(point-max))=20(recenter=20-1))))=0A=20=20(progn=20(let=20=
((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20(eq=20scroll=20'this)=20(not=20=
save-point)))=20(and=20(eq=20scroll=20'others)=20(not=20(eq=20selected=20=
win))))=20(when=20term-scroll-snap-to-bottom=20(goto-char=20=
term-home-marker)=20(recenter=200))=20(goto-char=20(process-mark=20=
proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20win))=20=
(recenter=20-1)))=20(when=20(and=20term-scroll-show-maximum-output=20(>=3D=
=20(point)=20(process-mark=20proc))=20(or=20term-scroll-snap-to-bottom=20=
(not=20(pos-visible-in-window-p=20(point-max)=20win))))=20=
(save-excursion=20(goto-char=20(point-max))=20(recenter=20-1)))))=0A=20=20=
(if=20(eq=20(window-buffer=20win)=20(process-buffer=20proc))=20(progn=20=
(let=20((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20(eq=20scroll=20...)=20(not=20save-point)))=20=
(and=20(eq=20scroll=20'others)=20(not=20(eq=20selected=20win))))=20(when=20=
term-scroll-snap-to-bottom=20(goto-char=20term-home-marker)=20(recenter=20=
0))=20(goto-char=20(process-mark=20proc))=20(if=20(not=20=
(pos-visible-in-window-p=20(point)=20win))=20(recenter=20-1)))=20(when=20=
(and=20term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20...=20win))))=20(save-excursion=20(goto-char=20=
(point-max))=20(recenter=20-1))))))=0A=20=20(when=20(eq=20(window-buffer=20=
win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20(point)=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20'all)=20(and=20(eq=20selected=20win)=20(or=20(eq=20=
scroll=20'this)=20(not=20save-point)))=20(and=20(eq=20scroll=20'others)=20=
(not=20(eq=20selected=20win))))=20(when=20term-scroll-snap-to-bottom=20=
(goto-char=20term-home-marker)=20(recenter=200))=20(goto-char=20=
(process-mark=20proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20=
win))=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20(point-max)=20win))))=20(save-excursion=20=
(goto-char=20(point-max))=20(recenter=20-1)))))=0A=20=20(progn=20(setq=20=
win=20(next-window=20win=20nil=20t))=20(when=20(eq=20(window-buffer=20=
win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20(point)=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20'all)=20(and=20(eq=20selected=20win)=20(or=20(eq=20=
scroll=20...)=20(not=20save-point)))=20(and=20(eq=20scroll=20'others)=20=
(not=20(eq=20selected=20win))))=20(when=20term-scroll-snap-to-bottom=20=
(goto-char=20term-home-marker)=20(recenter=200))=20(goto-char=20=
(process-mark=20proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20=
win))=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20...=20win))))=20(save-excursion=20(goto-char=20=
(point-max))=20(recenter=20-1)))))=20(not=20(eq=20win=20last-win)))=0A=20=
=20(while=20(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20=
(when=20(eq=20(window-buffer=20win)=20(process-buffer=20proc))=20(let=20=
((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20...=20...))=20(and=20(eq=20scroll=20...)=20=
(not=20...)))=20(when=20term-scroll-snap-to-bottom=20(goto-char=20=
term-home-marker)=20(recenter=200))=20(goto-char=20(process-mark=20=
proc))=20(if=20(not=20(pos-visible-in-window-p=20...=20win))=20(recenter=20=
-1)))=20(when=20(and=20term-scroll-show-maximum-output=20(>=3D=20(point)=20=
(process-mark=20proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
...)))=20(save-excursion=20(goto-char=20(point-max))=20(recenter=20=
-1)))))=20(not=20(eq=20win=20last-win))))=0A=20=20(progn=20(when=20=
(marker-buffer=20term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
(match-string=201=20str)))=20(ctl-params-end=20(and=20funny=20(match-end=20=
1)))=20(ctl-end=20(if=20funny=20(match-end=200)=20(setq=20funny=20...)=20=
(if=20funny=20...=20...)=20(1+=20str-length))))=20(when=20(>=20funny=20=
i)=20(when=20term-do-line-wrapping=20(term-down=201=20t)=20=
(term-move-to-column=200)=20(setq=20term-do-line-wrapping=20nil))=20=
(setq=20decoded-substring=20(decode-coding-string=20(substring=20str=20i=20=
funny)=20locale-coding-system=20t))=20(when=20(=3D=20funny=20str-length)=20=
(let=20(...=20...)=20(while=20...=20...)=20(when=20...=20...=20...=20...=20=
...)))=20(let=20((old-column=20...)=20(old-point=20...)=20columns)=20=
(unless=20term-suppress-hard-newline=20(while=20...=20...=20...=20...=20=
...=20...=20...=20...))=20(insert=20decoded-substring)=20(setq=20=
term-current-column=20(current-column)=20columns=20(-=20=
term-current-column=20old-column))=20(when=20(not=20...)=20(let=20...=20=
...=20...=20...))=20(when=20term-insert-mode=20(let=20...=20...=20...=20=
...))=20(put-text-property=20old-point=20(point)=20'font-lock-face=20=
term-current-face))=20(when=20(eq=20(term-current-column)=20term-width)=20=
(term-move-columns=20-1)=20(setq=20term-do-line-wrapping=20(point)))=20=
(setq=20term-current-column=20nil)=20(setq=20i=20funny))=20=
(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20str-length)=20(aref=20str=20=
i))=20(9=20(let=20(...)=20(term-move-to-column=20...)))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20(and=20term-kill-echo-list=20=
...)=20(term-down=201=20t)))=20(8=20(term-move-columns=20-1))=20(7=20=
(beep=20t))=20(26=20(funcall=20term-command-function=20=
(decode-coding-string=20...=20locale-coding-system=20t)))=20(27=20(pcase=20=
(aref=20str=20...)=20(91=20...)=20(68=20...=20...)=20(77=20...)=20(55=20=
...=20...)=20(56=20...)=20(99=20...)=20(65=20...)))=20((or=200=2014=2015=20=
'nil)=20nil))=20(unless=20(eq=20term-do-line-wrapping=20(point))=20(setq=20=
term-do-line-wrapping=20nil))=20(if=20(term-handling-pager)=20(progn=20=
(if=20(>=20...=200)=20(setq=20term-terminal-undecoded-bytes=20...)=20(if=20=
...=20...=20...=20...)=20(goto-char=20...))=20(make-local-variable=20=
'term-pager-old-filter)=20(setq=20term-pager-old-filter=20=
(process-filter=20proc))=20(set-process-filter=20proc=20=
term-pager-filter)=20(setq=20i=20str-length))=20(setq=20i=20ctl-end)))))=20=
(when=20(>=3D=20(term-current-row)=20term-height)=20=
(term-handle-deferred-scroll))=20(set-marker=20(process-mark=20proc)=20=
(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20...=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20...)=20(and=20...=20...)=20(and=20...=20...))=20=
(when=20term-scroll-snap-to-bottom=20(goto-char=20term-home-marker)=20=
(recenter=200))=20(goto-char=20(process-mark=20proc))=20(if=20(not=20=
...)=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20...=20...)=20(or=20=
term-scroll-snap-to-bottom=20...))=20(save-excursion=20(goto-char=20...)=20=
(recenter=20-1)))))=20(not=20(eq=20win=20last-win))))=20(when=20(>=20=
term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil))=0A=20=20(unwind-protect=20(progn=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
...))=20(ctl-params-end=20(and=20funny=20...))=20(ctl-end=20(if=20funny=20=
...=20...=20...=20...)))=20(when=20(>=20funny=20i)=20(when=20=
term-do-line-wrapping=20(term-down=201=20t)=20(term-move-to-column=200)=20=
(setq=20term-do-line-wrapping=20nil))=20(setq=20decoded-substring=20=
(decode-coding-string=20...=20locale-coding-system=20t))=20(when=20(=3D=20=
funny=20str-length)=20(let=20...=20...=20...))=20(let=20(...=20...=20=
columns)=20(unless=20term-suppress-hard-newline=20...)=20(insert=20=
decoded-substring)=20(setq=20term-current-column=20...=20columns=20...)=20=
(when=20...=20...)=20(when=20term-insert-mode=20...)=20=
(put-text-property=20old-point=20...=20...=20term-current-face))=20(when=20=
(eq=20...=20term-width)=20(term-move-columns=20-1)=20(setq=20=
term-do-line-wrapping=20...))=20(setq=20term-current-column=20nil)=20=
(setq=20i=20funny))=20(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20=
str-length)=20(aref=20str=20i))=20(9=20(let=20...=20...))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20...=20...))=20(8=20=
(term-move-columns=20-1))=20(7=20(beep=20t))=20(26=20(funcall=20=
term-command-function=20...))=20(27=20(pcase=20...=20...=20...=20...=20=
...=20...=20...=20...))=20((or=200=2014=2015=20...)=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20(point))=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20(if=20...=20...=20...=20=
...)=20(make-local-variable=20...)=20(setq=20term-pager-old-filter=20=
...)=20(set-process-filter=20proc=20term-pager-filter)=20(setq=20i=20=
str-length))=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20=
(term-current-row)=20term-height)=20(term-handle-deferred-scroll))=20=
(set-marker=20(process-mark=20proc)=20(point))=20(when=20(stringp=20=
decoded-substring)=20(term-watch-for-password-prompt=20=
decoded-substring))=20(when=20save-point=20(goto-char=20save-point)=20=
(set-marker=20save-point=20nil))=20(when=20(and=20term-pending-frame=20=
(eq=20(window-buffer=20selected)=20(current-buffer)))=20=
(term-display-line=20(car=20term-pending-frame)=20(cdr=20=
term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20win=20=
selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20...=20...=20...=20...=20...)=20(when=20=
term-scroll-snap-to-bottom=20...=20...)=20(goto-char=20...)=20(if=20...=20=
...))=20(when=20(and=20term-scroll-show-maximum-output=20...=20...)=20=
(save-excursion=20...=20...))))=20(not=20(eq=20win=20last-win))))=20=
(when=20(>=20term-buffer-maximum-size=200)=20(save-excursion=20=
(goto-char=20(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil))=20(internal--after-save-selected-window=20=
save-selected-window--state))=0A=20=20(save-current-buffer=20=
(unwind-protect=20(progn=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20...)=20=
(ctl-params-end=20...)=20(ctl-end=20...))=20(when=20(>=20funny=20i)=20=
(when=20term-do-line-wrapping=20...=20...=20...)=20(setq=20=
decoded-substring=20...)=20(when=20...=20...)=20(let=20...=20...=20...=20=
...=20...=20...=20...)=20(when=20...=20...=20...)=20(setq=20=
term-current-column=20nil)=20(setq=20i=20funny))=20(pcase-exhaustive=20=
(and=20...=20...)=20(9=20...)=20(13=20...=20...)=20(10=20...)=20(8=20=
...)=20(7=20...)=20(26=20...)=20(27=20...)=20(...=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20...)=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20...=20...=20...=20...=20=
...)=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20(term-current-row)=20=
term-height)=20(term-handle-deferred-scroll))=20(set-marker=20=
(process-mark=20proc)=20(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20(...)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20...=20...=20...=20=
...)=20(when=20...=20...)))=20(not=20(eq=20win=20last-win))))=20(when=20=
(>=20term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20...)))=20(forward-line=20(-=20=
term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil))=20=
(internal--after-save-selected-window=20save-selected-window--state)))=0A=
=20=20(let=20((save-selected-window--state=20=
(internal--before-save-selected-window)))=20(save-current-buffer=20=
(unwind-protect=20(progn=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20...=20...)=20=
(term-in-line-mode))=20(narrow-to-region=20(point-min)=20(process-mark=20=
proc)))=20(when=20term-log-buffer=20(princ=20str=20term-log-buffer))=20=
(when=20term-terminal-undecoded-bytes=20(setq=20str=20(concat=20=
term-terminal-undecoded-bytes=20str))=20(setq=20str-length=20(length=20=
str))=20(setq=20term-terminal-undecoded-bytes=20nil))=20(while=20(<=20i=20=
str-length)=20(setq=20funny=20(string-match=20term-control-seq-regexp=20=
str=20i))=20(let=20(...=20...=20...)=20(when=20...=20...=20...=20...=20=
...=20...=20...=20...)=20(pcase-exhaustive=20...=20...=20...=20...=20...=20=
...=20...=20...=20...)=20(unless=20...=20...)=20(if=20...=20...=20=
...))))=20(when=20(>=3D=20(term-current-row)=20term-height)=20=
(term-handle-deferred-scroll))=20(set-marker=20(process-mark=20proc)=20=
(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
...=20...)=20(let=20...=20...=20...=20...=20...=20...))=20(not=20(eq=20=
win=20last-win))))=20(when=20(>=20term-buffer-maximum-size=200)=20=
(save-excursion=20(goto-char=20(process-mark=20...))=20(forward-line=20=
(-=20term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil))=20=
(internal--after-save-selected-window=20save-selected-window--state))))=0A=
=20=20(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
(match-string=201=20str)))=20(ctl-params-end=20(and=20funny=20(match-end=20=
1)))=20(ctl-end=20(if=20funny=20(match-end=200)=20(setq=20funny=20...)=20=
(if=20funny=20...=20...)=20(1+=20str-length))))=20(when=20(>=20funny=20=
i)=20(when=20term-do-line-wrapping=20(term-down=201=20t)=20=
(term-move-to-column=200)=20(setq=20term-do-line-wrapping=20nil))=20=
(setq=20decoded-substring=20(decode-coding-string=20(substring=20str=20i=20=
funny)=20locale-coding-system=20t))=20(when=20(=3D=20funny=20str-length)=20=
(let=20(...=20...)=20(while=20...=20...)=20(when=20...=20...=20...=20...=20=
...)))=20(let=20((old-column=20...)=20(old-point=20...)=20columns)=20=
(unless=20term-suppress-hard-newline=20(while=20...=20...=20...=20...=20=
...=20...=20...=20...))=20(insert=20decoded-substring)=20(setq=20=
term-current-column=20(current-column)=20columns=20(-=20=
term-current-column=20old-column))=20(when=20(not=20...)=20(let=20...=20=
...=20...=20...))=20(when=20term-insert-mode=20(let=20...=20...=20...=20=
...))=20(put-text-property=20old-point=20(point)=20'font-lock-face=20=
term-current-face))=20(when=20(eq=20(term-current-column)=20term-width)=20=
(term-move-columns=20-1)=20(setq=20term-do-line-wrapping=20(point)))=20=
(setq=20term-current-column=20nil)=20(setq=20i=20funny))=20=
(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20str-length)=20(aref=20str=20=
i))=20(9=20(let=20(...)=20(term-move-to-column=20...)))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20(and=20term-kill-echo-list=20=
...)=20(term-down=201=20t)))=20(8=20(term-move-columns=20-1))=20(7=20=
(beep=20t))=20(26=20(funcall=20term-command-function=20=
(decode-coding-string=20...=20locale-coding-system=20t)))=20(27=20(pcase=20=
(aref=20str=20...)=20(91=20...)=20(68=20...=20...)=20(77=20...)=20(55=20=
...=20...)=20(56=20...)=20(99=20...)=20(65=20...)))=20((or=200=2014=2015=20=
'nil)=20nil))=20(unless=20(eq=20term-do-line-wrapping=20(point))=20(setq=20=
term-do-line-wrapping=20nil))=20(if=20(term-handling-pager)=20(progn=20=
(if=20(>=20...=200)=20(setq=20term-terminal-undecoded-bytes=20...)=20(if=20=
...=20...=20...=20...)=20(goto-char=20...))=20(make-local-variable=20=
'term-pager-old-filter)=20(setq=20term-pager-old-filter=20=
(process-filter=20proc))=20(set-process-filter=20proc=20=
term-pager-filter)=20(setq=20i=20str-length))=20(setq=20i=20ctl-end)))))=20=
(when=20(>=3D=20(term-current-row)=20term-height)=20=
(term-handle-deferred-scroll))=20(set-marker=20(process-mark=20proc)=20=
(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20...=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20...)=20(and=20...=20...)=20(and=20...=20...))=20=
(when=20term-scroll-snap-to-bottom=20(goto-char=20term-home-marker)=20=
(recenter=200))=20(goto-char=20(process-mark=20proc))=20(if=20(not=20=
...)=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20...=20...)=20(or=20=
term-scroll-snap-to-bottom=20...))=20(save-excursion=20(goto-char=20...)=20=
(recenter=20-1)))))=20(not=20(eq=20win=20last-win))))=20(when=20(>=20=
term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil))=0A=20=20(let*=20((i=200)=20funny=20decoded-substring=20save-point=20=
save-marker=20win=20(inhibit-read-only=20t)=20(buffer-undo-list=20t)=20=
(selected=20(selected-window))=20last-win=20(str-length=20(length=20=
str)))=20(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
...))=20(ctl-params-end=20(and=20funny=20...))=20(ctl-end=20(if=20funny=20=
...=20...=20...=20...)))=20(when=20(>=20funny=20i)=20(when=20=
term-do-line-wrapping=20(term-down=201=20t)=20(term-move-to-column=200)=20=
(setq=20term-do-line-wrapping=20nil))=20(setq=20decoded-substring=20=
(decode-coding-string=20...=20locale-coding-system=20t))=20(when=20(=3D=20=
funny=20str-length)=20(let=20...=20...=20...))=20(let=20(...=20...=20=
columns)=20(unless=20term-suppress-hard-newline=20...)=20(insert=20=
decoded-substring)=20(setq=20term-current-column=20...=20columns=20...)=20=
(when=20...=20...)=20(when=20term-insert-mode=20...)=20=
(put-text-property=20old-point=20...=20...=20term-current-face))=20(when=20=
(eq=20...=20term-width)=20(term-move-columns=20-1)=20(setq=20=
term-do-line-wrapping=20...))=20(setq=20term-current-column=20nil)=20=
(setq=20i=20funny))=20(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20=
str-length)=20(aref=20str=20i))=20(9=20(let=20...=20...))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20...=20...))=20(8=20=
(term-move-columns=20-1))=20(7=20(beep=20t))=20(26=20(funcall=20=
term-command-function=20...))=20(27=20(pcase=20...=20...=20...=20...=20=
...=20...=20...=20...))=20((or=200=2014=2015=20...)=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20(point))=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20(if=20...=20...=20...=20=
...)=20(make-local-variable=20...)=20(setq=20term-pager-old-filter=20=
...)=20(set-process-filter=20proc=20term-pager-filter)=20(setq=20i=20=
str-length))=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20=
(term-current-row)=20term-height)=20(term-handle-deferred-scroll))=20=
(set-marker=20(process-mark=20proc)=20(point))=20(when=20(stringp=20=
decoded-substring)=20(term-watch-for-password-prompt=20=
decoded-substring))=20(when=20save-point=20(goto-char=20save-point)=20=
(set-marker=20save-point=20nil))=20(when=20(and=20term-pending-frame=20=
(eq=20(window-buffer=20selected)=20(current-buffer)))=20=
(term-display-line=20(car=20term-pending-frame)=20(cdr=20=
term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20win=20=
selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20...=20...=20...=20...=20...)=20(when=20=
term-scroll-snap-to-bottom=20...=20...)=20(goto-char=20...)=20(if=20...=20=
...))=20(when=20(and=20term-scroll-show-maximum-output=20...=20...)=20=
(save-excursion=20...=20...))))=20(not=20(eq=20win=20last-win))))=20=
(when=20(>=20term-buffer-maximum-size=200)=20(save-excursion=20=
(goto-char=20(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil)))=0A=20=20(save-current-buffer=20(set-buffer=20(process-buffer=20=
proc))=20(let*=20((i=200)=20funny=20decoded-substring=20save-point=20=
save-marker=20win=20(inhibit-read-only=20t)=20(buffer-undo-list=20t)=20=
(selected=20(selected-window))=20last-win=20(str-length=20(length=20=
str)))=20(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20...)=20=
(ctl-params-end=20...)=20(ctl-end=20...))=20(when=20(>=20funny=20i)=20=
(when=20term-do-line-wrapping=20...=20...=20...)=20(setq=20=
decoded-substring=20...)=20(when=20...=20...)=20(let=20...=20...=20...=20=
...=20...=20...=20...)=20(when=20...=20...=20...)=20(setq=20=
term-current-column=20nil)=20(setq=20i=20funny))=20(pcase-exhaustive=20=
(and=20...=20...)=20(9=20...)=20(13=20...=20...)=20(10=20...)=20(8=20=
...)=20(7=20...)=20(26=20...)=20(27=20...)=20(...=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20...)=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20...=20...=20...=20...=20=
...)=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20(term-current-row)=20=
term-height)=20(term-handle-deferred-scroll))=20(set-marker=20=
(process-mark=20proc)=20(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20(...)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20...=20...=20...=20=
...)=20(when=20...=20...)))=20(not=20(eq=20win=20last-win))))=20(when=20=
(>=20term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20...)))=20(forward-line=20(-=20=
term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil)))=20(when=20=
(get-buffer-window=20(current-buffer))=20(redisplay)))=0A=20=20=
(with-current-buffer=20(process-buffer=20proc)=20(let*=20((i=200)=20=
funny=20decoded-substring=20save-point=20save-marker=20win=20=
(inhibit-read-only=20t)=20(buffer-undo-list=20t)=20(selected=20=
(selected-window))=20last-win=20(str-length=20(length=20str)))=20=
(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20...)=20=
(ctl-params-end=20...)=20(ctl-end=20...))=20(when=20(>=20funny=20i)=20=
(when=20term-do-line-wrapping=20...=20...=20...)=20(setq=20=
decoded-substring=20...)=20(when=20...=20...)=20(let=20...=20...=20...=20=
...=20...=20...=20...)=20(when=20...=20...=20...)=20(setq=20=
term-current-column=20nil)=20(setq=20i=20funny))=20(pcase-exhaustive=20=
(and=20...=20...)=20(9=20...)=20(13=20...=20...)=20(10=20...)=20(8=20=
...)=20(7=20...)=20(26=20...)=20(27=20...)=20(...=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20...)=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20...=20...=20...=20...=20=
...)=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20(term-current-row)=20=
term-height)=20(term-handle-deferred-scroll))=20(set-marker=20=
(process-mark=20proc)=20(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20(...)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20...=20...=20...=20=
...)=20(when=20...=20...)))=20(not=20(eq=20win=20last-win))))=20(when=20=
(>=20term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20...)))=20(forward-line=20(-=20=
term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil)))=20(when=20=
(get-buffer-window=20(current-buffer))=20(redisplay)))=0A=20=20=
term-emulate-terminal(#<process=20something>=20"something\15\n")=0A=20=20=
read-from-minibuffer("Find=20file:=20"=20nil=20(keymap=20(9=20.=20=
selectrum-insert-current-candidate)=20(10=20.=20=
selectrum-submit-exact-input)=20(C-M-backspace=20.=20backward-kill-sexp)=20=
(27=20keymap=20(115=20keymap=20(114=20.=20=
selectrum-prescient-toggle-regexp)=20(112=20.=20=
selectrum-prescient-toggle-prefix)=20(108=20.=20=
selectrum-prescient-toggle-literal)=20(105=20.=20=
selectrum-prescient-toggle-initialism)=20(102=20.=20=
selectrum-prescient-toggle-fuzzy)=20(97=20.=20=
selectrum-prescient-toggle-anchored))=20(67108991=20.=20=
backward-kill-sexp))=20(remap=20keymap=20=
(previous-matching-history-element=20.=20selectrum-select-from-history)=20=
(kill-ring-save=20.=20selectrum-kill-ring-save)=20(end-of-buffer=20.=20=
selectrum-goto-end)=20(beginning-of-buffer=20.=20=
selectrum-goto-beginning)=20(minibuffer-beginning-of-buffer=20.=20=
selectrum-goto-beginning)=20(scroll-up-command=20.=20=
selectrum-next-page)=20(scroll-down-command=20.=20=
selectrum-previous-page)=20(exit-minibuffer=20.=20=
selectrum-select-current-candidate)=20(next-line-or-history-element=20.=20=
selectrum-next-candidate)=20(previous-line-or-history-element=20.=20=
selectrum-previous-candidate)=20(next-line=20.=20=
selectrum-next-candidate)=20(previous-line=20.=20=
selectrum-previous-candidate)=20(minibuffer-keyboard-quit=20.=20=
abort-recursive-edit)=20(keyboard-quit=20.=20abort-recursive-edit))=20=
keymap=20(remap=20keymap=20(previous-matching-history-element=20.=20=
selectrum-select-from-history))=20(menu-bar=20keymap=20(minibuf=20=
"Minibuf"=20keymap=20(previous=20menu-item=20"Previous=20History=20Item"=20=
previous-history-element=20:help=20"Put=20previous=20minibuffer=20=
history=20element=20in=20the=20min...")=20(next=20menu-item=20"Next=20=
History=20Item"=20next-history-element=20:help=20"Put=20next=20=
minibuffer=20history=20element=20in=20the=20minibuf...")=20=
(isearch-backward=20menu-item=20"Isearch=20History=20Backward"=20=
isearch-backward=20:help=20"Incrementally=20search=20minibuffer=20=
history=20backward")=20(isearch-forward=20menu-item=20"Isearch=20History=20=
Forward"=20isearch-forward=20:help=20"Incrementally=20search=20=
minibuffer=20history=20forward")=20(return=20menu-item=20"Enter"=20=
exit-minibuffer=20:key-sequence=20"\15"=20:help=20"Terminate=20input=20=
and=20exit=20minibuffer")=20(quit=20menu-item=20"Quit"=20=
abort-recursive-edit=20:help=20"Abort=20input=20and=20exit=20=
minibuffer")=20"Minibuf"))=20(10=20.=20exit-minibuffer)=20(13=20.=20=
exit-minibuffer)=20(7=20.=20minibuffer-keyboard-quit)=20(C-tab=20.=20=
file-cache-minibuffer-complete)=20(9=20.=20self-insert-command)=20=
(XF86Back=20.=20previous-history-element)=20(up=20.=20=
previous-line-or-history-element)=20(prior=20.=20=
previous-history-element)=20(XF86Forward=20.=20next-history-element)=20=
(down=20.=20next-line-or-history-element)=20(next=20.=20=
next-history-element)=20(27=20keymap=20(111=20.=20embark-act)=20(60=20.=20=
minibuffer-beginning-of-buffer)=20(114=20.=20=
previous-matching-history-element)=20(115=20.=20=
next-matching-history-element)=20(112=20.=20previous-history-element)=20=
(110=20.=20next-history-element)))=20nil=20file-name-history)=0A=20=20=
selectrum-read("Find=20file:=20"=20#f(compiled-function=20(input)=20=
#<bytecode=20-0x186c65d337d41520>)=20:default-candidate=20"~/tmp/"=20=
:initial-input=20"~/tmp/"=20:history=20file-name-history=20=
:require-match=20nil=20:may-modify-candidates=20t=20=
:minibuffer-completion-table=20read-file-name-internal=20=
:minibuffer-completion-predicate=20file-exists-p)=0A=20=20=
selectrum--completing-read-file-name("Find=20file:=20"=20=
read-file-name-internal=20file-exists-p=20confirm-after-completion=20=
"~/tmp/"=20file-name-history=20"~/tmp/"=20nil)=0A=20=20=
apply(selectrum--completing-read-file-name=20("Find=20file:=20"=20=
read-file-name-internal=20file-exists-p=20confirm-after-completion=20=
"~/tmp/"=20file-name-history=20"~/tmp/"=20nil))=0A=20=20=
#f(compiled-function=20(&rest=20args)=20#<bytecode=20=
-0x5bf689d9cc60469>)("Find=20file:=20"=20read-file-name-internal=20=
file-exists-p=20confirm-after-completion=20"~/tmp/"=20file-name-history=20=
"~/tmp/"=20nil)=0A=20=20completing-read("Find=20file:=20"=20=
read-file-name-internal=20file-exists-p=20confirm-after-completion=20=
"~/tmp/"=20file-name-history=20"~/tmp/")=0A=20=20=
read-file-name-default("Find=20file:=20"=20nil=20"/Users/spd/tmp/"=20=
confirm-after-completion=20nil=20nil)=0A=20=20=
selectrum-read-file-name("Find=20file:=20"=20nil=20"/Users/spd/tmp/"=20=
confirm-after-completion=20nil=20nil)=0A=20=20read-file-name("Find=20=
file:=20"=20nil=20"/Users/spd/tmp/"=20confirm-after-completion)=0A=20=20=
find-file-read-args("Find=20file:=20"=20confirm-after-completion)=0A=20=20=
byte-code("\300\301\302=20\"\207"=20[find-file-read-args=20"Find=20file:=20=
"=20confirm-nonexistent-file-or-buffer]=203)=0A=20=20=
call-interactively(find-file=20nil=20nil)=0A=20=20=
command-execute(find-file)=0A=0A=0A=0A>>>>=20=
window--resize-root-window-vertically=0Aselected=20frame:=20#<frame=20=20=
*Minibuf-1*=200x7ffa290daa30>=0Aselected=20window:=20#<window=204=20on=20=
=20*Minibuf-1*>=0Aselected=20window=20buffer:=20=20*Minibuf-1*=0A=20=20=
backtrace()=0A=20=20(let=20((standard-output=20(get-buffer-create=20=
"*redisplay-minibuffer-log*")))=20(princ=20(format=20">>>>=20%s\n"=20=
msg))=20(princ=20(format=20"selected=20frame:=20%s\n"=20=
(selected-frame)))=20(princ=20(format=20"selected=20window:=20%s\n"=20=
(selected-window)))=20(princ=20(format=20"selected=20window=20buffer:=20=
%s\n"=20(window-buffer=20(selected-window))))=20(backtrace)=20(princ=20=
"\n\n\n"))=0A=20=20=
my/redisplay-minibuffer-log("window--resize-root-window-vertically")=0A=20=
=20window--resize-root-window-vertically(#<window=203=20on=20=
*redisplay-minibuffer-log*>=2070=20t)=0A=20=20select-window(#<window=20=
10=20on=20*something*>)=0A=20=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20(point)=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20'all)=20(and=20(eq=20selected=20win)=20(or=20(eq=20=
scroll=20'this)=20(not=20save-point)))=20(and=20(eq=20scroll=20'others)=20=
(not=20(eq=20selected=20win))))=20(when=20term-scroll-snap-to-bottom=20=
(goto-char=20term-home-marker)=20(recenter=200))=20(goto-char=20=
(process-mark=20proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20=
win))=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20(point-max)=20win))))=20(save-excursion=20=
(goto-char=20(point-max))=20(recenter=20-1))))=0A=20=20(progn=20(let=20=
((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20(eq=20scroll=20'this)=20(not=20=
save-point)))=20(and=20(eq=20scroll=20'others)=20(not=20(eq=20selected=20=
win))))=20(when=20term-scroll-snap-to-bottom=20(goto-char=20=
term-home-marker)=20(recenter=200))=20(goto-char=20(process-mark=20=
proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20win))=20=
(recenter=20-1)))=20(when=20(and=20term-scroll-show-maximum-output=20(>=3D=
=20(point)=20(process-mark=20proc))=20(or=20term-scroll-snap-to-bottom=20=
(not=20(pos-visible-in-window-p=20(point-max)=20win))))=20=
(save-excursion=20(goto-char=20(point-max))=20(recenter=20-1)))))=0A=20=20=
(if=20(eq=20(window-buffer=20win)=20(process-buffer=20proc))=20(progn=20=
(let=20((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20(eq=20scroll=20...)=20(not=20save-point)))=20=
(and=20(eq=20scroll=20'others)=20(not=20(eq=20selected=20win))))=20(when=20=
term-scroll-snap-to-bottom=20(goto-char=20term-home-marker)=20(recenter=20=
0))=20(goto-char=20(process-mark=20proc))=20(if=20(not=20=
(pos-visible-in-window-p=20(point)=20win))=20(recenter=20-1)))=20(when=20=
(and=20term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20...=20win))))=20(save-excursion=20(goto-char=20=
(point-max))=20(recenter=20-1))))))=0A=20=20(when=20(eq=20(window-buffer=20=
win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20(point)=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20'all)=20(and=20(eq=20selected=20win)=20(or=20(eq=20=
scroll=20'this)=20(not=20save-point)))=20(and=20(eq=20scroll=20'others)=20=
(not=20(eq=20selected=20win))))=20(when=20term-scroll-snap-to-bottom=20=
(goto-char=20term-home-marker)=20(recenter=200))=20(goto-char=20=
(process-mark=20proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20=
win))=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20(point-max)=20win))))=20(save-excursion=20=
(goto-char=20(point-max))=20(recenter=20-1)))))=0A=20=20(progn=20(setq=20=
win=20(next-window=20win=20nil=20t))=20(when=20(eq=20(window-buffer=20=
win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20(point)=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20'all)=20(and=20(eq=20selected=20win)=20(or=20(eq=20=
scroll=20...)=20(not=20save-point)))=20(and=20(eq=20scroll=20'others)=20=
(not=20(eq=20selected=20win))))=20(when=20term-scroll-snap-to-bottom=20=
(goto-char=20term-home-marker)=20(recenter=200))=20(goto-char=20=
(process-mark=20proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20=
win))=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20...=20win))))=20(save-excursion=20(goto-char=20=
(point-max))=20(recenter=20-1)))))=20(not=20(eq=20win=20last-win)))=0A=20=
=20(while=20(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20=
(when=20(eq=20(window-buffer=20win)=20(process-buffer=20proc))=20(let=20=
((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20...=20...))=20(and=20(eq=20scroll=20...)=20=
(not=20...)))=20(when=20term-scroll-snap-to-bottom=20(goto-char=20=
term-home-marker)=20(recenter=200))=20(goto-char=20(process-mark=20=
proc))=20(if=20(not=20(pos-visible-in-window-p=20...=20win))=20(recenter=20=
-1)))=20(when=20(and=20term-scroll-show-maximum-output=20(>=3D=20(point)=20=
(process-mark=20proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
...)))=20(save-excursion=20(goto-char=20(point-max))=20(recenter=20=
-1)))))=20(not=20(eq=20win=20last-win))))=0A=20=20(progn=20(when=20=
(marker-buffer=20term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
(match-string=201=20str)))=20(ctl-params-end=20(and=20funny=20(match-end=20=
1)))=20(ctl-end=20(if=20funny=20(match-end=200)=20(setq=20funny=20...)=20=
(if=20funny=20...=20...)=20(1+=20str-length))))=20(when=20(>=20funny=20=
i)=20(when=20term-do-line-wrapping=20(term-down=201=20t)=20=
(term-move-to-column=200)=20(setq=20term-do-line-wrapping=20nil))=20=
(setq=20decoded-substring=20(decode-coding-string=20(substring=20str=20i=20=
funny)=20locale-coding-system=20t))=20(when=20(=3D=20funny=20str-length)=20=
(let=20(...=20...)=20(while=20...=20...)=20(when=20...=20...=20...=20...=20=
...)))=20(let=20((old-column=20...)=20(old-point=20...)=20columns)=20=
(unless=20term-suppress-hard-newline=20(while=20...=20...=20...=20...=20=
...=20...=20...=20...))=20(insert=20decoded-substring)=20(setq=20=
term-current-column=20(current-column)=20columns=20(-=20=
term-current-column=20old-column))=20(when=20(not=20...)=20(let=20...=20=
...=20...=20...))=20(when=20term-insert-mode=20(let=20...=20...=20...=20=
...))=20(put-text-property=20old-point=20(point)=20'font-lock-face=20=
term-current-face))=20(when=20(eq=20(term-current-column)=20term-width)=20=
(term-move-columns=20-1)=20(setq=20term-do-line-wrapping=20(point)))=20=
(setq=20term-current-column=20nil)=20(setq=20i=20funny))=20=
(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20str-length)=20(aref=20str=20=
i))=20(9=20(let=20(...)=20(term-move-to-column=20...)))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20(and=20term-kill-echo-list=20=
...)=20(term-down=201=20t)))=20(8=20(term-move-columns=20-1))=20(7=20=
(beep=20t))=20(26=20(funcall=20term-command-function=20=
(decode-coding-string=20...=20locale-coding-system=20t)))=20(27=20(pcase=20=
(aref=20str=20...)=20(91=20...)=20(68=20...=20...)=20(77=20...)=20(55=20=
...=20...)=20(56=20...)=20(99=20...)=20(65=20...)))=20((or=200=2014=2015=20=
'nil)=20nil))=20(unless=20(eq=20term-do-line-wrapping=20(point))=20(setq=20=
term-do-line-wrapping=20nil))=20(if=20(term-handling-pager)=20(progn=20=
(if=20(>=20...=200)=20(setq=20term-terminal-undecoded-bytes=20...)=20(if=20=
...=20...=20...=20...)=20(goto-char=20...))=20(make-local-variable=20=
'term-pager-old-filter)=20(setq=20term-pager-old-filter=20=
(process-filter=20proc))=20(set-process-filter=20proc=20=
term-pager-filter)=20(setq=20i=20str-length))=20(setq=20i=20ctl-end)))))=20=
(when=20(>=3D=20(term-current-row)=20term-height)=20=
(term-handle-deferred-scroll))=20(set-marker=20(process-mark=20proc)=20=
(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20...=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20...)=20(and=20...=20...)=20(and=20...=20...))=20=
(when=20term-scroll-snap-to-bottom=20(goto-char=20term-home-marker)=20=
(recenter=200))=20(goto-char=20(process-mark=20proc))=20(if=20(not=20=
...)=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20...=20...)=20(or=20=
term-scroll-snap-to-bottom=20...))=20(save-excursion=20(goto-char=20...)=20=
(recenter=20-1)))))=20(not=20(eq=20win=20last-win))))=20(when=20(>=20=
term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil))=0A=20=20(unwind-protect=20(progn=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
...))=20(ctl-params-end=20(and=20funny=20...))=20(ctl-end=20(if=20funny=20=
...=20...=20...=20...)))=20(when=20(>=20funny=20i)=20(when=20=
term-do-line-wrapping=20(term-down=201=20t)=20(term-move-to-column=200)=20=
(setq=20term-do-line-wrapping=20nil))=20(setq=20decoded-substring=20=
(decode-coding-string=20...=20locale-coding-system=20t))=20(when=20(=3D=20=
funny=20str-length)=20(let=20...=20...=20...))=20(let=20(...=20...=20=
columns)=20(unless=20term-suppress-hard-newline=20...)=20(insert=20=
decoded-substring)=20(setq=20term-current-column=20...=20columns=20...)=20=
(when=20...=20...)=20(when=20term-insert-mode=20...)=20=
(put-text-property=20old-point=20...=20...=20term-current-face))=20(when=20=
(eq=20...=20term-width)=20(term-move-columns=20-1)=20(setq=20=
term-do-line-wrapping=20...))=20(setq=20term-current-column=20nil)=20=
(setq=20i=20funny))=20(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20=
str-length)=20(aref=20str=20i))=20(9=20(let=20...=20...))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20...=20...))=20(8=20=
(term-move-columns=20-1))=20(7=20(beep=20t))=20(26=20(funcall=20=
term-command-function=20...))=20(27=20(pcase=20...=20...=20...=20...=20=
...=20...=20...=20...))=20((or=200=2014=2015=20...)=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20(point))=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20(if=20...=20...=20...=20=
...)=20(make-local-variable=20...)=20(setq=20term-pager-old-filter=20=
...)=20(set-process-filter=20proc=20term-pager-filter)=20(setq=20i=20=
str-length))=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20=
(term-current-row)=20term-height)=20(term-handle-deferred-scroll))=20=
(set-marker=20(process-mark=20proc)=20(point))=20(when=20(stringp=20=
decoded-substring)=20(term-watch-for-password-prompt=20=
decoded-substring))=20(when=20save-point=20(goto-char=20save-point)=20=
(set-marker=20save-point=20nil))=20(when=20(and=20term-pending-frame=20=
(eq=20(window-buffer=20selected)=20(current-buffer)))=20=
(term-display-line=20(car=20term-pending-frame)=20(cdr=20=
term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20win=20=
selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20...=20...=20...=20...=20...)=20(when=20=
term-scroll-snap-to-bottom=20...=20...)=20(goto-char=20...)=20(if=20...=20=
...))=20(when=20(and=20term-scroll-show-maximum-output=20...=20...)=20=
(save-excursion=20...=20...))))=20(not=20(eq=20win=20last-win))))=20=
(when=20(>=20term-buffer-maximum-size=200)=20(save-excursion=20=
(goto-char=20(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil))=20(internal--after-save-selected-window=20=
save-selected-window--state))=0A=20=20(save-current-buffer=20=
(unwind-protect=20(progn=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20...)=20=
(ctl-params-end=20...)=20(ctl-end=20...))=20(when=20(>=20funny=20i)=20=
(when=20term-do-line-wrapping=20...=20...=20...)=20(setq=20=
decoded-substring=20...)=20(when=20...=20...)=20(let=20...=20...=20...=20=
...=20...=20...=20...)=20(when=20...=20...=20...)=20(setq=20=
term-current-column=20nil)=20(setq=20i=20funny))=20(pcase-exhaustive=20=
(and=20...=20...)=20(9=20...)=20(13=20...=20...)=20(10=20...)=20(8=20=
...)=20(7=20...)=20(26=20...)=20(27=20...)=20(...=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20...)=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20...=20...=20...=20...=20=
...)=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20(term-current-row)=20=
term-height)=20(term-handle-deferred-scroll))=20(set-marker=20=
(process-mark=20proc)=20(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20(...)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20...=20...=20...=20=
...)=20(when=20...=20...)))=20(not=20(eq=20win=20last-win))))=20(when=20=
(>=20term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20...)))=20(forward-line=20(-=20=
term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil))=20=
(internal--after-save-selected-window=20save-selected-window--state)))=0A=
=20=20(let=20((save-selected-window--state=20=
(internal--before-save-selected-window)))=20(save-current-buffer=20=
(unwind-protect=20(progn=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20...=20...)=20=
(term-in-line-mode))=20(narrow-to-region=20(point-min)=20(process-mark=20=
proc)))=20(when=20term-log-buffer=20(princ=20str=20term-log-buffer))=20=
(when=20term-terminal-undecoded-bytes=20(setq=20str=20(concat=20=
term-terminal-undecoded-bytes=20str))=20(setq=20str-length=20(length=20=
str))=20(setq=20term-terminal-undecoded-bytes=20nil))=20(while=20(<=20i=20=
str-length)=20(setq=20funny=20(string-match=20term-control-seq-regexp=20=
str=20i))=20(let=20(...=20...=20...)=20(when=20...=20...=20...=20...=20=
...=20...=20...=20...)=20(pcase-exhaustive=20...=20...=20...=20...=20...=20=
...=20...=20...=20...)=20(unless=20...=20...)=20(if=20...=20...=20=
...))))=20(when=20(>=3D=20(term-current-row)=20term-height)=20=
(term-handle-deferred-scroll))=20(set-marker=20(process-mark=20proc)=20=
(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
...=20...)=20(let=20...=20...=20...=20...=20...=20...))=20(not=20(eq=20=
win=20last-win))))=20(when=20(>=20term-buffer-maximum-size=200)=20=
(save-excursion=20(goto-char=20(process-mark=20...))=20(forward-line=20=
(-=20term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil))=20=
(internal--after-save-selected-window=20save-selected-window--state))))=0A=
=20=20(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
(match-string=201=20str)))=20(ctl-params-end=20(and=20funny=20(match-end=20=
1)))=20(ctl-end=20(if=20funny=20(match-end=200)=20(setq=20funny=20...)=20=
(if=20funny=20...=20...)=20(1+=20str-length))))=20(when=20(>=20funny=20=
i)=20(when=20term-do-line-wrapping=20(term-down=201=20t)=20=
(term-move-to-column=200)=20(setq=20term-do-line-wrapping=20nil))=20=
(setq=20decoded-substring=20(decode-coding-string=20(substring=20str=20i=20=
funny)=20locale-coding-system=20t))=20(when=20(=3D=20funny=20str-length)=20=
(let=20(...=20...)=20(while=20...=20...)=20(when=20...=20...=20...=20...=20=
...)))=20(let=20((old-column=20...)=20(old-point=20...)=20columns)=20=
(unless=20term-suppress-hard-newline=20(while=20...=20...=20...=20...=20=
...=20...=20...=20...))=20(insert=20decoded-substring)=20(setq=20=
term-current-column=20(current-column)=20columns=20(-=20=
term-current-column=20old-column))=20(when=20(not=20...)=20(let=20...=20=
...=20...=20...))=20(when=20term-insert-mode=20(let=20...=20...=20...=20=
...))=20(put-text-property=20old-point=20(point)=20'font-lock-face=20=
term-current-face))=20(when=20(eq=20(term-current-column)=20term-width)=20=
(term-move-columns=20-1)=20(setq=20term-do-line-wrapping=20(point)))=20=
(setq=20term-current-column=20nil)=20(setq=20i=20funny))=20=
(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20str-length)=20(aref=20str=20=
i))=20(9=20(let=20(...)=20(term-move-to-column=20...)))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20(and=20term-kill-echo-list=20=
...)=20(term-down=201=20t)))=20(8=20(term-move-columns=20-1))=20(7=20=
(beep=20t))=20(26=20(funcall=20term-command-function=20=
(decode-coding-string=20...=20locale-coding-system=20t)))=20(27=20(pcase=20=
(aref=20str=20...)=20(91=20...)=20(68=20...=20...)=20(77=20...)=20(55=20=
...=20...)=20(56=20...)=20(99=20...)=20(65=20...)))=20((or=200=2014=2015=20=
'nil)=20nil))=20(unless=20(eq=20term-do-line-wrapping=20(point))=20(setq=20=
term-do-line-wrapping=20nil))=20(if=20(term-handling-pager)=20(progn=20=
(if=20(>=20...=200)=20(setq=20term-terminal-undecoded-bytes=20...)=20(if=20=
...=20...=20...=20...)=20(goto-char=20...))=20(make-local-variable=20=
'term-pager-old-filter)=20(setq=20term-pager-old-filter=20=
(process-filter=20proc))=20(set-process-filter=20proc=20=
term-pager-filter)=20(setq=20i=20str-length))=20(setq=20i=20ctl-end)))))=20=
(when=20(>=3D=20(term-current-row)=20term-height)=20=
(term-handle-deferred-scroll))=20(set-marker=20(process-mark=20proc)=20=
(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20...=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20...)=20(and=20...=20...)=20(and=20...=20...))=20=
(when=20term-scroll-snap-to-bottom=20(goto-char=20term-home-marker)=20=
(recenter=200))=20(goto-char=20(process-mark=20proc))=20(if=20(not=20=
...)=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20...=20...)=20(or=20=
term-scroll-snap-to-bottom=20...))=20(save-excursion=20(goto-char=20...)=20=
(recenter=20-1)))))=20(not=20(eq=20win=20last-win))))=20(when=20(>=20=
term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil))=0A=20=20(let*=20((i=200)=20funny=20decoded-substring=20save-point=20=
save-marker=20win=20(inhibit-read-only=20t)=20(buffer-undo-list=20t)=20=
(selected=20(selected-window))=20last-win=20(str-length=20(length=20=
str)))=20(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
...))=20(ctl-params-end=20(and=20funny=20...))=20(ctl-end=20(if=20funny=20=
...=20...=20...=20...)))=20(when=20(>=20funny=20i)=20(when=20=
term-do-line-wrapping=20(term-down=201=20t)=20(term-move-to-column=200)=20=
(setq=20term-do-line-wrapping=20nil))=20(setq=20decoded-substring=20=
(decode-coding-string=20...=20locale-coding-system=20t))=20(when=20(=3D=20=
funny=20str-length)=20(let=20...=20...=20...))=20(let=20(...=20...=20=
columns)=20(unless=20term-suppress-hard-newline=20...)=20(insert=20=
decoded-substring)=20(setq=20term-current-column=20...=20columns=20...)=20=
(when=20...=20...)=20(when=20term-insert-mode=20...)=20=
(put-text-property=20old-point=20...=20...=20term-current-face))=20(when=20=
(eq=20...=20term-width)=20(term-move-columns=20-1)=20(setq=20=
term-do-line-wrapping=20...))=20(setq=20term-current-column=20nil)=20=
(setq=20i=20funny))=20(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20=
str-length)=20(aref=20str=20i))=20(9=20(let=20...=20...))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20...=20...))=20(8=20=
(term-move-columns=20-1))=20(7=20(beep=20t))=20(26=20(funcall=20=
term-command-function=20...))=20(27=20(pcase=20...=20...=20...=20...=20=
...=20...=20...=20...))=20((or=200=2014=2015=20...)=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20(point))=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20(if=20...=20...=20...=20=
...)=20(make-local-variable=20...)=20(setq=20term-pager-old-filter=20=
...)=20(set-process-filter=20proc=20term-pager-filter)=20(setq=20i=20=
str-length))=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20=
(term-current-row)=20term-height)=20(term-handle-deferred-scroll))=20=
(set-marker=20(process-mark=20proc)=20(point))=20(when=20(stringp=20=
decoded-substring)=20(term-watch-for-password-prompt=20=
decoded-substring))=20(when=20save-point=20(goto-char=20save-point)=20=
(set-marker=20save-point=20nil))=20(when=20(and=20term-pending-frame=20=
(eq=20(window-buffer=20selected)=20(current-buffer)))=20=
(term-display-line=20(car=20term-pending-frame)=20(cdr=20=
term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20win=20=
selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20...=20...=20...=20...=20...)=20(when=20=
term-scroll-snap-to-bottom=20...=20...)=20(goto-char=20...)=20(if=20...=20=
...))=20(when=20(and=20term-scroll-show-maximum-output=20...=20...)=20=
(save-excursion=20...=20...))))=20(not=20(eq=20win=20last-win))))=20=
(when=20(>=20term-buffer-maximum-size=200)=20(save-excursion=20=
(goto-char=20(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil)))=0A=20=20(save-current-buffer=20(set-buffer=20(process-buffer=20=
proc))=20(let*=20((i=200)=20funny=20decoded-substring=20save-point=20=
save-marker=20win=20(inhibit-read-only=20t)=20(buffer-undo-list=20t)=20=
(selected=20(selected-window))=20last-win=20(str-length=20(length=20=
str)))=20(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20...)=20=
(ctl-params-end=20...)=20(ctl-end=20...))=20(when=20(>=20funny=20i)=20=
(when=20term-do-line-wrapping=20...=20...=20...)=20(setq=20=
decoded-substring=20...)=20(when=20...=20...)=20(let=20...=20...=20...=20=
...=20...=20...=20...)=20(when=20...=20...=20...)=20(setq=20=
term-current-column=20nil)=20(setq=20i=20funny))=20(pcase-exhaustive=20=
(and=20...=20...)=20(9=20...)=20(13=20...=20...)=20(10=20...)=20(8=20=
...)=20(7=20...)=20(26=20...)=20(27=20...)=20(...=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20...)=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20...=20...=20...=20...=20=
...)=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20(term-current-row)=20=
term-height)=20(term-handle-deferred-scroll))=20(set-marker=20=
(process-mark=20proc)=20(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20(...)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20...=20...=20...=20=
...)=20(when=20...=20...)))=20(not=20(eq=20win=20last-win))))=20(when=20=
(>=20term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20...)))=20(forward-line=20(-=20=
term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil)))=20(when=20=
(get-buffer-window=20(current-buffer))=20(redisplay)))=0A=20=20=
(with-current-buffer=20(process-buffer=20proc)=20(let*=20((i=200)=20=
funny=20decoded-substring=20save-point=20save-marker=20win=20=
(inhibit-read-only=20t)=20(buffer-undo-list=20t)=20(selected=20=
(selected-window))=20last-win=20(str-length=20(length=20str)))=20=
(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20...)=20=
(ctl-params-end=20...)=20(ctl-end=20...))=20(when=20(>=20funny=20i)=20=
(when=20term-do-line-wrapping=20...=20...=20...)=20(setq=20=
decoded-substring=20...)=20(when=20...=20...)=20(let=20...=20...=20...=20=
...=20...=20...=20...)=20(when=20...=20...=20...)=20(setq=20=
term-current-column=20nil)=20(setq=20i=20funny))=20(pcase-exhaustive=20=
(and=20...=20...)=20(9=20...)=20(13=20...=20...)=20(10=20...)=20(8=20=
...)=20(7=20...)=20(26=20...)=20(27=20...)=20(...=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20...)=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20...=20...=20...=20...=20=
...)=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20(term-current-row)=20=
term-height)=20(term-handle-deferred-scroll))=20(set-marker=20=
(process-mark=20proc)=20(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20(...)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20...=20...=20...=20=
...)=20(when=20...=20...)))=20(not=20(eq=20win=20last-win))))=20(when=20=
(>=20term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20...)))=20(forward-line=20(-=20=
term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil)))=20(when=20=
(get-buffer-window=20(current-buffer))=20(redisplay)))=0A=20=20=
term-emulate-terminal(#<process=20something>=20"something\15\n")=0A=20=20=
read-from-minibuffer("Find=20file:=20"=20nil=20(keymap=20(9=20.=20=
selectrum-insert-current-candidate)=20(10=20.=20=
selectrum-submit-exact-input)=20(C-M-backspace=20.=20backward-kill-sexp)=20=
(27=20keymap=20(115=20keymap=20(114=20.=20=
selectrum-prescient-toggle-regexp)=20(112=20.=20=
selectrum-prescient-toggle-prefix)=20(108=20.=20=
selectrum-prescient-toggle-literal)=20(105=20.=20=
selectrum-prescient-toggle-initialism)=20(102=20.=20=
selectrum-prescient-toggle-fuzzy)=20(97=20.=20=
selectrum-prescient-toggle-anchored))=20(67108991=20.=20=
backward-kill-sexp))=20(remap=20keymap=20=
(previous-matching-history-element=20.=20selectrum-select-from-history)=20=
(kill-ring-save=20.=20selectrum-kill-ring-save)=20(end-of-buffer=20.=20=
selectrum-goto-end)=20(beginning-of-buffer=20.=20=
selectrum-goto-beginning)=20(minibuffer-beginning-of-buffer=20.=20=
selectrum-goto-beginning)=20(scroll-up-command=20.=20=
selectrum-next-page)=20(scroll-down-command=20.=20=
selectrum-previous-page)=20(exit-minibuffer=20.=20=
selectrum-select-current-candidate)=20(next-line-or-history-element=20.=20=
selectrum-next-candidate)=20(previous-line-or-history-element=20.=20=
selectrum-previous-candidate)=20(next-line=20.=20=
selectrum-next-candidate)=20(previous-line=20.=20=
selectrum-previous-candidate)=20(minibuffer-keyboard-quit=20.=20=
abort-recursive-edit)=20(keyboard-quit=20.=20abort-recursive-edit))=20=
keymap=20(remap=20keymap=20(previous-matching-history-element=20.=20=
selectrum-select-from-history))=20(menu-bar=20keymap=20(minibuf=20=
"Minibuf"=20keymap=20(previous=20menu-item=20"Previous=20History=20Item"=20=
previous-history-element=20:help=20"Put=20previous=20minibuffer=20=
history=20element=20in=20the=20min...")=20(next=20menu-item=20"Next=20=
History=20Item"=20next-history-element=20:help=20"Put=20next=20=
minibuffer=20history=20element=20in=20the=20minibuf...")=20=
(isearch-backward=20menu-item=20"Isearch=20History=20Backward"=20=
isearch-backward=20:help=20"Incrementally=20search=20minibuffer=20=
history=20backward")=20(isearch-forward=20menu-item=20"Isearch=20History=20=
Forward"=20isearch-forward=20:help=20"Incrementally=20search=20=
minibuffer=20history=20forward")=20(return=20menu-item=20"Enter"=20=
exit-minibuffer=20:key-sequence=20"\15"=20:help=20"Terminate=20input=20=
and=20exit=20minibuffer")=20(quit=20menu-item=20"Quit"=20=
abort-recursive-edit=20:help=20"Abort=20input=20and=20exit=20=
minibuffer")=20"Minibuf"))=20(10=20.=20exit-minibuffer)=20(13=20.=20=
exit-minibuffer)=20(7=20.=20minibuffer-keyboard-quit)=20(C-tab=20.=20=
file-cache-minibuffer-complete)=20(9=20.=20self-insert-command)=20=
(XF86Back=20.=20previous-history-element)=20(up=20.=20=
previous-line-or-history-element)=20(prior=20.=20=
previous-history-element)=20(XF86Forward=20.=20next-history-element)=20=
(down=20.=20next-line-or-history-element)=20(next=20.=20=
next-history-element)=20(27=20keymap=20(111=20.=20embark-act)=20(60=20.=20=
minibuffer-beginning-of-buffer)=20(114=20.=20=
previous-matching-history-element)=20(115=20.=20=
next-matching-history-element)=20(112=20.=20previous-history-element)=20=
(110=20.=20next-history-element)))=20nil=20file-name-history)=0A=20=20=
selectrum-read("Find=20file:=20"=20#f(compiled-function=20(input)=20=
#<bytecode=20-0x186c65d337d41520>)=20:default-candidate=20"~/tmp/"=20=
:initial-input=20"~/tmp/"=20:history=20file-name-history=20=
:require-match=20nil=20:may-modify-candidates=20t=20=
:minibuffer-completion-table=20read-file-name-internal=20=
:minibuffer-completion-predicate=20file-exists-p)=0A=20=20=
selectrum--completing-read-file-name("Find=20file:=20"=20=
read-file-name-internal=20file-exists-p=20confirm-after-completion=20=
"~/tmp/"=20file-name-history=20"~/tmp/"=20nil)=0A=20=20=
apply(selectrum--completing-read-file-name=20("Find=20file:=20"=20=
read-file-name-internal=20file-exists-p=20confirm-after-completion=20=
"~/tmp/"=20file-name-history=20"~/tmp/"=20nil))=0A=20=20=
#f(compiled-function=20(&rest=20args)=20#<bytecode=20=
-0x5bf689d9cc60469>)("Find=20file:=20"=20read-file-name-internal=20=
file-exists-p=20confirm-after-completion=20"~/tmp/"=20file-name-history=20=
"~/tmp/"=20nil)=0A=20=20completing-read("Find=20file:=20"=20=
read-file-name-internal=20file-exists-p=20confirm-after-completion=20=
"~/tmp/"=20file-name-history=20"~/tmp/")=0A=20=20=
read-file-name-default("Find=20file:=20"=20nil=20"/Users/spd/tmp/"=20=
confirm-after-completion=20nil=20nil)=0A=20=20=
selectrum-read-file-name("Find=20file:=20"=20nil=20"/Users/spd/tmp/"=20=
confirm-after-completion=20nil=20nil)=0A=20=20read-file-name("Find=20=
file:=20"=20nil=20"/Users/spd/tmp/"=20confirm-after-completion)=0A=20=20=
find-file-read-args("Find=20file:=20"=20confirm-after-completion)=0A=20=20=
byte-code("\300\301\302=20\"\207"=20[find-file-read-args=20"Find=20file:=20=
"=20confirm-nonexistent-file-or-buffer]=203)=0A=20=20=
call-interactively(find-file=20nil=20nil)=0A=20=20=
command-execute(find-file)=0A=0A=0A=0A>>>>=20term-emulate-window=20after=20=
selection=0Aselected=20frame:=20#<frame=20*something*=200x7ffa2b5fead8>=0A=
selected=20window:=20#<window=2010=20on=20*something*>=0Aselected=20=
window=20buffer:=20*something*=0A=20=20backtrace()=0A=20=20(let=20=
((standard-output=20(get-buffer-create=20"*redisplay-minibuffer-log*")))=20=
(princ=20(format=20">>>>=20%s\n"=20msg))=20(princ=20(format=20"selected=20=
frame:=20%s\n"=20(selected-frame)))=20(princ=20(format=20"selected=20=
window:=20%s\n"=20(selected-window)))=20(princ=20(format=20"selected=20=
window=20buffer:=20%s\n"=20(window-buffer=20(selected-window))))=20=
(backtrace)=20(princ=20"\n\n\n"))=0A=20=20=
my/redisplay-minibuffer-log("term-emulate-window=20after=20selection")=0A=
=20=20(let=20((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20(eq=20scroll=20'this)=20(not=20=
save-point)))=20(and=20(eq=20scroll=20'others)=20(not=20(eq=20selected=20=
win))))=20(when=20term-scroll-snap-to-bottom=20(goto-char=20=
term-home-marker)=20(recenter=200))=20(goto-char=20(process-mark=20=
proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20win))=20=
(recenter=20-1)))=20(when=20(and=20term-scroll-show-maximum-output=20(>=3D=
=20(point)=20(process-mark=20proc))=20(or=20term-scroll-snap-to-bottom=20=
(not=20(pos-visible-in-window-p=20(point-max)=20win))))=20=
(save-excursion=20(goto-char=20(point-max))=20(recenter=20-1))))=0A=20=20=
(progn=20(let=20((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20(eq=20scroll=20'this)=20(not=20=
save-point)))=20(and=20(eq=20scroll=20'others)=20(not=20(eq=20selected=20=
win))))=20(when=20term-scroll-snap-to-bottom=20(goto-char=20=
term-home-marker)=20(recenter=200))=20(goto-char=20(process-mark=20=
proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20win))=20=
(recenter=20-1)))=20(when=20(and=20term-scroll-show-maximum-output=20(>=3D=
=20(point)=20(process-mark=20proc))=20(or=20term-scroll-snap-to-bottom=20=
(not=20(pos-visible-in-window-p=20(point-max)=20win))))=20=
(save-excursion=20(goto-char=20(point-max))=20(recenter=20-1)))))=0A=20=20=
(if=20(eq=20(window-buffer=20win)=20(process-buffer=20proc))=20(progn=20=
(let=20((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20(eq=20scroll=20...)=20(not=20save-point)))=20=
(and=20(eq=20scroll=20'others)=20(not=20(eq=20selected=20win))))=20(when=20=
term-scroll-snap-to-bottom=20(goto-char=20term-home-marker)=20(recenter=20=
0))=20(goto-char=20(process-mark=20proc))=20(if=20(not=20=
(pos-visible-in-window-p=20(point)=20win))=20(recenter=20-1)))=20(when=20=
(and=20term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20...=20win))))=20(save-excursion=20(goto-char=20=
(point-max))=20(recenter=20-1))))))=0A=20=20(when=20(eq=20(window-buffer=20=
win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20(point)=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20'all)=20(and=20(eq=20selected=20win)=20(or=20(eq=20=
scroll=20'this)=20(not=20save-point)))=20(and=20(eq=20scroll=20'others)=20=
(not=20(eq=20selected=20win))))=20(when=20term-scroll-snap-to-bottom=20=
(goto-char=20term-home-marker)=20(recenter=200))=20(goto-char=20=
(process-mark=20proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20=
win))=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20(point-max)=20win))))=20(save-excursion=20=
(goto-char=20(point-max))=20(recenter=20-1)))))=0A=20=20(progn=20(setq=20=
win=20(next-window=20win=20nil=20t))=20(when=20(eq=20(window-buffer=20=
win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20(point)=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20'all)=20(and=20(eq=20selected=20win)=20(or=20(eq=20=
scroll=20...)=20(not=20save-point)))=20(and=20(eq=20scroll=20'others)=20=
(not=20(eq=20selected=20win))))=20(when=20term-scroll-snap-to-bottom=20=
(goto-char=20term-home-marker)=20(recenter=200))=20(goto-char=20=
(process-mark=20proc))=20(if=20(not=20(pos-visible-in-window-p=20(point)=20=
win))=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20(point)=20(process-mark=20=
proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
(pos-visible-in-window-p=20...=20win))))=20(save-excursion=20(goto-char=20=
(point-max))=20(recenter=20-1)))))=20(not=20(eq=20win=20last-win)))=0A=20=
=20(while=20(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20=
(when=20(eq=20(window-buffer=20win)=20(process-buffer=20proc))=20(let=20=
((scroll=20term-scroll-to-bottom-on-output))=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20(or=20(=3D=20=
(point)=20save-marker)=20(eq=20scroll=20t)=20(eq=20scroll=20'all)=20(and=20=
(eq=20selected=20win)=20(or=20...=20...))=20(and=20(eq=20scroll=20...)=20=
(not=20...)))=20(when=20term-scroll-snap-to-bottom=20(goto-char=20=
term-home-marker)=20(recenter=200))=20(goto-char=20(process-mark=20=
proc))=20(if=20(not=20(pos-visible-in-window-p=20...=20win))=20(recenter=20=
-1)))=20(when=20(and=20term-scroll-show-maximum-output=20(>=3D=20(point)=20=
(process-mark=20proc))=20(or=20term-scroll-snap-to-bottom=20(not=20=
...)))=20(save-excursion=20(goto-char=20(point-max))=20(recenter=20=
-1)))))=20(not=20(eq=20win=20last-win))))=0A=20=20(progn=20(when=20=
(marker-buffer=20term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
(match-string=201=20str)))=20(ctl-params-end=20(and=20funny=20(match-end=20=
1)))=20(ctl-end=20(if=20funny=20(match-end=200)=20(setq=20funny=20...)=20=
(if=20funny=20...=20...)=20(1+=20str-length))))=20(when=20(>=20funny=20=
i)=20(when=20term-do-line-wrapping=20(term-down=201=20t)=20=
(term-move-to-column=200)=20(setq=20term-do-line-wrapping=20nil))=20=
(setq=20decoded-substring=20(decode-coding-string=20(substring=20str=20i=20=
funny)=20locale-coding-system=20t))=20(when=20(=3D=20funny=20str-length)=20=
(let=20(...=20...)=20(while=20...=20...)=20(when=20...=20...=20...=20...=20=
...)))=20(let=20((old-column=20...)=20(old-point=20...)=20columns)=20=
(unless=20term-suppress-hard-newline=20(while=20...=20...=20...=20...=20=
...=20...=20...=20...))=20(insert=20decoded-substring)=20(setq=20=
term-current-column=20(current-column)=20columns=20(-=20=
term-current-column=20old-column))=20(when=20(not=20...)=20(let=20...=20=
...=20...=20...))=20(when=20term-insert-mode=20(let=20...=20...=20...=20=
...))=20(put-text-property=20old-point=20(point)=20'font-lock-face=20=
term-current-face))=20(when=20(eq=20(term-current-column)=20term-width)=20=
(term-move-columns=20-1)=20(setq=20term-do-line-wrapping=20(point)))=20=
(setq=20term-current-column=20nil)=20(setq=20i=20funny))=20=
(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20str-length)=20(aref=20str=20=
i))=20(9=20(let=20(...)=20(term-move-to-column=20...)))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20(and=20term-kill-echo-list=20=
...)=20(term-down=201=20t)))=20(8=20(term-move-columns=20-1))=20(7=20=
(beep=20t))=20(26=20(funcall=20term-command-function=20=
(decode-coding-string=20...=20locale-coding-system=20t)))=20(27=20(pcase=20=
(aref=20str=20...)=20(91=20...)=20(68=20...=20...)=20(77=20...)=20(55=20=
...=20...)=20(56=20...)=20(99=20...)=20(65=20...)))=20((or=200=2014=2015=20=
'nil)=20nil))=20(unless=20(eq=20term-do-line-wrapping=20(point))=20(setq=20=
term-do-line-wrapping=20nil))=20(if=20(term-handling-pager)=20(progn=20=
(if=20(>=20...=200)=20(setq=20term-terminal-undecoded-bytes=20...)=20(if=20=
...=20...=20...=20...)=20(goto-char=20...))=20(make-local-variable=20=
'term-pager-old-filter)=20(setq=20term-pager-old-filter=20=
(process-filter=20proc))=20(set-process-filter=20proc=20=
term-pager-filter)=20(setq=20i=20str-length))=20(setq=20i=20ctl-end)))))=20=
(when=20(>=3D=20(term-current-row)=20term-height)=20=
(term-handle-deferred-scroll))=20(set-marker=20(process-mark=20proc)=20=
(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20...=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20...)=20(and=20...=20...)=20(and=20...=20...))=20=
(when=20term-scroll-snap-to-bottom=20(goto-char=20term-home-marker)=20=
(recenter=200))=20(goto-char=20(process-mark=20proc))=20(if=20(not=20=
...)=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20...=20...)=20(or=20=
term-scroll-snap-to-bottom=20...))=20(save-excursion=20(goto-char=20...)=20=
(recenter=20-1)))))=20(not=20(eq=20win=20last-win))))=20(when=20(>=20=
term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil))=0A=20=20(unwind-protect=20(progn=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
...))=20(ctl-params-end=20(and=20funny=20...))=20(ctl-end=20(if=20funny=20=
...=20...=20...=20...)))=20(when=20(>=20funny=20i)=20(when=20=
term-do-line-wrapping=20(term-down=201=20t)=20(term-move-to-column=200)=20=
(setq=20term-do-line-wrapping=20nil))=20(setq=20decoded-substring=20=
(decode-coding-string=20...=20locale-coding-system=20t))=20(when=20(=3D=20=
funny=20str-length)=20(let=20...=20...=20...))=20(let=20(...=20...=20=
columns)=20(unless=20term-suppress-hard-newline=20...)=20(insert=20=
decoded-substring)=20(setq=20term-current-column=20...=20columns=20...)=20=
(when=20...=20...)=20(when=20term-insert-mode=20...)=20=
(put-text-property=20old-point=20...=20...=20term-current-face))=20(when=20=
(eq=20...=20term-width)=20(term-move-columns=20-1)=20(setq=20=
term-do-line-wrapping=20...))=20(setq=20term-current-column=20nil)=20=
(setq=20i=20funny))=20(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20=
str-length)=20(aref=20str=20i))=20(9=20(let=20...=20...))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20...=20...))=20(8=20=
(term-move-columns=20-1))=20(7=20(beep=20t))=20(26=20(funcall=20=
term-command-function=20...))=20(27=20(pcase=20...=20...=20...=20...=20=
...=20...=20...=20...))=20((or=200=2014=2015=20...)=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20(point))=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20(if=20...=20...=20...=20=
...)=20(make-local-variable=20...)=20(setq=20term-pager-old-filter=20=
...)=20(set-process-filter=20proc=20term-pager-filter)=20(setq=20i=20=
str-length))=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20=
(term-current-row)=20term-height)=20(term-handle-deferred-scroll))=20=
(set-marker=20(process-mark=20proc)=20(point))=20(when=20(stringp=20=
decoded-substring)=20(term-watch-for-password-prompt=20=
decoded-substring))=20(when=20save-point=20(goto-char=20save-point)=20=
(set-marker=20save-point=20nil))=20(when=20(and=20term-pending-frame=20=
(eq=20(window-buffer=20selected)=20(current-buffer)))=20=
(term-display-line=20(car=20term-pending-frame)=20(cdr=20=
term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20win=20=
selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20...=20...=20...=20...=20...)=20(when=20=
term-scroll-snap-to-bottom=20...=20...)=20(goto-char=20...)=20(if=20...=20=
...))=20(when=20(and=20term-scroll-show-maximum-output=20...=20...)=20=
(save-excursion=20...=20...))))=20(not=20(eq=20win=20last-win))))=20=
(when=20(>=20term-buffer-maximum-size=200)=20(save-excursion=20=
(goto-char=20(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil))=20(internal--after-save-selected-window=20=
save-selected-window--state))=0A=20=20(save-current-buffer=20=
(unwind-protect=20(progn=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20...)=20=
(ctl-params-end=20...)=20(ctl-end=20...))=20(when=20(>=20funny=20i)=20=
(when=20term-do-line-wrapping=20...=20...=20...)=20(setq=20=
decoded-substring=20...)=20(when=20...=20...)=20(let=20...=20...=20...=20=
...=20...=20...=20...)=20(when=20...=20...=20...)=20(setq=20=
term-current-column=20nil)=20(setq=20i=20funny))=20(pcase-exhaustive=20=
(and=20...=20...)=20(9=20...)=20(13=20...=20...)=20(10=20...)=20(8=20=
...)=20(7=20...)=20(26=20...)=20(27=20...)=20(...=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20...)=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20...=20...=20...=20...=20=
...)=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20(term-current-row)=20=
term-height)=20(term-handle-deferred-scroll))=20(set-marker=20=
(process-mark=20proc)=20(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20(...)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20...=20...=20...=20=
...)=20(when=20...=20...)))=20(not=20(eq=20win=20last-win))))=20(when=20=
(>=20term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20...)))=20(forward-line=20(-=20=
term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil))=20=
(internal--after-save-selected-window=20save-selected-window--state)))=0A=
=20=20(let=20((save-selected-window--state=20=
(internal--before-save-selected-window)))=20(save-current-buffer=20=
(unwind-protect=20(progn=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20...=20...)=20=
(term-in-line-mode))=20(narrow-to-region=20(point-min)=20(process-mark=20=
proc)))=20(when=20term-log-buffer=20(princ=20str=20term-log-buffer))=20=
(when=20term-terminal-undecoded-bytes=20(setq=20str=20(concat=20=
term-terminal-undecoded-bytes=20str))=20(setq=20str-length=20(length=20=
str))=20(setq=20term-terminal-undecoded-bytes=20nil))=20(while=20(<=20i=20=
str-length)=20(setq=20funny=20(string-match=20term-control-seq-regexp=20=
str=20i))=20(let=20(...=20...=20...)=20(when=20...=20...=20...=20...=20=
...=20...=20...=20...)=20(pcase-exhaustive=20...=20...=20...=20...=20...=20=
...=20...=20...=20...)=20(unless=20...=20...)=20(if=20...=20...=20=
...))))=20(when=20(>=3D=20(term-current-row)=20term-height)=20=
(term-handle-deferred-scroll))=20(set-marker=20(process-mark=20proc)=20=
(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
...=20...)=20(let=20...=20...=20...=20...=20...=20...))=20(not=20(eq=20=
win=20last-win))))=20(when=20(>=20term-buffer-maximum-size=200)=20=
(save-excursion=20(goto-char=20(process-mark=20...))=20(forward-line=20=
(-=20term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil))=20=
(internal--after-save-selected-window=20save-selected-window--state))))=0A=
=20=20(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
(match-string=201=20str)))=20(ctl-params-end=20(and=20funny=20(match-end=20=
1)))=20(ctl-end=20(if=20funny=20(match-end=200)=20(setq=20funny=20...)=20=
(if=20funny=20...=20...)=20(1+=20str-length))))=20(when=20(>=20funny=20=
i)=20(when=20term-do-line-wrapping=20(term-down=201=20t)=20=
(term-move-to-column=200)=20(setq=20term-do-line-wrapping=20nil))=20=
(setq=20decoded-substring=20(decode-coding-string=20(substring=20str=20i=20=
funny)=20locale-coding-system=20t))=20(when=20(=3D=20funny=20str-length)=20=
(let=20(...=20...)=20(while=20...=20...)=20(when=20...=20...=20...=20...=20=
...)))=20(let=20((old-column=20...)=20(old-point=20...)=20columns)=20=
(unless=20term-suppress-hard-newline=20(while=20...=20...=20...=20...=20=
...=20...=20...=20...))=20(insert=20decoded-substring)=20(setq=20=
term-current-column=20(current-column)=20columns=20(-=20=
term-current-column=20old-column))=20(when=20(not=20...)=20(let=20...=20=
...=20...=20...))=20(when=20term-insert-mode=20(let=20...=20...=20...=20=
...))=20(put-text-property=20old-point=20(point)=20'font-lock-face=20=
term-current-face))=20(when=20(eq=20(term-current-column)=20term-width)=20=
(term-move-columns=20-1)=20(setq=20term-do-line-wrapping=20(point)))=20=
(setq=20term-current-column=20nil)=20(setq=20i=20funny))=20=
(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20str-length)=20(aref=20str=20=
i))=20(9=20(let=20(...)=20(term-move-to-column=20...)))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20(and=20term-kill-echo-list=20=
...)=20(term-down=201=20t)))=20(8=20(term-move-columns=20-1))=20(7=20=
(beep=20t))=20(26=20(funcall=20term-command-function=20=
(decode-coding-string=20...=20locale-coding-system=20t)))=20(27=20(pcase=20=
(aref=20str=20...)=20(91=20...)=20(68=20...=20...)=20(77=20...)=20(55=20=
...=20...)=20(56=20...)=20(99=20...)=20(65=20...)))=20((or=200=2014=2015=20=
'nil)=20nil))=20(unless=20(eq=20term-do-line-wrapping=20(point))=20(setq=20=
term-do-line-wrapping=20nil))=20(if=20(term-handling-pager)=20(progn=20=
(if=20(>=20...=200)=20(setq=20term-terminal-undecoded-bytes=20...)=20(if=20=
...=20...=20...=20...)=20(goto-char=20...))=20(make-local-variable=20=
'term-pager-old-filter)=20(setq=20term-pager-old-filter=20=
(process-filter=20proc))=20(set-process-filter=20proc=20=
term-pager-filter)=20(setq=20i=20str-length))=20(setq=20i=20ctl-end)))))=20=
(when=20(>=3D=20(term-current-row)=20term-height)=20=
(term-handle-deferred-scroll))=20(set-marker=20(process-mark=20proc)=20=
(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20(=3D=20...=20save-marker)=20(eq=20scroll=20=
t)=20(eq=20scroll=20...)=20(and=20...=20...)=20(and=20...=20...))=20=
(when=20term-scroll-snap-to-bottom=20(goto-char=20term-home-marker)=20=
(recenter=200))=20(goto-char=20(process-mark=20proc))=20(if=20(not=20=
...)=20(recenter=20-1)))=20(when=20(and=20=
term-scroll-show-maximum-output=20(>=3D=20...=20...)=20(or=20=
term-scroll-snap-to-bottom=20...))=20(save-excursion=20(goto-char=20...)=20=
(recenter=20-1)))))=20(not=20(eq=20win=20last-win))))=20(when=20(>=20=
term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil))=0A=20=20(let*=20((i=200)=20funny=20decoded-substring=20save-point=20=
save-marker=20win=20(inhibit-read-only=20t)=20(buffer-undo-list=20t)=20=
(selected=20(selected-window))=20last-win=20(str-length=20(length=20=
str)))=20(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20(and=20funny=20=
...))=20(ctl-params-end=20(and=20funny=20...))=20(ctl-end=20(if=20funny=20=
...=20...=20...=20...)))=20(when=20(>=20funny=20i)=20(when=20=
term-do-line-wrapping=20(term-down=201=20t)=20(term-move-to-column=200)=20=
(setq=20term-do-line-wrapping=20nil))=20(setq=20decoded-substring=20=
(decode-coding-string=20...=20locale-coding-system=20t))=20(when=20(=3D=20=
funny=20str-length)=20(let=20...=20...=20...))=20(let=20(...=20...=20=
columns)=20(unless=20term-suppress-hard-newline=20...)=20(insert=20=
decoded-substring)=20(setq=20term-current-column=20...=20columns=20...)=20=
(when=20...=20...)=20(when=20term-insert-mode=20...)=20=
(put-text-property=20old-point=20...=20...=20term-current-face))=20(when=20=
(eq=20...=20term-width)=20(term-move-columns=20-1)=20(setq=20=
term-do-line-wrapping=20...))=20(setq=20term-current-column=20nil)=20=
(setq=20i=20funny))=20(pcase-exhaustive=20(and=20(<=3D=20ctl-end=20=
str-length)=20(aref=20str=20i))=20(9=20(let=20...=20...))=20(13=20=
(term-vertical-motion=200)=20(setq=20term-current-column=20=
term-start-line-column))=20(10=20(unless=20...=20...))=20(8=20=
(term-move-columns=20-1))=20(7=20(beep=20t))=20(26=20(funcall=20=
term-command-function=20...))=20(27=20(pcase=20...=20...=20...=20...=20=
...=20...=20...=20...))=20((or=200=2014=2015=20...)=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20(point))=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20(if=20...=20...=20...=20=
...)=20(make-local-variable=20...)=20(setq=20term-pager-old-filter=20=
...)=20(set-process-filter=20proc=20term-pager-filter)=20(setq=20i=20=
str-length))=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20=
(term-current-row)=20term-height)=20(term-handle-deferred-scroll))=20=
(set-marker=20(process-mark=20proc)=20(point))=20(when=20(stringp=20=
decoded-substring)=20(term-watch-for-password-prompt=20=
decoded-substring))=20(when=20save-point=20(goto-char=20save-point)=20=
(set-marker=20save-point=20nil))=20(when=20(and=20term-pending-frame=20=
(eq=20(window-buffer=20selected)=20(current-buffer)))=20=
(term-display-line=20(car=20term-pending-frame)=20(cdr=20=
term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20win=20=
selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20((scroll=20=
term-scroll-to-bottom-on-output))=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20before=20selection")=20(select-window=20win)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20after=20=
selection")=20(when=20(or=20...=20...=20...=20...=20...)=20(when=20=
term-scroll-snap-to-bottom=20...=20...)=20(goto-char=20...)=20(if=20...=20=
...))=20(when=20(and=20term-scroll-show-maximum-output=20...=20...)=20=
(save-excursion=20...=20...))))=20(not=20(eq=20win=20last-win))))=20=
(when=20(>=20term-buffer-maximum-size=200)=20(save-excursion=20=
(goto-char=20(process-mark=20(get-buffer-process=20(current-buffer))))=20=
(forward-line=20(-=20term-buffer-maximum-size))=20(beginning-of-line)=20=
(delete-region=20(point-min)=20(point))))=20(set-marker=20save-marker=20=
nil)))=0A=20=20(save-current-buffer=20(set-buffer=20(process-buffer=20=
proc))=20(let*=20((i=200)=20funny=20decoded-substring=20save-point=20=
save-marker=20win=20(inhibit-read-only=20t)=20(buffer-undo-list=20t)=20=
(selected=20(selected-window))=20last-win=20(str-length=20(length=20=
str)))=20(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20...)=20=
(ctl-params-end=20...)=20(ctl-end=20...))=20(when=20(>=20funny=20i)=20=
(when=20term-do-line-wrapping=20...=20...=20...)=20(setq=20=
decoded-substring=20...)=20(when=20...=20...)=20(let=20...=20...=20...=20=
...=20...=20...=20...)=20(when=20...=20...=20...)=20(setq=20=
term-current-column=20nil)=20(setq=20i=20funny))=20(pcase-exhaustive=20=
(and=20...=20...)=20(9=20...)=20(13=20...=20...)=20(10=20...)=20(8=20=
...)=20(7=20...)=20(26=20...)=20(27=20...)=20(...=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20...)=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20...=20...=20...=20...=20=
...)=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20(term-current-row)=20=
term-height)=20(term-handle-deferred-scroll))=20(set-marker=20=
(process-mark=20proc)=20(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20(...)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20...=20...=20...=20=
...)=20(when=20...=20...)))=20(not=20(eq=20win=20last-win))))=20(when=20=
(>=20term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20...)))=20(forward-line=20(-=20=
term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil)))=20(when=20=
(get-buffer-window=20(current-buffer))=20(redisplay)))=0A=20=20=
(with-current-buffer=20(process-buffer=20proc)=20(let*=20((i=200)=20=
funny=20decoded-substring=20save-point=20save-marker=20win=20=
(inhibit-read-only=20t)=20(buffer-undo-list=20t)=20(selected=20=
(selected-window))=20last-win=20(str-length=20(length=20str)))=20=
(save-selected-window=20(when=20(marker-buffer=20=
term-pending-delete-marker)=20(delete-region=20=
term-pending-delete-marker=20(process-mark=20proc))=20(set-marker=20=
term-pending-delete-marker=20nil))=20(when=20(/=3D=20(point)=20=
(process-mark=20proc))=20(setq=20save-point=20(point-marker)))=20(setf=20=
term-vertical-motion=20(if=20(eq=20(window-buffer)=20(current-buffer))=20=
'vertical-motion=20'term-buffer-vertical-motion))=20(setq=20save-marker=20=
(copy-marker=20(process-mark=20proc)))=20(goto-char=20(process-mark=20=
proc))=20(save-restriction=20(when=20(and=20(>=20(point-max)=20=
(process-mark=20proc))=20(term-in-line-mode))=20(narrow-to-region=20=
(point-min)=20(process-mark=20proc)))=20(when=20term-log-buffer=20(princ=20=
str=20term-log-buffer))=20(when=20term-terminal-undecoded-bytes=20(setq=20=
str=20(concat=20term-terminal-undecoded-bytes=20str))=20(setq=20=
str-length=20(length=20str))=20(setq=20term-terminal-undecoded-bytes=20=
nil))=20(while=20(<=20i=20str-length)=20(setq=20funny=20(string-match=20=
term-control-seq-regexp=20str=20i))=20(let=20((ctl-params=20...)=20=
(ctl-params-end=20...)=20(ctl-end=20...))=20(when=20(>=20funny=20i)=20=
(when=20term-do-line-wrapping=20...=20...=20...)=20(setq=20=
decoded-substring=20...)=20(when=20...=20...)=20(let=20...=20...=20...=20=
...=20...=20...=20...)=20(when=20...=20...=20...)=20(setq=20=
term-current-column=20nil)=20(setq=20i=20funny))=20(pcase-exhaustive=20=
(and=20...=20...)=20(9=20...)=20(13=20...=20...)=20(10=20...)=20(8=20=
...)=20(7=20...)=20(26=20...)=20(27=20...)=20(...=20nil))=20(unless=20=
(eq=20term-do-line-wrapping=20...)=20(setq=20term-do-line-wrapping=20=
nil))=20(if=20(term-handling-pager)=20(progn=20...=20...=20...=20...=20=
...)=20(setq=20i=20ctl-end)))))=20(when=20(>=3D=20(term-current-row)=20=
term-height)=20(term-handle-deferred-scroll))=20(set-marker=20=
(process-mark=20proc)=20(point))=20(when=20(stringp=20decoded-substring)=20=
(term-watch-for-password-prompt=20decoded-substring))=20(when=20=
save-point=20(goto-char=20save-point)=20(set-marker=20save-point=20nil))=20=
(when=20(and=20term-pending-frame=20(eq=20(window-buffer=20selected)=20=
(current-buffer)))=20(term-display-line=20(car=20term-pending-frame)=20=
(cdr=20term-pending-frame))=20(setq=20term-pending-frame=20nil))=20(setq=20=
win=20selected)=20(while=20(window-minibuffer-p=20win)=20(setq=20win=20=
(next-window=20win=20nil=20t)))=20(setq=20last-win=20win)=20(while=20=
(progn=20(setq=20win=20(next-window=20win=20nil=20t))=20(when=20(eq=20=
(window-buffer=20win)=20(process-buffer=20proc))=20(let=20(...)=20=
(my/redisplay-minibuffer-log=20"term-emulate-window=20before=20=
selection")=20(select-window=20win)=20(my/redisplay-minibuffer-log=20=
"term-emulate-window=20after=20selection")=20(when=20...=20...=20...=20=
...)=20(when=20...=20...)))=20(not=20(eq=20win=20last-win))))=20(when=20=
(>=20term-buffer-maximum-size=200)=20(save-excursion=20(goto-char=20=
(process-mark=20(get-buffer-process=20...)))=20(forward-line=20(-=20=
term-buffer-maximum-size))=20(beginning-of-line)=20(delete-region=20=
(point-min)=20(point))))=20(set-marker=20save-marker=20nil)))=20(when=20=
(get-buffer-window=20(current-buffer))=20(redisplay)))=0A=20=20=
term-emulate-terminal(#<process=20something>=20"something\15\n")=0A=20=20=
read-from-minibuffer("Find=20file:=20"=20nil=20(keymap=20(9=20.=20=
selectrum-insert-current-candidate)=20(10=20.=20=
selectrum-submit-exact-input)=20(C-M-backspace=20.=20backward-kill-sexp)=20=
(27=20keymap=20(115=20keymap=20(114=20.=20=
selectrum-prescient-toggle-regexp)=20(112=20.=20=
selectrum-prescient-toggle-prefix)=20(108=20.=20=
selectrum-prescient-toggle-literal)=20(105=20.=20=
selectrum-prescient-toggle-initialism)=20(102=20.=20=
selectrum-prescient-toggle-fuzzy)=20(97=20.=20=
selectrum-prescient-toggle-anchored))=20(67108991=20.=20=
backward-kill-sexp))=20(remap=20keymap=20=
(previous-matching-history-element=20.=20selectrum-select-from-history)=20=
(kill-ring-save=20.=20selectrum-kill-ring-save)=20(end-of-buffer=20.=20=
selectrum-goto-end)=20(beginning-of-buffer=20.=20=
selectrum-goto-beginning)=20(minibuffer-beginning-of-buffer=20.=20=
selectrum-goto-beginning)=20(scroll-up-command=20.=20=
selectrum-next-page)=20(scroll-down-command=20.=20=
selectrum-previous-page)=20(exit-minibuffer=20.=20=
selectrum-select-current-candidate)=20(next-line-or-history-element=20.=20=
selectrum-next-candidate)=20(previous-line-or-history-element=20.=20=
selectrum-previous-candidate)=20(next-line=20.=20=
selectrum-next-candidate)=20(previous-line=20.=20=
selectrum-previous-candidate)=20(minibuffer-keyboard-quit=20.=20=
abort-recursive-edit)=20(keyboard-quit=20.=20abort-recursive-edit))=20=
keymap=20(remap=20keymap=20(previous-matching-history-element=20.=20=
selectrum-select-from-history))=20(menu-bar=20keymap=20(minibuf=20=
"Minibuf"=20keymap=20(previous=20menu-item=20"Previous=20History=20Item"=20=
previous-history-element=20:help=20"Put=20previous=20minibuffer=20=
history=20element=20in=20the=20min...")=20(next=20menu-item=20"Next=20=
History=20Item"=20next-history-element=20:help=20"Put=20next=20=
minibuffer=20history=20element=20in=20the=20minibuf...")=20=
(isearch-backward=20menu-item=20"Isearch=20History=20Backward"=20=
isearch-backward=20:help=20"Incrementally=20search=20minibuffer=20=
history=20backward")=20(isearch-forward=20menu-item=20"Isearch=20History=20=
Forward"=20isearch-forward=20:help=20"Incrementally=20search=20=
minibuffer=20history=20forward")=20(return=20menu-item=20"Enter"=20=
exit-minibuffer=20:key-sequence=20"\15"=20:help=20"Terminate=20input=20=
and=20exit=20minibuffer")=20(quit=20menu-item=20"Quit"=20=
abort-recursive-edit=20:help=20"Abort=20input=20and=20exit=20=
minibuffer")=20"Minibuf"))=20(10=20.=20exit-minibuffer)=20(13=20.=20=
exit-minibuffer)=20(7=20.=20minibuffer-keyboard-quit)=20(C-tab=20.=20=
file-cache-minibuffer-complete)=20(9=20.=20self-insert-command)=20=
(XF86Back=20.=20previous-history-element)=20(up=20.=20=
previous-line-or-history-element)=20(prior=20.=20=
previous-history-element)=20(XF86Forward=20.=20next-history-element)=20=
(down=20.=20next-line-or-history-element)=20(next=20.=20=
next-history-element)=20(27=20keymap=20(111=20.=20embark-act)=20(60=20.=20=
minibuffer-beginning-of-buffer)=20(114=20.=20=
previous-matching-history-element)=20(115=20.=20=
next-matching-history-element)=20(112=20.=20previous-history-element)=20=
(110=20.=20next-history-element)))=20nil=20file-name-history)=0A=20=20=
selectrum-read("Find=20file:=20"=20#f(compiled-function=20(input)=20=
#<bytecode=20-0x186c65d337d41520>)=20:default-candidate=20"~/tmp/"=20=
:initial-input=20"~/tmp/"=20:history=20file-name-history=20=
:require-match=20nil=20:may-modify-candidates=20t=20=
:minibuffer-completion-table=20read-file-name-internal=20=
:minibuffer-completion-predicate=20file-exists-p)=0A=20=20=
selectrum--completing-read-file-name("Find=20file:=20"=20=
read-file-name-internal=20file-exists-p=20confirm-after-completion=20=
"~/tmp/"=20file-name-history=20"~/tmp/"=20nil)=0A=20=20=
apply(selectrum--completing-read-file-name=20("Find=20file:=20"=20=
read-file-name-internal=20file-exists-p=20confirm-after-completion=20=
"~/tmp/"=20file-name-history=20"~/tmp/"=20nil))=0A=20=20=
#f(compiled-function=20(&rest=20args)=20#<bytecode=20=
-0x5bf689d9cc60469>)("Find=20file:=20"=20read-file-name-internal=20=
file-exists-p=20confirm-after-completion=20"~/tmp/"=20file-name-history=20=
"~/tmp/"=20nil)=0A=20=20completing-read("Find=20file:=20"=20=
read-file-name-internal=20file-exists-p=20confirm-after-completion=20=
"~/tmp/"=20file-name-history=20"~/tmp/")=0A=20=20=
read-file-name-default("Find=20file:=20"=20nil=20"/Users/spd/tmp/"=20=
confirm-after-completion=20nil=20nil)=0A=20=20=
selectrum-read-file-name("Find=20file:=20"=20nil=20"/Users/spd/tmp/"=20=
confirm-after-completion=20nil=20nil)=0A=20=20read-file-name("Find=20=
file:=20"=20nil=20"/Users/spd/tmp/"=20confirm-after-completion)=0A=20=20=
find-file-read-args("Find=20file:=20"=20confirm-after-completion)=0A=20=20=
byte-code("\300\301\302=20\"\207"=20[find-file-read-args=20"Find=20file:=20=
"=20confirm-nonexistent-file-or-buffer]=203)=0A=20=20=
call-interactively(find-file=20nil=20nil)=0A=20=20=
command-execute(find-file)=0A=

--Apple-Mail=_1AF963F5-C33E-4E33-98B0-1E23A573EC35
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><br =
class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D"">On Dec 2, 2020, at 1:24 PM, Sean Devlin &lt;<a =
href=3D"mailto:spd@HIDDEN" class=3D"">spd@HIDDEN</a>&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><meta =
charset=3D"UTF-8" class=3D""><span style=3D"caret-color: rgb(0, 0, 0); =
font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none; float: none; display: inline !important;" =
class=3D"">Hi Martin,</span><br style=3D"caret-color: rgb(0, 0, 0); =
font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><br style=3D"caret-color: rgb(0, 0, =
0); font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><span style=3D"caret-color: rgb(0, 0, =
0); font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none; float: none; display: inline !important;" =
class=3D"">Thanks for all the helpful info!</span><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;" =
class=3D""><blockquote type=3D"cite" style=3D"font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; =
widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; =
-webkit-text-stroke-width: 0px; text-decoration: none;" class=3D"">On =
Dec 2, 2020, at 2:52 AM, martin rudalics &lt;<a =
href=3D"mailto:rudalics@HIDDEN" class=3D"">rudalics@HIDDEN</a>&gt; =
wrote:<br class=3D""><br class=3D""><blockquote type=3D"cite" class=3D"">I=
 forgot to say that _all_ normal mini window resizing goes through<br =
class=3D"">'window--resize-root-window-vertically' in window.el. =
&nbsp;So it will<br class=3D"">probably suffice to instrument just that =
function (in an already running<br class=3D"">Emacs only, else you have =
to rebuild because window.el is preloaded) and<br class=3D"">don't have =
to tinker with C code at all.<br class=3D""></blockquote><br =
class=3D"">Imprecise again: The above covers only the automatic resizing =
triggered<br class=3D"">by redisplay (which is what we are interested =
in). &nbsp;Manual resizing the<br class=3D"">minibuffer window is done =
in 'window--resize-mini-window' (also in<br class=3D"">window.el) so if =
such manual resizing may happen in between you have to<br =
class=3D"">instrument that as well.<br class=3D""></blockquote><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""><span =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; text-decoration: none; float: none; =
display: inline !important;" class=3D"">I see, I=E2=80=99ll take a look =
at these functions. Thanks!</span><br style=3D"caret-color: rgb(0, 0, =
0); font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><br style=3D"caret-color: rgb(0, 0, =
0); font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><blockquote type=3D"cite" =
style=3D"font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; =
orphans: auto; text-align: start; text-indent: 0px; text-transform: =
none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><br =
class=3D"">martin</blockquote></div></blockquote></div><br =
class=3D""></body></html>=

--Apple-Mail=_1AF963F5-C33E-4E33-98B0-1E23A573EC35--

--Apple-Mail=_DA755593-6DB7-496C-9F93-F9FB575B5D31--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 2 Dec 2020 18:24:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 02 13:24:35 2020
Received: from localhost ([127.0.0.1]:37352 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kkWnq-00061S-Ql
	for submit <at> debbugs.gnu.org; Wed, 02 Dec 2020 13:24:35 -0500
Received: from mail-qt1-f170.google.com ([209.85.160.170]:46106)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <spd@HIDDEN>) id 1kkWnp-00061F-ER
 for 44933 <at> debbugs.gnu.org; Wed, 02 Dec 2020 13:24:33 -0500
Received: by mail-qt1-f170.google.com with SMTP id f15so1731063qto.13
 for <44933 <at> debbugs.gnu.org>; Wed, 02 Dec 2020 10:24:33 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=toadstyle-org.20150623.gappssmtp.com; s=20150623;
 h=mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=6dwSqgJSr9lOXuSYbC7kbl6DmKduX0EJdvo8to5Q8Pk=;
 b=Vg5HWbZzg1ihHLwaKp7JzI2uJ3JgsUkrppgWxvP/JOFynOGN+fV7VGadz7lJXgu1wK
 0Waod6vmvsPYNT4toBCe1srh8ztzyzyS8gEE5QVG+LVfxN0KrCPb/LxsF0/5GLBhN5RY
 pZArhmMxJa4TYwcIPZUIsEF/IKrHebM1yulL+a8P9QmHdzn108yGc+f2wQjXmvbtiXFa
 eJ3Fd6UQck54KqwRsQMlYPk6oDmFEMkL46wSlMHOdB6vbmcwIP3NK7sU8d+Rf9AXmnmr
 ElzUwbboKVGwfg+6iTGyAQLRRqjeDvTXAUTiTjNzj3sHkzRDXvrXo5HvhdkzQtf7U01b
 b3sg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=6dwSqgJSr9lOXuSYbC7kbl6DmKduX0EJdvo8to5Q8Pk=;
 b=j8CuDdxl54sEGtH7dKYzYnAucnhCCoFfqH9i/FJn08TWoYYSaKm1/IBX/yPZdURkT5
 9a/RDortixUP1q96pmp8W7PtARzavAWOKFA/rLriFlHKO2MjbI/fXbAY5QfbDe0OZa5p
 mrN4S04CfVFzRsXL8Jw+d773P95TeYbw/9tpH85m0CkjEy1fYTfTmTI6Vzk75qlo3wCl
 fienz7gjpOj9ZcJ6o6/FknWTEMG3Twx0wbJB4n7XHXcVujbdRD1sNYNyn4BQSYiWUC84
 fg11ualzW2DqivmL7xxjxXHRMhXwLrGOC2Vge1/QjnGkf6az3MC+8aPHo27IDpetvX2T
 9FyA==
X-Gm-Message-State: AOAM5309KFALRAHvQRl8YOaVONLgrQxnMl4Vef/ymh/5qO9mKdGhEFAO
 oCYd6CoJ4NpwJHqyX80amaeLkw==
X-Google-Smtp-Source: ABdhPJxmEWZwaT6aRgdXmS3asNO0751H98BwULqRWXx0v2+umRZ8JPfeqjbadotzuxyVa5fsJSs7GA==
X-Received: by 2002:ac8:e06:: with SMTP id a6mr4114094qti.384.1606933467753;
 Wed, 02 Dec 2020 10:24:27 -0800 (PST)
Received: from ?IPv6:2604:2000:14c6:84b0:44d8:a8f0:1921:4e6a?
 ([2604:2000:14c6:84b0:44d8:a8f0:1921:4e6a])
 by smtp.gmail.com with ESMTPSA id q28sm2592422qkn.39.2020.12.02.10.24.26
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 02 Dec 2020 10:24:27 -0800 (PST)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.40.0.2.31\))
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
From: Sean Devlin <spd@HIDDEN>
In-Reply-To: <2c47fc05-37f4-8b3c-7aa3-7cb64b31e3c1@HIDDEN>
Date: Wed, 2 Dec 2020 13:24:24 -0500
Content-Transfer-Encoding: quoted-printable
Message-Id: <27E5B1BA-BD49-493D-8E12-CE42B1AD3E2F@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
 <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
 <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
 <000004F6-7D67-4D1D-84EA-517E254FBBDE@HIDDEN>
 <782db472-6b44-c62c-e175-44e77589b85f@HIDDEN>
 <E57AA3DA-5245-4E76-830C-59B002C46033@HIDDEN>
 <2802d2d9-2f09-ca7a-1a79-abf2eb0fa376@HIDDEN>
 <2c47fc05-37f4-8b3c-7aa3-7cb64b31e3c1@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
X-Mailer: Apple Mail (2.3654.40.0.2.31)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: -1.0 (-)

Hi Martin,

Thanks for all the helpful info!

> On Dec 2, 2020, at 2:52 AM, martin rudalics <rudalics@HIDDEN> wrote:
>=20
> > I forgot to say that _all_ normal mini window resizing goes through
> > 'window--resize-root-window-vertically' in window.el.  So it will
> > probably suffice to instrument just that function (in an already =
running
> > Emacs only, else you have to rebuild because window.el is preloaded) =
and
> > don't have to tinker with C code at all.
>=20
> Imprecise again: The above covers only the automatic resizing =
triggered
> by redisplay (which is what we are interested in).  Manual resizing =
the
> minibuffer window is done in 'window--resize-mini-window' (also in
> window.el) so if such manual resizing may happen in between you have =
to
> instrument that as well.

I see, I=E2=80=99ll take a look at these functions. Thanks!

>=20
> martin





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 2 Dec 2020 07:52:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 02 02:52:59 2020
Received: from localhost ([127.0.0.1]:34055 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kkMwd-0005F1-0R
	for submit <at> debbugs.gnu.org; Wed, 02 Dec 2020 02:52:59 -0500
Received: from mout.gmx.net ([212.227.15.15]:53975)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <rudalics@HIDDEN>) id 1kkMwa-0005Ei-S5
 for 44933 <at> debbugs.gnu.org; Wed, 02 Dec 2020 02:52:57 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1606895570;
 bh=CzeZvCUETZUsssR5OA1NddPdte2FEnVd/i6W5sIOTTc=;
 h=X-UI-Sender-Class:Subject:From:To:Cc:References:Date:In-Reply-To;
 b=K8KbTPQZjopt2U3HFbOl3ke3DAwhOCcWs0BJc1FlOe4dxDJjxo/buSXVSfQVA6vtR
 +N4aV/mi1yLLheTNwdVD/a2BaeyQMfbyd4uHjhjJnFoNlea/4eeaeB4++MtxhSRfFx
 hgmiSv2npvTMMtOw1J479QRl6Y1swSHyeyNagKOw=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [192.168.1.100] ([212.95.5.29]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MtOKi-1juBzz3cgY-00umve; Wed, 02
 Dec 2020 08:52:49 +0100
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
From: martin rudalics <rudalics@HIDDEN>
To: Sean Devlin <spd@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
 <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
 <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
 <000004F6-7D67-4D1D-84EA-517E254FBBDE@HIDDEN>
 <782db472-6b44-c62c-e175-44e77589b85f@HIDDEN>
 <E57AA3DA-5245-4E76-830C-59B002C46033@HIDDEN>
 <2802d2d9-2f09-ca7a-1a79-abf2eb0fa376@HIDDEN>
Message-ID: <2c47fc05-37f4-8b3c-7aa3-7cb64b31e3c1@HIDDEN>
Date: Wed, 2 Dec 2020 08:52:49 +0100
MIME-Version: 1.0
In-Reply-To: <2802d2d9-2f09-ca7a-1a79-abf2eb0fa376@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:lx3mHuFjoCpnPgKeHb+2BxlqBfdof9MuXTg7R33x9ZGD1dAMmKP
 CT8Lzg3HYX0djcqy5cdYKs0BcudhHTrGlS11bQlCW+0j0O3qw/AQeAFYdaCpFj1ptZb4YnU
 fTaG2b/fd5OE2lD6tQ7ifvGYICXLyDtaPjg3Ope/55kstTEa4ZjHDxEdX8xRxMRvc3jwVGz
 ELaRCdgxpXpkI8PCdxK5w==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:jRxzu4xpC+c=:1ZZGsI0EVU6eZT65GY6LqL
 RSoLINJROWT74woZgIlYDyVx5F6DeFiCKYNRSCYvQ0SePgcHoFwWZskbThltZy1yaqzjizTz8
 bqtBArmwNX3oVXKjhJ1c3I0Zj2vJkscZxNOor0g61QyDywHvOPdpzlkEsufXkQxi9ABsTyOI9
 cZuXCnkfFVlerJs6g8ygMwQbeX6QhkOlP/diSYi+ZJqALkGOebHD3DiQKWtnmsdFjZtBhYiXF
 z55fWE9ch0uT27llectltxiQ4Fk5u3mZ366NlxgtaZYtoNfxOeuHmNuXGCJZeHWFat6faH4RW
 Pq03O+jRNAdZGsHgxAV7qLrEBXGrQNmo+X6EVz3Tptcc5k7LNbF2qMIKlscMnquaOY9i9P6Wf
 tnsSb5vfT/2hI0Xz2dLBPqHLa3ncHMYmTimi7znTsvHsSeArruXuf6/wgOY1yVxeGglZ65yjY
 LdUtMdb3enkgMtLXpLEShY2ZszUkYkZpG5nvqM7Pj0FcsVp+xv3tVb4uHhxFrao1CzOJfiVOP
 3itZDcfiODdwyHlZ3WdKNEI53boOR6diS0Thg8yWIGDrnTSegJiuk+FVZML4M17NaVmSmhw8B
 Ic4FRUJZ0I4PmKVQ0pNLjvQjLc/Uxjvvfe0wH0QP/PhYhCuOVaZMehocXfvnuB3d0bruG07cq
 CDrUfbMNlqJuB/QV1SgAk444/ISAEI7XkCFB5oSAXZ/ozQD04laFGOkGmR3aJ7KEcCyzJpv7E
 FD4wnvj7RIq1KU6DVLBUTDJn0qvq0PNPt2ookIplYzMRTYQ6+3PoRNMjovRTBZ0+B+9W8kCEF
 zkAZrxJIOi6F6e6Ogvh64MSSe8/pXPvLWxTjmxD8VmVUnr51iDYFjl1CdRTz91/cD9F1aWePd
 E2nGeVkIdCHznXal9m3wKV49edNU2BvNs5bOa8xhY=
X-Spam-Score: 2.9 (++)
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:  > I forgot to say that _all_ normal mini window resizing
 goes through > 'window--resize-root-window-vertically' in window.el. So it
 will > probably suffice to instrument just that function (in an alr [...]
 Content analysis details:   (2.9 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
 low trust [212.227.15.15 listed in list.dnswl.org]
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [212.95.5.29 listed in zen.spamhaus.org]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [212.227.15.15 listed in wl.mailspike.net]
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (rudalics[at]gmx.at)
 -0.0 SPF_PASS               SPF: sender matches SPF record
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: 1.9 (+)
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:  > I forgot to say that _all_ normal mini window resizing
   goes through > 'window--resize-root-window-vertically' in window.el. So it
    will > probably suffice to instrument just that function (in an alr [...]
    
 
 Content analysis details:   (1.9 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
                             [212.227.15.15 listed in wl.mailspike.net]
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [212.95.5.29 listed in zen.spamhaus.org]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
                             low trust
                             [212.227.15.15 listed in list.dnswl.org]
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (rudalics[at]gmx.at)
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

 > I forgot to say that _all_ normal mini window resizing goes through
 > 'window--resize-root-window-vertically' in window.el.  So it will
 > probably suffice to instrument just that function (in an already running
 > Emacs only, else you have to rebuild because window.el is preloaded) and
 > don't have to tinker with C code at all.

Imprecise again: The above covers only the automatic resizing triggered
by redisplay (which is what we are interested in).  Manual resizing the
minibuffer window is done in 'window--resize-mini-window' (also in
window.el) so if such manual resizing may happen in between you have to
instrument that as well.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 2 Dec 2020 07:45:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 02 02:45:27 2020
Received: from localhost ([127.0.0.1]:34050 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kkMpL-000541-4t
	for submit <at> debbugs.gnu.org; Wed, 02 Dec 2020 02:45:27 -0500
Received: from mout.gmx.net ([212.227.15.15]:52889)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <rudalics@HIDDEN>) id 1kkMpH-00053i-Ps
 for 44933 <at> debbugs.gnu.org; Wed, 02 Dec 2020 02:45:25 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1606895117;
 bh=uncyA/fPeUlKNMeZ+z5qH+W/TbtezFrMK1QTqnF+/mI=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=M4cuWlgfwxtsVVWIAyUlz7uNub7plPbHxczJC7kL9Led0Byu7x6wW40pMj0zm/vgZ
 CBiFvtJCDrm1BsEGOVUf/pxLBKlZj/ldA1UdYKrJca1vJ/s+nBYdvY/qy0dQs/JnxT
 tHgdClgdtTpImeTAC+RWcILe5t+4T3g1IQlDubCU=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [192.168.1.100] ([212.95.5.29]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N2mFi-1k3ZuS3pXw-0134Y4; Wed, 02
 Dec 2020 08:45:16 +0100
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
To: Sean Devlin <spd@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
 <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
 <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
 <000004F6-7D67-4D1D-84EA-517E254FBBDE@HIDDEN>
 <782db472-6b44-c62c-e175-44e77589b85f@HIDDEN>
 <E57AA3DA-5245-4E76-830C-59B002C46033@HIDDEN>
From: martin rudalics <rudalics@HIDDEN>
Message-ID: <2802d2d9-2f09-ca7a-1a79-abf2eb0fa376@HIDDEN>
Date: Wed, 2 Dec 2020 08:45:15 +0100
MIME-Version: 1.0
In-Reply-To: <E57AA3DA-5245-4E76-830C-59B002C46033@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:ymVGcUtFeTNSxQ3PQlGlI2gXGHyLK7UODUbZNI3ain7Ru1emSxo
 fDw7G1WHFcRdhawLAzsQI8tTVfdTZdSCd3rVG9Samf9LdbauU16GIP2NivI3OhfeJz4rrLi
 r09weXpzWflU+KFT/4b3ERCrkIlZ/GehuVx+aQ6Ex5xYVs1fgBrm9557uqdk/hWtfpcvFUk
 +oH6ELY/ZQ1Yt9UZcp+OQ==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:Rcb6asbP8GA=:SO9Lm/WdJbVo1ksjc3VCl9
 mSj51wUOMW/8j56BqgT5wvutsgNxoMIiJT6MlV60MHdlfr/ZsxJF3SegAuhwv8j05y60SOY8+
 In0FPNbpfTGLllC9ESf+PpUPZvBVpQif59fTUTcsqLQqwROv1g9y+NUjJc27Bd/fIy7GogcZY
 7i6+U+RZQZglvgLvZgf4AZGmLC4jeKqU9m8py2JqmPcmNLlAESe0PE1gYNHohwXI6yaR/DWJU
 N19rwRwPgSLCM0OA79JrVflPq7FPgkvkh2oUsDwG5icu2t/J6SeZrpnhky0/RPhFJOKcAYRgi
 YQkBAS7rBDb4U6VPCJ0lezWR/DXVYw2j2bcA188fkRv51wdp6+D5Xbq3eNI//xXarcaKkUsjS
 W5k2n5n85xBPultVjVUY3jCWPR5qYczHpVNahCNSTfUWNo1GLIhZ3D7rMSllYImEhx9yI8oNH
 gr54muKKSnzA8pg+yIQ2UliclqcjLSbRxc4ekUFfr3EKq/Qb1rbTnN7mPOMPAP4jgMrgtOCcC
 GeeexN2asrx+G4bSvqvDdumelOlmYwokRNqfYy/p9WJ3zVo10UMFCoNOftSCT9//1gk0/QEI9
 oGAq9ytkvLTJ8oSjGhFR85jX+VWOYm5KrxxKv6FlQh0aY908WwKv+jBObYWFsrvVnMvK7nGAi
 7e5yMkA3Tr2qKJ8ga7ZUApa73ylcr/1T+ayjYVPbbsVGCSLGq63mLH0NcK5j9Y4GTffsB1OC1
 WXZ/VTC9gGIAXBvC+s0nRUmTYaTq5VLjjSNES4ny6UKAqUzJ08fhhpbiAD/t4KguVbiqalSF5
 O35lioOCuuhoeZLazeN1IR8N3u3ANq+FKr/s8XrPa4Rx1++nBl9fgUH+a+ImCyRYh1jKULf5g
 PsrqFcWn7krrPM7lEiugcN22MzffFB5rV4MWzsVg8=
X-Spam-Score: 2.9 (++)
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:  > I see, so redisplay could happen at any time, and redisplay
 can resize > the minibuffer window (contingent on `resize-mini-windows`).
 I guess > in the extreme case, any code could call the `redispl [...] 
 Content analysis details:   (2.9 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [212.95.5.29 listed in zen.spamhaus.org]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
 low trust [212.227.15.15 listed in list.dnswl.org]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [212.227.15.15 listed in wl.mailspike.net]
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (rudalics[at]gmx.at)
 -0.0 SPF_PASS               SPF: sender matches SPF record
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: 1.9 (+)
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:  > I see, so redisplay could happen at any time, and redisplay
    can resize > the minibuffer window (contingent on `resize-mini-windows`).
    I guess > in the extreme case, any code could call the `redispl [...] 
 
 Content analysis details:   (1.9 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
                             [212.227.15.15 listed in wl.mailspike.net]
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [212.95.5.29 listed in zen.spamhaus.org]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
                             low trust
                             [212.227.15.15 listed in list.dnswl.org]
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (rudalics[at]gmx.at)
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

 > I see, so redisplay could happen at any time, and redisplay can resize=

 > the minibuffer window (contingent on `resize-mini-windows`). I guess
 > in the extreme case, any code could call the `redisplay` function
 > explicitly.

Yes.

 > Anyway, I=E2=80=99ll perform the instrumentation you suggest, so we ca=
n
 > understand specifically what is happening.

I forgot to say that _all_ normal mini window resizing goes through
'window--resize-root-window-vertically' in window.el.  So it will
probably suffice to instrument just that function (in an already running
Emacs only, else you have to rebuild because window.el is preloaded) and
don't have to tinker with C code at all.

martin





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 1 Dec 2020 20:33:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 01 15:33:00 2020
Received: from localhost ([127.0.0.1]:33331 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kkCKZ-0003LE-Nc
	for submit <at> debbugs.gnu.org; Tue, 01 Dec 2020 15:33:00 -0500
Received: from mail-qk1-f175.google.com ([209.85.222.175]:41482)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <spd@HIDDEN>) id 1kkCKX-0003Ky-1b
 for 44933 <at> debbugs.gnu.org; Tue, 01 Dec 2020 15:32:58 -0500
Received: by mail-qk1-f175.google.com with SMTP id d9so2662196qke.8
 for <44933 <at> debbugs.gnu.org>; Tue, 01 Dec 2020 12:32:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=toadstyle-org.20150623.gappssmtp.com; s=20150623;
 h=from:message-id:mime-version:subject:date:in-reply-to:cc:to
 :references; bh=6h0klKW16QG1+RYJbNKbIBAkau1PeZRFGft9ABGLd/A=;
 b=Q9DdQVDi+B1HCMFJR6Ci792WY8OhR7G+HWS3dCjo9wsteZpOXPgmpovTmaPrlAvIpU
 n5GE9OcziMYQj45rCI+DcuqjXoiJVzsYROCbhFbiVjZUlNDGEzqByFunWZFuF369o9VE
 YAB3tvXWEFxaebXP6BC+DDfFZKjdX4jtiB2FFtK7S+AUdHfaWhNxMndGCERkMWCOx8uS
 Lv1oHpESGPjDPMt2nfH7/TnDblNPGAgHWqD2phWA93CxvggkJ+NYMYoxPiIQ6TudiAaH
 YCbnAoy0lnYgCpiBlMgVu4xQ+GO4tprp2z8a6GqPHqE0irPsH7bVEwr7HUG4Y1d4V2Eb
 QiAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:message-id:mime-version:subject:date
 :in-reply-to:cc:to:references;
 bh=6h0klKW16QG1+RYJbNKbIBAkau1PeZRFGft9ABGLd/A=;
 b=O2D83xQoY6Y6CE+yfOfaTfq4uqZkhU8Tdy4m0uQY6a6ZvwpDEPnLdEiQYYpFeLDwyQ
 Xp/RvE3/wqy4I51xHYAVbK3AKXPJlh9nZuPh50vCy2M/dp6dv9RdxrjJY3eTsefE8qmr
 0Ved1keZkqBACAg2en3V7so+D54OG83XeYuiytBcIYLw3lMwS9TIXdoi0FmjiJ1XIqQY
 w6ZOrhs1RGIh3LNdo+jcAwHFDNO3MEEAPO3mylftSucX2v1Zbus2wcW6uvxuNR0coTt0
 Gj00RGCNvpld/tL7B68JXxtasL+W9YGxzUKM2X6OohmiNHq7po4rI8HvYGELrUCPeKSD
 Xzuw==
X-Gm-Message-State: AOAM532352hek9q0gmIj6b0lmjUE0lXrUU8pbbxb+Es/ZGId09uRb2ho
 TIi/aFV5jo4tjNrrJ7fjPFGhvw==
X-Google-Smtp-Source: ABdhPJwv+jfnu+14N2YZvC430shi1W4KumnGGwHRHBeT/OsfH7pnZiJInlCSgdUw1wdpTmn4y+8kGA==
X-Received: by 2002:ae9:ed0f:: with SMTP id c15mr4931828qkg.348.1606854771278; 
 Tue, 01 Dec 2020 12:32:51 -0800 (PST)
Received: from ?IPv6:2604:2000:14c6:84b0:7527:ad6a:987b:415e?
 ([2604:2000:14c6:84b0:7527:ad6a:987b:415e])
 by smtp.gmail.com with ESMTPSA id y1sm829105qky.63.2020.12.01.12.32.50
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 01 Dec 2020 12:32:50 -0800 (PST)
From: Sean Devlin <spd@HIDDEN>
Message-Id: <E57AA3DA-5245-4E76-830C-59B002C46033@HIDDEN>
Content-Type: multipart/alternative;
 boundary="Apple-Mail=_875FD9EF-9E57-48E4-A5DD-7455ECA1559E"
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.40.0.2.31\))
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
Date: Tue, 1 Dec 2020 15:32:48 -0500
In-Reply-To: <782db472-6b44-c62c-e175-44e77589b85f@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
 <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
 <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
 <000004F6-7D67-4D1D-84EA-517E254FBBDE@HIDDEN>
 <782db472-6b44-c62c-e175-44e77589b85f@HIDDEN>
X-Mailer: Apple Mail (2.3654.40.0.2.31)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: -1.0 (-)


--Apple-Mail=_875FD9EF-9E57-48E4-A5DD-7455ECA1559E
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Hi Martin,

> On Dec 1, 2020, at 4:33 AM, martin rudalics <rudalics@HIDDEN> wrote:
>=20
> > I=E2=80=99m not sure I understand. Are you saying a program should =
not be able
> > to grow the minibuffer window this way? Or just that it will be =
undone
> > by the next resizing event? (Of course, this is a toy example, so I
> > have no opinion on what the correct behavior should be. I=E2=80=99m =
just
> > wondering.)
>=20
> With 'resize-mini-windows' non-nil, redisplay can resize a normal
> minibuffer window (the one at the bottom of a normal frame) any time
> thus overriding any manual resizing done by the user.  With =
'grow-only'
> it cannot auto-shrink it to some value above the minimum one, so if =
you
> make the window manually very large, redisplay can shrink it only when
> the minibuffer gets empty.  Note that there is no "correct" behavior
> here, everything grew out of fixing inconveniences found in daily use.

I see, so redisplay could happen at any time, and redisplay can resize =
the minibuffer window (contingent on `resize-mini-windows`). I guess in =
the extreme case, any code could call the `redisplay` function =
explicitly.

>=20
> > I=E2=80=99ve been playing with this a bit (on a recent Emacs =
28.0.50), and I=E2=80=99m not sure I understand the current behavior.
> >
> > For example, I have three frames open and I ran this code in the =
scratch buffer:
> >
> > (with-current-buffer (window-buffer (minibuffer-window))
> >    (remove-overlays)
> >    (erase-buffer)
> >    (insert "this is some text")
> >    (let ((ov (make-overlay (point) (point) nil t t)))
> >      (overlay-put ov 'after-string "\none\ntwo\nthree")))
> >
> > After moving the point, all I can see is the first line in the =
minibuffer: =E2=80=9Cthis is some text=E2=80=9D. This is true across all =
three frames.
> >
> > If I select the other frames by clicking on them, the frame that =
just lost focus will now show all four lines (i.e. including the =
overlay). The minibuffer windows on the other frames will stay at one =
line until I select them by clicking and then select some other frame.
> >
> > On the other hand, if I select frames by calling `other-frame` via a =
key binding, the behavior is slightly different: the minibuffer window =
on a frame expands to four lines as that frame loses focus, and the =
minibuffer window on the newly selected frame contracts back down to one =
line.
> >
> > Are all of these behaviors expected and correct? (Again, I have no =
opinion; I=E2=80=99m just trying to understand how things are meant to =
work.)
>=20
> Your example is a bit contrived in the sense that just inserting text
> into a minibuffer that is not active is not something redisplay really
> cares about.  Putting that overlay into a prompt and then switching
> frames is more realistic wrt what redisplay really cares about.

Fair point, it=E2=80=99s definitely a contrived example.

>=20
> > This function is the process filter for a term process, so it =
handles
> > new output from the process. After doing so, it iterates over all =
the
> > windows to see if any contain the process buffer. For any that are, =
it
> > selects those windows and scrolls those windows appropriately.
>=20
> I didn't read the code very attentively but let's make sure one thing:
> The behavior you see happens only when there are at least two frames =
so
> the
>=20
> (setq win (next-window win nil t))
>=20
> in 'term-emulate-terminal' and the subsequent
>=20
> 		     (select-window win)
>=20
> really get executed and the latter selects a _different_ frame thus
> causing the earlier mentioned
>=20
>  if (!for_deletion && FRAME_HAS_MINIBUF_P (sf))
>    resize_mini_window (XWINDOW (FRAME_MINIBUF_WINDOW (sf)), 1);
>=20
> Maybe you could instrument 'term-emulate-terminal' and =
'do_switch_frame'
> (debugging this is probably useless) so that they write something into =
a
> buffer and we can see the precise interleaving of steps leading to the
> behavior seen.

Yeah, I think it does depend on having multiple frames. In the specific =
case where I first noticed the strange behavior, my setup was:

Frame X with a window displaying a subprocess running under term
Frame Y with a window displaying some other buffer
Frame Y is selected
Selectrum (https://github.com/raxod502/selectrum) is installed as the =
completing read implementation

I invoked some command that performed a completing read via selectrum =
(e.g. `find-file` or similar) with the list of candidates displayed =
vertically below the prompt. While I was sitting with that prompt, the =
subprocess sent some output. This induced the temporary selection of =
frame X via the code in term, which caused the list of completing read =
candidates to disappear.

Anyway, I=E2=80=99ll perform the instrumentation you suggest, so we can =
understand specifically what is happening.

>=20
> >> With the recently added 'minibuffer-follows-selected-frame' we now =
have
> >> an additional source of complications to consider.  Maybe you =
could, as
> >> soon as the implementation of the latter has consolidated, play =
with the
> >> various values of 'resize-mini-windows' and suggest suitable fixes =
for
> >> the documentations of 'select-window' and 'select-frame'.
> >
> > Sure, I can do that. Is there a timeline for this or some place I =
can follow development progress?
>=20
> You can try to follow the thread "Stop frames stealing eachothers'
> minibuffers!" on emacs-devel and you will see that we all are quite
> often surprised by how the various versions of Emacs handle switching
> from one minibuffer window to another.

Thanks, I=E2=80=99ll check it out.

>=20
> >  =46rom testing the current implementation, it seems selectrum has a
> > similar issue here: when I switch to a new frame, the minibuffer =
does
> > follow, but the list of candidates is hidden until I enter a new
> > input.
>=20
> I suppose "showing the list of candidates" is part of a minibuffer
> interaction and the initial prompt is shown correctly on its frame but
> disappears when moving to another frame via C-x 5 o.  Right?

Yes, exactly. I can try to make a video of this if it would help.

Thanks!

>=20
> martin
>=20


--Apple-Mail=_875FD9EF-9E57-48E4-A5DD-7455ECA1559E
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D"">Hi =
Martin,<div class=3D""><div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D"">On Dec 1, 2020, at 4:33 AM, martin rudalics =
&lt;<a href=3D"mailto:rudalics@HIDDEN" class=3D"">rudalics@HIDDEN</a>&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><div =
class=3D"">&gt; I=E2=80=99m not sure I understand. Are you saying a =
program should not be able<br class=3D"">&gt; to grow the minibuffer =
window this way? Or just that it will be undone<br class=3D"">&gt; by =
the next resizing event? (Of course, this is a toy example, so I<br =
class=3D"">&gt; have no opinion on what the correct behavior should be. =
I=E2=80=99m just<br class=3D"">&gt; wondering.)<br class=3D""><br =
class=3D"">With 'resize-mini-windows' non-nil, redisplay can resize a =
normal<br class=3D"">minibuffer window (the one at the bottom of a =
normal frame) any time<br class=3D"">thus overriding any manual resizing =
done by the user. &nbsp;With 'grow-only'<br class=3D"">it cannot =
auto-shrink it to some value above the minimum one, so if you<br =
class=3D"">make the window manually very large, redisplay can shrink it =
only when<br class=3D"">the minibuffer gets empty. &nbsp;Note that there =
is no "correct" behavior<br class=3D"">here, everything grew out of =
fixing inconveniences found in daily use.<br =
class=3D""></div></div></blockquote><div><br class=3D""></div><div>I =
see, so redisplay could happen at any time, and redisplay can resize the =
minibuffer window (contingent on `resize-mini-windows`). I guess in the =
extreme case, any code could call the `redisplay` function =
explicitly.</div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D""><div class=3D""><br class=3D"">&gt; I=E2=80=99ve been playing =
with this a bit (on a recent Emacs 28.0.50), and I=E2=80=99m not sure I =
understand the current behavior.<br class=3D"">&gt;<br class=3D"">&gt; =
For example, I have three frames open and I ran this code in the scratch =
buffer:<br class=3D"">&gt;<br class=3D"">&gt; (with-current-buffer =
(window-buffer (minibuffer-window))<br class=3D"">&gt; =
&nbsp;&nbsp;&nbsp;(remove-overlays)<br class=3D"">&gt; =
&nbsp;&nbsp;&nbsp;(erase-buffer)<br class=3D"">&gt; =
&nbsp;&nbsp;&nbsp;(insert "this is some text")<br class=3D"">&gt; =
&nbsp;&nbsp;&nbsp;(let ((ov (make-overlay (point) (point) nil t t)))<br =
class=3D"">&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(overlay-put ov =
'after-string "\none\ntwo\nthree")))<br class=3D"">&gt;<br class=3D"">&gt;=
 After moving the point, all I can see is the first line in the =
minibuffer: =E2=80=9Cthis is some text=E2=80=9D. This is true across all =
three frames.<br class=3D"">&gt;<br class=3D"">&gt; If I select the =
other frames by clicking on them, the frame that just lost focus will =
now show all four lines (i.e. including the overlay). The minibuffer =
windows on the other frames will stay at one line until I select them by =
clicking and then select some other frame.<br class=3D"">&gt;<br =
class=3D"">&gt; On the other hand, if I select frames by calling =
`other-frame` via a key binding, the behavior is slightly different: the =
minibuffer window on a frame expands to four lines as that frame loses =
focus, and the minibuffer window on the newly selected frame contracts =
back down to one line.<br class=3D"">&gt;<br class=3D"">&gt; Are all of =
these behaviors expected and correct? (Again, I have no opinion; I=E2=80=99=
m just trying to understand how things are meant to work.)<br =
class=3D""><br class=3D"">Your example is a bit contrived in the sense =
that just inserting text<br class=3D"">into a minibuffer that is not =
active is not something redisplay really<br class=3D"">cares about. =
&nbsp;Putting that overlay into a prompt and then switching<br =
class=3D"">frames is more realistic wrt what redisplay really cares =
about.<br class=3D""></div></div></blockquote><div><br =
class=3D""></div><div>Fair point, it=E2=80=99s definitely a contrived =
example.</div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D""><div class=3D""><br class=3D"">&gt; This function is the =
process filter for a term process, so it handles<br class=3D"">&gt; new =
output from the process. After doing so, it iterates over all the<br =
class=3D"">&gt; windows to see if any contain the process buffer. For =
any that are, it<br class=3D"">&gt; selects those windows and scrolls =
those windows appropriately.<br class=3D""><br class=3D"">I didn't read =
the code very attentively but let's make sure one thing:<br class=3D"">The=
 behavior you see happens only when there are at least two frames so<br =
class=3D"">the<br class=3D""><br class=3D"">(setq win (next-window win =
nil t))<br class=3D""><br class=3D"">in 'term-emulate-terminal' and the =
subsequent<br class=3D""><br class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span> =
&nbsp;&nbsp;&nbsp;&nbsp;(select-window win)<br class=3D""><br =
class=3D"">really get executed and the latter selects a _different_ =
frame thus<br class=3D"">causing the earlier mentioned<br class=3D""><br =
class=3D""> &nbsp;if (!for_deletion &amp;&amp; FRAME_HAS_MINIBUF_P =
(sf))<br class=3D""> &nbsp;&nbsp;&nbsp;resize_mini_window (XWINDOW =
(FRAME_MINIBUF_WINDOW (sf)), 1);<br class=3D""><br class=3D"">Maybe you =
could instrument 'term-emulate-terminal' and 'do_switch_frame'<br =
class=3D"">(debugging this is probably useless) so that they write =
something into a<br class=3D"">buffer and we can see the precise =
interleaving of steps leading to the<br class=3D"">behavior seen.<br =
class=3D""></div></div></blockquote><div><br class=3D""></div><div>Yeah, =
I think it does depend on having multiple frames. In the specific case =
where I first noticed the strange behavior, my setup was:</div><div><br =
class=3D""></div><div><ul class=3D"MailOutline"><li class=3D"">Frame X =
with a window displaying a subprocess running under term</li><li =
class=3D"">Frame Y with a window displaying some other buffer</li><li =
class=3D"">Frame Y is selected</li><li class=3D"">Selectrum (<a =
href=3D"https://github.com/raxod502/selectrum" =
class=3D"">https://github.com/raxod502/selectrum</a>) is installed as =
the completing read implementation</li></ul><div class=3D""><div =
class=3D""><font color=3D"#000000" class=3D""><span style=3D"caret-color: =
rgb(0, 0, 0);" class=3D""><br class=3D""></span></font></div><div =
class=3D""><font color=3D"#000000" class=3D""><span style=3D"caret-color: =
rgb(0, 0, 0);" class=3D"">I invoked some command that performed a =
completing read via selectrum (e.g. `find-file` or similar) with the =
list of candidates displayed vertically below the prompt. While I was =
sitting with that prompt, the subprocess sent some output. This induced =
the temporary selection of frame X via the code in term, which caused =
the list of completing read candidates to =
disappear.</span></font></div><div class=3D""><br =
class=3D""></div></div><div class=3D"">Anyway, I=E2=80=99ll perform the =
instrumentation you suggest, so we can understand specifically what is =
happening.</div></div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div class=3D""><br class=3D"">&gt;&gt; With =
the recently added 'minibuffer-follows-selected-frame' we now have<br =
class=3D"">&gt;&gt; an additional source of complications to consider. =
&nbsp;Maybe you could, as<br class=3D"">&gt;&gt; soon as the =
implementation of the latter has consolidated, play with the<br =
class=3D"">&gt;&gt; various values of 'resize-mini-windows' and suggest =
suitable fixes for<br class=3D"">&gt;&gt; the documentations of =
'select-window' and 'select-frame'.<br class=3D"">&gt;<br class=3D"">&gt; =
Sure, I can do that. Is there a timeline for this or some place I can =
follow development progress?<br class=3D""><br class=3D"">You can try to =
follow the thread "Stop frames stealing eachothers'<br =
class=3D"">minibuffers!" on emacs-devel and you will see that we all are =
quite<br class=3D"">often surprised by how the various versions of Emacs =
handle switching<br class=3D"">from one minibuffer window to another.<br =
class=3D""></div></div></blockquote><div><br class=3D""></div><div>Thanks,=
 I=E2=80=99ll check it out.</div><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D""><div class=3D""><br class=3D"">&gt; =
&nbsp;=46rom testing the current implementation, it seems selectrum has =
a<br class=3D"">&gt; similar issue here: when I switch to a new frame, =
the minibuffer does<br class=3D"">&gt; follow, but the list of =
candidates is hidden until I enter a new<br class=3D"">&gt; input.<br =
class=3D""><br class=3D"">I suppose "showing the list of candidates" is =
part of a minibuffer<br class=3D"">interaction and the initial prompt is =
shown correctly on its frame but<br class=3D"">disappears when moving to =
another frame via C-x 5 o. &nbsp;Right?<br =
class=3D""></div></div></blockquote><div><br class=3D""></div><div>Yes, =
exactly. I can try to make a video of this if it would =
help.</div><div><br class=3D""></div><div>Thanks!</div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D""><div =
class=3D""><br class=3D"">martin<br class=3D""><br =
class=3D""></div></div></blockquote></div><br =
class=3D""></div></body></html>=

--Apple-Mail=_875FD9EF-9E57-48E4-A5DD-7455ECA1559E--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 1 Dec 2020 09:33:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 01 04:33:52 2020
Received: from localhost ([127.0.0.1]:57833 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kk22i-0006eb-Gn
	for submit <at> debbugs.gnu.org; Tue, 01 Dec 2020 04:33:52 -0500
Received: from mout.gmx.net ([212.227.17.22]:54925)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <rudalics@HIDDEN>) id 1kk22g-0006eN-S8
 for 44933 <at> debbugs.gnu.org; Tue, 01 Dec 2020 04:33:51 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1606815224;
 bh=RoQJ7graPf/T8IhQ9xHx4wWfYfKW0MxH+2cFWcGTo+k=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=SYPEzGCLuXKrH298eElrJmvhzBHlJnZyYtnytpc52MMZ8EaLNqnQrkYBApcUe6s2W
 lGWTvMxY44ZHYzdozZ3de9cNGiyKnpTD5bDZ/KFsxIKkIjyxNJOyg+FIK09qRRgSPK
 y2ZElOcnbfyhU3YhdotuW/DZr7C1ZSC5lleEj4/A=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [192.168.1.100] ([212.95.5.163]) by mail.gmx.com (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MKsnF-1kTrXB0hAr-00LHps; Tue, 01
 Dec 2020 10:33:44 +0100
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
To: Sean Devlin <spd@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
 <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
 <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
 <000004F6-7D67-4D1D-84EA-517E254FBBDE@HIDDEN>
From: martin rudalics <rudalics@HIDDEN>
Message-ID: <782db472-6b44-c62c-e175-44e77589b85f@HIDDEN>
Date: Tue, 1 Dec 2020 10:33:42 +0100
MIME-Version: 1.0
In-Reply-To: <000004F6-7D67-4D1D-84EA-517E254FBBDE@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:jo2RbYVQAjB15GfzNjEi9+LLJJPQmEP9tsrGLnc4/82FA2mUb7m
 WTCIkSoUJW4rAoiNhHJSMHe15sO/MCsJYe9d2WFTMOYLVKh0s0+HSa8FTWnUvDPZAyV7AkI
 x3wDT4HLePE72BUBA4NjCyJUamUiI4eyGw/+7qbn0OQmLTfz+4GkOH4LzU1aVwJ/hjNj8f6
 jw8Tqs5jQjlNx2zLxjO/A==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:5hGRc85oLZg=:RoB+K183r/03x5Z9tW6/Xz
 48JfzA4xdV6gn3NpL77E5X2bftpL+kvS0m6xg7RcDotFMdeeckvs5YjfBGUh9A2GNyubUK8Tn
 tKj6uG9Jzs2EWae4CxK26Jf8JNwk+CxNDy4+qNNck2UBl2sq/OfC7pTd+ap/dsKvXMwr7n8jV
 3NG+IVBjWq9K4Pw178O7xgUTn77Q7rRreVVLlGtXCnKNttR/AZ5RcrkXn9R7Uzel2vc7Qpi6V
 dO07hxO6sbwYYtEzRYlakXGPVO4l2i3ITG0IVMLnsvLsMkXBIcitksxPscrcz8PHgk6DXu07h
 igTmmGwLyinXY8tlCgYmmwCTIXY5HVl/Legvd93gjPdvkCZ7D1BCRQdeBhpP9CfoUVciFGdt9
 kiSpjgB9U7+YmZVxMfOqLO+hpNAVDhR9IGZvKFpFysoNE3pICOBJSHHCVnsOZBxGfJyFZFFJE
 zwf2/kJMQSdjm2cU6MhfoQFg6k2a/IbKepR3VXG4y5eippbvrCNB/dH2Z4h9SidFqiIGu+dyh
 idIQzq4qiAR36f0wSvryKRnMdu3sUewwDhFWdSaJPcYOR9pTIY8dI6WbhMLJooXDIysVpPfNN
 BkOq1it48nZF8ZqYA1KjOfF0ijTqUFnSBoNN/j/xdgmcXPwjn49V84/Rd164VnTgubRKle+Sx
 LB6HEuY0SOHPH/rtFwr0gGqvNPE0etQLkMvsFcOYWfDoI3hSaSuTYgMBzcsqE8jq1vy7l7HKD
 J1wr94nbsdT2rwLkhMQp0ohj2/1NzzRI739JJkQJfmFvZaHLTK1lxftSkv3KWUF0aPC8CoMDj
 ruUc13PLBzIaa5smvVdd4PDxaN0Yva1rx6RvmhbeOYJGyWbgsBNfbYRoQM9z9PMjgaFzD+be7
 dnkHKkY6BhmO1t2NqZTg==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: -1.7 (-)

 > I=E2=80=99m not sure I understand. Are you saying a program should not=
 be able
 > to grow the minibuffer window this way? Or just that it will be undone=

 > by the next resizing event? (Of course, this is a toy example, so I
 > have no opinion on what the correct behavior should be. I=E2=80=99m ju=
st
 > wondering.)

With 'resize-mini-windows' non-nil, redisplay can resize a normal
minibuffer window (the one at the bottom of a normal frame) any time
thus overriding any manual resizing done by the user.  With 'grow-only'
it cannot auto-shrink it to some value above the minimum one, so if you
make the window manually very large, redisplay can shrink it only when
the minibuffer gets empty.  Note that there is no "correct" behavior
here, everything grew out of fixing inconveniences found in daily use.

 > I=E2=80=99ve been playing with this a bit (on a recent Emacs 28.0.50),=
 and I=E2=80=99m not sure I understand the current behavior.
 >
 > For example, I have three frames open and I ran this code in the scrat=
ch buffer:
 >
 > (with-current-buffer (window-buffer (minibuffer-window))
 >    (remove-overlays)
 >    (erase-buffer)
 >    (insert "this is some text")
 >    (let ((ov (make-overlay (point) (point) nil t t)))
 >      (overlay-put ov 'after-string "\none\ntwo\nthree")))
 >
 > After moving the point, all I can see is the first line in the minibuf=
fer: =E2=80=9Cthis is some text=E2=80=9D. This is true across all three f=
rames.
 >
 > If I select the other frames by clicking on them, the frame that just =
lost focus will now show all four lines (i.e. including the overlay). The=
 minibuffer windows on the other frames will stay at one line until I sel=
ect them by clicking and then select some other frame.
 >
 > On the other hand, if I select frames by calling `other-frame` via a k=
ey binding, the behavior is slightly different: the minibuffer window on =
a frame expands to four lines as that frame loses focus, and the minibuff=
er window on the newly selected frame contracts back down to one line.
 >
 > Are all of these behaviors expected and correct? (Again, I have no opi=
nion; I=E2=80=99m just trying to understand how things are meant to work.=
)

Your example is a bit contrived in the sense that just inserting text
into a minibuffer that is not active is not something redisplay really
cares about.  Putting that overlay into a prompt and then switching
frames is more realistic wrt what redisplay really cares about.

 > This function is the process filter for a term process, so it handles
 > new output from the process. After doing so, it iterates over all the
 > windows to see if any contain the process buffer. For any that are, it=

 > selects those windows and scrolls those windows appropriately.

I didn't read the code very attentively but let's make sure one thing:
The behavior you see happens only when there are at least two frames so
the

(setq win (next-window win nil t))

in 'term-emulate-terminal' and the subsequent

		     (select-window win)

really get executed and the latter selects a _different_ frame thus
causing the earlier mentioned

   if (!for_deletion && FRAME_HAS_MINIBUF_P (sf))
     resize_mini_window (XWINDOW (FRAME_MINIBUF_WINDOW (sf)), 1);

Maybe you could instrument 'term-emulate-terminal' and 'do_switch_frame'
(debugging this is probably useless) so that they write something into a
buffer and we can see the precise interleaving of steps leading to the
behavior seen.

 >> With the recently added 'minibuffer-follows-selected-frame' we now ha=
ve
 >> an additional source of complications to consider.  Maybe you could, =
as
 >> soon as the implementation of the latter has consolidated, play with =
the
 >> various values of 'resize-mini-windows' and suggest suitable fixes fo=
r
 >> the documentations of 'select-window' and 'select-frame'.
 >
 > Sure, I can do that. Is there a timeline for this or some place I can =
follow development progress?

You can try to follow the thread "Stop frames stealing eachothers'
minibuffers!" on emacs-devel and you will see that we all are quite
often surprised by how the various versions of Emacs handle switching
from one minibuffer window to another.

 >  From testing the current implementation, it seems selectrum has a
 > similar issue here: when I switch to a new frame, the minibuffer does
 > follow, but the list of candidates is hidden until I enter a new
 > input.

I suppose "showing the list of candidates" is part of a minibuffer
interaction and the initial prompt is shown correctly on its frame but
disappears when moving to another frame via C-x 5 o.  Right?

martin





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 30 Nov 2020 19:32:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 30 14:32:37 2020
Received: from localhost ([127.0.0.1]:56708 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kjoub-0000e6-9N
	for submit <at> debbugs.gnu.org; Mon, 30 Nov 2020 14:32:37 -0500
Received: from mail-qt1-f176.google.com ([209.85.160.176]:34465)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <spd@HIDDEN>) id 1kjouY-0000ds-Gs
 for 44933 <at> debbugs.gnu.org; Mon, 30 Nov 2020 14:32:35 -0500
Received: by mail-qt1-f176.google.com with SMTP id 7so9088748qtp.1
 for <44933 <at> debbugs.gnu.org>; Mon, 30 Nov 2020 11:32:34 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=toadstyle-org.20150623.gappssmtp.com; s=20150623;
 h=mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=IfdKtvrvZ5dPfZctOAO6qhy9tJGFgxn78RhZkGyrJgo=;
 b=DFR82xw9Pxw4MBdi5BHd2uPpUkGScMfZfCVNPq2XOezM/AHs53R5V5SCId1qeDjCEH
 dTh5KZ/+9BflB+rOODoja05x9jMDECRp2RjwvUui4Y5gECv/U9xJc/MDUdVsyipSkWqo
 xaji3q9Hwz8lLi/2VT5m8D6o51XuPRXiokhgFuU4l+hmpzsKjC8g4I3OWtPi9mGRJf0v
 Ve0wqrZhgvGpACH3LtmiQDrVJ+30tVRHzWWy+5X4yG8tkZJAav4qEz+rnARL0hi3BCQ1
 Y4QjpM14YWK4fHLDAjLyVj14p+H/FI8iPIhhjFHZ2naD7qi15T/ShEGgtxtgM2PdVprA
 JYyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=IfdKtvrvZ5dPfZctOAO6qhy9tJGFgxn78RhZkGyrJgo=;
 b=XNtL845oViLbLE0BmkwMgRvIccWpgqXYNQCEyi02PPzeOpzyrgw6XmexjdwLJqxUTT
 3z1rVXCeXbEW/zgzidRZlgx1VyEzTkgtvNG0eDS4yDU4PJ5tWprPYxaVHQpwQiWAwQZE
 X+OC1MngjPh2h5HBcqj25gRwon63HA7bKa875/oaOxp5St90CokF3l0P25bSaSFtSfkn
 0H8Ebw89+oPOpFi5aogRC3PRM5aw2ZK9ZoUjBXH88XHWH/nSK8NBz+t8+FFRmBLo4MWL
 zCLrv5H78q/crBM5IDePwgZ9ccu66k62Y0qgwxKZ9jE0WA7GueXsnWW4geNSkseQd5Xr
 1NyQ==
X-Gm-Message-State: AOAM533vXm2b4abbEXZP6zndGXyN1qy/In1xq1egYSWGySBPG8Evv0RC
 n0Cx4qvVMu3pt7UDzTw9dCsBAw==
X-Google-Smtp-Source: ABdhPJx+cU1N2oupWGbpf3HXjV4dsO3YaT/QXM2mT3hmhsqmf58f7igXnPNEbVA1anEgDEldcQMvvg==
X-Received: by 2002:ac8:6bc6:: with SMTP id b6mr23880728qtt.127.1606764748893; 
 Mon, 30 Nov 2020 11:32:28 -0800 (PST)
Received: from ?IPv6:2604:2000:14c6:84b0:2038:7137:c288:7ddf?
 ([2604:2000:14c6:84b0:2038:7137:c288:7ddf])
 by smtp.gmail.com with ESMTPSA id f14sm15730919qkk.89.2020.11.30.11.32.27
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 30 Nov 2020 11:32:28 -0800 (PST)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.40.0.2.31\))
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
From: Sean Devlin <spd@HIDDEN>
In-Reply-To: <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
Date: Mon, 30 Nov 2020 14:32:27 -0500
Content-Transfer-Encoding: quoted-printable
Message-Id: <000004F6-7D67-4D1D-84EA-517E254FBBDE@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
 <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
 <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
X-Mailer: Apple Mail (2.3654.40.0.2.31)
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: -1.0 (-)

Hi Martin,

> On Nov 30, 2020, at 4:04 AM, martin rudalics <rudalics@HIDDEN> wrote:
>=20
> > In my reproduction, the minibuffer window is grown manually via
> > `window-resize`.
>=20
> With 'resize-mini-windows' non-nil this usually has no visible effect
> because any such manual resizing is immediately undone by the =
automatic
> resizing scheme.

I=E2=80=99m not sure I understand. Are you saying a program should not =
be able to grow the minibuffer window this way? Or just that it will be =
undone by the next resizing event? (Of course, this is a toy example, so =
I have no opinion on what the correct behavior should be. I=E2=80=99m =
just wondering.)

>=20
> > In the case of selectrum, the completing read
> > candidates are displayed via overlay. I think this means that a
> > resizing function that considers the buffer text only will resize
> > these back down to a single line.
>=20
> The routine that determines the window size (resize_mini_window in
> xdisp.c) should consider overlays as well (if they are in the right
> buffer).  Anything else would be a bug.

I=E2=80=99ve been playing with this a bit (on a recent Emacs 28.0.50), =
and I=E2=80=99m not sure I understand the current behavior.

For example, I have three frames open and I ran this code in the scratch =
buffer:

(with-current-buffer (window-buffer (minibuffer-window))
  (remove-overlays)
  (erase-buffer)
  (insert "this is some text")
  (let ((ov (make-overlay (point) (point) nil t t)))
    (overlay-put ov 'after-string "\none\ntwo\nthree")))

After moving the point, all I can see is the first line in the =
minibuffer: =E2=80=9Cthis is some text=E2=80=9D. This is true across all =
three frames.

If I select the other frames by clicking on them, the frame that just =
lost focus will now show all four lines (i.e. including the overlay). =
The minibuffer windows on the other frames will stay at one line until I =
select them by clicking and then select some other frame.

On the other hand, if I select frames by calling `other-frame` via a key =
binding, the behavior is slightly different: the minibuffer window on a =
frame expands to four lines as that frame loses focus, and the =
minibuffer window on the newly selected frame contracts back down to one =
line.

Are all of these behaviors expected and correct? (Again, I have no =
opinion; I=E2=80=99m just trying to understand how things are meant to =
work.)

>=20
> > I just tested, and binding `resize-mini-windows` to nil around the
> > window selection in `term-emulate-terminal` does solve my
> > problem. Does this seem like the right fix? I think it is surprising
> > that output from a term process coming in the background should =
resize
> > a minibuffer window (and especially an active one).
>=20
> If you look into the code of do_switch_frame (in frame.c) you will be
> able to spot
>=20
>  if (!for_deletion && FRAME_HAS_MINIBUF_P (sf))
>    resize_mini_window (XWINDOW (FRAME_MINIBUF_WINDOW (sf)), 1);
>=20
> which means that currently even redisplay itself may resize the mini
> window every time it constructs a mode line or frame title.  I can =
only
> offer two advices: (1) Avoid 'with-selected-window/frame' in timers =
and
> (2) make sure no redisplay happen _within_ such a form.

Interesting. I think this partially explains the behaviors I=E2=80=99m =
seeing above.

To be clear, `term-emulate-terminal` is a process filter. I=E2=80=99m =
not sure if that=E2=80=99s exactly like a timer under the hood, but it =
does run without user interaction.

>=20
> > Also, I see that `term-emulate-terminal` is calling `select-window` =
to
> > perform its window selections. =46rom my reading of the docs, I =
think it
> > might make sense for it to pass `mark-for-redisplay` as the =
`norecord`
> > argument. It doesn't seem like we should be modifying the buffer =
list
> > or most recently selected window in this case, but we do want to
> > redisplay the new output.
>=20
> I would have to understand the semantics of 'term-emulate-terminal' to
> answer that.  Hopefully, someone else can chime in here.

I can give a little information here, though someone else will surely =
know more.

This function is the process filter for a term process, so it handles =
new output from the process. After doing so, it iterates over all the =
windows to see if any contain the process buffer. For any that are, it =
selects those windows and scrolls those windows appropriately.

>=20
> > I think the documentation should clarify that window selection can
> > change window sizes as a side effect. The docs for selecting windows
> > =
(https://www.gnu.org/software/emacs/manual/html_node/elisp/Selecting-Windo=
ws.html)
> > do not mention that `select-window` can change minibuffer sizes. The
> > docs for minibuffer windows
> > =
(https://www.gnu.org/software/emacs/manual/html_node/elisp/Minibuffer-Wind=
ows.html)
> > do mention these variables to control how minibuffer windows can be
> > resized automatically, but they do not say what functions might try =
to
> > do this automatic resizing.
>=20
> With the recently added 'minibuffer-follows-selected-frame' we now =
have
> an additional source of complications to consider.  Maybe you could, =
as
> soon as the implementation of the latter has consolidated, play with =
the
> various values of 'resize-mini-windows' and suggest suitable fixes for
> the documentations of 'select-window' and 'select-frame'.

Sure, I can do that. Is there a timeline for this or some place I can =
follow development progress?

=46rom testing the current implementation, it seems selectrum has a =
similar issue here: when I switch to a new frame, the minibuffer does =
follow, but the list of candidates is hidden until I enter a new input.

>=20
> Alternatively, we could consider skipping the
>=20
>    resize_mini_window (XWINDOW (FRAME_MINIBUF_WINDOW (sf)), 1);
>=20
> above for temporary window/frame selections (and at least for =
redisplay
> as I currently do here) but the consequences of such a step are not
> easily fathomable.
>=20
> > Finally, I wonder if `with-selected-window` (which
> > `term-emulate-terminal` does not currently use) should bind
> > `resize-mini-windows`.
>=20
> ... with the consequences I mentioned in the sentence before ...
>=20
> > The docs say it is "the preferred way to
> > temporarily work with" a selected window, so it does seem like
> > automatic resizing is not in the spirit of the function. On the =
other
> > hand, I don't know all the existing use cases; maybe this would =
break
> > things.
>=20
> Right.
>=20
> martin





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 30 Nov 2020 09:05:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 30 04:05:05 2020
Received: from localhost ([127.0.0.1]:53410 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kjf7J-0005gP-8P
	for submit <at> debbugs.gnu.org; Mon, 30 Nov 2020 04:05:05 -0500
Received: from mout.gmx.net ([212.227.15.18]:40751)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <rudalics@HIDDEN>) id 1kjf7H-0005fl-IL
 for 44933 <at> debbugs.gnu.org; Mon, 30 Nov 2020 04:05:04 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1606727096;
 bh=O2seaZeS+AYnmQACm3MFFpfEwoGsn/bSyQ16TCNYG7g=;
 h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To;
 b=RAopnCG7reoY2ZSc1FWzZlorzl+CAUMLq9GKnEhArxyB1BMWVsQdo+mVthlSEg5cc
 fYmjbzqecs8H7B0OYN+ucD/HMXbFtOE9OjSjOvohHG1Gv0n6tSPqw7xWJF3LefznHo
 nGVfMbR+DmCdHOjYcAXfXoL0AZCsHNxl/ly1lgr8=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [192.168.1.100] ([212.95.5.17]) by mail.gmx.com (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MA7GS-1kvBh42SiY-00BYvi; Mon, 30
 Nov 2020 10:04:56 +0100
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
To: Sean Devlin <spd@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
 <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
From: martin rudalics <rudalics@HIDDEN>
Message-ID: <0dec5a12-e2f6-a210-6300-835bb3358d53@HIDDEN>
Date: Mon, 30 Nov 2020 10:04:54 +0100
MIME-Version: 1.0
In-Reply-To: <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:jGV6BF5dxGXuqfMGnbr0LLKdBoqYKzMu90zTYVv80IhN8y9W+xb
 rJilymwnHlMTilZk8uB1bilb08mG4E8pxf4vkFblIIw3mqZWI6xvh/0Nnn4haW0Q3rOpSp7
 vIZv16OeXMU3OPGGVux3JB4x9CXVQ4PvcUL3+SnxJ3nPa46oY5IJd6zf+jwGHQKsWlOqof3
 iiOM0IQbKlc4pEIJjTWig==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:zd6IkpQexjc=:8OuzjmWbc8RC8tNlRFus83
 zD/9bakulEraCtmlPdEsrPoSwGtah2bad7udBwEojVmks+Kr6gc8bI5Qh6m2ZvJGbl22dDukZ
 9Jl945jLHNTHP47rwif7oXUjpT4idEjaZ+cGYqk4uKqzj45boaR8KDBVqDr4Zvw/NnLvG4XFx
 8JAmeJK/b8uhxAigFI9HPWUq+LJuo664uvkpkVgST5nidzFNK3w0a/apYrVwdVjVNYJEMyAmC
 i64bCXTrW2TOEl9Df/iO1+E/4h/W9birGxFecdpo+btZYxH0rdPs7qRHhGXhgto67WqGb/LBK
 yJYMgTD/rVJzSlpVxjiofaMt8rIDkQYJgqMAOTMR9SojitJejO2K/qLUjpKDW01E591KJhjVW
 UhWZaJeXVdicD80JwSkieydH7kE0QZPBzikgEZ9nTA0thmD5quu5F/12mqQ/vIMvtGe9wg5ON
 EUmXZWcSfulJpcV78QyeVnncg3a6Ve+QWAVizAc7kSPLCMRtKK7Plu5i49IZjCalKM39oLWB7
 C9krBFtCdHl6MEw6C1mEEpLJ+Owi7EKpabM3XikqDor/aCsvDMiQr1dxB9U5WX3EITXUDUQRN
 V9MVMRIx2SMl7ZidS8u/+8l3tnHbufYpIJyqI6b/rNsHLerRJoACS90BTTjR9EVTLaucwoRAu
 P4pEn+C7GUKKw3KmSEew1cydT70rN0/8vHpqbM7xqkKJn/1+pVrXrBFn8vxexPIuciJhHhblO
 WGLgF7eNQZP+d/x/HXyIayj6lk8ezqwduFY12+mXMz8x8hLBgLcu8Z/VpFp2TfgGXt+ZtK0nt
 VxncoK52WjSQa+Bp89cWwnjl6XoRyozphgr9RoAJd2imF+B91wfHz/gmMUNMEBDanyBStwBhJ
 yuHh89BMae455HoKbYaA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: -1.7 (-)

 > In my reproduction, the minibuffer window is grown manually via
 > `window-resize`.

With 'resize-mini-windows' non-nil this usually has no visible effect
because any such manual resizing is immediately undone by the automatic
resizing scheme.

 > In the case of selectrum, the completing read
 > candidates are displayed via overlay. I think this means that a
 > resizing function that considers the buffer text only will resize
 > these back down to a single line.

The routine that determines the window size (resize_mini_window in
xdisp.c) should consider overlays as well (if they are in the right
buffer).  Anything else would be a bug.

 > I just tested, and binding `resize-mini-windows` to nil around the
 > window selection in `term-emulate-terminal` does solve my
 > problem. Does this seem like the right fix? I think it is surprising
 > that output from a term process coming in the background should resize
 > a minibuffer window (and especially an active one).

If you look into the code of do_switch_frame (in frame.c) you will be
able to spot

   if (!for_deletion && FRAME_HAS_MINIBUF_P (sf))
     resize_mini_window (XWINDOW (FRAME_MINIBUF_WINDOW (sf)), 1);

which means that currently even redisplay itself may resize the mini
window every time it constructs a mode line or frame title.  I can only
offer two advices: (1) Avoid 'with-selected-window/frame' in timers and
(2) make sure no redisplay happen _within_ such a form.

 > Also, I see that `term-emulate-terminal` is calling `select-window` to
 > perform its window selections. From my reading of the docs, I think it
 > might make sense for it to pass `mark-for-redisplay` as the `norecord`
 > argument. It doesn't seem like we should be modifying the buffer list
 > or most recently selected window in this case, but we do want to
 > redisplay the new output.

I would have to understand the semantics of 'term-emulate-terminal' to
answer that.  Hopefully, someone else can chime in here.

 > I think the documentation should clarify that window selection can
 > change window sizes as a side effect. The docs for selecting windows
 > (https://www.gnu.org/software/emacs/manual/html_node/elisp/Selecting-Windows.html)
 > do not mention that `select-window` can change minibuffer sizes. The
 > docs for minibuffer windows
 > (https://www.gnu.org/software/emacs/manual/html_node/elisp/Minibuffer-Windows.html)
 > do mention these variables to control how minibuffer windows can be
 > resized automatically, but they do not say what functions might try to
 > do this automatic resizing.

With the recently added 'minibuffer-follows-selected-frame' we now have
an additional source of complications to consider.  Maybe you could, as
soon as the implementation of the latter has consolidated, play with the
various values of 'resize-mini-windows' and suggest suitable fixes for
the documentations of 'select-window' and 'select-frame'.

Alternatively, we could consider skipping the

     resize_mini_window (XWINDOW (FRAME_MINIBUF_WINDOW (sf)), 1);

above for temporary window/frame selections (and at least for redisplay
as I currently do here) but the consequences of such a step are not
easily fathomable.

 > Finally, I wonder if `with-selected-window` (which
 > `term-emulate-terminal` does not currently use) should bind
 > `resize-mini-windows`.

... with the consequences I mentioned in the sentence before ...

 > The docs say it is "the preferred way to
 > temporarily work with" a selected window, so it does seem like
 > automatic resizing is not in the spirit of the function. On the other
 > hand, I don't know all the existing use cases; maybe this would break
 > things.

Right.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 29 Nov 2020 15:43:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 29 10:43:28 2020
Received: from localhost ([127.0.0.1]:52281 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kjOrH-00053T-LA
	for submit <at> debbugs.gnu.org; Sun, 29 Nov 2020 10:43:28 -0500
Received: from mail-qk1-f176.google.com ([209.85.222.176]:42734)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <spd@HIDDEN>) id 1kjOrF-00053D-Dh
 for 44933 <at> debbugs.gnu.org; Sun, 29 Nov 2020 10:43:26 -0500
Received: by mail-qk1-f176.google.com with SMTP id z188so8684742qke.9
 for <44933 <at> debbugs.gnu.org>; Sun, 29 Nov 2020 07:43:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=toadstyle-org.20150623.gappssmtp.com; s=20150623;
 h=mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=r5UE3a4jxxbv8a9d4aBk4ft2nua4nWRf74NmTpbPI1E=;
 b=xziyiGq1ddTEUIPq3Q8Cj1BSJ+fFLKzHNm0Qx/jflmfxRbQBfCnoqj37F2090DpGwZ
 gJzKb4CElOFoqUcDea7radk0xb7ddZfJoyGToM1fhWseW/3W5XcQaRj/CjAk+dokxLoV
 r8KQ0RmLwsE6WNAKolEGljrqytBu23mq7dm+c8vqj1dEy7yhMj51K5i7H6gpJaGpSuqN
 YgWxx4Uc3Fq6yF2YeMidUmeozJ/t/mGdPgq5wNvI8wnoejbz58PHYurh+jXrL3yrJYOB
 i5y6pu6DpbwhaBqXtHgR8E3lzyUayre9l2rQR8HGLlkHRhDggvb6cJNPCSuW7fiZH8M9
 mLUA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=r5UE3a4jxxbv8a9d4aBk4ft2nua4nWRf74NmTpbPI1E=;
 b=GfhY/kzkWUnnKXLmGBkcPY8K6gvhXaLHEAn0F5juNpXcr6ywK9AfLEQE1hLF0Gj3DD
 rh3V7NCeHbSTc27YrCEHB3dTf7OpikytkKWu1Ms/E7r6Md4wo1uQs5lFPxnsbH3wRkHm
 C/eES4nV+ylNyAwLXCPo057/PdpIfQ0HsSymmBS/FeJTwm9IsNDErpdN94nMk+2Xh8HQ
 a90YcSL85xwXxmCJ0INARUKoPdhNBjTU7xYS6PdkfuymJF0lJP+g8te/hCd/g0UsemVY
 8Lw75ASn+/iRXczwbSZMQiFyT57sAoYtJnBGN9389/oMC7QsKB9+vvsx/MIXXwYt7sxR
 mhqQ==
X-Gm-Message-State: AOAM530HbllrhsNA3nZk70Aj375D45Rr24PbPtk3qjOhNvfX/RUlq/80
 Hxj5x9ngHtMhftkB9OA5LJdRQo4TQbsYwA==
X-Google-Smtp-Source: ABdhPJzOsW0HnPzSZ5LPzbuR8JP/LEBWIZPSNlvPz8R2JHoKjitug6XdijyCJfaeMnl+82BkL5pYog==
X-Received: by 2002:a05:620a:852:: with SMTP id
 u18mr7389883qku.365.1606664599816; 
 Sun, 29 Nov 2020 07:43:19 -0800 (PST)
Received: from ?IPv6:2604:2000:14c6:84b0:f026:b7b7:6302:bfe1?
 ([2604:2000:14c6:84b0:f026:b7b7:6302:bfe1])
 by smtp.gmail.com with ESMTPSA id g70sm11519531qke.8.2020.11.29.07.43.19
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 29 Nov 2020 07:43:19 -0800 (PST)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.40.0.2.31\))
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
From: Sean Devlin <spd@HIDDEN>
In-Reply-To: <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
Date: Sun, 29 Nov 2020 10:43:18 -0500
Content-Transfer-Encoding: quoted-printable
Message-Id: <E3927CEA-ABE7-479E-A8D7-D57AFF565ABA@HIDDEN>
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
 <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
X-Mailer: Apple Mail (2.3654.40.0.2.31)
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 44933
Cc: 44933 <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: -1.0 (-)

Hi Martin,

> On Nov 29, 2020, at 3:22 AM, martin rudalics <rudalics@HIDDEN> wrote:
>=20
> > Selecting a different frame ephmerally (e.g. via =
`with-selected-frame`
> > in a timer callback) shrinks the minibuffer. This is true whether or =
not
> > the minibuffer is active.
> >
> > Reproduction steps:
> >
> > 1. Evaluate this form in the scratch buffer:
> >
> >     (run-with-timer nil 13 (lambda () (with-selected-frame
> >     (next-frame))))
> >
> > 2. Evaluate this form in the scratch buffer:
> >
> >     (run-with-timer nil 11 (lambda () (window-resize =
(minibuffer-window)
> >     10)))
> >
> > 3. Observe that the minibuffer grows and shrinks as the timers fire.
>=20
> Here I need two frames to observe 3.  With one frame the minibuffer
> window grows continuously.

Ah, you=E2=80=99re right. I had left this out of my reproduction steps. =
Sorry!

>=20
> > You can run some completing read command (e.g. `M-x`) to see that =
the
> > resizing happens whether or not the minibuffer is active.
> >
> > This is relevant for completing read implementations that resize the
> > minibuffer to display a vertical list of candidates. I noticed the
> > behavior while using selectrum =
(https://github.com/raxod502/selectrum)
> > while I had a subprocess running under term in another frame. Since =
the
> > `term-emulate-terminal` function selects windows in the background
> > whenever the subprocess sends output, it was causing the selectrum
> > minibuffer to shrink.
> >
> > I'm not sure what the correct behavior is here, but this was =
unexpected
> > to me. I think that if the minibuffer is active, ephemeral frame or
> > window selections should not affect its size. (I'm less certain =
about
> > the inactive minibuffer case, but I think the size should stay the =
same
> > there as well.)
>=20
> To my knowledge we have no means to select a frame "ephemerally".
> 'with-selected-frame', 'with-selected-window' are just as "hard" as
> 'select-frame' and 'select-window'.  And so the only way to prevent
> switching frames from shrinking the previously selected frame's
> minibuffer window is to set 'resize-mini-windows' to nil.  OTOH with
> 'resize-mini-windows' non-nil, re-selecting the previously selected =
frame
> when returning from a 'with-selected-frame' should size its minibuffer
> window back to its contents provided it is still active.  But I'm =
never
> sure whether all these work as advertised.

I see, thank you.

It looks like the default value for `resize-mini-windows` is
`grow-only`. The docs for `resize-mini-windows` suggest it is used
along with the text in the minibuffer to decide how to resize the
window. I think this may be the issue, since my minibuffer has no text
spanning multiple lines.

In my reproduction, the minibuffer window is grown manually via
`window-resize`. In the case of selectrum, the completing read
candidates are displayed via overlay. I think this means that a
resizing function that considers the buffer text only will resize
these back down to a single line.

I just tested, and binding `resize-mini-windows` to nil around the
window selection in `term-emulate-terminal` does solve my
problem. Does this seem like the right fix? I think it is surprising
that output from a term process coming in the background should resize
a minibuffer window (and especially an active one).

Also, I see that `term-emulate-terminal` is calling `select-window` to
perform its window selections. =46rom my reading of the docs, I think it
might make sense for it to pass `mark-for-redisplay` as the `norecord`
argument. It doesn't seem like we should be modifying the buffer list
or most recently selected window in this case, but we do want to
redisplay the new output.

I think the documentation should clarify that window selection can
change window sizes as a side effect. The docs for selecting windows
=
(https://www.gnu.org/software/emacs/manual/html_node/elisp/Selecting-Windo=
ws.html)
do not mention that `select-window` can change minibuffer sizes. The
docs for minibuffer windows
=
(https://www.gnu.org/software/emacs/manual/html_node/elisp/Minibuffer-Wind=
ows.html)
do mention these variables to control how minibuffer windows can be
resized automatically, but they do not say what functions might try to
do this automatic resizing.

Finally, I wonder if `with-selected-window` (which
`term-emulate-terminal` does not currently use) should bind
`resize-mini-windows`. The docs say it is "the preferred way to
temporarily work with" a selected window, so it does seem like
automatic resizing is not in the spirit of the function. On the other
hand, I don't know all the existing use cases; maybe this would break
things.

Thanks!

>=20
> martin





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at 44933 <at> debbugs.gnu.org:


Received: (at 44933) by debbugs.gnu.org; 29 Nov 2020 08:22:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 29 03:22:11 2020
Received: from localhost ([127.0.0.1]:49612 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kjHyF-000263-Hs
	for submit <at> debbugs.gnu.org; Sun, 29 Nov 2020 03:22:11 -0500
Received: from mout.gmx.net ([212.227.15.19]:34829)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <rudalics@HIDDEN>) id 1kjHyC-00025n-Rh
 for 44933 <at> debbugs.gnu.org; Sun, 29 Nov 2020 03:22:10 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;
 s=badeba3b8450; t=1606638122;
 bh=eKj9AtUYeBLcVPkGubcG1kSEzGw0erVr1XVbaokvk0Q=;
 h=X-UI-Sender-Class:Subject:To:References:From:Date:In-Reply-To;
 b=j1hfXBk2moQh9m3KNjSOBvsF5VC4ppoOXYHBLGdJM7oAElhJM8xfknC/Hp0gdwia3
 ZKWPH87UBMSElMnMrCO2/S+32e7YznSy/dzjWy3fszpsjXmkXGf7huwwffK+sxTBQC
 CTAH8sgEAlyuJJCApBcR5Ewg95h4efqQtXREBUlc=
X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c
Received: from [192.168.1.100] ([212.95.5.227]) by mail.gmx.com (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MbAh0-1kCQ7d3wJU-00bbSm; Sun, 29
 Nov 2020 09:22:02 +0100
Subject: Re: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer
To: Sean Devlin <spd@HIDDEN>, 44933 <at> debbugs.gnu.org
References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
From: martin rudalics <rudalics@HIDDEN>
Message-ID: <fb3f2e82-3ec0-c0cb-689f-0d38a33d37c7@HIDDEN>
Date: Sun, 29 Nov 2020 09:22:00 +0100
MIME-Version: 1.0
In-Reply-To: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:smhYfoX3kXe3JSQWoJJhOQaFqbFxt3joDCNJJ+O/NtdPuegjCUR
 ECPfR1em5iRpgtBmwJO31kDF/Cil44HNmJJTNqayONo2GFb9zuLC8cyl1p4VWeuc0YBt2L3
 pzSqXxmlX+c3nkfFXhGuxBGi2iq8BdjQNX5Y0sLfgqz/KH99TiE+NbfahDf4JmG8mEScUaA
 +0KviEp900GnzIu5B++0w==
X-Spam-Flag: NO
X-UI-Out-Filterresults: notjunk:1;V03:K0:99hMgVuNPuE=:x1uD2pQ2wMGOzVWb0IVplr
 NHbcS5arcbXXb7XHKfGDuv130xP+zuQCUFAI8pjQ3ju1j2x3wh7UTQLamPHnnXOLsy6ay/U/R
 ZZ3Td39WXNMTlZOqiAnIfODqcg4Lhjs8ji+LH5/0txGzCM3HDqgSRm2bRbvPfHelubTrlqJ9c
 t0qvwmH5cDWgApsUvSgPrFnCB9YWJUld7TmseFZHlAmpkKt+nysmV9cN0slVtKYBArE+W9y9J
 i8Rd4PBQbA5RBUXS7pvTQr9emoXu6uP9PtI4cdddU78jvvatN1F2XbXQ8vw7Kc3KVQ9jFilEZ
 ApOGb+24P1+ZU4y7tCIa91dQbd4EanFNhgvfPgirU4d+O8Xx5bm23EXUmNHivh3qIwv5JkUYi
 TfEgBxzEfOTtORBgrh8myWMAXxxTESuYpmZ6//sy86XZjknkrl6nL0sX/eqrUnBG/Ll2P8/vM
 H0JTs4tN0QeitTz/WTFQ4UxYDYBi6iEpUl1T3ijFht2VtwDtmhNlwdcvAxHwAmunkTndnDaT0
 axmB8ihyslwWqctc/gAvdBJmSZrAIGv9N6aF5P4QifgMNols6+yFjM7GHIbc4S9c8UHvZkoo5
 qp7cMhkoN3bSZLWmcCpqHbc4KHuevGdbuccSFFfuVgadhlipeEfPzng76N+V+mVpgsSTYGqbL
 bbUr2n2PuVjyzTWRam6eOFLX3S+w+42s779EPSYMI9euMv7vrvyuqAnczwKaXYgwaLm2cjM2n
 /VhEQTUqjb1AxdgCv7oC/QcFnwu+TKuqgUhVD5eHRu2dZ7LEbhwgG+5MAdbvx2PF1c2Ul7G5e
 7/8HsNtIpaT57OK7u8xMLxQgAYsUysnmlUFKfgaS3TXwS1oQbp26FrnAcseS0s0mb5TVu2CkB
 TP+VTrIcmIwNrJD3yzsw==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 44933
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.7 (-)

 > Selecting a different frame ephmerally (e.g. via `with-selected-frame`
 > in a timer callback) shrinks the minibuffer. This is true whether or not
 > the minibuffer is active.
 >
 > Reproduction steps:
 >
 > 1. Evaluate this form in the scratch buffer:
 >
 >     (run-with-timer nil 13 (lambda () (with-selected-frame
 >     (next-frame))))
 >
 > 2. Evaluate this form in the scratch buffer:
 >
 >     (run-with-timer nil 11 (lambda () (window-resize (minibuffer-window)
 >     10)))
 >
 > 3. Observe that the minibuffer grows and shrinks as the timers fire.

Here I need two frames to observe 3.  With one frame the minibuffer
window grows continuously.

 > You can run some completing read command (e.g. `M-x`) to see that the
 > resizing happens whether or not the minibuffer is active.
 >
 > This is relevant for completing read implementations that resize the
 > minibuffer to display a vertical list of candidates. I noticed the
 > behavior while using selectrum (https://github.com/raxod502/selectrum)
 > while I had a subprocess running under term in another frame. Since the
 > `term-emulate-terminal` function selects windows in the background
 > whenever the subprocess sends output, it was causing the selectrum
 > minibuffer to shrink.
 >
 > I'm not sure what the correct behavior is here, but this was unexpected
 > to me. I think that if the minibuffer is active, ephemeral frame or
 > window selections should not affect its size. (I'm less certain about
 > the inactive minibuffer case, but I think the size should stay the same
 > there as well.)

To my knowledge we have no means to select a frame "ephemerally".
'with-selected-frame', 'with-selected-window' are just as "hard" as
'select-frame' and 'select-window'.  And so the only way to prevent
switching frames from shrinking the previously selected frame's
minibuffer window is to set 'resize-mini-windows' to nil.  OTOH with
'resize-mini-windows' non-nil, re-selecting the previously selected frame
when returning from a 'with-selected-frame' should size its minibuffer
window back to its contents provided it is still active.  But I'm never
sure whether all these work as advertised.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 28 Nov 2020 21:21:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 28 16:21:52 2020
Received: from localhost ([127.0.0.1]:49224 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1kj7fD-0004GI-MD
	for submit <at> debbugs.gnu.org; Sat, 28 Nov 2020 16:21:52 -0500
Received: from lists.gnu.org ([209.51.188.17]:37528)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <spd@HIDDEN>) id 1kj7fA-0004G9-Ij
 for submit <at> debbugs.gnu.org; Sat, 28 Nov 2020 16:21:49 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:57770)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <spd@HIDDEN>) id 1kj7fA-0000vO-0t
 for bug-gnu-emacs@HIDDEN; Sat, 28 Nov 2020 16:21:48 -0500
Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]:44423)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <spd@HIDDEN>) id 1kj7f7-0006oR-Me
 for bug-gnu-emacs@HIDDEN; Sat, 28 Nov 2020 16:21:47 -0500
Received: by mail-qt1-x835.google.com with SMTP id m65so5603633qte.11
 for <bug-gnu-emacs@HIDDEN>; Sat, 28 Nov 2020 13:21:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=toadstyle-org.20150623.gappssmtp.com; s=20150623;
 h=from:content-transfer-encoding:mime-version:subject:message-id:date
 :to; bh=n58A5ZrUUclG9it0G3swAgiOxEkpBLToGq1jVHHhYOA=;
 b=MsB5CKSBybzGxsrJ+ECbbykYpsHprZ93EK+PYhqUvXmNlLNbQRCgtQmP6C8KVedZuT
 pVOCZiZClXVVtX7S31k2V8cK6LD/qc3Nw9g1WpQ87F/kWigCdsi3AokCAIABzEVnPZnq
 Bw0N5rsDNED1IlSwvTkq3t5IbSpk+7YeocSafWnYgfZAAw39LmUA3rFukFw9Px0sPB+4
 yX17choyW/jifLyiNlujaaAGPypfnt5Twy0C71pnDiwV5kqypx5S1iLpORpRgdr+OFka
 Fusv2FdXZurmC5Wq5QoJHXi82pzizq6XzC7/dSrpmyjLbj3+wjycZNYlLjI1VLIZtEtf
 bMNA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:content-transfer-encoding:mime-version
 :subject:message-id:date:to;
 bh=n58A5ZrUUclG9it0G3swAgiOxEkpBLToGq1jVHHhYOA=;
 b=t4hW0ocnfta2akl4vifNANbH+mYMXCz+n2EGN9vESlq3MAujxtu0aY6Oy3W8A3rZOM
 qBNaPAS3OqaDf1XsMd3VZt0ijpKV0MAg7LHQkxiO3n1voD1r5PPlaerbnqhG2Z+xIByo
 a04br/ThEXyr57H4i5eL1CvrC7Se6EuwEg3r7p9rUrvAL64iFyyVZpgtPTOlYc9nHxFv
 2qTUpKQsPW5O7cU6yvaYUxdgzHU0j1xdMMQXVAkW3eikDTDVlbwdFasNhR1WxBLYj96X
 u0AT5v9y2WbKpjNGrq4mzBpl+N9GH2rtY4xBpt8PhmRK3BMJ5ahqM6CdjgMr1FMEawHX
 jTRw==
X-Gm-Message-State: AOAM530El9TobDGGF+6HNigpu4lazlvgq1tL+BxAoU+gYxDnxxJ7Ztc6
 OCJlxPBjALJ6ibpma+csw/Hau3owJupRrQ==
X-Google-Smtp-Source: ABdhPJxn9DXzYyluaVnvfiXAjm0aK80cU8f8r3Rw7N9GUNWm6i2ruo/frhFeu5CISfB7ja+GdbyzgQ==
X-Received: by 2002:ac8:44b5:: with SMTP id a21mr14720992qto.104.1606598502311; 
 Sat, 28 Nov 2020 13:21:42 -0800 (PST)
Received: from ?IPv6:2604:2000:14c6:84b0:4daa:78c5:fda3:2bbe?
 ([2604:2000:14c6:84b0:4daa:78c5:fda3:2bbe])
 by smtp.gmail.com with ESMTPSA id u5sm10755826qka.106.2020.11.28.13.21.41
 for <bug-gnu-emacs@HIDDEN>
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 28 Nov 2020 13:21:41 -0800 (PST)
From: Sean Devlin <spd@HIDDEN>
Content-Type: text/plain;
	charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.40.0.2.31\))
Subject: 27.1; Ephemeral frame selection shrinks minibuffer
Message-Id: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN>
Date: Sat, 28 Nov 2020 16:21:40 -0500
To: bug-gnu-emacs@HIDDEN
X-Mailer: Apple Mail (2.3654.40.0.2.31)
Received-SPF: pass client-ip=2607:f8b0:4864:20::835;
 envelope-from=spd@HIDDEN; helo=mail-qt1-x835.google.com
X-Spam_score_int: -18
X-Spam_score: -1.9
X-Spam_bar: -
X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, 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: -1.3 (-)
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: -2.3 (--)

Hi folks,

Selecting a different frame ephmerally (e.g. via `with-selected-frame`
in a timer callback) shrinks the minibuffer. This is true whether or not
the minibuffer is active.

Reproduction steps:

1. Evaluate this form in the scratch buffer:

   (run-with-timer nil 13 (lambda () (with-selected-frame
   (next-frame))))

2. Evaluate this form in the scratch buffer:

   (run-with-timer nil 11 (lambda () (window-resize (minibuffer-window)
   10)))

3. Observe that the minibuffer grows and shrinks as the timers fire.

You can run some completing read command (e.g. `M-x`) to see that the
resizing happens whether or not the minibuffer is active.

This is relevant for completing read implementations that resize the
minibuffer to display a vertical list of candidates. I noticed the
behavior while using selectrum (https://github.com/raxod502/selectrum)
while I had a subprocess running under term in another frame. Since the=20=

`term-emulate-terminal` function selects windows in the background =20
whenever the subprocess sends output, it was causing the selectrum
minibuffer to shrink.

I'm not sure what the correct behavior is here, but this was unexpected
to me. I think that if the minibuffer is active, ephemeral frame or
window selections should not affect its size. (I'm less certain about
the inactive minibuffer case, but I think the size should stay the same
there as well.)

Thanks!

In GNU Emacs 27.1 (build 1, x86_64-apple-darwin18.7.0, NS appkit-1671.60 =
Version 10.14.6 (Build 18G95))
of 2020-08-12 built on builder10-14.porkrind.org
Windowing system distributor 'Apple', version 10.3.2022
System Description:  macOS 11.0

Recent messages:
Beginning of buffer [5 times]
uncompressing window.el.gz...done
Making completion list...
Type C-x 1 to delete the help window, C-M-v to scroll help.
t [2 times]
Quit [3 times]
[nil 24514 47830 650446 10 (closure (t) nil (window-resize =
(minibuffer-window) 10)) nil nil 0]
[nil 24514 47883 629069 11 (closure (t) nil (let (... ...) =
(unwind-protect ... ... ...))) nil nil 0]
End of buffer [6 times]
Beginning of buffer [8 times]

Configured using:
'configure --with-ns '--enable-locallisppath=3D/Library/Application
Support/Emacs/${version}/site-lisp:/Library/Application
Support/Emacs/site-lisp' --with-modules'

Configured features:
NOTIFY KQUEUE ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS MODULES
THREADS JSON PDUMPER

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr cl-print debug backtrace cl-extra minibuf-eldef
help-fns radix-tree help-mode emacsbug message rmc puny dired
dired-loaddefs format-spec rfc822 mml easymenu mml-sec password-cache
epa derived epg epg-config gnus-util rmail rmail-loaddefs
text-property-search time-date subr-x seq byte-opt gv bytecomp
byte-compile cconv mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils linum misearch
multi-isearch jka-compr thingatpt find-func tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win
ucs-normalize mule-util term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
font-core term/tty-colors frame minibuffer cl-generic 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 charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads kqueue cocoa ns
multi-tty make-network-process emacs)

Memory information:
((conses 16 59777 30679)
(symbols 48 6538 1)
(strings 32 19388 2002)
(string-bytes 1 586736)
(vectors 16 11741)
(vector-slots 8 146822 21486)
(floats 8 40 48)
(intervals 56 896 92)
(buffers 1000 16))




Acknowledgement sent to Sean Devlin <spd@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#44933; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 14 Dec 2020 16:00:01 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.