From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 19 Jun 2014 07:12:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 17809@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.140316190518645 (code B ref -1); Thu, 19 Jun 2014 07:12:03 +0000 Received: (at submit) by debbugs.gnu.org; 19 Jun 2014 07:11:45 +0000 Received: from localhost ([127.0.0.1]:52415 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WxWVc-0004qe-Ij for submit@debbugs.gnu.org; Thu, 19 Jun 2014 03:11:44 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46233) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WxWVa-0004q2-A0 for submit@debbugs.gnu.org; Thu, 19 Jun 2014 03:11:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WxWVL-0002n0-Fo for submit@debbugs.gnu.org; Thu, 19 Jun 2014 03:11:37 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:35695) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxWVL-0002mw-CI for submit@debbugs.gnu.org; Thu, 19 Jun 2014 03:11:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47919) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxWVD-0003IE-Na for bug-gnu-emacs@gnu.org; Thu, 19 Jun 2014 03:11:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WxWV6-0002jm-3h for bug-gnu-emacs@gnu.org; Thu, 19 Jun 2014 03:11:19 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:57291 helo=ps18281.dreamhostps.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxWV5-0002ji-Ti for bug-gnu-emacs@gnu.org; Thu, 19 Jun 2014 03:11:12 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 0422631FEB5B7A for ; Thu, 19 Jun 2014 00:11:10 -0700 (PDT) From: Juri Linkov Organization: JURTA Date: Thu, 19 Jun 2014 09:57:47 +0300 Message-ID: <87d2e5js1o.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Severity: wishlist Tags: patch This is a follow-up to bug#17554. There are two existing display actions that could help to better display *Completions*: - display-buffer-at-bottom for minibuffer-completion-help to display *Completions* near the active minibuffer where it would be easier to find them; - display-buffer-below-selected for completion-at-point that could work like displaying *Marking Files* in Dired to display *Completions* near the point of completion in the current buffer. === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2014-06-02 00:18:22 +0000 +++ lisp/minibuffer.el 2014-06-19 06:55:32 +0000 @@ -1796,7 +1796,25 @@ (defun minibuffer-completion-help (&opti ;; window, mark it as softly-dedicated, so bury-buffer in ;; minibuffer-hide-completions will know whether to ;; delete the window or not. - (display-buffer-mark-dedicated 'soft)) + (display-buffer-mark-dedicated 'soft) + ;; Disable `pop-up-windows' temporarily to allow + ;; `display-buffer--maybe-pop-up-frame-or-window' + ;; in the overridden actions below to pop up a frame + ;; if `pop-up-frames' is non-nil, but not to pop up a window. + (pop-up-windows nil) + (display-buffer-base-action + ;; First check for defined `display-buffer-base-action' + ;; that might be already bound by `completion-at-point'. + (or (and (car-safe display-buffer-base-action) + display-buffer-base-action) + ;; This is a copy of `display-buffer-fallback-action' + ;; where `display-buffer-use-some-window' is replaced + ;; with `display-buffer-at-bottom'. + '((display-buffer--maybe-same-window + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + display-buffer-at-bottom) + (window-height . fit-window-to-buffer))))) (with-output-to-temp-buffer "*Completions*" ;; Remove the base-size tail because `sort' requires a properly ;; nil-terminated list. @@ -2073,7 +2091,17 @@ (defun completion-at-point () The completion method is determined by `completion-at-point-functions'." (interactive) (let ((res (run-hook-wrapped 'completion-at-point-functions - #'completion--capf-wrapper 'all))) + #'completion--capf-wrapper 'all)) + ;; Display buffer like in `minibuffer-completion-help', + ;; but instead of `display-buffer-at-bottom' + ;; use `display-buffer-below-selected'. + (pop-up-windows nil) + (display-buffer-base-action + '((display-buffer--maybe-same-window + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + display-buffer-below-selected) + (window-height . shrink-window-if-larger-than-buffer)))) (pcase res (`(,_ . ,(and (pred functionp) f)) (funcall f)) (`(,hookfun . (,start ,end ,collection . ,plist)) From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 24 Jun 2014 00:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140356963132665 (code B ref 17809); Tue, 24 Jun 2014 00:28:02 +0000 Received: (at 17809) by debbugs.gnu.org; 24 Jun 2014 00:27:11 +0000 Received: from localhost ([127.0.0.1]:58708 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WzEZq-0008Um-Rh for submit@debbugs.gnu.org; Mon, 23 Jun 2014 20:27:11 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:34330 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WzEZo-0008Ud-H3 for 17809@debbugs.gnu.org; Mon, 23 Jun 2014 20:27:09 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 00EB1311E5A7CE for <17809@debbugs.gnu.org>; Mon, 23 Jun 2014 17:27:06 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87d2e5js1o.fsf@mail.jurta.org> Date: Tue, 24 Jun 2014 02:53:51 +0300 In-Reply-To: <87d2e5js1o.fsf@mail.jurta.org> (Juri Linkov's message of "Thu, 19 Jun 2014 09:57:47 +0300") Message-ID: <87y4wnrw88.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: When the width of the window with *Completions* is more than the default 80 columns, it leaves too much empty space. So it's better first to display an empty buffer, and then fill it with the contents using its final width, but currently this is not supported. [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: When the width of the window with *Completions* is more than the default 80 columns, it leaves too much empty space. So it's better first to display an empty buffer, and then fill it with the contents using its final width, but currently this is not supported. [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] When the width of the window with *Completions* is more than the default 80 columns, it leaves too much empty space. So it's better first to display an empty buffer, and then fill it with the contents using its final width, but currently this is not supported. In `with-output-to-temp-buffer' I tried to reverse the order of lines: (internal-temp-output-buffer-show ,buf) (progn ,@body) and it seems to work, but the problem is that an alist of display-buffer with (window-height . fit-window-to-buffer) is performed on the empty buffer, and reduces it to 3 lines. Then later (progn ,@body) fills it with completions, but the window height remains 3 lines. I see no way to perform these steps using the current display-buffer actions: 1. display the buffer 2. fill it 3. call action alists with fit-window-to-buffer From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 25 Jun 2014 00:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: martin rudalics Cc: 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140365731513871 (code B ref 17809); Wed, 25 Jun 2014 00:49:02 +0000 Received: (at 17809) by debbugs.gnu.org; 25 Jun 2014 00:48:35 +0000 Received: from localhost ([127.0.0.1]:59764 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WzbO6-0003bZ-Hr for submit@debbugs.gnu.org; Tue, 24 Jun 2014 20:48:34 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:43413 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WzbO3-0003bN-EG for 17809@debbugs.gnu.org; Tue, 24 Jun 2014 20:48:31 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 1705037854DAB4; Tue, 24 Jun 2014 17:48:29 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> Date: Wed, 25 Jun 2014 02:44:46 +0300 In-Reply-To: <53A92532.9040901@gmx.at> (martin rudalics's message of "Tue, 24 Jun 2014 09:13:54 +0200") Message-ID: <87y4wlg8gx.fsf_-_@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Alternatively, we could display the buffer first, look at what size we > get, fill the buffer, and possibly resize the window afterwards. I tried to do this in bug#17809, but stumbled on the problem that resizing the window after filling is not supported by display-buffer actions alist. [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > Alternatively, we could display the buffer first, look at what size we > get, fill the buffer, and possibly resize the window afterwards. I tried to do this in bug#17809, but stumbled on the problem that resizing the window after filling is not supported by display-buffer actions alist. [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] > Alternatively, we could display the buffer first, look at what size we > get, fill the buffer, and possibly resize the window afterwards. I tried to do this in bug#17809, but stumbled on the problem that resizing the window after filling is not supported by display-buffer actions alist. > For `with-temp-buffer-window' this means that we would have to fill the > buffer either via `temp-buffer-window-show-hook' or in QUIT-FUNCTION. Maybe filling the buffer is possible in QUIT-FUNCTION, but instead of `with-temp-buffer-window', `minibuffer-completion-help' uses `with-output-to-temp-buffer' that has no QUIT-FUNCTION arg. From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 25 Jun 2014 06:55:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Juri Linkov Cc: 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140367928423199 (code B ref 17809); Wed, 25 Jun 2014 06:55:02 +0000 Received: (at 17809) by debbugs.gnu.org; 25 Jun 2014 06:54:44 +0000 Received: from localhost ([127.0.0.1]:59878 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Wzh6R-000626-7B for submit@debbugs.gnu.org; Wed, 25 Jun 2014 02:54:43 -0400 Received: from mout.gmx.net ([212.227.15.18]:50636) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Wzh6P-00061g-Hy for 17809@debbugs.gnu.org; Wed, 25 Jun 2014 02:54:42 -0400 Received: from [93.82.9.108] ([93.82.9.108]) by mail.gmx.com (mrgmx001) with ESMTPSA (Nemesis) id 0MHH6Z-1Wuy090KSR-00E1d1; Wed, 25 Jun 2014 08:54:34 +0200 Message-ID: <53AA7222.1010905@gmx.at> Date: Wed, 25 Jun 2014 08:54:26 +0200 From: martin rudalics MIME-Version: 1.0 References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> In-Reply-To: <87y4wlg8gx.fsf_-_@mail.jurta.org> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:FyTaGAhDK6edsoSwbQ2xrGAIsdl9ZDivhT46SF51U+cbOph6nQM xfmMGj0ZTnXh+sKURrfKBqG8D96PRlgajaxiE9oe1x+dg09WyEIZOWQUI/T9Yk/G4+KqoVt wLUM5IIRBtiN2oSWFShEOpzMd2Wip1LL7d47lp/nqMoUJMVNJtpCHbWmmg5b8RVtqYRwRGn kIYVJgV9dwQPM/0Skylww== X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) > I tried to do this in bug#17809, but stumbled on the problem > that resizing the window after filling is not supported > by display-buffer actions alist. `display-buffer' obviously expects the buffer to be "ready" at the time of fitting the window to it. >> For `with-temp-buffer-window' this means that we would have to fill the >> buffer either via `temp-buffer-window-show-hook' or in QUIT-FUNCTION. > > Maybe filling the buffer is possible in QUIT-FUNCTION, but instead of > `with-temp-buffer-window', `minibuffer-completion-help' uses > `with-output-to-temp-buffer' that has no QUIT-FUNCTION arg. Then `temp-buffer-show-hook' should cut it. martin From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Jun 2014 00:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: martin rudalics Cc: 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.14038301069527 (code B ref 17809); Fri, 27 Jun 2014 00:49:02 +0000 Received: (at 17809) by debbugs.gnu.org; 27 Jun 2014 00:48:26 +0000 Received: from localhost ([127.0.0.1]:34115 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0KL4-0002TW-8r for submit@debbugs.gnu.org; Thu, 26 Jun 2014 20:48:26 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:55156 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0KL0-0002TF-U7 for 17809@debbugs.gnu.org; Thu, 26 Jun 2014 20:48:23 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 92F513093D2164; Thu, 26 Jun 2014 17:48:21 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> Date: Fri, 27 Jun 2014 02:41:37 +0300 In-Reply-To: <53AA7222.1010905@gmx.at> (martin rudalics's message of "Wed, 25 Jun 2014 08:54:26 +0200") Message-ID: <8738er89q6.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >>> For `with-temp-buffer-window' this means that we would have to fill the >>> buffer either via `temp-buffer-window-show-hook' or in QUIT-FUNCTION. >> >> Maybe filling the buffer is possible in QUIT-FUNCTION, but instead of >> `with-temp-buffer-window', `minibuffer-completion-help' uses >> `with-output-to-temp-buffer' that has no QUIT-FUNCTION arg. > > Then `temp-buffer-show-hook' should cut it. [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >>> For `with-temp-buffer-window' this means that we would have to fill the >>> buffer either via `temp-buffer-window-show-hook' or in QUIT-FUNCTION. >> >> Maybe filling the buffer is possible in QUIT-FUNCTION, but instead of >> `with-temp-buffer-window', `minibuffer-completion-help' uses >> `with-output-to-temp-buffer' that has no QUIT-FUNCTION arg. > > Then `temp-buffer-show-hook' should cut it. [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] >>> For `with-temp-buffer-window' this means that we would have to fill the >>> buffer either via `temp-buffer-window-show-hook' or in QUIT-FUNCTION. >> >> Maybe filling the buffer is possible in QUIT-FUNCTION, but instead of >> `with-temp-buffer-window', `minibuffer-completion-help' uses >> `with-output-to-temp-buffer' that has no QUIT-FUNCTION arg. > > Then `temp-buffer-show-hook' should cut it. You mean calling `fit-window-to-buffer' in `temp-buffer-show-hook' explicitly instead of using an action alist `(window-height . fit-window-to-buffer)'? But the problem will still remain, and to solve it we need to fill the buffer after displaying that would be possible only after changing the order of calls in `with-output-to-temp-buffer' from (prog1 (progn ,@body) (internal-temp-output-buffer-show ,buf)) to (progn (internal-temp-output-buffer-show ,buf) (progn ,@body) From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Jun 2014 02:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Juri Linkov Cc: martin rudalics , 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140383484424760 (code B ref 17809); Fri, 27 Jun 2014 02:08:02 +0000 Received: (at 17809) by debbugs.gnu.org; 27 Jun 2014 02:07:24 +0000 Received: from localhost ([127.0.0.1]:34151 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0LZT-0006RH-L9 for submit@debbugs.gnu.org; Thu, 26 Jun 2014 22:07:23 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:27543) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0LZQ-0006Qv-PM for 17809@debbugs.gnu.org; Thu, 26 Jun 2014 22:07:21 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArgGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgwYIgRcXdIIlAQEBAQIBViMFCws0EhQYDSSIBAjSGReOegeEOASpGYFqg0wh X-IPAS-Result: ArgGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgwYIgRcXdIIlAQEBAQIBViMFCws0EhQYDSSIBAjSGReOegeEOASpGYFqg0wh X-IronPort-AV: E=Sophos;i="4.97,753,1389762000"; d="scan'208";a="69696438" Received: from 75-119-224-253.dsl.teksavvy.com (HELO pastel.home) ([75.119.224.253]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 26 Jun 2014 22:07:13 -0400 Received: by pastel.home (Postfix, from userid 20848) id C17AA615CF; Thu, 26 Jun 2014 22:07:13 -0400 (EDT) From: Stefan Monnier Message-ID: References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> Date: Thu, 26 Jun 2014 22:07:13 -0400 In-Reply-To: <8738er89q6.fsf@mail.jurta.org> (Juri Linkov's message of "Fri, 27 Jun 2014 02:41:37 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) > You mean calling `fit-window-to-buffer' in `temp-buffer-show-hook' > explicitly instead of using an action alist `(window-height > . fit-window-to-buffer)'? IIUC that would mean that it couldn't be configured via display-buffer-alist, right? Stefan From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Jun 2014 06:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Juri Linkov Cc: 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140385143229997 (code B ref 17809); Fri, 27 Jun 2014 06:44:02 +0000 Received: (at 17809) by debbugs.gnu.org; 27 Jun 2014 06:43:52 +0000 Received: from localhost ([127.0.0.1]:34225 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0Pt2-0007nl-CM for submit@debbugs.gnu.org; Fri, 27 Jun 2014 02:43:52 -0400 Received: from mout.gmx.net ([212.227.15.15]:51175) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0Pt0-0007nW-5x for 17809@debbugs.gnu.org; Fri, 27 Jun 2014 02:43:51 -0400 Received: from [88.117.57.109] ([88.117.57.109]) by mail.gmx.com (mrgmx003) with ESMTPSA (Nemesis) id 0LdIBN-1WIJht3VHV-00iSQn; Fri, 27 Jun 2014 08:43:41 +0200 Message-ID: <53AD1292.9050501@gmx.at> Date: Fri, 27 Jun 2014 08:43:30 +0200 From: martin rudalics MIME-Version: 1.0 References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> In-Reply-To: <8738er89q6.fsf@mail.jurta.org> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:JBN9kED7GkEOL6gI7Nyb154E52E5VKEugRvN5f7v2/F5bj76Hwy Arm/w8fYG1EPBLIuHXYeDAhMDeMC0s5rpOie172AVMBiwceffrVapxhwN/XtnpO842jketC BeRuVfwuzXwBdOPieZoj+NijFjzPi9XqRmNjIytR4t+iy6T6E7PwagHsz3/vHYGiPoqPiaI rQQUhkFypRWlCBOw89ZFA== X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) > You mean calling `fit-window-to-buffer' in `temp-buffer-show-hook' explicitly > instead of using an action alist `(window-height . fit-window-to-buffer)'? Yes. > But the problem will still remain, and to solve it we need to fill the buffer > after displaying that would be possible only after changing the order of calls > in `with-output-to-temp-buffer' from > > (prog1 (progn ,@body) > (internal-temp-output-buffer-show ,buf)) > > to > > (progn > (internal-temp-output-buffer-show ,buf) > (progn ,@body) > I miss you here. My order would be: (1) Get the buffer ready in BODY. (2) Display it in `internal-temp-output-buffer-show'. (3) Fill it in `temp-buffer-show-hook'. martin From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Jun 2014 06:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Monnier , Juri Linkov Cc: 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140385146130096 (code B ref 17809); Fri, 27 Jun 2014 06:45:02 +0000 Received: (at 17809) by debbugs.gnu.org; 27 Jun 2014 06:44:21 +0000 Received: from localhost ([127.0.0.1]:34229 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0PtU-0007pK-TR for submit@debbugs.gnu.org; Fri, 27 Jun 2014 02:44:21 -0400 Received: from mout.gmx.net ([212.227.15.15]:61035) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0PtS-0007ox-IK for 17809@debbugs.gnu.org; Fri, 27 Jun 2014 02:44:19 -0400 Received: from [88.117.57.109] ([88.117.57.109]) by mail.gmx.com (mrgmx002) with ESMTPSA (Nemesis) id 0LyF3F-1WdGtJ3KeD-015dwp; Fri, 27 Jun 2014 08:44:09 +0200 Message-ID: <53AD12AE.2050707@gmx.at> Date: Fri, 27 Jun 2014 08:43:58 +0200 From: martin rudalics MIME-Version: 1.0 References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:28viBZ+HLZpc8EqwILBigUGZ+XcTdGsaAuErfYVEsVPyxrmPDMX tCGTjj3HLWflTNBIDM2NmchkUtqV/pQr38uIsDbzeHaV9IVdd41manIhA1E808VlqHXPCmU fdwQy0YUE5cjbj1yNKpU4rxoebp9UTv+xZomoUCFlsK6+RsbKSSHNBZVoTAfTQqPU99lmm3 PUDrWiGysAloj+IQ/SYpw== X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) >> explicitly instead of using an action alist `(window-height >> . fit-window-to-buffer)'? > > IIUC that would mean that it couldn't be configured via > display-buffer-alist, right? Obviously. Do we want to control filling via `display-buffer'? Anyway, the output happens via `with-output-to-temp-buffer' which has no direct means to pass an appropriate action to `display-buffer'. If we used `with-temp-buffer-window' instead, we could pass an ACTION argument to fill the buffer according to the size of the window used instead of adjusting the window to the buffer size. In that case the configuration could be controlled via `display-buffer-alist'. martin From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Jun 2014 01:03:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: martin rudalics Cc: 17809@debbugs.gnu.org, Stefan Monnier Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140391733813214 (code B ref 17809); Sat, 28 Jun 2014 01:03:01 +0000 Received: (at 17809) by debbugs.gnu.org; 28 Jun 2014 01:02:18 +0000 Received: from localhost ([127.0.0.1]:35475 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0h21-0003Qy-IM for submit@debbugs.gnu.org; Fri, 27 Jun 2014 21:02:17 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:49309 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0h1x-0003Qo-VD for 17809@debbugs.gnu.org; Fri, 27 Jun 2014 21:02:14 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 8E1873093E8ABD; Fri, 27 Jun 2014 18:02:11 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> Date: Sat, 28 Jun 2014 02:54:10 +0300 In-Reply-To: <53AD12AE.2050707@gmx.at> (martin rudalics's message of "Fri, 27 Jun 2014 08:43:58 +0200") Message-ID: <877g41vp5x.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain >>> explicitly instead of using an action alist `(window-height >>> . fit-window-to-buffer)'? >> >> IIUC that would mean that it couldn't be configured via >> display-buffer-alist, right? > > Obviously. Do we want to control filling via `display-buffer'? Maybe it would be a good thing to add a new action parameter to `display-buffer' that would be like the existing `quit-function' in `with-current-buffer-window', and will call its body between displaying the buffer and applying final actions alists like (window-height . fit-window-to-buffer) > Anyway, the output happens via `with-output-to-temp-buffer' which has no > direct means to pass an appropriate action to `display-buffer'. If we > used `with-temp-buffer-window' instead, we could pass an ACTION argument > to fill the buffer according to the size of the window used instead of > adjusting the window to the buffer size. In that case the configuration > could be controlled via `display-buffer-alist'. `dired-mark-pop-up' already uses `with-current-buffer-window' that is like `with-temp-buffer-window', but still has the same problem as the screenshot below demonstrates: it inserts the contents to the buffer before displaying it, so it has no way to get the final window dimensions while inserting the contents, and leaves empty columns. It's possible in `dired-mark-pop-up' to move formatting (i.e. the call to `dired-format-columns-of-files') from the BODY arg of `with-current-buffer-window' to its QUIT-FUNCTION arg, and it will fill the empty columns, because the formatting will happen after displaying the buffer. But then (window-height . fit-window-to-buffer) will be called on the empty buffer, that will always produce a small window with 3-lines height. --=-=-= Content-Type: image/png Content-Disposition: inline; filename=completions.png Content-Transfer-Encoding: base64 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 76JnwxAMwJ0ym2H3fMC+2ldwVY11LFq9h2KiuOiZKdxX6RlfXjJXvMYD45eQHteNUc/dzfmxNkr2 fsusybN2dmEAACAASURBVLNZvH4fhQRTve1l3HzXjXSKdwJu9i6bwnNTF5OcH0Wbq3uQ/6eG4dbh siH30DXi8Poo5Jfnb2HMNweH5jfgzmkvcVmcv8kry8f5m+RtWcDkyf9jxfYcTGyExLfkqkce4/oG AT7r5y9vHw5naW9IMwAHYNidOJ3OSolTb+YPvDPxTT5en0aJLZwGXQcw/I5LqB9sgGcXH9xzD4vq diJ+byoHCnLx1rqEu+/rT8vwE5EAtBHWpDtXNIGCNYuw4T4jP6zMnA18uTWM9oOrHfmDy7ATEODE eXjnSO8+PhoxjK+ueIMXL43Fhpvts+7igc23MuvZ8wj17uOjEXfxaePLabDrZ5L2ppEf240RYwdz dpQNsChOXczkF2fw1fYCQuufzwWRbijvWO4mZcGLTPxwDckZxWCPILHLdQy74zIahtgo+PEJbn4p j7ohyfxW0oorz/fw7aKNmO2H8fwjPYi3g5n3G59MncIH32wj2xtMzY7Xcs+9fWjhspWd/9HPz506 j8cfn09qQTZ5hfDEbasIsNmpdsljjLuxPk4f5+c3I5TGXepxYNa37LypEYlORERERERERP4RTmz3 LKuE7L372bO/gPKB2rYozh/aG3POAwy9+0U2nzuUy4I2sejt8Yx9/D8s2RtW9fI9p0Gyx53D3pTt 7NjnJhDAaSdzZzI7dmZQXD5dYCiNzk0gY9n7zNscSMt21SlPM1rF7PklBWerK7l12HDu6tsGM/lr pk78hF2ew4618xO+9Z7NjXcNY0i/TtQIqJistMj56W3GjF9CevVLGfP83Zwfa8fK/5k3Hn6eBetL aHnNzdx8dXOK181j/OPvst0N3rQlTHx5Mcl5kZzV4zyCV/6PrX8qgZrKJ1MmMXHiRCZOnMjkeVvL 5kMMoHbPuxk+bCCdIv5Es/Fx/rh3suClt/k2JYqLb3+AUSPv5Jp2UbhLzGOon1PIu58vX3iOzxx9 ePG9+cx7eySttrzBk7O2UHRoJfanVOeW8a/w+hsTGRT4CeP+s5Y8zTd5KAz3/cIusxpNqv0VmTsP e7cEc80TL/Pm25O43viCqR+nlKaa3Sl88Oxk1ifey7S5c3nj9pr8+lMungpxSWBz+ox+g/999BHz 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 njSpUqH47J8hlKaPfnJqBIv9CJMaGKk1aBS9WjekZpiZ4DOWh/yDMxjYOBBN0xHQuB+jOocS2GMV pSfpHRlbmdyvGRWNGprOlzrd3ua3NNdHyBQeW8oLnSLx1jQ0fQhN+k9hd7ZyuXxnX3Fgy4E8/Vhn WtYw43H207nbmfTxEe78/BvG3FOXSoEhRDbtQOtw2XLfFCRf7uXLuynPT3yJvm3rUjkojDqdn2NM S8Vfqw4h50CF5MvNfHkEUL99W5rUqkyQfxCVqkdS2azH6OUhdUtIvtzePwRQ5Gwdz1Or72Xy8LrI oaeQfJVnvkDTG/Hy8ip5eOKhSdUSki+38yX9F0I6UC8i7wDL9wAerXm6Z2TJiC4dFSpXwVy2tJV9 c2LpPP84BSfXMSTrM4Z/tIeCkp1D5dOKMQsOkedwUBD/Da23jKT7m7uxlhVi4/BmH0Yv/4PDibt4 RTeNEaXLF+zl/YeGsKLRVI7m24j7IpoNK05SNkPXHs/0nh0Yl9iT+Uk2irK3Mkb3IV0HzifF4doG dMbDvZhiGMO2bDsFCd/SdsswOo/dQq4r5bu7/f5nB9syKlNz72hurWhCbwyibpdXWZlil9p5M5B8 lWu+lGUvaw4baHBXbUxSu4TkqxzyVcDeN5sT4KXHENKeRXd8y8pXGsnoUyH5Ko985W7njSFLuGPy CzStID07QvJVvu2XjdgP2xHm40to7bY8MXkz6XIFGiH5cjtf0n8hbmoWi0Vd7OE4OVu1BoV/X7U2 W52rMFZNrG9QtV7bqwqUUkrlqe3PVFXeHRerTHU+VvXny1HK6/Yf1D+O0uU9Vd13DiqbUkqpfLXj ueply9sOvKWiDdHqrQPFzypHmlpwj0mZu69UFqVU4eEPVH19hBqzK7+shLztz6hq5nvU4gyllMpS /7vXU3l0OP/6FB2fpW73DFP/2ZRb+heVNK2FMoSPUNvynJd/KbJ+7qy8DJ3UktNWxPrXyyoKlKnl a+rXf2yqMG2Levs2L+V913fqmF2JG5zkq/zypewn1KLHqynfW99Sf+RK3RKSr/LKV2H2P+pYwt9q yw/Pqua+FVXP2clKmich+XI3Xzlq+7j6KrL/MpVapFTmojuV3qenWmWRuiUkX+7nK08dXDRX/bL9 gIo9uFP9/NEjKgKjuuPzI6pQqpfkS/LlVr6k/0Jcy5z1b1qyMtXCebPVoQP71OGD+1Xs3wfUkUN/ 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 vAAAAABJRU5ErkJggg== --=-=-=-- From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Jun 2014 01:03:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: martin rudalics Cc: 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140391734013225 (code B ref 17809); Sat, 28 Jun 2014 01:03:02 +0000 Received: (at 17809) by debbugs.gnu.org; 28 Jun 2014 01:02:20 +0000 Received: from localhost ([127.0.0.1]:35476 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0h24-0003RD-6l for submit@debbugs.gnu.org; Fri, 27 Jun 2014 21:02:20 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:49327 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0h20-0003Qw-Ca for 17809@debbugs.gnu.org; Fri, 27 Jun 2014 21:02:16 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 03627309394075; Fri, 27 Jun 2014 18:02:14 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD1292.9050501@gmx.at> Date: Sat, 28 Jun 2014 02:53:37 +0300 In-Reply-To: <53AD1292.9050501@gmx.at> (martin rudalics's message of "Fri, 27 Jun 2014 08:43:30 +0200") Message-ID: <877g41ua5q.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> But the problem will still remain, and to solve it we need to fill the buffer >> after displaying that would be possible only after changing the order of calls >> in `with-output-to-temp-buffer' from >> >> (prog1 (progn ,@body) >> (internal-temp-output-buffer-show ,buf)) >> >> to >> >> (progn >> (internal-temp-output-buffer-show ,buf) >> (progn ,@body) >> > > I miss you here. My order would be: > > (1) Get the buffer ready in BODY. > > (2) Display it in `internal-temp-output-buffer-show'. > > (3) Fill it in `temp-buffer-show-hook'. [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> But the problem will still remain, and to solve it we need to fill the buffer >> after displaying that would be possible only after changing the order of calls >> in `with-output-to-temp-buffer' from >> >> (prog1 (progn ,@body) >> (internal-temp-output-buffer-show ,buf)) >> >> to >> >> (progn >> (internal-temp-output-buffer-show ,buf) >> (progn ,@body) >> > > I miss you here. My order would be: > > (1) Get the buffer ready in BODY. > > (2) Display it in `internal-temp-output-buffer-show'. > > (3) Fill it in `temp-buffer-show-hook'. [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] >> But the problem will still remain, and to solve it we need to fill the buffer >> after displaying that would be possible only after changing the order of calls >> in `with-output-to-temp-buffer' from >> >> (prog1 (progn ,@body) >> (internal-temp-output-buffer-show ,buf)) >> >> to >> >> (progn >> (internal-temp-output-buffer-show ,buf) >> (progn ,@body) >> > > I miss you here. My order would be: > > (1) Get the buffer ready in BODY. > > (2) Display it in `internal-temp-output-buffer-show'. > > (3) Fill it in `temp-buffer-show-hook'. This is possible, but then (window-height . fit-window-to-buffer) is called on an empty buffer. I found a way to achieve a good result by calling `with-output-to-temp-buffer' twice: first with empty body that displays the buffer, and the second call finds the displayed window, fills it, and calls (window-height . fit-window-to-buffer) at the end: === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2014-06-02 00:18:22 +0000 +++ lisp/minibuffer.el 2014-06-27 23:47:38 +0000 @@ -1796,7 +1796,22 @@ (defun minibuffer-completion-help (&opti ;; window, mark it as softly-dedicated, so bury-buffer in ;; minibuffer-hide-completions will know whether to ;; delete the window or not. - (display-buffer-mark-dedicated 'soft)) + (display-buffer-mark-dedicated 'soft) + (display-buffer-base-action + ;; This is a copy of `display-buffer-fallback-action' + ;; where `display-buffer-use-some-window' is replaced + ;; with `display-buffer-at-bottom'. + '((display-buffer--maybe-same-window + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + display-buffer-at-bottom) + (window-height . fit-window-to-buffer)))) + ;; Display the *Completions* buffer before inserting + ;; completion candidates to be able to fill the contents + ;; evenly using the final window width in the second call + ;; to `with-output-to-temp-buffer'. + (with-output-to-temp-buffer "*Completions*" + ;; Empty body + ) (with-output-to-temp-buffer "*Completions*" ;; Remove the base-size tail because `sort' requires a properly ;; nil-terminated list. From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Jun 2014 08:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Juri Linkov Cc: 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.1403943486538 (code B ref 17809); Sat, 28 Jun 2014 08:19:02 +0000 Received: (at 17809) by debbugs.gnu.org; 28 Jun 2014 08:18:06 +0000 Received: from localhost ([127.0.0.1]:35665 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0npl-00008c-7O for submit@debbugs.gnu.org; Sat, 28 Jun 2014 04:18:05 -0400 Received: from mout.gmx.net ([212.227.17.21]:52886) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0npi-000087-JV for 17809@debbugs.gnu.org; Sat, 28 Jun 2014 04:18:03 -0400 Received: from [93.82.13.14] ([93.82.13.14]) by mail.gmx.com (mrgmx101) with ESMTPSA (Nemesis) id 0LsgvV-1WYVVD13Bx-012KMg; Sat, 28 Jun 2014 10:17:54 +0200 Message-ID: <53AE7A24.1060002@gmx.at> Date: Sat, 28 Jun 2014 10:17:40 +0200 From: martin rudalics MIME-Version: 1.0 References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD1292.9050501@gmx.at> <877g41ua5q.fsf@mail.jurta.org> In-Reply-To: <877g41ua5q.fsf@mail.jurta.org> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:gmqGyQfZiHEVxcdil2p6kPulm2+4Kcu59JnEi2FdQNUhkMMO7/3 BD9VPeXKEz3WiPzELM6uOD4CVfs0AHYszAMg6qSYC7msFqnu8dOUFZyS1Hf9QupfjmSklc8 DSndBtCKTT3KSfZqLLQME4Nqn6OeU2anpD5lS1eI2UCIFUKkgIe98EVGF2bDsoSZUKusHgA WqSCIe2hPajqG6j09Khwg== X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) >> (1) Get the buffer ready in BODY. >> >> (2) Display it in `internal-temp-output-buffer-show'. >> >> (3) Fill it in `temp-buffer-show-hook'. > > This is possible, but then (window-height . fit-window-to-buffer) > is called on an empty buffer. Then the function called in (3) should do `fit-window-to-buffer' when it's done with filling. > I found a way to achieve a good result by calling > `with-output-to-temp-buffer' twice: first with > empty body that displays the buffer, and the second call > finds the displayed window, fills it, and calls > (window-height . fit-window-to-buffer) at the end: This sounds abusive. And note that `display-buffer-base-action' is a user variable. martin From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Jun 2014 08:19:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Juri Linkov Cc: 17809@debbugs.gnu.org, Stefan Monnier Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.1403943509579 (code B ref 17809); Sat, 28 Jun 2014 08:19:03 +0000 Received: (at 17809) by debbugs.gnu.org; 28 Jun 2014 08:18:29 +0000 Received: from localhost ([127.0.0.1]:35668 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0nq8-00009G-UJ for submit@debbugs.gnu.org; Sat, 28 Jun 2014 04:18:29 -0400 Received: from mout.gmx.net ([212.227.17.21]:63889) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X0nq5-00008z-UJ for 17809@debbugs.gnu.org; Sat, 28 Jun 2014 04:18:26 -0400 Received: from [93.82.13.14] ([93.82.13.14]) by mail.gmx.com (mrgmx101) with ESMTPSA (Nemesis) id 0Mcyxq-1XHmSL009K-00IDtk; Sat, 28 Jun 2014 10:18:15 +0200 Message-ID: <53AE7A3A.20307@gmx.at> Date: Sat, 28 Jun 2014 10:18:02 +0200 From: martin rudalics MIME-Version: 1.0 References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> In-Reply-To: <877g41vp5x.fsf@mail.jurta.org> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:OwsBdhED6T935Lmw/wDP13+LrQmHKXxrHfwZRVKN2Ltpg24XGme L93JY+4IBWfK8+DjYXBPKXs4omIC5tVaBALJ8Q+N6aqhwoid4l/KmKIHuRbak+p5fLxsRA5 60WyLqX31AZjTPcAocnxYirVRJ0noUa5cVaj6e578mefCqvEZf9V2bV+4vX/3Ra6unsYtnA fma+CyxcuUv7zae04btVQ== X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) > Maybe it would be a good thing to add a new action parameter to > `display-buffer' that would be like the existing `quit-function' > in `with-current-buffer-window', and will call its body between > displaying the buffer and applying final actions alists like > (window-height . fit-window-to-buffer) `display-buffer' has no body and hardly ever will get one. > `dired-mark-pop-up' already uses `with-current-buffer-window' that is > like `with-temp-buffer-window', but still has the same problem > as the screenshot below demonstrates: it inserts the contents > to the buffer before displaying it, so it has no way to get the > final window dimensions while inserting the contents, and leaves > empty columns. > > It's possible in `dired-mark-pop-up' to move formatting > (i.e. the call to `dired-format-columns-of-files') > from the BODY arg of `with-current-buffer-window' > to its QUIT-FUNCTION arg, and it will fill the empty columns, > because the formatting will happen after displaying the buffer. > > But then (window-height . fit-window-to-buffer) will be called > on the empty buffer, that will always produce a small window > with 3-lines height. Then don't do that. If you want to do both - formatting and fitting - have QUIT-FUNCTION do that. So in BODY put the text into the buffer and in QUIT-FUNCTION first format the text according to what the window size gives and then try to fit the window to the formatted text. martin From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 30 Jun 2014 00:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: martin rudalics Cc: 17809@debbugs.gnu.org, Stefan Monnier Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.14040877021903 (code B ref 17809); Mon, 30 Jun 2014 00:22:02 +0000 Received: (at 17809) by debbugs.gnu.org; 30 Jun 2014 00:21:42 +0000 Received: from localhost ([127.0.0.1]:37218 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X1PLp-0000Ud-PC for submit@debbugs.gnu.org; Sun, 29 Jun 2014 20:21:42 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:46236 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X1PLl-0000UL-IY for 17809@debbugs.gnu.org; Sun, 29 Jun 2014 20:21:38 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 1EAEF348328C64; Sun, 29 Jun 2014 17:21:33 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> Date: Mon, 30 Jun 2014 02:47:00 +0300 In-Reply-To: <53AE7A3A.20307@gmx.at> (martin rudalics's message of "Sat, 28 Jun 2014 10:18:02 +0200") Message-ID: <87vbrj462z.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> But then (window-height . fit-window-to-buffer) will be called >> on the empty buffer, that will always produce a small window >> with 3-lines height. > > Then don't do that. If you want to do both - formatting and fitting - > have QUIT-FUNCTION do that. So in BODY put the text into the buffer and > in QUIT-FUNCTION first format the text according to what the window size > gives and then try to fit the window to the formatted text. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> But then (window-height . fit-window-to-buffer) will be called >> on the empty buffer, that will always produce a small window >> with 3-lines height. > > Then don't do that. If you want to do both - formatting and fitting - > have QUIT-FUNCTION do that. So in BODY put the text into the buffer and > in QUIT-FUNCTION first format the text according to what the window size > gives and then try to fit the window to the formatted text. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] >> But then (window-height . fit-window-to-buffer) will be called >> on the empty buffer, that will always produce a small window >> with 3-lines height. > > Then don't do that. If you want to do both - formatting and fitting - > have QUIT-FUNCTION do that. So in BODY put the text into the buffer and > in QUIT-FUNCTION first format the text according to what the window size > gives and then try to fit the window to the formatted text. Then the users will lose the ability to override window fitting by redefining `window-height' in `display-buffer-alist'. Not sure how important this is. > And note that `display-buffer-base-action' is a user variable. Isn't `display-buffer-alist' a customizable variable intended for users? I see no other way for a function to override `display-buffer-fallback-action', but still allow the users to customize it in `display-buffer-alist'. Only `display-buffer-base-action' can be used for this. From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 02 Jul 2014 00:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: martin rudalics Cc: 17809@debbugs.gnu.org, Stefan Monnier Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140426030315939 (code B ref 17809); Wed, 02 Jul 2014 00:19:02 +0000 Received: (at 17809) by debbugs.gnu.org; 2 Jul 2014 00:18:23 +0000 Received: from localhost ([127.0.0.1]:39706 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X28Fi-00048z-AY for submit@debbugs.gnu.org; Tue, 01 Jul 2014 20:18:22 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:58440 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X28Ff-00048V-4d; Tue, 01 Jul 2014 20:18:19 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 3B9E2348328ED2; Tue, 1 Jul 2014 17:18:16 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> Date: Wed, 02 Jul 2014 02:30:17 +0300 In-Reply-To: <53AE7A3A.20307@gmx.at> (martin rudalics's message of "Sat, 28 Jun 2014 10:18:02 +0200") Message-ID: <87bnt8bs72.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: forcemerge 17809 12618 thanks [ I discovered the same bug report from Dani, so merging both. ] >> Maybe it would be a good thing to add a new action parameter to >> `display-buffer' that would be like the existing `quit-function' >> in `with-current-buffer-window', and will call its body between >> displaying the buffer and applying final actions alists like >> (window-height . fit-window-to-buffer) > > `display-buffer' has no body and hardly ever will get one. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: forcemerge 17809 12618 thanks [ I discovered the same bug report from Dani, so merging both. ] >> Maybe it would be a good thing to add a new action parameter to >> `display-buffer' that would be like the existing `quit-function' >> in `with-current-buffer-window', and will call its body between >> displaying the buffer and applying final actions alists like >> (window-height . fit-window-to-buffer) > > `display-buffer' has no body and hardly ever will get one. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] forcemerge 17809 12618 thanks [ I discovered the same bug report from Dani, so merging both. ] >> Maybe it would be a good thing to add a new action parameter to >> `display-buffer' that would be like the existing `quit-function' >> in `with-current-buffer-window', and will call its body between >> displaying the buffer and applying final actions alists like >> (window-height . fit-window-to-buffer) > > `display-buffer' has no body and hardly ever will get one. I really see no difference between the already existing QUIT-FUNCTION and a new possible BODY-FUNCTION. Currently QUIT-FUNCTION is called this way in `with-current-buffer-window': (if (functionp ,quit-function) (funcall ,quit-function ,window ,value) and BODY-FUNCTION could be called in `window--display-buffer' with something like: (if (functionp (cdr (assq 'body-function alist))) (funcall (cdr (assq 'body-function alist))) Then, for instance, `dired-mark-pop-up' instead of: (with-current-buffer-window buffer (cons 'display-buffer-below-selected '((window-height . fit-window-to-buffer))) #'(lambda (window _value) (with-selected-window window (with-current-buffer buffer (let ((inhibit-read-only t)) (dired-format-columns-of-files (if (eq (car files) t) (cdr files) files)) will use: (with-current-buffer-window buffer (cons 'display-buffer-below-selected '((window-height . fit-window-to-buffer) (body-function . (lambda () (with-current-buffer buffer (let ((inhibit-read-only t)) (dired-format-columns-of-files (if (eq (car files) t) (cdr files) files)) Is there a problem with this approach? From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 04 Jul 2014 23:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: martin rudalics Cc: 17809@debbugs.gnu.org, Stefan Monnier Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.14045179513640 (code B ref 17809); Fri, 04 Jul 2014 23:53:02 +0000 Received: (at 17809) by debbugs.gnu.org; 4 Jul 2014 23:52:31 +0000 Received: from localhost ([127.0.0.1]:43220 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3DHK-0000wd-PP for submit@debbugs.gnu.org; Fri, 04 Jul 2014 19:52:31 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:57310 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3DHI-0000wO-5v for 17809@debbugs.gnu.org; Fri, 04 Jul 2014 19:52:29 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id CDACA348328499; Fri, 4 Jul 2014 16:52:25 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> Date: Sat, 05 Jul 2014 02:40:31 +0300 In-Reply-To: <53AE7A3A.20307@gmx.at> (martin rudalics's message of "Sat, 28 Jun 2014 10:18:02 +0200") Message-ID: <87mwcowxfs.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> Maybe it would be a good thing to add a new action parameter to >> `display-buffer' that would be like the existing `quit-function' >> in `with-current-buffer-window', and will call its body between >> displaying the buffer and applying final actions alists like >> (window-height . fit-window-to-buffer) > > `display-buffer' has no body and hardly ever will get one. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> Maybe it would be a good thing to add a new action parameter to >> `display-buffer' that would be like the existing `quit-function' >> in `with-current-buffer-window', and will call its body between >> displaying the buffer and applying final actions alists like >> (window-height . fit-window-to-buffer) > > `display-buffer' has no body and hardly ever will get one. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] >> Maybe it would be a good thing to add a new action parameter to >> `display-buffer' that would be like the existing `quit-function' >> in `with-current-buffer-window', and will call its body between >> displaying the buffer and applying final actions alists like >> (window-height . fit-window-to-buffer) > > `display-buffer' has no body and hardly ever will get one. I agree that there is no way to add body to `display-buffer'. So the cleanest solution would be to add a new macro `with-displayed-buffer-window' that is like `with-current-buffer-window' and `with-temp-buffer-window', but will run its body in the displayed window. I've tested it with different configurations, and it produces nice results when used in the minibuffer, at point, in horizontally split windows, in Dired *Marked Files*, with pop-up-frames=t, etc. === modified file 'lisp/window.el' --- lisp/window.el 2014-06-18 07:57:27 +0000 +++ lisp/window.el 2014-07-04 23:30:54 +0000 @@ -216,6 +216,35 @@ (defmacro with-current-buffer-window (bu (funcall ,quit-function ,window ,value) ,value)))) +(defmacro with-displayed-buffer-window (buffer-or-name action quit-function &rest body) + "Show a buffer BUFFER-OR-NAME and evaluate BODY in that buffer. +This construct is like `with-current-buffer-window' but unlike that +displays the buffer specified by BUFFER-OR-NAME before running BODY." + (declare (debug t)) + (let ((buffer (make-symbol "buffer")) + (window (make-symbol "window")) + (value (make-symbol "value"))) + `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name)) + (standard-output ,buffer) + ,window ,value) + (with-current-buffer ,buffer + (setq ,window (temp-buffer-window-show ,buffer ,action))) + + (let ((inhibit-read-only t) + (inhibit-modification-hooks t)) + (setq ,value (progn ,@body))) + + (with-selected-window ,window + (goto-char (point-min))) + + (when (functionp (cdr (assq 'window-height (cdr ,action)))) + (ignore-errors + (funcall (cdr (assq 'window-height (cdr ,action))) ,window))) + + (if (functionp ,quit-function) + (funcall ,quit-function ,window ,value) + ,value)))) + ;; The following two functions are like `window-next-sibling' and ;; `window-prev-sibling' but the WINDOW argument is _not_ optional (so ;; they don't substitute the selected window for nil), and they return === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2014-06-25 10:36:51 +0000 +++ lisp/minibuffer.el 2014-07-04 23:28:38 +0000 @@ -1794,8 +1794,29 @@ (defun minibuffer-completion-help (&opti ;; window, mark it as softly-dedicated, so bury-buffer in ;; minibuffer-hide-completions will know whether to ;; delete the window or not. - (display-buffer-mark-dedicated 'soft)) - (with-output-to-temp-buffer "*Completions*" + (display-buffer-mark-dedicated 'soft) + ;; Disable `pop-up-windows' temporarily to allow + ;; `display-buffer--maybe-pop-up-frame-or-window' + ;; in the display actions below to pop up a frame + ;; if `pop-up-frames' is non-nil, but not to pop up a window. + (pop-up-windows nil)) + (with-displayed-buffer-window + "*Completions*" + ;; This is a copy of `display-buffer-fallback-action' + ;; where `display-buffer-use-some-window' is replaced + ;; with `display-buffer-at-bottom'. + `((display-buffer--maybe-same-window + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + ;; Use `display-buffer-below-selected' for inline completions, + ;; but not in the minibuffer (e.g. in `eval-expression') + ;; for which `display-buffer-at-bottom' is used. + ,(if (and completion-in-region-mode-predicate + (not (minibuffer-selected-window))) + 'display-buffer-below-selected + 'display-buffer-at-bottom)) + (window-height . fit-window-to-buffer)) + nil ;; Remove the base-size tail because `sort' requires a properly ;; nil-terminated list. (when last (setcdr last nil)) === modified file 'lisp/dired.el' --- lisp/dired.el 2014-06-21 19:45:59 +0000 +++ lisp/dired.el 2014-07-04 23:30:52 +0000 @@ -3103,8 +3103,7 @@ (defun dired-mark-pop-up (buffer-or-name ;; Mark *Marked Files* window as softly-dedicated, to prevent ;; other buffers e.g. *Completions* from reusing it (bug#17554). (display-buffer-mark-dedicated 'soft)) - (with-current-buffer buffer - (with-current-buffer-window + (with-displayed-buffer-window buffer (cons 'display-buffer-below-selected '((window-height . fit-window-to-buffer))) @@ -3117,6 +3116,7 @@ (defun dired-mark-pop-up (buffer-or-name ;; Handle (t FILE) just like (FILE), here. That value is ;; used (only in some cases), to mean just one file that was ;; marked, rather than the current line file. + (with-current-buffer buffer (dired-format-columns-of-files (if (eq (car files) t) (cdr files) files)) (remove-text-properties (point-min) (point-max) From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 06 Jul 2014 04:33:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Juri Linkov Cc: martin rudalics , 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140462117617080 (code B ref 17809); Sun, 06 Jul 2014 04:33:03 +0000 Received: (at 17809) by debbugs.gnu.org; 6 Jul 2014 04:32:56 +0000 Received: from localhost ([127.0.0.1]:44460 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3e8G-0004RP-9q for submit@debbugs.gnu.org; Sun, 06 Jul 2014 00:32:56 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:22662) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3e8C-0004Qy-HV for 17809@debbugs.gnu.org; Sun, 06 Jul 2014 00:32:53 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgw6BFxd0giYBAQRWIxALNBIUGA0kiAzSGReOegeEOASpGYFqg0wh X-IPAS-Result: ArYGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgw6BFxd0giYBAQRWIxALNBIUGA0kiAzSGReOegeEOASpGYFqg0wh X-IronPort-AV: E=Sophos;i="4.97,753,1389762000"; d="scan'208";a="76531911" Received: from 75-119-224-253.dsl.teksavvy.com (HELO ceviche.home) ([75.119.224.253]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 06 Jul 2014 00:32:46 -0400 Received: by ceviche.home (Postfix, from userid 20848) id CE44E66090; Sun, 6 Jul 2014 00:32:46 -0400 (EDT) From: Stefan Monnier Message-ID: References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> <87mwcowxfs.fsf@mail.jurta.org> Date: Sun, 06 Jul 2014 00:32:46 -0400 In-Reply-To: <87mwcowxfs.fsf@mail.jurta.org> (Juri Linkov's message of "Sat, 05 Jul 2014 02:40:31 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) > +(defmacro with-displayed-buffer-window (buffer-or-name action quit-function &rest body) That looks OK. Two details, tho: > + (setq ,window (temp-buffer-window-show ,buffer ,action))) [...] > + (when (functionp (cdr (assq 'window-height (cdr ,action)))) Let's not evaluate `action' twice. I.e. we need a (macroexp-let2 ..) wrapper for it. > + (if (functionp ,quit-function) > + (funcall ,quit-function ,window ,value) Same for quit-function, and additionally, we want to make sure we evaluate `quit-function' before `body'. Stefan From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 06 Jul 2014 23:59:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Monnier Cc: martin rudalics , 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.14046911026545 (code B ref 17809); Sun, 06 Jul 2014 23:59:02 +0000 Received: (at 17809) by debbugs.gnu.org; 6 Jul 2014 23:58:22 +0000 Received: from localhost ([127.0.0.1]:45300 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3wK5-0001hT-C8 for submit@debbugs.gnu.org; Sun, 06 Jul 2014 19:58:21 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:36291 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3wK1-0001hB-JK for 17809@debbugs.gnu.org; Sun, 06 Jul 2014 19:58:18 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 517BB348328E36; Sun, 6 Jul 2014 16:58:15 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> <87mwcowxfs.fsf@mail.jurta.org> Date: Mon, 07 Jul 2014 02:32:51 +0300 In-Reply-To: (Stefan Monnier's message of "Sun, 06 Jul 2014 00:32:46 -0400") Message-ID: <8761ja59kc.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> +(defmacro with-displayed-buffer-window (buffer-or-name action quit-function &rest body) > > That looks OK. Two details, tho: > >> + (setq ,window (temp-buffer-window-show ,buffer ,action))) > [...] >> + (when (functionp (cdr (assq 'window-height (cdr ,action)))) > > Let's not evaluate `action' twice. I.e. we need a (macroexp-let2 ..) > wrapper for it. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: >> +(defmacro with-displayed-buffer-window (buffer-or-name action quit-function &rest body) > > That looks OK. Two details, tho: > >> + (setq ,window (temp-buffer-window-show ,buffer ,action))) > [...] >> + (when (functionp (cdr (assq 'window-height (cdr ,action)))) > > Let's not evaluate `action' twice. I.e. we need a (macroexp-let2 ..) > wrapper for it. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] >> +(defmacro with-displayed-buffer-window (buffer-or-name action quit-function &rest body) > > That looks OK. Two details, tho: > >> + (setq ,window (temp-buffer-window-show ,buffer ,action))) > [...] >> + (when (functionp (cdr (assq 'window-height (cdr ,action)))) > > Let's not evaluate `action' twice. I.e. we need a (macroexp-let2 ..) > wrapper for it. I added this now in the next patch. >> + (if (functionp ,quit-function) >> + (funcall ,quit-function ,window ,value) > > Same for quit-function, and additionally, we want to make sure we > evaluate `quit-function' before `body'. `quit-function' is used in `dired-mark-pop-up' to activate the minibuffer, so it should be the final thing after displaying the *Marked Files* buffer. Maybe `quit-function' is not an appropriate name for such action? === modified file 'lisp/window.el' --- lisp/window.el 2014-06-18 07:57:27 +0000 +++ lisp/window.el 2014-07-06 23:32:27 +0000 @@ -185,6 +185,7 @@ (defmacro with-temp-buffer-window (buffe (let ((buffer (make-symbol "buffer")) (window (make-symbol "window")) (value (make-symbol "value"))) + (macroexp-let2 macroexp-copyable-p vquit-function quit-function `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name)) (standard-output ,buffer) ,window ,value) @@ -192,9 +193,9 @@ (defmacro with-temp-buffer-window (buffe (with-current-buffer ,buffer (setq ,window (temp-buffer-window-show ,buffer ,action))) - (if (functionp ,quit-function) - (funcall ,quit-function ,window ,value) - ,value)))) + (if (functionp ,vquit-function) + (funcall ,vquit-function ,window ,value) + ,value))))) (defmacro with-current-buffer-window (buffer-or-name action quit-function &rest body) "Evaluate BODY with a buffer BUFFER-OR-NAME current and show that buffer. @@ -205,6 +206,7 @@ (defmacro with-current-buffer-window (bu (let ((buffer (make-symbol "buffer")) (window (make-symbol "window")) (value (make-symbol "value"))) + (macroexp-let2 macroexp-copyable-p vquit-function quit-function `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name)) (standard-output ,buffer) ,window ,value) @@ -212,9 +214,40 @@ (defmacro with-current-buffer-window (bu (setq ,value (progn ,@body)) (setq ,window (temp-buffer-window-show ,buffer ,action))) - (if (functionp ,quit-function) - (funcall ,quit-function ,window ,value) - ,value)))) + (if (functionp ,vquit-function) + (funcall ,vquit-function ,window ,value) + ,value))))) + +(defmacro with-displayed-buffer-window (buffer-or-name action quit-function &rest body) + "Show a buffer BUFFER-OR-NAME and evaluate BODY in that buffer. +This construct is like `with-current-buffer-window' but unlike that +displays the buffer specified by BUFFER-OR-NAME before running BODY." + (declare (debug t)) + (let ((buffer (make-symbol "buffer")) + (window (make-symbol "window")) + (value (make-symbol "value"))) + (macroexp-let2 macroexp-copyable-p vaction action + (macroexp-let2 macroexp-copyable-p vquit-function quit-function + `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name)) + (standard-output ,buffer) + ,window ,value) + (with-current-buffer ,buffer + (setq ,window (temp-buffer-window-show ,buffer ,vaction))) + + (let ((inhibit-read-only t) + (inhibit-modification-hooks t)) + (setq ,value (progn ,@body))) + + (with-selected-window ,window + (goto-char (point-min))) + + (when (functionp (cdr (assq 'window-height (cdr ,vaction)))) + (ignore-errors + (funcall (cdr (assq 'window-height (cdr ,vaction))) ,window))) + + (if (functionp ,vquit-function) + (funcall ,vquit-function ,window ,value) + ,value)))))) ;; The following two functions are like `window-next-sibling' and ;; `window-prev-sibling' but the WINDOW argument is _not_ optional (so From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 07 Jul 2014 01:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Juri Linkov Cc: martin rudalics , 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140469609916883 (code B ref 17809); Mon, 07 Jul 2014 01:22:02 +0000 Received: (at 17809) by debbugs.gnu.org; 7 Jul 2014 01:21:39 +0000 Received: from localhost ([127.0.0.1]:45347 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3xcg-0004OD-QE for submit@debbugs.gnu.org; Sun, 06 Jul 2014 21:21:39 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:28565) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3xcd-0004Nq-G6 for 17809@debbugs.gnu.org; Sun, 06 Jul 2014 21:21:36 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgw6BFxd0giYBAQRWIxALNBIUGA0kiAzSGReOegeEOASUHpR7gWqDTCE X-IPAS-Result: ArYGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgw6BFxd0giYBAQRWIxALNBIUGA0kiAzSGReOegeEOASUHpR7gWqDTCE X-IronPort-AV: E=Sophos;i="4.97,753,1389762000"; d="scan'208";a="76626965" Received: from 75-119-224-253.dsl.teksavvy.com (HELO pastel.home) ([75.119.224.253]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 06 Jul 2014 21:21:29 -0400 Received: by pastel.home (Postfix, from userid 20848) id 48A54616FA; Sun, 6 Jul 2014 21:21:29 -0400 (EDT) From: Stefan Monnier Message-ID: References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> <87mwcowxfs.fsf@mail.jurta.org> <8761ja59kc.fsf@mail.jurta.org> Date: Sun, 06 Jul 2014 21:21:29 -0400 In-Reply-To: <8761ja59kc.fsf@mail.jurta.org> (Juri Linkov's message of "Mon, 07 Jul 2014 02:32:51 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) >>> + (if (functionp ,quit-function) >>> + (funcall ,quit-function ,window ,value) >> Same for quit-function, and additionally, we want to make sure we >> evaluate `quit-function' before `body'. > `quit-function' is used in `dired-mark-pop-up' to activate the minibuffer, > so it should be the final thing after displaying the *Marked Files* buffer. > Maybe `quit-function' is not an appropriate name for such action? I'm talking about the evaluation of quit-function, not the place it's called. `quit-function' is an expression that returns a function, so it's important to know when that expression is run since it may end up returning a different function if run at a different time. Stefan From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 07 Jul 2014 01:25:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Juri Linkov Cc: martin rudalics , 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140469627617260 (code B ref 17809); Mon, 07 Jul 2014 01:25:02 +0000 Received: (at 17809) by debbugs.gnu.org; 7 Jul 2014 01:24:36 +0000 Received: from localhost ([127.0.0.1]:45353 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3xfX-0004UJ-HX for submit@debbugs.gnu.org; Sun, 06 Jul 2014 21:24:35 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:52894) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X3xfV-0004U0-27 for 17809@debbugs.gnu.org; Sun, 06 Jul 2014 21:24:33 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgw6BFxd0giYBAQRWIxALNBIUGA0kiAzSGReOegeEOASpGYFqg0wh X-IPAS-Result: ArYGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgw6BFxd0giYBAQRWIxALNBIUGA0kiAzSGReOegeEOASpGYFqg0wh X-IronPort-AV: E=Sophos;i="4.97,753,1389762000"; d="scan'208";a="76627406" Received: from 75-119-224-253.dsl.teksavvy.com (HELO pastel.home) ([75.119.224.253]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 06 Jul 2014 21:24:27 -0400 Received: by pastel.home (Postfix, from userid 20848) id 40A6E616FA; Sun, 6 Jul 2014 21:24:27 -0400 (EDT) From: Stefan Monnier Message-ID: References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> <87mwcowxfs.fsf@mail.jurta.org> <8761ja59kc.fsf@mail.jurta.org> Date: Sun, 06 Jul 2014 21:24:27 -0400 In-Reply-To: <8761ja59kc.fsf@mail.jurta.org> (Juri Linkov's message of "Mon, 07 Jul 2014 02:32:51 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) > === modified file 'lisp/window.el' > --- lisp/window.el 2014-06-18 07:57:27 +0000 > +++ lisp/window.el 2014-07-06 23:32:27 +0000 > @@ -185,6 +185,7 @@ (defmacro with-temp-buffer-window (buffe > (let ((buffer (make-symbol "buffer")) > (window (make-symbol "window")) > (value (make-symbol "value"))) > + (macroexp-let2 macroexp-copyable-p vquit-function quit-function > `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name)) > (standard-output ,buffer) > ,window ,value) > @@ -192,9 +193,9 @@ (defmacro with-temp-buffer-window (buffe > (with-current-buffer ,buffer > (setq ,window (temp-buffer-window-show ,buffer ,action))) > > - (if (functionp ,quit-function) > - (funcall ,quit-function ,window ,value) > - ,value)))) > + (if (functionp ,vquit-function) > + (funcall ,vquit-function ,window ,value) > + ,value))))) That looks right, except it means that `quit-function' is evaluated before `buffer-or-name', which is contrary to the expectation that arguments are usually evaluated left-to-right. Stefan From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 07 Jul 2014 06:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Stefan Monnier Cc: martin rudalics , 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.140471597524957 (code B ref 17809); Mon, 07 Jul 2014 06:53:02 +0000 Received: (at 17809) by debbugs.gnu.org; 7 Jul 2014 06:52:55 +0000 Received: from localhost ([127.0.0.1]:45447 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X42nG-0006UQ-Ac for submit@debbugs.gnu.org; Mon, 07 Jul 2014 02:52:54 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:48390 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X42nE-0006UG-2I for 17809@debbugs.gnu.org; Mon, 07 Jul 2014 02:52:53 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 89249348328E50; Sun, 6 Jul 2014 23:52:49 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> <87mwcowxfs.fsf@mail.jurta.org> <8761ja59kc.fsf@mail.jurta.org> Date: Mon, 07 Jul 2014 09:49:18 +0300 In-Reply-To: (Stefan Monnier's message of "Sun, 06 Jul 2014 21:24:27 -0400") Message-ID: <877g3p64up.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > That looks right, except it means that `quit-function' is > evaluated before `buffer-or-name', which is contrary to the expectation > that arguments are usually evaluated left-to-right. I believe all your concerns are addressed in this patch unless I have more misunderstandings. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > That looks right, except it means that `quit-function' is > evaluated before `buffer-or-name', which is contrary to the expectation > that arguments are usually evaluated left-to-right. I believe all your concerns are addressed in this patch unless I have more misunderstandings. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] > That looks right, except it means that `quit-function' is > evaluated before `buffer-or-name', which is contrary to the expectation > that arguments are usually evaluated left-to-right. I believe all your concerns are addressed in this patch unless I have more misunderstandings. === modified file 'lisp/window.el' --- lisp/window.el 2014-06-18 07:57:27 +0000 +++ lisp/window.el 2014-07-07 06:49:07 +0000 @@ -185,16 +185,19 @@ (defmacro with-temp-buffer-window (buffe (let ((buffer (make-symbol "buffer")) (window (make-symbol "window")) (value (make-symbol "value"))) - `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name)) + (macroexp-let2 nil vbuffer-or-name buffer-or-name + (macroexp-let2 nil vaction action + (macroexp-let2 nil vquit-function quit-function + `(let* ((,buffer (temp-buffer-window-setup ,vbuffer-or-name)) (standard-output ,buffer) ,window ,value) (setq ,value (progn ,@body)) (with-current-buffer ,buffer - (setq ,window (temp-buffer-window-show ,buffer ,action))) + (setq ,window (temp-buffer-window-show ,buffer ,vaction))) - (if (functionp ,quit-function) - (funcall ,quit-function ,window ,value) - ,value)))) + (if (functionp ,vquit-function) + (funcall ,vquit-function ,window ,value) + ,value))))))) (defmacro with-current-buffer-window (buffer-or-name action quit-function &rest body) "Evaluate BODY with a buffer BUFFER-OR-NAME current and show that buffer. @@ -205,16 +208,51 @@ (defmacro with-current-buffer-window (bu (let ((buffer (make-symbol "buffer")) (window (make-symbol "window")) (value (make-symbol "value"))) - `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name)) + (macroexp-let2 nil vbuffer-or-name buffer-or-name + (macroexp-let2 nil vaction action + (macroexp-let2 nil vquit-function quit-function + `(let* ((,buffer (temp-buffer-window-setup ,vbuffer-or-name)) (standard-output ,buffer) ,window ,value) (with-current-buffer ,buffer (setq ,value (progn ,@body)) - (setq ,window (temp-buffer-window-show ,buffer ,action))) + (setq ,window (temp-buffer-window-show ,buffer ,vaction))) - (if (functionp ,quit-function) - (funcall ,quit-function ,window ,value) - ,value)))) + (if (functionp ,vquit-function) + (funcall ,vquit-function ,window ,value) + ,value))))))) + +(defmacro with-displayed-buffer-window (buffer-or-name action quit-function &rest body) + "Show a buffer BUFFER-OR-NAME and evaluate BODY in that buffer. +This construct is like `with-current-buffer-window' but unlike that +displays the buffer specified by BUFFER-OR-NAME before running BODY." + (declare (debug t)) + (let ((buffer (make-symbol "buffer")) + (window (make-symbol "window")) + (value (make-symbol "value"))) + (macroexp-let2 nil vbuffer-or-name buffer-or-name + (macroexp-let2 nil vaction action + (macroexp-let2 nil vquit-function quit-function + `(let* ((,buffer (temp-buffer-window-setup ,vbuffer-or-name)) + (standard-output ,buffer) + ,window ,value) + (with-current-buffer ,buffer + (setq ,window (temp-buffer-window-show ,buffer ,vaction))) + + (let ((inhibit-read-only t) + (inhibit-modification-hooks t)) + (setq ,value (progn ,@body))) + + (with-selected-window ,window + (goto-char (point-min))) + + (when (functionp (cdr (assq 'window-height (cdr ,vaction)))) + (ignore-errors + (funcall (cdr (assq 'window-height (cdr ,vaction))) ,window))) + + (if (functionp ,vquit-function) + (funcall ,vquit-function ,window ,value) + ,value))))))) ;; The following two functions are like `window-next-sibling' and ;; `window-prev-sibling' but the WINDOW argument is _not_ optional (so From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 08 Jul 2014 03:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: Juri Linkov Cc: martin rudalics , 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.14047910391183 (code B ref 17809); Tue, 08 Jul 2014 03:44:02 +0000 Received: (at 17809) by debbugs.gnu.org; 8 Jul 2014 03:43:59 +0000 Received: from localhost ([127.0.0.1]:46401 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X4MJy-0000J1-B4 for submit@debbugs.gnu.org; Mon, 07 Jul 2014 23:43:58 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:11940) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X4MJw-0000In-2V for 17809@debbugs.gnu.org; Mon, 07 Jul 2014 23:43:56 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArgGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgwQKgRcXdIIlAQEBAQIBViMFCws0EhQYDSSIBAjSGReOegeEOASpGYFqg0wh X-IPAS-Result: ArgGAIDvNVNLd+D9/2dsb2JhbABZgwaDSr0vgwQKgRcXdIIlAQEBAQIBViMFCws0EhQYDSSIBAjSGReOegeEOASpGYFqg0wh X-IronPort-AV: E=Sophos;i="4.97,753,1389762000"; d="scan'208";a="76802939" Received: from 75-119-224-253.dsl.teksavvy.com (HELO ceviche.home) ([75.119.224.253]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 07 Jul 2014 23:43:49 -0400 Received: by ceviche.home (Postfix, from userid 20848) id 3B99466162; Mon, 7 Jul 2014 23:43:49 -0400 (EDT) From: Stefan Monnier Message-ID: References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> <87mwcowxfs.fsf@mail.jurta.org> <8761ja59kc.fsf@mail.jurta.org> <877g3p64up.fsf@mail.jurta.org> Date: Mon, 07 Jul 2014 23:43:49 -0400 In-Reply-To: <877g3p64up.fsf@mail.jurta.org> (Juri Linkov's message of "Mon, 07 Jul 2014 09:49:18 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) > I believe all your concerns are addressed in this patch > unless I have more misunderstandings. Looks fine, thanks. > + (with-selected-window ,window > + (goto-char (point-min))) I believe set-window-point is simpler and more efficient. Stefan From unknown Thu Jun 19 14:33:59 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.503 (Entity 5.503) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Juri Linkov Subject: bug#17809: closed (Re: bug#17809: 24.4.50; Completions display) Message-ID: References: <87tx6s46rf.fsf@mail.jurta.org> <87d2e5js1o.fsf@mail.jurta.org> X-Gnu-PR-Message: they-closed 17809 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 17809@debbugs.gnu.org Date: Tue, 08 Jul 2014 08:05:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1404806703-983-1" This is a multi-part message in MIME format... ------------=_1404806703-983-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #17809: 24.4.50; Completions display which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 17809@debbugs.gnu.org. --=20 17809: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D17809 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1404806703-983-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 17809-done) by debbugs.gnu.org; 8 Jul 2014 08:04:05 +0000 Received: from localhost ([127.0.0.1]:46506 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X4QNg-0000E8-5f for submit@debbugs.gnu.org; Tue, 08 Jul 2014 04:04:04 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:37781 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X4QNd-0000Di-Q4 for 17809-done@debbugs.gnu.org; Tue, 08 Jul 2014 04:04:02 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 424DE3483305A6; Tue, 8 Jul 2014 01:03:57 -0700 (PDT) From: Juri Linkov To: Stefan Monnier Subject: Re: bug#17809: 24.4.50; Completions display Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> <87mwcowxfs.fsf@mail.jurta.org> <8761ja59kc.fsf@mail.jurta.org> <877g3p64up.fsf@mail.jurta.org> Date: Tue, 08 Jul 2014 11:03:16 +0300 In-Reply-To: (Stefan Monnier's message of "Mon, 07 Jul 2014 23:43:49 -0400") Message-ID: <87tx6s46rf.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Version: 24.4.50 > Looks fine, thanks. > >> + (with-selected-window , window >> + (goto-char (point-min))) > > I believe set-window-point is simpler and more efficient. Now installed to the trunk with set-window-point. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] X-Debbugs-Envelope-To: 17809-done Cc: martin rudalics , 17809-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Version: 24.4.50 > Looks fine, thanks. > >> + (with-selected-window ,window >> + (goto-char (point-min))) > > I believe set-window-point is simpler and more efficient. Now installed to the trunk with set-window-point. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] Version: 24.4.50 > Looks fine, thanks. > >> + (with-selected-window ,window >> + (goto-char (point-min))) > > I believe set-window-point is simpler and more efficient. Now installed to the trunk with set-window-point. ------------=_1404806703-983-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 19 Jun 2014 07:11:45 +0000 Received: from localhost ([127.0.0.1]:52415 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WxWVc-0004qe-Ij for submit@debbugs.gnu.org; Thu, 19 Jun 2014 03:11:44 -0400 Received: from eggs.gnu.org ([208.118.235.92]:46233) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1WxWVa-0004q2-A0 for submit@debbugs.gnu.org; Thu, 19 Jun 2014 03:11:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WxWVL-0002n0-Fo for submit@debbugs.gnu.org; Thu, 19 Jun 2014 03:11:37 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:35695) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxWVL-0002mw-CI for submit@debbugs.gnu.org; Thu, 19 Jun 2014 03:11:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47919) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxWVD-0003IE-Na for bug-gnu-emacs@gnu.org; Thu, 19 Jun 2014 03:11:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WxWV6-0002jm-3h for bug-gnu-emacs@gnu.org; Thu, 19 Jun 2014 03:11:19 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:57291 helo=ps18281.dreamhostps.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WxWV5-0002ji-Ti for bug-gnu-emacs@gnu.org; Thu, 19 Jun 2014 03:11:12 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 0422631FEB5B7A for ; Thu, 19 Jun 2014 00:11:10 -0700 (PDT) From: Juri Linkov To: bug-gnu-emacs@gnu.org Subject: 24.4.50; Completions display Organization: JURTA Date: Thu, 19 Jun 2014 09:57:47 +0300 Message-ID: <87d2e5js1o.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Severity: wishlist Tags: patch This is a follow-up to bug#17554. There are two existing display actions that could help to better display *Completions*: - display-buffer-at-bottom for minibuffer-completion-help to display *Completions* near the active minibuffer where it would be easier to find them; - display-buffer-below-selected for completion-at-point that could work like displaying *Marking Files* in Dired to display *Completions* near the point of completion in the current buffer. === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2014-06-02 00:18:22 +0000 +++ lisp/minibuffer.el 2014-06-19 06:55:32 +0000 @@ -1796,7 +1796,25 @@ (defun minibuffer-completion-help (&opti ;; window, mark it as softly-dedicated, so bury-buffer in ;; minibuffer-hide-completions will know whether to ;; delete the window or not. - (display-buffer-mark-dedicated 'soft)) + (display-buffer-mark-dedicated 'soft) + ;; Disable `pop-up-windows' temporarily to allow + ;; `display-buffer--maybe-pop-up-frame-or-window' + ;; in the overridden actions below to pop up a frame + ;; if `pop-up-frames' is non-nil, but not to pop up a window. + (pop-up-windows nil) + (display-buffer-base-action + ;; First check for defined `display-buffer-base-action' + ;; that might be already bound by `completion-at-point'. + (or (and (car-safe display-buffer-base-action) + display-buffer-base-action) + ;; This is a copy of `display-buffer-fallback-action' + ;; where `display-buffer-use-some-window' is replaced + ;; with `display-buffer-at-bottom'. + '((display-buffer--maybe-same-window + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + display-buffer-at-bottom) + (window-height . fit-window-to-buffer))))) (with-output-to-temp-buffer "*Completions*" ;; Remove the base-size tail because `sort' requires a properly ;; nil-terminated list. @@ -2073,7 +2091,17 @@ (defun completion-at-point () The completion method is determined by `completion-at-point-functions'." (interactive) (let ((res (run-hook-wrapped 'completion-at-point-functions - #'completion--capf-wrapper 'all))) + #'completion--capf-wrapper 'all)) + ;; Display buffer like in `minibuffer-completion-help', + ;; but instead of `display-buffer-at-bottom' + ;; use `display-buffer-below-selected'. + (pop-up-windows nil) + (display-buffer-base-action + '((display-buffer--maybe-same-window + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + display-buffer-below-selected) + (window-height . shrink-window-if-larger-than-buffer)))) (pcase res (`(,_ . ,(and (pred functionp) f)) (funcall f)) (`(,hookfun . (,start ,end ,collection . ,plist)) ------------=_1404806703-983-1-- From unknown Thu Jun 19 14:33:59 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.503 (Entity 5.503) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Dani Moncayo Subject: bug#12618: closed (Re: bug#17809: 24.4.50; Completions display) Message-ID: References: <87tx6s46rf.fsf@mail.jurta.org> X-Gnu-PR-Message: they-closed 12618 X-Gnu-PR-Package: emacs X-Gnu-PR-Keywords: patch Reply-To: 12618@debbugs.gnu.org Date: Tue, 08 Jul 2014 08:05:04 +0000 Content-Type: multipart/mixed; boundary="----------=_1404806704-983-3" This is a multi-part message in MIME format... ------------=_1404806704-983-3 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #17809: 24.2.50; Formating of completion candidates in the *Completions* bu= ffer which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 12618@debbugs.gnu.org. --=20 17809: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D17809 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1404806704-983-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 17809-done) by debbugs.gnu.org; 8 Jul 2014 08:04:05 +0000 Received: from localhost ([127.0.0.1]:46506 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X4QNg-0000E8-5f for submit@debbugs.gnu.org; Tue, 08 Jul 2014 04:04:04 -0400 Received: from alc-vshost7.dreamhost.com ([69.163.216.107]:37781 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1X4QNd-0000Di-Q4 for 17809-done@debbugs.gnu.org; Tue, 08 Jul 2014 04:04:02 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 424DE3483305A6; Tue, 8 Jul 2014 01:03:57 -0700 (PDT) From: Juri Linkov To: Stefan Monnier Subject: Re: bug#17809: 24.4.50; Completions display Organization: JURTA References: <87tx7buryg.fsf@mail.jurta.org> <53A92532.9040901@gmx.at> <87y4wlg8gx.fsf_-_@mail.jurta.org> <53AA7222.1010905@gmx.at> <8738er89q6.fsf@mail.jurta.org> <53AD12AE.2050707@gmx.at> <877g41vp5x.fsf@mail.jurta.org> <53AE7A3A.20307@gmx.at> <87mwcowxfs.fsf@mail.jurta.org> <8761ja59kc.fsf@mail.jurta.org> <877g3p64up.fsf@mail.jurta.org> Date: Tue, 08 Jul 2014 11:03:16 +0300 In-Reply-To: (Stefan Monnier's message of "Mon, 07 Jul 2014 23:43:49 -0400") Message-ID: <87tx6s46rf.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Version: 24.4.50 > Looks fine, thanks. > >> + (with-selected-window , window >> + (goto-char (point-min))) > > I believe set-window-point is simpler and more efficient. Now installed to the trunk with set-window-point. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] X-Debbugs-Envelope-To: 17809-done Cc: martin rudalics , 17809-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Version: 24.4.50 > Looks fine, thanks. > >> + (with-selected-window ,window >> + (goto-char (point-min))) > > I believe set-window-point is simpler and more efficient. Now installed to the trunk with set-window-point. [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.7 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL [69.163.216.107 listed in zen.spamhaus.org] 1.6 RCVD_IN_BRBL_LASTEXT RBL: RCVD_IN_BRBL_LASTEXT [69.163.216.107 listed in bb.barracudacentral.org] Version: 24.4.50 > Looks fine, thanks. > >> + (with-selected-window ,window >> + (goto-char (point-min))) > > I believe set-window-point is simpler and more efficient. Now installed to the trunk with set-window-point. ------------=_1404806704-983-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 10 Oct 2012 19:46:03 +0000 Received: from localhost ([127.0.0.1]:38061 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TM2ED-00038o-PN for submit@debbugs.gnu.org; Wed, 10 Oct 2012 15:46:02 -0400 Received: from eggs.gnu.org ([208.118.235.92]:43140) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TM2EB-00038X-FI for submit@debbugs.gnu.org; Wed, 10 Oct 2012 15:46:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TM2DQ-0006LZ-VF for submit@debbugs.gnu.org; Wed, 10 Oct 2012 15:45:13 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:51067) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TM2DQ-0006L5-Rg for submit@debbugs.gnu.org; Wed, 10 Oct 2012 15:45:12 -0400 Received: from eggs.gnu.org ([208.118.235.92]:55029) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TM2DP-0001JR-N6 for bug-gnu-emacs@gnu.org; Wed, 10 Oct 2012 15:45:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TM2DO-0006Dw-Il for bug-gnu-emacs@gnu.org; Wed, 10 Oct 2012 15:45:11 -0400 Received: from mail-oa0-f41.google.com ([209.85.219.41]:58984) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TM2DO-0006Dh-EY for bug-gnu-emacs@gnu.org; Wed, 10 Oct 2012 15:45:10 -0400 Received: by mail-oa0-f41.google.com with SMTP id k14so1121990oag.0 for ; Wed, 10 Oct 2012 12:45:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=h7DEFYcgr++uk76v3uHJ+rsQsJSdshy7KoxmPcA/Eo0=; b=BQV6vI9rj7+/IuhTXfMQSA4wbQlL+ccWTrMlSUw0izQxHhgEKSnod2YnqsMTs2H9mW Nb7RUX10cmBMRTJpZsnSCAmSWtTvJErGccHWGQH0472rWrJTXP+MT7RFKpWyPXqrh1zO EswwKlGgzpPbk5DAcg56/kqNtX/9Aq1h8eUJd1NXnaTLEm7AHXuF6zEcLBSRUqg8TLrm vqLFGAV0HvQ3FlQwwY2rThQxEzbO4CcdzsQzK6XtHixdjb26up1cvdSHZdqAqBAjnMST jmjhowQ+wIwfTzf7632s0+xXffqWuBd+L6f70NQ8bwhm6R/nfXzbM33RcYu5uIuzrm8e I4Ug== MIME-Version: 1.0 Received: by 10.60.172.233 with SMTP id bf9mr19469900oec.99.1349898309630; Wed, 10 Oct 2012 12:45:09 -0700 (PDT) Received: by 10.60.131.168 with HTTP; Wed, 10 Oct 2012 12:45:09 -0700 (PDT) Date: Wed, 10 Oct 2012 21:45:09 +0200 Message-ID: Subject: 24.2.50; Formating of completion candidates in the *Completions* buffer From: Dani Moncayo To: bug-gnu-emacs@gnu.org Content-Type: text/plain; charset=ISO-8859-1 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Spam-Score: -3.4 (---) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.4 (---) severity: minor Recipe from emacs -Q: 1. Maximize the Emacs (graphical) frame. 2. Type: M-x a u t o - I observe that the first creates a *Completions* buffer with the completion candidates formatted in 3 columns, whereas the second reformat those candidates so that the full with of the window is used (6 columns in my case). Why the first didn't use the full width of the window? I think it should. In GNU Emacs 24.2.50.1 (i386-mingw-nt6.1.7601) of 2012-10-10 on DANI-PC Bzr revision: 110500 lekktu@gmail.com-20121010155949-32ouh3o4qooiybaj Windowing system distributor `Microsoft Corp.', version 6.1.7601 Configured using: `configure --with-gcc (4.7) --no-opt --enable-checking --cflags -I../../libs/libxpm-3.5.8/include -I../../libs/libxpm-3.5.8/src -I../../libs/libpng-1.4.10 -I../../libs/zlib-1.2.6 -I../../libs/giflib-4.1.4-1/include -I../../libs/jpeg-6b-4/include -I../../libs/tiff-3.8.2-1/include -I../../libs/libxml2-2.7.8-w32-bin/include/libxml2 -I../../libs/gnutls-3.0.16/include -I../../libs/libiconv-1.14-2-mingw32-dev/include' Important settings: value of $LANG: en_US.UTF8 locale-coding-system: cp1252 default enable-multibyte-characters: t -- Dani Moncayo ------------=_1404806704-983-3-- From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 05 18:01:16 2014 Received: (at control) by debbugs.gnu.org; 5 Oct 2014 22:01:16 +0000 Received: from localhost ([127.0.0.1]:35006 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xatrg-000106-9M for submit@debbugs.gnu.org; Sun, 05 Oct 2014 18:01:16 -0400 Received: from ps18281.dreamhost.com ([69.163.222.226]:34987 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xatre-0000zy-EY for control@debbugs.gnu.org; Sun, 05 Oct 2014 18:01:15 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 472AA30192BF81 for ; Sun, 5 Oct 2014 15:01:13 -0700 (PDT) From: Juri Linkov To: control@debbugs.gnu.org Subject: Re: bug#17809: 24.4.50; Completions display Organization: JURTA References: <87d2e5js1o.fsf@mail.jurta.org> Date: Mon, 06 Oct 2014 00:56:03 +0300 In-Reply-To: <87d2e5js1o.fsf@mail.jurta.org> (Juri Linkov's message of "Thu, 19 Jun 2014 09:57:47 +0300") Message-ID: <87oatqfafg.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) unarchive 17809 thanks From unknown Thu Jun 19 14:33:59 2025 X-Loop: help-debbugs@gnu.org Subject: bug#17809: 24.4.50; Completions display Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 05 Oct 2014 22:04:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 17809 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 17809@debbugs.gnu.org Received: via spool by 17809-submit@debbugs.gnu.org id=B17809.14125465984101 (code B ref 17809); Sun, 05 Oct 2014 22:04:01 +0000 Received: (at 17809) by debbugs.gnu.org; 5 Oct 2014 22:03:18 +0000 Received: from localhost ([127.0.0.1]:35022 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xattd-000144-T6 for submit@debbugs.gnu.org; Sun, 05 Oct 2014 18:03:18 -0400 Received: from ps18281.dreamhost.com ([69.163.222.226]:35438 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xattb-00013v-T4 for 17809@debbugs.gnu.org; Sun, 05 Oct 2014 18:03:16 -0400 Received: from localhost.jurta.org (ps18281.dreamhostps.com [69.163.222.226]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 3A47930ED51577 for <17809@debbugs.gnu.org>; Sun, 5 Oct 2014 15:03:15 -0700 (PDT) From: Juri Linkov Organization: JURTA References: <87d2e5js1o.fsf@mail.jurta.org> Date: Mon, 06 Oct 2014 01:02:45 +0300 In-Reply-To: <87d2e5js1o.fsf@mail.jurta.org> (Juri Linkov's message of "Thu, 19 Jun 2014 09:57:47 +0300") Message-ID: <87iojyfa4a.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) > - display-buffer-below-selected for completion-at-point > that could work like displaying *Marking Files* in Dired > to display *Completions* near the point of completion > in the current buffer. I noticed that at-bottom is used instead of better below-selected for some completion-at-point commands. For example, completing a color in the Customization UI displays the *Completions* at the bottom even when there is no active minibuffer. Since completion-at-point commands set the value of `this-command' I wonder wouldn't it be right to check its value? === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2014-07-08 19:15:28 +0000 +++ lisp/minibuffer.el 2014-10-05 21:59:09 +0000 @@ -1811,7 +1811,7 @@ (defun minibuffer-completion-help (&opti ;; Use `display-buffer-below-selected' for inline completions, ;; but not in the minibuffer (e.g. in `eval-expression') ;; for which `display-buffer-at-bottom' is used. - ,(if (and completion-in-region-mode-predicate + ,(if (and (eq this-command 'completion-at-point) (not (minibuffer-selected-window))) 'display-buffer-below-selected 'display-buffer-at-bottom))