X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: Sean Devlin <spd@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 28 Nov 2020 21:22:02 +0000 Resent-Message-ID: <handler.44933.B.160659851216390 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 44933 <at> debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN Received: via spool by submit <at> debbugs.gnu.org id=B.160659851216390 (code B ref -1); Sat, 28 Nov 2020 21:22:02 +0000 Received: (at submit) by debbugs.gnu.org; 28 Nov 2020 21:21:52 +0000 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\)) Message-Id: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN> Date: Sat, 28 Nov 2020 16:21:40 -0500 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-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))
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Sean Devlin <spd@HIDDEN> Subject: bug#44933: Acknowledgement (27.1; Ephemeral frame selection shrinks minibuffer) Message-ID: <handler.44933.B.160659851216390.ack <at> debbugs.gnu.org> References: <65A18F9E-3193-4DBD-84D8-4EDCA5AB95A1@HIDDEN> X-Gnu-PR-Message: ack 44933 X-Gnu-PR-Package: emacs Reply-To: 44933 <at> debbugs.gnu.org Date: Sat, 28 Nov 2020 21:22:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): bug-gnu-emacs@HIDDEN If you wish to submit further information on this problem, please send it to 44933 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 44933: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D44933 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: martin rudalics <rudalics@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 29 Nov 2020 08:23:02 +0000 Resent-Message-ID: <handler.44933.B44933.16066381328067 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Sean Devlin <spd@HIDDEN>, 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.16066381328067 (code B ref 44933); Sun, 29 Nov 2020 08:23:02 +0000 Received: (at 44933) by debbugs.gnu.org; 29 Nov 2020 08:22:12 +0000 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 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-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
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: Sean Devlin <spd@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 29 Nov 2020 15:44:02 +0000 Resent-Message-ID: <handler.44933.B44933.160666460819440 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics <rudalics@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160666460819440 (code B ref 44933); Sun, 29 Nov 2020 15:44:02 +0000 Received: (at 44933) by debbugs.gnu.org; 29 Nov 2020 15:43:28 +0000 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\)) 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> X-Mailer: Apple Mail (2.3654.40.0.2.31) X-Spam-Score: -0.0 (/) 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
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: martin rudalics <rudalics@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Mon, 30 Nov 2020 09:06:02 +0000 Resent-Message-ID: <handler.44933.B44933.160672710621855 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Sean Devlin <spd@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160672710621855 (code B ref 44933); Mon, 30 Nov 2020 09:06:02 +0000 Received: (at 44933) by debbugs.gnu.org; 30 Nov 2020 09:05:06 +0000 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 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-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
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: Sean Devlin <spd@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Mon, 30 Nov 2020 19:33:02 +0000 Resent-Message-ID: <handler.44933.B44933.16067647572490 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics <rudalics@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.16067647572490 (code B ref 44933); Mon, 30 Nov 2020 19:33:02 +0000 Received: (at 44933) by debbugs.gnu.org; 30 Nov 2020 19:32:37 +0000 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\)) 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> X-Mailer: Apple Mail (2.3654.40.0.2.31) X-Spam-Score: -0.0 (/) 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
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: martin rudalics <rudalics@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Tue, 01 Dec 2020 09:34:02 +0000 Resent-Message-ID: <handler.44933.B44933.160681523225585 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Sean Devlin <spd@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160681523225585 (code B ref 44933); Tue, 01 Dec 2020 09:34:02 +0000 Received: (at 44933) by debbugs.gnu.org; 1 Dec 2020 09:33:52 +0000 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 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-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
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: Sean Devlin <spd@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Tue, 01 Dec 2020 20:33:01 +0000 Resent-Message-ID: <handler.44933.B44933.160685478012853 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics <rudalics@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160685478012853 (code B ref 44933); Tue, 01 Dec 2020 20:33:01 +0000 Received: (at 44933) by debbugs.gnu.org; 1 Dec 2020 20:33:00 +0000 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\)) Date: Tue, 1 Dec 2020 15:32:48 -0500 In-Reply-To: <782db472-6b44-c62c-e175-44e77589b85f@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-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 = <<a href=3D"mailto:rudalics@HIDDEN" class=3D"">rudalics@HIDDEN</a>> = wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><div = class=3D"">> I=E2=80=99m not sure I understand. Are you saying a = program should not be able<br class=3D"">> to grow the minibuffer = window this way? Or just that it will be undone<br class=3D"">> by = the next resizing event? (Of course, this is a toy example, so I<br = class=3D"">> have no opinion on what the correct behavior should be. = I=E2=80=99m just<br class=3D"">> 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. 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. 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"">> 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"">><br class=3D"">> = For example, I have three frames open and I ran this code in the scratch = buffer:<br class=3D"">><br class=3D"">> (with-current-buffer = (window-buffer (minibuffer-window))<br class=3D"">> = (remove-overlays)<br class=3D"">> = (erase-buffer)<br class=3D"">> = (insert "this is some text")<br class=3D"">> = (let ((ov (make-overlay (point) (point) nil t t)))<br = class=3D"">> (overlay-put ov = 'after-string "\none\ntwo\nthree")))<br class=3D"">><br class=3D"">>= 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"">><br class=3D"">> 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"">><br = class=3D"">> 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"">><br class=3D"">> 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. = 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"">> This function is the = process filter for a term process, so it handles<br class=3D"">> new = output from the process. After doing so, it iterates over all the<br = class=3D"">> windows to see if any contain the process buffer. For = any that are, it<br class=3D"">> 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> = (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""> if (!for_deletion && FRAME_HAS_MINIBUF_P = (sf))<br class=3D""> 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"">>> With = the recently added 'minibuffer-follows-selected-frame' we now have<br = class=3D"">>> an additional source of complications to consider. = Maybe you could, as<br class=3D"">>> soon as the = implementation of the latter has consolidated, play with the<br = class=3D"">>> various values of 'resize-mini-windows' and suggest = suitable fixes for<br class=3D"">>> the documentations of = 'select-window' and 'select-frame'.<br class=3D"">><br class=3D"">> = 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"">> = =46rom testing the current implementation, it seems selectrum has = a<br class=3D"">> similar issue here: when I switch to a new frame, = the minibuffer does<br class=3D"">> follow, but the list of = candidates is hidden until I enter a new<br class=3D"">> 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. 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--
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: martin rudalics <rudalics@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 02 Dec 2020 07:46:01 +0000 Resent-Message-ID: <handler.44933.B44933.160689512719473 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Sean Devlin <spd@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160689512719473 (code B ref 44933); Wed, 02 Dec 2020 07:46:01 +0000 Received: (at 44933) by debbugs.gnu.org; 2 Dec 2020 07:45:27 +0000 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 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-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
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: martin rudalics <rudalics@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 02 Dec 2020 07:53:02 +0000 Resent-Message-ID: <handler.44933.B44933.160689557920155 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Sean Devlin <spd@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160689557920155 (code B ref 44933); Wed, 02 Dec 2020 07:53:02 +0000 Received: (at 44933) by debbugs.gnu.org; 2 Dec 2020 07:52:59 +0000 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 From: 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> 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-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
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: Sean Devlin <spd@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Wed, 02 Dec 2020 18:25:02 +0000 Resent-Message-ID: <handler.44933.B44933.160693347523159 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics <rudalics@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160693347523159 (code B ref 44933); Wed, 02 Dec 2020 18:25:02 +0000 Received: (at 44933) by debbugs.gnu.org; 2 Dec 2020 18:24:35 +0000 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\)) 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> X-Mailer: Apple Mail (2.3654.40.0.2.31) X-Spam-Score: 0.0 (/) 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
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: Sean Devlin <spd@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 12 Dec 2020 20:24:01 +0000 Resent-Message-ID: <handler.44933.B44933.16078046075978 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics <rudalics@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.16078046075978 (code B ref 44933); Sat, 12 Dec 2020 20:24:01 +0000 Received: (at 44933) by debbugs.gnu.org; 12 Dec 2020 20:23:27 +0000 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\)) Date: Sat, 12 Dec 2020 15:23:17 -0500 In-Reply-To: <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> <27E5B1BA-BD49-493D-8E12-CE42B1AD3E2F@HIDDEN> X-Mailer: Apple Mail (2.3654.40.0.2.31) 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^>>>>=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 <<a = href=3D"mailto:spd@HIDDEN" class=3D"">spd@HIDDEN</a>> = 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 <<a = href=3D"mailto:rudalics@HIDDEN" class=3D"">rudalics@HIDDEN</a>> = 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. = 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). 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--
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: martin rudalics <rudalics@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 13 Dec 2020 07:27:02 +0000 Resent-Message-ID: <handler.44933.B44933.160784439829888 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Sean Devlin <spd@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160784439829888 (code B ref 44933); Sun, 13 Dec 2020 07:27:02 +0000 Received: (at 44933) by debbugs.gnu.org; 13 Dec 2020 07:26:38 +0000 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 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-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
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: Sean Devlin <spd@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sun, 13 Dec 2020 16:11:01 +0000 Resent-Message-ID: <handler.44933.B44933.160787584431358 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics <rudalics@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160787584431358 (code B ref 44933); Sun, 13 Dec 2020 16:11:01 +0000 Received: (at 44933) by debbugs.gnu.org; 13 Dec 2020 16:10:44 +0000 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) 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> X-Mailer: iPhone Mail (18E110) X-Spam-Score: -0.0 (/) 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: <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 <rudalics@HIDDEN> wrote:<br><br></block= quote></div><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB=BF<span>> I= instrumented the code in a couple key places and then exercised the</span><= br><span>> 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--
X-Loop: help-debbugs@HIDDEN Subject: bug#44933: 27.1; Ephemeral frame selection shrinks minibuffer Resent-From: martin rudalics <rudalics@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Mon, 14 Dec 2020 15:48:02 +0000 Resent-Message-ID: <handler.44933.B44933.160796084921294 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 44933 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Sean Devlin <spd@HIDDEN> Cc: 44933 <at> debbugs.gnu.org Received: via spool by 44933-submit <at> debbugs.gnu.org id=B44933.160796084921294 (code B ref 44933); Mon, 14 Dec 2020 15:48:02 +0000 Received: (at 44933) by debbugs.gnu.org; 14 Dec 2020 15:47:29 +0000 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 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-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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.