From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Drew Adams" Newsgroups: gmane.emacs.bugs Subject: bug#8851: 24.0.50; regression: special-display-frame is no longer dedicated Date: Tue, 14 Jun 2011 13:36:45 -0700 Message-ID: <8E7452317D5B4FD183FD24E0FAA14F6F@us.oracle.com> References: <853BDEF1AA9646ACB90724066E1A5951@us.oracle.com> <4DF65024.20305@gmx.at> <0C191F638279437BADFCC697A5389F9E@us.oracle.com> <4DF726A1.7020804@gmx.at> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1308085591 16087 80.91.229.12 (14 Jun 2011 21:06:31 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 14 Jun 2011 21:06:31 +0000 (UTC) Cc: 8851@debbugs.gnu.org To: "'martin rudalics'" Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Jun 14 23:06:23 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QWaoY-0008Ii-EE for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 Jun 2011 23:06:22 +0200 Original-Received: from localhost ([::1]:55203 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWaoX-0003ZV-FD for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 Jun 2011 17:06:21 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:53244) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWaNB-0005iI-Cz for bug-gnu-emacs@gnu.org; Tue, 14 Jun 2011 16:38:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QWaN9-00009T-De for bug-gnu-emacs@gnu.org; Tue, 14 Jun 2011 16:38:05 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:45857) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWaN9-00009J-0r for bug-gnu-emacs@gnu.org; Tue, 14 Jun 2011 16:38:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1QWaN8-0006L1-8r; Tue, 14 Jun 2011 16:38:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Drew Adams" Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 14 Jun 2011 20:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 8851 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 8851-submit@debbugs.gnu.org id=B8851.130808382824284 (code B ref 8851); Tue, 14 Jun 2011 20:38:02 +0000 Original-Received: (at 8851) by debbugs.gnu.org; 14 Jun 2011 20:37:08 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QWaMF-0006Jd-J0 for submit@debbugs.gnu.org; Tue, 14 Jun 2011 16:37:08 -0400 Original-Received: from rcsinet10.oracle.com ([148.87.113.121]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QWaMC-0006Hh-RT for 8851@debbugs.gnu.org; Tue, 14 Jun 2011 16:37:05 -0400 Original-Received: from rtcsinet21.oracle.com (rtcsinet21.oracle.com [66.248.204.29]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id p5EKatVn010937 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 14 Jun 2011 20:36:58 GMT Original-Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by rtcsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id p5EKasef004277 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 14 Jun 2011 20:36:55 GMT Original-Received: from abhmt012.oracle.com (abhmt012.oracle.com [141.146.116.21]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id p5EKamK0005523; Tue, 14 Jun 2011 15:36:48 -0500 Original-Received: from dradamslap1 (/10.159.53.1) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 14 Jun 2011 13:36:48 -0700 X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <4DF726A1.7020804@gmx.at> Thread-Index: Acwqc+NNyFBOkaomToCyE6AOjQYiogAWWEYA X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6090 X-Source-IP: rtcsinet21.oracle.com [66.248.204.29] X-CT-RefId: str=0001.0A090203.4DF7C66A.0104:SCFSTAT5015188,ss=1,fgs=0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Tue, 14 Jun 2011 16:38:02 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:47159 Archived-At: > here, Emacs pops up a new frame and the message tells me the > window and that that window is strongly dedicated to its buffer. > If it does so on your system, It does here too. > please try to step through `special-display-popup-frame' > once with your old, working Emacs and once with the latest > version. The > differences in arguments and behaviors should tell us what went wrong. Keep in mind that using the debugger can be problematic because buffer *Backtrace* itself is a special-display buffer. But I was able to do so to get some more info. (BTW, these debugging problems are worse in the latest build - `q' does not even exit the debugger; and when you get back to the top level buffer *Backtrace* still contains a backtrace from execute-extended-command up through special-display-popup-frame; etc.) The difference is that, unlike in last week's build, in this week's build `special-display-popup-frame' does not call the special-display function `1on1-display-*Completions*-frame'. Here is the call in last week's build: * 1on1-display-*Completions*-frame( # ((background-color . "LavenderBlush2") (mouse-color . "VioletRed") (cursor-color . "VioletRed") (menu-bar-lines . 0) (tool-bar-lines . 0) (width . 100))) * apply(1on1-display-*Completions*-frame # ((background-color ...))) * (if (and args (symbolp (car args))) (apply (car args) buffer (cdr args)) (let ((window (get-buffer-window buffer 0))) (or (when window (let ((frame (window-frame window))) (make-frame-visible frame) (raise-frame frame) window)) (when (cdr (assq (quote same-window) args)) (condition-case nil (progn (switch-to-buffer buffer) (selected-window)) (error nil))) (when (or (cdr (assq (quote same-frame) args)) (cdr (assq (quote same-window) args))) (let* ((pop-up-windows t) pop-up-frames special-display-buffer-names special-display-regexps) (display-buffer buffer))) (let ((frame (with-current-buffer buffer (make-frame ...)))) (set-window-buffer (frame-selected-window frame) buffer) (set-window-dedicated-p (frame-selected-window frame) t) (frame-selected-window frame))))) special-display-popup-frame( # (1on1-display-*Completions*-frame ((background-color ...))))) * display-buffer(# nil nil) And here is the call in this week's build: Debugger entered--returning value: (background-color . "LavenderBlush2") car(((background-color . "LavenderBlush2") (mouse-color . "VioletRed") (cursor-color . "VioletRed") (menu-bar-lines . 0) (tool-bar-lines . 0) (width . 100))) * (symbolp (car args)) * (and args (symbolp (car args))) * (if (and args (symbolp (car args))) (apply (car args) buffer (cdr args)) (let ... IOW, what seems to be happening is that the first arg is not a symbol, so the `if' branch that applies the special-display function (the symbol that is the car) to its args (the cdr) is not taken at all. The args to `special-display-popup-frame' are different in the two builds. For last week's build, they are: special-display-popup-frame( # (1on1-display-*Completions*-frame ((background-color . "LavenderBlush2") (mouse-color . "VioletRed") (cursor-color . "VioletRed") (menu-bar-lines . 0) (tool-bar-lines . 0) (width . 100)))) For this week's build they are: special-display-popup-frame( # ((background-color . "LavenderBlush2") (mouse-color . "VioletRed") (cursor-color . "VioletRed") (menu-bar-lines . 0) (tool-bar-lines . 0) (width . 100))) However, the *Completions* frame does seem to have the correct alist (background color etc.). That apparently happens in the other `if' branch, here: * (append args special-display-frame-alist) * (make-frame (append args special-display-frame-alist)) IOW, the special-display function, `1on1-display-*Completions*-frame' is not called by `special-display-popup-frame' in the new build. However, as I said before, `1on1-display-*Completions*-frame' is called, but only by `display-buffer'. Here is a backtrace from debugging only entry to `1on1-display-*Completions*-frame' (not entry to `special-display-popup-frame'): 1on1-display-*Completions*-frame( # ((background-color . "LavenderBlush2") (mouse-color . "VioletRed") (cursor-color . "VioletRed") (menu-bar-lines . 0) (tool-bar-lines . 0) (width . 100))) * apply( 1on1-display-*Completions*-frame # ((background-color . "LavenderBlush2") (mouse-color . "VioletRed") (cursor-color . "VioletRed") (menu-bar-lines . 0) (tool-bar-lines . 0) (width . 100))) display-buffer(# nil nil) internal-temp-output-buffer-show(#) minibuffer-completion-help() completion--do-completion() minibuffer-complete() That call to `1on1-display-*Completions*-frame' does do (set-window-dedicated-p # t). And in the debugger evaluating (window-dedicated-p (get-buffer-window "*Completions*" 0)) returns t. And also this gets evaluated (to nil), with *Completions* as the selected frame: * (redirect-frame-focus (selected-frame) 1on1-minibuffer-frame) So I don't really understand what the problem is. In any case, it's clear that the first branch of the `if' in `special-display-popup-frame' is not being taken, and that `1on1-display-*Completions*-frame' is getting called by `display-buffer' before it even calls `special-display-popup-frame'. It took me a long time to get this far. I hope you can take it from here. In any case, I gave you a complete recipe. You can do exactly what you asked me to do just now. See for yourself what the problems are. You need only download the two files I mentioned, oneonone.el and hexrgb.el.